diff -r a72ace943bfd -r 00568d3054d0 QTfrontend/net/newnetclient.cpp --- a/QTfrontend/net/newnetclient.cpp Sun Aug 12 23:05:15 2012 +0400 +++ b/QTfrontend/net/newnetclient.cpp Sun Aug 19 22:13:41 2012 +0400 @@ -507,8 +507,32 @@ return; } + if(netClientState == InLobby && lst[0] == "JOINED") + { + if(lst.size() < 2 || lst[1] != mynick) + { + qWarning("Net: Bad JOINED message"); + return; + } - if(netClientState == InRoom) + for(int i = 1; i < lst.size(); ++i) + { + if (lst[i] == mynick) + { + netClientState = InRoom; + emit EnteredGame(); + emit roomMaster(isChief); + if (isChief) + emit configAsked(); + } + + emit nickAdded(lst[i], isChief && (lst[i] != mynick)); + emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i])); + } + return; + } + + if(netClientState == InRoom || netClientState == InGame) { if (lst[0] == "EM") { @@ -628,15 +652,6 @@ for(int i = 1; i < lst.size(); ++i) { - if (lst[i] == mynick) - { - netClientState = InRoom; - emit EnteredGame(); - emit roomMaster(isChief); - if (isChief) - emit configAsked(); - } - emit nickAdded(lst[i], isChief && (lst[i] != mynick)); emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i])); }