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; }
bool ChatHandler::HandleUnlearnCommand(const char* args, WorldSession * m_session) { Player * plr = getSelectedChar(m_session, true); if (plr == 0) return true; uint32 SpellId = atol(args); if (SpellId == 0) { RedSystemMessage(m_session, "You must specify a spell id."); return true; } sGMLog.writefromsession(m_session, "removed spell %u from %s", SpellId, plr->GetName()); if (plr->HasSpell(SpellId)) { GreenSystemMessageToPlr(plr, "Removed spell %u.", SpellId); GreenSystemMessage(m_session, "Removed spell %u from %s.", SpellId, plr->GetName()); plr->removeSpell(SpellId, false, false, 0); } else { RedSystemMessage(m_session, "That player does not have spell %u learnt.", SpellId); } return true; }
bool ChatHandler::HandleModifyLevelCommand(const char* args, WorldSession* m_session) { Player* plr = getSelectedChar(m_session, true); if(!plr) return true; uint32 Level = args ? atol(args) : 0; if(!Level || Level > sWorld.m_levelCap) { RedSystemMessage(m_session, "A level (numeric) is required to be specified after this command."); return false; } // Set level message BlueSystemMessage(m_session, "Setting the level of %s to %u.", plr->GetName(), Level); GreenSystemMessageToPlr(plr, "%s set your level to %u.", m_session->GetPlayer()->GetName(), Level); sGMLog.writefromsession(m_session, "used modify level on %s, level %u", plr->GetName(), Level); // lookup level information LevelInfo* Info = objmgr.GetLevelInfo(plr->getRace(), plr->getClass(), Level); if(!Info) { RedSystemMessage(m_session, "Levelup information not found."); return false; } plr->ApplyLevelInfo(Info, Level); if(plr->getClass() == WARLOCK) { std::list<Pet*> summons = plr->GetSummons(); for(std::list<Pet*>::iterator itr = summons.begin(); itr != summons.end(); ++itr) { Pet* summon = *itr; if(summon->IsInWorld() && summon->isAlive()) { summon->setLevel(Level); summon->ApplyStatsForLevel(); summon->UpdateSpellList(); } } } return true; }
bool ChatHandler::CmdSetFloatField(WorldSession *m_session, uint32 field, uint32 fieldmax, const char *fieldname, const char *args) { char* pvalue = strtok((char*)args, " "); float mv, av; if (!pvalue) return false; else av = (float)atof(pvalue); if(fieldmax) { char* pvaluemax = strtok(NULL, " "); if (!pvaluemax) return false; else mv = (float)atof(pvaluemax); } else { mv = 0; } if (av <= 0) { RedSystemMessage(m_session, "Values are invalid. Value must be < max (if max exists), and both must be > 0."); return true; } if(fieldmax) { if(mv < av || mv <= 0) { RedSystemMessage(m_session, "Values are invalid. Value must be < max (if max exists), and both must be > 0."); return true; } } Player *plr = getSelectedChar(m_session, false); if(plr) { sGMLog.writefromsession(m_session, "used modify field value: %s, %f on %s", fieldname, av, plr->GetName()); if(fieldmax) { BlueSystemMessage(m_session, "You set the %s of %s to %.1f/%.1f.", fieldname, plr->GetName(), av, mv); GreenSystemMessageToPlr(plr, "%s set your %s to %.1f/%.1f.", m_session->GetPlayer()->GetName(), fieldname, av, mv); } else { BlueSystemMessage(m_session, "You set the %s of %s to %.1f.", fieldname, plr->GetName(), av); GreenSystemMessageToPlr(plr, "%s set your %s to %.1f.", m_session->GetPlayer()->GetName(), fieldname, av); } plr->SetFloatValue(field, av); if(fieldmax) plr->SetFloatValue(fieldmax, mv); } else { Creature *cr = getSelectedCreature(m_session, false); if(cr) { if(!(field < UNIT_END && fieldmax < UNIT_END)) return false; std::string creaturename = "Unknown Being"; if(cr->GetCreatureName()) creaturename = cr->GetCreatureName()->Name; if(fieldmax) BlueSystemMessage(m_session, "Setting %s of %s to %.1f/%.1f.", fieldname, creaturename.c_str(), av, mv); else BlueSystemMessage(m_session, "Setting %s of %s to %.1f.", fieldname, creaturename.c_str(), av); cr->SetFloatValue(field, av); sGMLog.writefromsession(m_session, "used modify field value: [creature]%s, %f on %s", fieldname, av, creaturename.c_str()); if(fieldmax) { cr->SetFloatValue(fieldmax, mv); } //cr->SaveToDB(); } else { RedSystemMessage(m_session, "Invalid Selection."); } } return true; }
bool ChatHandler::CmdSetValueField(WorldSession *m_session, uint32 field, uint32 fieldmax, const char *fieldname, const char *args) { if(!args) return false; char* pvalue = strtok((char*)args, " "); uint32 mv, av; if (!pvalue) return false; else av = atol(pvalue); if(fieldmax) { char* pvaluemax = strtok(NULL, " "); if (!pvaluemax) return false; else mv = atol(pvaluemax); } else { mv = 0; } if (av <= 0 && mv > 0) { RedSystemMessage(m_session, "Values are invalid. Value must be < max (if max exists), and both must be > 0."); return true; } if(fieldmax) { if(mv < av || mv <= 0) { RedSystemMessage(m_session, "Values are invalid. Value must be < max (if max exists), and both must be > 0."); return true; } } Player *plr = getSelectedChar(m_session, false); if(plr) { sGMLog.writefromsession(m_session, "used modify field value: %s, %u on %s", fieldname, av, plr->GetName()); if(fieldmax) { BlueSystemMessage(m_session, "You set the %s of %s to %d/%d.", fieldname, plr->GetName(), av, mv); GreenSystemMessageToPlr(plr, "%s set your %s to %d/%d.", m_session->GetPlayer()->GetName(), fieldname, av, mv); } else { BlueSystemMessage(m_session, "You set the %s of %s to %d.", fieldname, plr->GetName(), av); GreenSystemMessageToPlr(plr, "%s set your %s to %d.", m_session->GetPlayer()->GetName(), fieldname, av); } if(field == UNIT_FIELD_STAT1) av /= 2; if(field == UNIT_FIELD_BASE_HEALTH) { plr->SetUInt32Value(UNIT_FIELD_HEALTH, av); } plr->SetUInt32Value(field, av); if(fieldmax) { plr->SetUInt32Value(fieldmax, mv); } } else { Creature *cr = getSelectedCreature(m_session, false); if(cr) { if(!(field < UNIT_END && fieldmax < UNIT_END)) return false; std::string creaturename = "Unknown Being"; if(cr->GetCreatureName()) creaturename = cr->GetCreatureName()->Name; if(fieldmax) BlueSystemMessage(m_session, "Setting %s of %s to %d/%d.", fieldname, creaturename.c_str(), av, mv); else BlueSystemMessage(m_session, "Setting %s of %s to %d.", fieldname, creaturename.c_str(), av); sGMLog.writefromsession(m_session, "used modify field value: [creature]%s, %u on %s", fieldname, av, creaturename.c_str()); if(field == UNIT_FIELD_STAT1) av /= 2; if(field == UNIT_FIELD_BASE_HEALTH) cr->SetUInt32Value(UNIT_FIELD_HEALTH, av); cr->SetUInt32Value(field, av); if(fieldmax) { cr->SetUInt32Value(fieldmax, mv); } // reset faction if(field == UNIT_FIELD_FACTIONTEMPLATE) cr->_setFaction(); cr->SaveToDB(); } else { RedSystemMessage(m_session, "Invalid Selection."); } } return true; }