bool ChatHandler::HandleModifyGoldCommand(const char* args, WorldSession *m_session) { // WorldPacket data; if ( *args == 0 ) return false; Player *chr = getSelectedChar( m_session, true ); if( chr == NULL ) return true; int32 total = atoi( (char*)args ); // gold = total / 10000; // silver = (total / 100) % 100; // copper = total % 100; uint32 gold = (uint32) floor( (float)int32abs( total ) / 10000.0f ); uint32 silver = (uint32) floor( ((float)int32abs( total ) / 100.0f) ) % 100; uint32 copper = int32abs2uint32( total ) % 100; sGMLog.writefromsession( m_session, "used modify gold on %s, gold: %d", chr->GetName(), total ); int32 newgold = chr->GetUInt32Value( PLAYER_FIELD_COINAGE ) + total; if(newgold < 0) { BlueSystemMessage( m_session, "Taking all gold from %s's backpack...", chr->GetName() ); GreenSystemMessageToPlr(chr, "%s took the all gold from your backpack.", m_session->GetPlayer()->GetName()); newgold = 0; } else { if(total >= 0) { BlueSystemMessage( m_session, "Adding %u gold, %u silver, %u copper to %s's backpack...", gold, silver, copper, chr->GetName() ); GreenSystemMessageToPlr( chr, "%s added %u gold, %u silver, %u copper to your backpack.", m_session->GetPlayer()->GetName(), gold, silver, copper ); } else { BlueSystemMessage( m_session, "Taking %u gold, %u silver, %u copper from %s's backpack...", gold, silver, copper, chr->GetName() ); GreenSystemMessageToPlr( chr, "%s took %u gold, %u silver, %u copper from your backpack.", m_session->GetPlayer()->GetName(), gold, silver, copper ); } } chr->SetUInt32Value( PLAYER_FIELD_COINAGE, newgold ); return true; }
bool ChatHandler::HandleModifyGoldCommand(const char* args, WorldSession* m_session) { //WorldPacket data; if(!*args) return false; Player* chr = getSelectedChar(m_session, true); if(!chr) return false; int32 total = atoi((char*)args); //gold = total / 10000; //silver = (total / 100) % 100; //copper = total % 100; uint32 gold = (uint32) std::floor((float)int32abs(total) / 10000.0f); uint32 silver = (uint32) std::floor(((float)int32abs(total) / 100.0f)) % 100; uint32 copper = int32abs2uint32(total) % 100; sGMLog.writefromsession(m_session, "used modify gold on %s, gold: %d", chr->GetName(), total); int32 newgold = chr->GetGold() + total; if(newgold < 0) { BlueSystemMessage(m_session, "Taking all gold from %s's backpack...", chr->GetName()); GreenSystemMessageToPlr(chr, "%s took the all gold from your backpack.", m_session->GetPlayer()->GetName()); newgold = 0; } else { if(total >= 0) { BlueSystemMessage(m_session, "Adding %u gold, %u silver, %u copper to %s's backpack...", gold, silver, copper, chr->GetName()); GreenSystemMessageToPlr(chr, "%s added %u gold, %u silver, %u copper to your backpack.", m_session->GetPlayer()->GetName(), gold, silver, copper); } else { BlueSystemMessage(m_session, "Taking %u gold, %u silver, %u copper from %s's backpack...", gold, silver, copper, chr->GetName()); GreenSystemMessageToPlr(chr, "%s took %u gold, %u silver, %u copper from your backpack.", m_session->GetPlayer()->GetName(), gold, silver, copper); } } // Check they don't have more than the max gold if(sWorld.GoldCapEnabled) { if((chr->GetGold() + newgold) > sWorld.GoldLimit) { RedSystemMessage(m_session, "Maximum amount of gold is %u and %s already has %u", (sWorld.GoldLimit / 10000), chr->GetName(), (chr->GetGold() / 10000)); return false; } } chr->SetGold(newgold); return true; }