From: Enar <eva...@us...> - 2006-09-23 15:50:04
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2970/src/server Modified Files: exchangemanager.cpp Log Message: Ignores trades that are accepted after starting another trade (bug #2082). Index: exchangemanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/exchangemanager.cpp,v retrieving revision 1.145 retrieving revision 1.146 diff -C2 -d -r1.145 -r1.146 *** exchangemanager.cpp 10 Sep 2006 14:34:36 -0000 1.145 --- exchangemanager.cpp 23 Sep 2006 15:50:01 -0000 1.146 *************** *** 64,70 **** if ( !invitedClient ) return; ! PendingInvite::HandleAnswer(answer); ! Client * inviterClient = psserver->GetConnections()->Find(inviterClientNum); if ( !inviterClient ) --- 64,70 ---- if ( !invitedClient ) return; ! PendingInvite::HandleAnswer(answer); ! Client * inviterClient = psserver->GetConnections()->Find(inviterClientNum); if ( !inviterClient ) *************** *** 74,78 **** psCharacter* inviterCharData = inviterClient->GetCharacterData(); const char* invitedCharFirstName = invitedCharData->GetCharName(); ! //const char* inviterFirstName = inviterCharData->GetCharName(); if ( answer == "no" ) --- 74,78 ---- psCharacter* inviterCharData = inviterClient->GetCharacterData(); const char* invitedCharFirstName = invitedCharData->GetCharName(); ! const char* inviterCharFirstName = inviterCharData->GetCharName(); if ( answer == "no" ) *************** *** 87,90 **** --- 87,105 ---- } + // Ignore the answer if the invited client is already in trade + if (invitedClient->ExchangeID()) + { + psserver->SendSystemError(invitedClient->GetClientNum(), "You are already busy with another trade"); + psserver->SendSystemError(inviterClient->GetClientNum(), "%s is already busy with another trade", invitedCharFirstName); + return; + } + // Ignore the answer if the inviter client is already in trade + if (inviterClient->ExchangeID()) + { + psserver->SendSystemError(inviterClient->GetClientNum(), "You are already busy with another trade"); + psserver->SendSystemError(invitedClient->GetClientNum(), "%s is already busy with another trade", inviterCharFirstName); + return; + } + Exchange* exchange = new PlayerToPlayerExchange( inviterClient, invitedClient, psserver->GetExchangeManager() ); |