Commit 5a674dab authored by nanahira's avatar nanahira

dialogue test

parent 1838599b
...@@ -81,6 +81,9 @@ void Game::LoadBetaDB() { ...@@ -81,6 +81,9 @@ void Game::LoadBetaDB() {
} }
#endif #endif
} }
wchar_t* Game::GetSysString(int code) {
return dataManager.GetSysString(code);
}
#else //YGOPRO_SERVER_MODE #else //YGOPRO_SERVER_MODE
bool Game::Initialize() { bool Game::Initialize() {
srand(time(0)); srand(time(0));
......
...@@ -105,6 +105,7 @@ public: ...@@ -105,6 +105,7 @@ public:
void LoadExpansionDB(); void LoadExpansionDB();
void LoadBetaDB(); void LoadBetaDB();
void AddDebugMsg(char* msgbuf); void AddDebugMsg(char* msgbuf);
wchar_t* GetSysString(int code);
#else #else
void MainLoop(); void MainLoop();
void BuildProjectionMatrix(irr::core::matrix4& mProjection, f32 left, f32 right, f32 bottom, f32 top, f32 znear, f32 zfar); void BuildProjectionMatrix(irr::core::matrix4& mProjection, f32 left, f32 right, f32 bottom, f32 top, f32 znear, f32 zfar);
......
...@@ -1275,7 +1275,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -1275,7 +1275,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break; break;
} }
case MSG_SUMMONING: { case MSG_SUMMONING: {
pbuf += 8; int summon_code = BufferIO::ReadInt32(pbuf);
pbuf += 4;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]); NetServer::ReSendToPlayer(players[1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
...@@ -1283,6 +1284,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -1283,6 +1284,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
NetServer::ReSendToPlayers(cache_recorder, replay_recorder); NetServer::ReSendToPlayers(cache_recorder, replay_recorder);
#endif #endif
if(summon_code == 35595518)
SendDialogues(2002);
break; break;
} }
case MSG_SUMMONED: { case MSG_SUMMONED: {
...@@ -1300,7 +1303,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -1300,7 +1303,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break; break;
} }
case MSG_SPSUMMONING: { case MSG_SPSUMMONING: {
pbuf += 8; int summon_code = BufferIO::ReadInt32(pbuf);
pbuf += 4;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]); NetServer::ReSendToPlayer(players[1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
...@@ -1308,6 +1312,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -1308,6 +1312,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
NetServer::ReSendToPlayers(cache_recorder, replay_recorder); NetServer::ReSendToPlayers(cache_recorder, replay_recorder);
#endif #endif
if(summon_code == 35595518)
SendDialogues(2002);
break; break;
} }
case MSG_SPSUMMONED: { case MSG_SPSUMMONED: {
...@@ -1351,7 +1357,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -1351,7 +1357,8 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break; break;
} }
case MSG_CHAINING: { case MSG_CHAINING: {
pbuf += 16; int effect_code = BufferIO::ReadInt32(pbuf);
pbuf += 12;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]); NetServer::ReSendToPlayer(players[1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
...@@ -1359,6 +1366,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -1359,6 +1366,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
NetServer::ReSendToPlayers(cache_recorder, replay_recorder); NetServer::ReSendToPlayers(cache_recorder, replay_recorder);
#endif #endif
//2pick dialogues - hanoi force
if(effect_code == 44095762)
SendDialogues(2001);
break; break;
} }
case MSG_CHAINED: { case MSG_CHAINED: {
...@@ -2018,5 +2028,19 @@ void SingleDuel::SwapPickDeck() { ...@@ -2018,5 +2028,19 @@ void SingleDuel::SwapPickDeck() {
pick_deck_saved[0] = pick_deck_saved[1]; pick_deck_saved[0] = pick_deck_saved[1];
pick_deck_saved[1] = pick_deck_saved_temp; pick_deck_saved[1] = pick_deck_saved_temp;
} }
void SingleDuel::SendDialogues(int words) {
STOC_Chat scc;
scc.player = 15;
wchar_t* msg = L"[Server]: " + mainGame->GetSysString(words);
int msglen = BufferIO::CopyWStr(msg, scc.msg, 256);
NetServer::SendBufferToPlayer(players[0], STOC_CHAT, &scc, 4 + msglen * 2);
NetServer::ReSendToPlayer(players[1]);
for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::ReSendToPlayer(*pit);
#ifdef YGOPRO_SERVER_MODE
if(cache_recorder)
NetServer::ReSendToPlayer(cache_recorder);
#endif
}
} }
...@@ -42,6 +42,7 @@ public: ...@@ -42,6 +42,7 @@ public:
static void SingleTimer(evutil_socket_t fd, short events, void* arg); static void SingleTimer(evutil_socket_t fd, short events, void* arg);
//2pick //2pick
void SwapPickDeck(); void SwapPickDeck();
void SendDialogues(int words);
protected: protected:
//2pick //2pick
......
...@@ -445,6 +445,9 @@ ...@@ -445,6 +445,9 @@
!system 1624 投掷骰子结果: !system 1624 投掷骰子结果:
#tips #tips
!system 1700 可以用鼠标右键%ls !system 1700 可以用鼠标右键%ls
#2pick
!system 2001 臣服在汉诺崇高的力量面前吧!
!system 2002 正义双刃,解离连接的锁链,破杀而出!
#victory reason #victory reason
!victory 0x0 投降 !victory 0x0 投降
!victory 0x1 LP变成0 !victory 0x1 LP变成0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment