Commit faed30ec authored by nanahira's avatar nanahira

Merge branch 'patch-server-facedown-ss' of github.com:moecube/ygopro into server-develop

parents 4a407de2 bcc3d5e0
......@@ -3135,12 +3135,14 @@ bool DuelClient::ClientAnalyze(unsigned char* msg, int len) {
else
soundManager.PlaySoundEffect(SOUND_SPECIAL_SUMMON);
myswprintf(event_string, dataManager.GetSysString(1605), dataManager.GetName(code));
mainGame->showcardcode = code;
mainGame->showcarddif = 1;
mainGame->showcard = 5;
mainGame->WaitFrameSignal(30);
mainGame->showcard = 0;
mainGame->WaitFrameSignal(11);
if(code) {
mainGame->showcardcode = code;
mainGame->showcarddif = 1;
mainGame->showcard = 5;
mainGame->WaitFrameSignal(30);
mainGame->showcard = 0;
mainGame->WaitFrameSignal(11);
}
}
return true;
}
......
......@@ -1402,13 +1402,23 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
break;
}
case MSG_SPSUMMONING: {
pbufw = pbuf;
int cc = pbuf[4];
/*int cl = pbuf[5];*/
/*int cs = pbuf[6];*/
int cp = pbuf[7];
pbuf += 8;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]);
NetServer::SendBufferToPlayer(players[cc], STOC_GAME_MSG, offset, pbuf - offset);
#ifdef YGOPRO_SERVER_MODE
NetServer::ReSendToPlayer(replay_recorder);
#endif
if (cp & POS_FACEDOWN)
BufferIO::Write<int32_t>(pbufw, 0);
NetServer::SendBufferToPlayer(players[1 - cc], STOC_GAME_MSG, offset, pbuf - offset);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
#ifdef YGOPRO_SERVER_MODE
NetServer::ReSendToPlayers(cache_recorder, replay_recorder);
NetServer::ReSendToPlayer(cache_recorder);
#endif
break;
}
......
......@@ -1392,15 +1392,27 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
break;
}
case MSG_SPSUMMONING: {
pbufw = pbuf;
int cc = pbuf[4];
/*int cl = pbuf[5];*/
/*int cs = pbuf[6];*/
int cp = pbuf[7];
pbuf += 8;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]);
NetServer::ReSendToPlayer(players[2]);
NetServer::ReSendToPlayer(players[3]);
auto pid = (cc == 0) ? 0 : 2;
NetServer::SendBufferToPlayer(players[pid], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[pid + 1]);
#ifdef YGOPRO_SERVER_MODE
NetServer::ReSendToPlayer(replay_recorder);
#endif
if (cp & POS_FACEDOWN)
BufferIO::Write<int32_t>(pbufw, 0);
pid = 2 - pid;
NetServer::SendBufferToPlayer(players[pid], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[pid + 1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
#ifdef YGOPRO_SERVER_MODE
NetServer::ReSendToPlayers(cache_recorder, replay_recorder);
NetServer::ReSendToPlayer(cache_recorder);
#endif
break;
}
......
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