Commit 9edd2ed8 authored by Fluorohydride's avatar Fluorohydride

Merge pull request #314 from VanillaSalt/patch36

fix
parents bc67490d f882629e
...@@ -148,10 +148,16 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) { ...@@ -148,10 +148,16 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
if(!pduel) { if(!pduel) {
STOC_HS_WatchChange scwc; STOC_HS_WatchChange scwc;
scwc.watch_count = observers.size(); scwc.watch_count = observers.size();
if(players[0])
NetServer::SendPacketToPlayer(players[0], STOC_HS_WATCH_CHANGE, scwc);
if(players[1])
NetServer::SendPacketToPlayer(players[1], STOC_HS_WATCH_CHANGE, scwc);
for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::SendPacketToPlayer(*pit, STOC_HS_WATCH_CHANGE, scwc);
} }
NetServer::DisconnectPlayer(dp); NetServer::DisconnectPlayer(dp);
} else { } else {
if(!pduel) { if(!pduel && duel_count == 0) {
STOC_HS_PlayerChange scpc; STOC_HS_PlayerChange scpc;
players[dp->type] = 0; players[dp->type] = 0;
ready[dp->type] = false; ready[dp->type] = false;
...@@ -164,6 +170,12 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) { ...@@ -164,6 +170,12 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
NetServer::SendPacketToPlayer(*pit, STOC_HS_PLAYER_CHANGE, scpc); NetServer::SendPacketToPlayer(*pit, STOC_HS_PLAYER_CHANGE, scpc);
NetServer::DisconnectPlayer(dp); NetServer::DisconnectPlayer(dp);
} else { } else {
if(!pduel) {
if(!ready[0])
NetServer::SendPacketToPlayer(players[0], STOC_DUEL_START);
if(!ready[1])
NetServer::SendPacketToPlayer(players[1], STOC_DUEL_START);
}
unsigned char wbuf[3]; unsigned char wbuf[3];
wbuf[0] = MSG_WIN; wbuf[0] = MSG_WIN;
wbuf[1] = 1 - dp->type; wbuf[1] = 1 - dp->type;
...@@ -530,6 +542,7 @@ void SingleDuel::Surrender(DuelPlayer* dp) { ...@@ -530,6 +542,7 @@ void SingleDuel::Surrender(DuelPlayer* dp) {
} }
EndDuel(); EndDuel();
DuelEndProc(); DuelEndProc();
event_del(etimer);
} }
int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
char* offset, *pbufw, *pbuf = msgbuffer; char* offset, *pbufw, *pbuf = msgbuffer;
......
...@@ -89,7 +89,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) { ...@@ -89,7 +89,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
scwc.watch_count = observers.size(); scwc.watch_count = observers.size();
for(int i = 0; i < 4; ++i) for(int i = 0; i < 4; ++i)
if(players[i]) if(players[i])
NetServer::SendPacketToPlayer(players[1], STOC_HS_WATCH_CHANGE, scwc); NetServer::SendPacketToPlayer(players[i], STOC_HS_WATCH_CHANGE, scwc);
for(auto pit = observers.begin(); pit != observers.end(); ++pit) for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::SendPacketToPlayer(*pit, STOC_HS_WATCH_CHANGE, scwc); NetServer::SendPacketToPlayer(*pit, STOC_HS_WATCH_CHANGE, scwc);
} }
...@@ -122,6 +122,11 @@ void TagDuel::LeaveGame(DuelPlayer* dp) { ...@@ -122,6 +122,11 @@ void TagDuel::LeaveGame(DuelPlayer* dp) {
if(!pduel) { if(!pduel) {
STOC_HS_WatchChange scwc; STOC_HS_WatchChange scwc;
scwc.watch_count = observers.size(); scwc.watch_count = observers.size();
for(int i = 0; i < 4; ++i)
if(players[i])
NetServer::SendPacketToPlayer(players[i], STOC_HS_WATCH_CHANGE, scwc);
for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::SendPacketToPlayer(*pit, STOC_HS_WATCH_CHANGE, scwc);
} }
NetServer::DisconnectPlayer(dp); NetServer::DisconnectPlayer(dp);
} else { } else {
......
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