Example #1
0
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;
}
Example #2
0
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;
}