bool ChatHandler::CreateGuildCommand(const char* args, WorldSession *m_session) { if(!*args) return false; Player * ptarget = getSelectedChar(m_session); if(!ptarget) return false; if(strlen((char*)args)>75) { // send message to user char buf[256]; snprintf((char*)buf,256,"The name was too long by %ui", strlen((char*)args)-75); SystemMessage(m_session, buf); return true; } for (uint32 i = 0; i < strlen(args); i++) { if(!isalpha(args[i]) && args[i]!=' ') { SystemMessage(m_session, "Error, name can only contain chars A-Z and a-z."); return true; } } Charter tempCharter(0, ptarget->GetLowGUID(), CHARTER_TYPE_GUILD); tempCharter.SignatureCount=0; tempCharter.GuildName = string(args); Guild * pGuild = Guild::Create(); pGuild->CreateFromCharter(&tempCharter, ptarget->GetSession()); SystemMessage(m_session, "Guild created"); return true; }
bool ChatHandler::HandleMonsterYellCommand(const char* args, WorldSession* m_session) { Unit* crt = getSelectedCreature(m_session, false); if(!crt) crt = getSelectedChar(m_session, false); if(!crt) { RedSystemMessage(m_session, "Please select a creature or player before using this command."); return true; } if(crt->IsPlayer()) { WorldPacket* data = this->FillMessageData(CHAT_MSG_YELL, LANG_UNIVERSAL, args, crt->GetGUID(), 0); crt->SendMessageToSet(data, true); delete data; } else { crt->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, args); } return true; }
bool ChatHandler::HandleDismountCommand(const char* args, WorldSession *m_session) { Unit *m_target = NULL; Player *m_plyr = getSelectedChar(m_session, false); if(m_plyr) m_target = m_plyr; else { Creature *m_crt = getSelectedCreature(m_session, false); if(m_crt) m_target = m_crt; } if(!m_target) { RedSystemMessage(m_session, "No target found."); return true; } if(m_target->GetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID) == 0) { RedSystemMessage(m_session, "Target is not mounted."); return true; } m_target->SetUInt32Value( UNIT_FIELD_MOUNTDISPLAYID , 0); if(m_target->HasFlag(UNIT_FIELD_FLAGS, U_FIELD_FLAG_MOUNT_SIT)) m_target->RemoveFlag( UNIT_FIELD_FLAGS , U_FIELD_FLAG_MOUNT_SIT ); BlueSystemMessage(m_session, "Now unmounted."); return true; }
bool ChatHandler::HandleHideAreaCommand(const char* args) { WorldPacket data; if (!*args) return false; int area = atoi((char*)args); Player *chr = getSelectedChar(m_session); if (chr == NULL) { FillSystemMessageData(&data, m_session, "No character selected."); m_session->SendPacket( &data ); return true; } int offset = area / 32; uint32 val = (uint32)(1 << (area % 32)); uint32 currFields = chr->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); chr->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, (uint32)(currFields ^ val)); FillSystemMessageData(&data, m_session, "The area has been set as not explored."); m_session->SendPacket( &data ); return true; }
bool ChatHandler::HandleCreateInstanceCommand(const char* args, WorldSession* m_session) { Player* plr = getSelectedChar(m_session, true); float x, y, z; uint32 mapid; if (sscanf(args, "%u %f %f %f", (unsigned int*)&mapid, &x, &y, &z) != 4) return false; if (!plr) { plr = m_session->GetPlayer(); SystemMessage(m_session, "Auto-targeting self."); } if (!plr) return false; /* Create Map Manager */ MapMgr* mgr = sInstanceMgr.CreateInstance(INSTANCE_NONRAID, mapid); if (mgr == NULL) { sLog.Error("CreateInstanceGMCommand", "CreateInstance() call failed for map %u", mapid); return false; // Shouldn't happen } Log.Notice("CreateInstanceGMCommand", "GM created instance for map %u", mapid); LocationVector vec(x, y, z); m_session->GetPlayer()->SafeTeleport(mgr, vec); return true; }
bool ChatHandler::HandleShowItems(const char* args, WorldSession* m_session) { string q; Player* plr = getSelectedChar(m_session, true); if(!plr) return false; BlueSystemMessage(m_session, "Listing items for player %s", plr->GetName()); int itemcount = 0; ItemIterator itr(plr->GetItemInterface()); itr.BeginSearch(); for(; !itr.End(); itr.Increment()) { if(!(*itr)) return false; itemcount++; SendItemLinkToPlayer((*itr)->GetProto(), m_session, true, plr, m_session->language); } itr.EndSearch(); BlueSystemMessage(m_session, "Listed %d items for player %s", itemcount, plr->GetName()); sGMLog.writefromsession(m_session, "used show items command on %s,", plr->GetName()); return true; }
bool ChatHandler::HandleGetSkillsInfoCommand(const char *args, WorldSession *m_session) { Player* plr = getSelectedChar(m_session, true); if (!plr) return false; uint32 nobonus = 0; int32 bonus = 0; uint32 max = 0; BlueSystemMessage(m_session, "Player: %s has skills", plr->GetName()); for (uint32 SkillId = 0; SkillId <= SkillNameManager->maxskill; SkillId++) { if (plr->_HasSkillLine(SkillId)) { char* SkillName = SkillNameManager->SkillNames[SkillId]; if (!SkillName) { RedSystemMessage(m_session, "Invalid skill: %u", SkillId); continue; } nobonus = plr->_GetSkillLineCurrent(SkillId, false); bonus = plr->_GetSkillLineCurrent(SkillId, true) - nobonus; max = plr->_GetSkillLineMax(SkillId); BlueSystemMessage(m_session, " %s: Value: %u, MaxValue: %u. (+ %d bonus)", SkillName, nobonus, max, bonus); } } return true; }
bool ChatHandler::HandleCastSpellCommand(const char* args, WorldSession *m_session) { Unit *caster = m_session->GetPlayer(); Unit *target = getSelectedChar(m_session, false); if(!target) target = getSelectedCreature(m_session, false); if(!target) { RedSystemMessage(m_session, "Must select a char or creature."); return false; } uint32 spellid = atol(args); SpellEntry *spellentry = dbcSpell.LookupEntry(spellid); if(!spellentry) { RedSystemMessage(m_session, "Invalid spell id!"); return false; } Spell *sp = new Spell(caster, spellentry, false, NULL); if(!sp) { RedSystemMessage(m_session, "Spell failed creation!"); delete sp; return false; } BlueSystemMessage(m_session, "Casting spell %d on target.", spellid); SpellCastTargets targets; targets.m_unitTarget = target->GetGUID(); sp->prepare(&targets); return true; }
bool ChatHandler::HandleModifyExpCommand(uint8* args) { wowWData data; if (!*args) return false; uint32 Arg = atoi((char*)args); Character * pChar = getSelectedChar(); if(pChar) { int32 expuser =(pChar->pClient->getCurrentChar()->getUpdateValue(PLAYER_XP)); if(Arg<0) { int32 newexp = expuser + Arg; if(newexp < 0 ) { ChangeSelectedChar(PLAYER_XP, (uint32)0, 1000000000, 0, "XP"); return true; } } ChangeSelectedChar(PLAYER_XP, (uint32)expuser+Arg, 1000000000, 0, "XP"); } return true; }
bool ChatHandler::HandleLearnSkillCommand(const char *args, WorldSession *m_session) { uint32 skill, min, max; min = max = 1; char *pSkill = strtok((char*)args, " "); if (!pSkill) return false; else skill = atol(pSkill); BlueSystemMessage(m_session, "Adding skill line %d", skill); char *pMin = strtok(NULL, " "); if (pMin) { min = atol(pMin); char *pMax = strtok(NULL, "\n"); if (pMax) max = atol(pMax); } else { return false; } Player *plr = getSelectedChar(m_session, true); if (!plr) return false; if (plr->GetTypeId() != TYPEID_PLAYER) return false; sGMLog.writefromsession(m_session, "used add skill of %u %u %u on %s", skill, min, max, plr->GetName()); plr->_AddSkillLine(skill, min, max); return true; }
bool ChatHandler::HandleDismountCommand(const char* args, WorldSession *m_session) { Unit* m_target = NULL; Player* p_target = getSelectedChar(m_session, false); if(p_target) m_target = TO_UNIT(p_target); else { Creature* m_crt = getSelectedCreature(m_session, false); if(m_crt) m_target = m_crt; } if(!m_target) RedSystemMessage(m_session, "No target found."); else if( !m_target->GetUInt32Value( UNIT_FIELD_MOUNTDISPLAYID) ) RedSystemMessage(m_session, "Target is not mounted."); else { m_target->Dismount(); BlueSystemMessage(m_session, "Unit has been dismounted."); } return true; }
/** Handles .achieve criteria .achieve criteria id : completes achievement criteria "id" for the selected player */ bool ChatHandler::HandleAchievementCriteriaCommand(const char* args, WorldSession* m_session) { if(!*args) return false; Player* plr = getSelectedChar(m_session, true); if(!plr) { plr = m_session->GetPlayer(); SystemMessage(m_session, "Auto-targeting self."); } uint32 criteria_id = atol(args); if(criteria_id == 0) { if(stricmp(args, "all") == 0) { plr->GetAchievementMgr().GMCompleteCriteria(m_session, -1); SystemMessage(m_session, "All achievement criteria have now been completed for that player."); sGMLog.writefromsession(m_session, "completed all achievement criteria for player %s", plr->GetName()); return true; } return false; } if(plr->GetAchievementMgr().GMCompleteCriteria(m_session, criteria_id)) { SystemMessage(m_session, "The achievement criteria has now been completed for that player."); sGMLog.writefromsession(m_session, "completed achievement criteria %u for player %s", criteria_id, plr->GetName()); } return true; }
bool ChatHandler::HandleDismountCommand(const char* /*args*/, WorldSession* m_session) { Unit* m_target = NULL; Player* p_target = getSelectedChar(m_session, false); if (p_target) m_target = p_target; else { if (Creature* m_crt = getSelectedCreature(m_session, false)) m_target = m_crt; } if (!m_target) { RedSystemMessage(m_session, "No target found."); return true; } if (!m_target->GetMount()) { RedSystemMessage(m_session, "Target is not mounted."); return true; } if (p_target) p_target->Dismount(); if (m_target) m_target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0); return true; }
bool ChatHandler::HandleCastSpellNECommand(const char* args, WorldSession *m_session) { Unit *caster = m_session->GetPlayer(); Unit *target = getSelectedChar(m_session, false); if(!target) target = getSelectedCreature(m_session, false); if(!target) { RedSystemMessage(m_session, "Must select a char or creature."); return false; } uint32 spellId = atol(args); SpellEntry *spellentry = dbcSpell.LookupEntry(spellId); if(!spellentry) { RedSystemMessage(m_session, "Invalid spell id!"); return false; } BlueSystemMessage(m_session, "Casting spell %d on target.", spellId); WorldPacket data; data.Initialize( SMSG_SPELL_START ); data << caster->GetNewGUID(); data << caster->GetNewGUID(); data << spellId; data << uint8(0); data << uint16(0); data << uint32(0); data << uint16(2); data << target->GetGUID(); // WPAssert(data.size() == 36); m_session->SendPacket( &data ); data.Initialize( SMSG_SPELL_GO ); data << caster->GetNewGUID(); data << caster->GetNewGUID(); data << spellId; data << uint8(0) << uint8(1) << uint8(1); data << target->GetGUID(); data << uint8(0); data << uint16(2); data << target->GetGUID(); // WPAssert(data.size() == 42); m_session->SendPacket( &data ); switch ( target->GetTypeId() ) { case TYPEID_PLAYER: if ( caster != target ) sGMLog.writefromsession( m_session, "casted spell %d on PLAYER %s", spellId, static_cast< Player* >( target )->GetName() ); break; case TYPEID_UNIT: sGMLog.writefromsession( m_session, "casted spell %d on CREATURE %u [%s], sqlid %u", spellId, static_cast< Creature* >( target )->GetEntry(), static_cast< Creature* >( target )->GetCreatureInfo() ? static_cast< Creature* >( target )->GetCreatureInfo()->Name : "unknown", static_cast< Creature* >( target )->GetSQL_id() ); break; } return true; }
bool ChatHandler::HandleModifySpeedCommand(const char* args, WorldSession *m_session) { WorldPacket data; if (!*args) return false; float Speed = (float)atof((char*)args); if (Speed > 255 || Speed < 1) { RedSystemMessage(m_session, "Incorrect value. Range is 1..255"); return true; } Player *chr = getSelectedChar(m_session); if( chr == NULL ) return true; char buf[256]; // send message to user BlueSystemMessage(m_session, "You set the speed of %s to %2.2f.", chr->GetName(), Speed); // send message to player snprintf((char*)buf,256, "%s set your speed to %2.2f.", m_session->GetPlayer()->GetName(), Speed); SystemMessage(chr->GetSession(), buf); chr->SetPlayerSpeed(RUN, Speed); chr->SetPlayerSpeed(SWIM, Speed); chr->SetPlayerSpeed(RUNBACK, Speed); chr->SetPlayerSpeed(FLY, Speed); 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::HandleModifyGoldCommand(uint8* args) { wowWData data; if (!*args) return false; uint32 Arg = atoi((char*)args); Character * pChar = getSelectedChar(); if(pChar) { int32 moneyuser =(pChar->pClient->getCurrentChar()->getUpdateValue(PLAYER_FIELD_COINAGE)); if(Arg<0) { int32 newmoney = moneyuser + Arg; if(newmoney < 0 ) { ChangeSelectedChar(PLAYER_FIELD_COINAGE, (uint32)0, 1000000000, 0, "COPPER"); return true; } } ChangeSelectedChar(PLAYER_FIELD_COINAGE, (uint32)moneyuser+Arg, 1000000000, 0, "COPPER"); } return true; }
bool ChatHandler::HandleTaxiCheatCommand(const char* args, WorldSession *m_session) { if (!*args) return false; Player *chr = getSelectedChar(m_session); if (chr == NULL) return true; if (strcmp(args, "on") == 0) { GreenSystemMessage(m_session, "%s has all taxi nodes now.", chr->GetName()); SystemMessage(m_session, "%s has given you all taxi nodes.", m_session->GetPlayer()->GetName()); } else if (strcmp(args, "off") == 0) { GreenSystemMessage(m_session, "%s has no more taxi nodes now.", chr->GetName()); SystemMessage(chr->GetSession(), "%s has deleted all your taxi nodes.", m_session->GetPlayer()->GetName()); } else return false; for (uint8 i = 0; i < 8; i++) { if (strcmp(args, "on") == 0) { chr->SetTaximask(i, 0xFFFFFFFF); } else if (strcmp(args, "off") == 0) { chr->SetTaximask(i, 0); } } return true; }
bool ChatHandler::HandleQuestRemoveCommand(const char * args, WorldSession * m_session) { if(!*args) return false; Player *plr = getSelectedChar(m_session, true); if(!plr) { plr = m_session->GetPlayer(); SystemMessage(m_session, "Auto-targeting self."); } string recout = ""; uint32 quest_id = atol(args); if(quest_id== 0) { quest_id = GetQuestIDFromLink(args); if(quest_id== 0) return false; } Quest * qst = QuestStorage.LookupEntry(quest_id); if(qst) { recout = RemoveQuestFromPlayer(plr, qst); sGMLog.writefromsession( m_session, "removed quest %u [%s] from player %s%", qst->id, qst->title, plr->GetName() ); } else recout = "Invalid quest selected, unable to remove.\n\n"; SystemMessage(m_session, recout.c_str()); return true; }
/// DGM: Get skill level command for getting information about a skill bool ChatHandler::HandleGetSkillLevelCommand(const char *args, WorldSession *m_session) { uint32 skill = 0; char* pSkill = strtok((char*)args, " "); if (!pSkill) return false; else skill = atol(pSkill); Player* plr = getSelectedChar(m_session, true); if (!plr) return false; if (skill > SkillNameManager->maxskill) { BlueSystemMessage(m_session, "Skill: %u does not exists", skill); return false; } char* SkillName = SkillNameManager->SkillNames[skill]; if (SkillName == 0) { BlueSystemMessage(m_session, "Skill: %u does not exists", skill); return false; } if (!plr->_HasSkillLine(skill)) { BlueSystemMessage(m_session, "Player does not have %s skill.", SkillName); return false; } uint32 nobonus = plr->_GetSkillLineCurrent(skill, false); uint32 bonus = plr->_GetSkillLineCurrent(skill, true) - nobonus; uint32 max = plr->_GetSkillLineMax(skill); BlueSystemMessage(m_session, "Player's %s skill has level: %u maxlevel: %u. (+ %u bonus)", SkillName, nobonus, max, bonus); return true; }
bool ChatHandler::HandleAddInvItemCommand(const char *args, WorldSession *m_session) { uint32 itemid, count=1; int32 randomprop=0; if(strlen(args) < 1) { return false; } if(sscanf(args, "%u %u %d", &itemid, &count, &randomprop) < 1) return false; Player * chr = getSelectedChar( m_session, false ); if ( chr == NULL ) chr = m_session->GetPlayer(); ItemPrototype* it = ItemPrototypeStorage.LookupEntry(itemid); if(it) { sGMLog.writefromsession(m_session, "used add item command, item id %u [%s] to %s", it->ItemId, it->Name1, chr->GetName()); Item *item; item = objmgr.CreateItem( itemid, chr); item->SetUInt32Value(ITEM_FIELD_STACK_COUNT, ((count > it->MaxCount) ? it->MaxCount : count)); if(it->Bonding==ITEM_BIND_ON_PICKUP) item->SoulBind(); if(randomprop!=0) { if(randomprop<0) item->SetRandomSuffix(abs(int(randomprop))); else item->SetRandomProperty(randomprop); item->ApplyRandomProperties(false); } if(!chr->GetItemInterface()->AddItemToFreeSlot(item)) { m_session->SendNotification("No free slots were found in your inventory!"); item->DeleteMe(); return true; } char messagetext[512]; snprintf(messagetext, 512, "Adding item %s (id: %d) to %s's inventory.", GetItemLinkByProto(it, m_session->language).c_str(), (unsigned int)it->ItemId, chr->GetName()); SystemMessage(m_session, messagetext); snprintf(messagetext, 128, "%s added item %d (%s) to your inventory.", m_session->GetPlayer()->GetName(), (unsigned int)itemid, it->Name1); snprintf(messagetext, 512, "%s added item %s to your inventory.", m_session->GetPlayer()->GetName(), GetItemLinkByProto(it, chr->GetSession()->language).c_str()); SystemMessageToPlr(chr, messagetext); SlotResult *lr = chr->GetItemInterface()->LastSearchResult(); chr->GetSession()->SendItemPushResult(item,false,true,false,true,lr->ContainerSlot,lr->Slot,count); return true; } else { RedSystemMessage(m_session, "Item %d is not a valid item!", itemid); return true; } }
bool ChatHandler::HandleExploreCheatCommand(const char* args) { WorldPacket data; if (!*args) return false; int flag = atoi((char*)args); Player *chr = getSelectedChar(m_session); if (chr == NULL) { FillSystemMessageData(&data, m_session, "No character selected."); m_session->SendPacket( &data ); return true; } char buf[256]; if (flag != 0) { sprintf((char*)buf,"%s has explored all zones now.", chr->GetName()); } else { sprintf((char*)buf,"%s has no more explored zones.", chr->GetName()); } FillSystemMessageData(&data, m_session, buf); m_session->SendPacket( &data ); if (flag != 0) { sprintf((char*)buf,"%s has explored all zones for you.", m_session->GetPlayer()->GetName()); } else { sprintf((char*)buf,"%s has hidden all zones from you.", m_session->GetPlayer()->GetName()); } FillSystemMessageData(&data, m_session, buf); chr->GetSession()->SendPacket(&data); for (uint8 i=0; i<64; i++) { if (flag != 0) { m_session->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i,0xFFFFFFFF); } else { m_session->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i,0); } } return true; }
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::HandleAddInvItemCommand(const char* args, WorldSession* m_session) { uint32 itemid, count = 1; int32 randomprop = 0; int32 numadded = 0; if(strlen(args) < 1) return false; if(sscanf(args, "%u %u %d", &itemid, &count, &randomprop) < 1) { // check for item link uint16 ofs = GetItemIDFromLink(args, &itemid); if(!itemid) return false; sscanf(args + ofs, "%u %d", &count, &randomprop); // these may be empty } Player* chr = getSelectedChar(m_session, false); if(!chr) chr = m_session->GetPlayer(); ItemPrototype* it = ItemPrototypeStorage.LookupEntry(itemid); if(it) { numadded -= chr->GetItemInterface()->GetItemCount(itemid); bool result = false; result = chr->GetItemInterface()->AddItemById(itemid, count, randomprop); numadded += chr->GetItemInterface()->GetItemCount(itemid); if(result == true) { if(count == 0) sGMLog.writefromsession(m_session, "used add item command, item id %u [%s], quantity %u, to %s", it->ItemId, it->Name1, numadded, chr->GetName()); else sGMLog.writefromsession(m_session, "used add item command, item id %u [%s], quantity %u (only %lu added due to full inventory), to %s", it->ItemId, it->Name1, numadded, numadded, chr->GetName()); char messagetext[512]; snprintf(messagetext, 512, "Added item %s (id: %d), quantity %u, to %s's inventory.", GetItemLinkByProto(it, m_session->language).c_str(), (unsigned int)it->ItemId, numadded, chr->GetName()); SystemMessage(m_session, messagetext); //snprintf(messagetext, 128, "%s added item %d (%s) to your inventory.", m_session->GetPlayer()->GetName(), (unsigned int)itemid, it->Name1); snprintf(messagetext, 512, "%s added item %s, quantity %u, to your inventory.", m_session->GetPlayer()->GetName(), GetItemLinkByProto(it, chr->GetSession()->language).c_str(), numadded); SystemMessageToPlr(chr, messagetext); } else SystemMessageToPlr(chr, "Failed to add item."); return true; } else { RedSystemMessage(m_session, "Item %d is not a valid item!", itemid); return false; } }
bool ChatHandler::HandleAddItemSetCommand(const char* args, WorldSession* m_session) { uint32 setid = (args ? atoi(args) : 0); if(!setid) { RedSystemMessage(m_session, "You must specify a setid."); return false; } Player* chr = getSelectedChar(m_session); if(!chr) { RedSystemMessage(m_session, "Unable to select character."); return false; } ItemSetEntry* entry = dbcItemSet.LookupEntryForced(setid); std::list<ItemPrototype*>* l = objmgr.GetListForItemSet(setid); if(!entry || !l) { RedSystemMessage(m_session, "Invalid item set."); return false; } //const char* setname = sItemSetStore.LookupString(entry->name); BlueSystemMessage(m_session, "Searching item set %u...", setid); uint32 start = getMSTime(); sGMLog.writefromsession(m_session, "used add item set command, set %u, target %s", setid, chr->GetName()); for(std::list<ItemPrototype*>::iterator itr = l->begin(); itr != l->end(); ++itr) { Item* itm = objmgr.CreateItem((*itr)->ItemId, m_session->GetPlayer()); if(!itm) continue; if(itm->GetProto()->Bonding == ITEM_BIND_ON_PICKUP) { if(itm->GetProto()->Flags & ITEM_FLAG_ACCOUNTBOUND) // don't "Soulbind" account-bound items itm->AccountBind(); else itm->SoulBind(); } if(!chr->GetItemInterface()->AddItemToFreeSlot(itm)) { m_session->SendNotification("No free slots left!"); itm->DeleteMe(); return false; } else { //SystemMessage(m_session, "Added item: %s [%u]", (*itr)->Name1, (*itr)->ItemId); SlotResult* le = chr->GetItemInterface()->LastSearchResult(); chr->SendItemPushResult(false, true, false, true, le->ContainerSlot, le->Slot, 1 , itm->GetEntry(), itm->GetItemRandomSuffixFactor(), itm->GetItemRandomPropertyId(), itm->GetStackCount()); } } GreenSystemMessage(m_session, "Added set to inventory complete. Time: %u ms", getMSTime() - start); return true; }
bool ChatHandler::HandleModifyPlayerFlagsCommand(const char *args, WorldSession *m_session) { Player* player = getSelectedChar(m_session); if(player == NULL || !args) return true; uint32 flags = atol(args); player->SetFlag(PLAYER_FLAGS, flags); return true; }
bool ChatHandler::HandleDeMorphCommand(const char* args, WorldSession *m_session) { Player * target = getSelectedChar(m_session); if(!target) target = m_session->GetPlayer(); target->DeMorph(); return true; }
bool ChatHandler::HandleSaveCommand(const char* /*args*/, WorldSession* m_session) { Player* p_target = getSelectedChar(m_session, false); if (!p_target) return false; p_target->SaveToDB(false); GreenSystemMessage(m_session, "Player %s saved to DB", p_target->GetName()); return true; }
bool ChatHandler::HandleModifyAuraStateCommand(const char *args, WorldSession *m_session) { Player* player = getSelectedChar(m_session); if(player == NULL || !args) return true; uint32 flags = uint32(uint32(1) << (atol(args) - 1)); player->SetFlag(UNIT_FIELD_AURASTATE, flags); return true; }
bool ChatHandler::HandleDeMorphCommand(const char* args, WorldSession *m_session) { Player * target = getSelectedChar(m_session); if(!target) target = m_session->GetPlayer(); sLog.outError("Demorphed %s", target->GetName()); target->DeMorph(); return true; }