//.guild disband bool ChatHandler::HandleGuildDisbandCommand(const char* /*args*/, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; #if VERSION_STRING != Cata if (!selected_player->IsInGuild()) { RedSystemMessage(m_session, "%s is not in a guild.", selected_player->GetName()); return true; } #else if (!selected_player->GetGuild()) { RedSystemMessage(m_session, "%s is not in a guild.", selected_player->GetName()); return true; } #endif #if VERSION_STRING != Cata GreenSystemMessage(m_session, "Disbanded Guild: %s", selected_player->GetGuild()->getGuildName()); sGMLog.writefromsession(m_session, "Disbanded Guild %s", selected_player->GetGuild()->getGuildName()); #else GreenSystemMessage(m_session, "Disbanded Guild: %s", selected_player->GetGuild()->getName().c_str()); sGMLog.writefromsession(m_session, "Disbanded Guild %s", selected_player->GetGuild()->getName().c_str()); #endif selected_player->GetGuild()->disband(); return true; }
//.pet setlevel bool ChatHandler::HandlePetSetLevelCommand(const char* args, WorldSession* m_session) { if (!*args) return false; int32 newLevel = atol(args); if (newLevel < 1) return false; Player* selected_player = GetSelectedPlayer(m_session, false, true); Pet* selected_pet = nullptr; if (selected_player != nullptr) { selected_pet = selected_player->GetSummon(); if (selected_pet == nullptr) { RedSystemMessage(m_session, "Player has no pet."); return true; } } else { Creature* selected_creature = GetSelectedCreature(m_session, false); if (selected_creature == nullptr) return false; if (!selected_creature->IsPet()) return false; selected_pet = static_cast< Pet* >(selected_creature); selected_player = selected_pet->GetPetOwner(); } if ((uint32)newLevel > selected_player->getLevel()) { RedSystemMessage(m_session, "You can not set a pet level higher than thew player level!"); newLevel = selected_player->getLevel(); } selected_pet->setLevel(newLevel); selected_pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0); selected_pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, selected_pet->GetNextLevelXP(newLevel)); selected_pet->ApplyStatsForLevel(); selected_pet->UpdateSpellList(); if (selected_player != m_session->GetPlayer()) { GreenSystemMessage(m_session, "Set %s's pet to level %lu.", selected_player->GetName(), newLevel); SystemMessage(selected_player->GetSession(), "%s set your pet to level %lu.", m_session->GetPlayer()->GetName(), newLevel); sGMLog.writefromsession(m_session, "leveled %s's pet to %lu", selected_player->GetName(), newLevel); } else { GreenSystemMessage(m_session, "You set your pet to level %lu.", newLevel); } return true; }
//.pet removespell bool ChatHandler::HandlePetRemoveSpellCommand(const char* args, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; if (selected_player->GetSummon() == nullptr) { RedSystemMessage(m_session, "%s has no pet.", selected_player->GetName()); return true; } if (!*args) return false; uint32 SpellId = atol(args); SpellInfo* spell_entry = sSpellCustomizations.GetSpellInfo(SpellId); if (spell_entry == nullptr) { RedSystemMessage(m_session, "Invalid spell id requested."); return true; } std::list<Pet*> summons = selected_player->GetSummons(); for (std::list<Pet*>::iterator itr = summons.begin(); itr != summons.end(); ++itr) { (*itr)->RemoveSpell(SpellId); } GreenSystemMessage(m_session, "Removed spell %u from %s's pet.", SpellId, selected_player->GetName()); return true; }
//.pet rename bool ChatHandler::HandlePetRenameCommand(const char* args, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; Pet* selected_pet = selected_player->GetSummon(); if (selected_pet == nullptr) { RedSystemMessage(m_session, "You have no pet."); return true; } if (strlen(args) < 2) { RedSystemMessage(m_session, "You must specify a name."); return true; } if (selected_player != m_session->GetPlayer()) { GreenSystemMessage(m_session, "Renamed %s's pet to %s.", selected_player->GetName(), args); SystemMessage(selected_player->GetSession(), "%s renamed your pet to %s.", m_session->GetPlayer()->GetName(), args); sGMLog.writefromsession(m_session, "renamed %s's pet to %s", selected_player->GetName(), args); } else { GreenSystemMessage(m_session, "You renamed you pet to %s.", args); } selected_pet->Rename(args); return true; }
//.guild removeplayer bool ChatHandler::HandleGuildRemovePlayerCommand(const char* /*args*/, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; #if VERSION_STRING != Cata if (selected_player->IsInGuild()) { RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName()); return true; } #else if (selected_player->GetGuild()) { RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName()); return true; } #endif #if VERSION_STRING != Cata if (selected_player->GetGuild()->GetGuildLeader() != selected_player->getGuidLow() || !m_session->GetPlayer()->isGMFlagSet()) { RedSystemMessage(m_session, "Only guild leaders and gms can remove players from a guild!"); return true; } GreenSystemMessage(m_session, "Kicked %s from Guild: %s", selected_player->GetName(), selected_player->GetGuild()->getGuildName()); if (selected_player != m_session->GetPlayer()) sGMLog.writefromsession(m_session, "Kicked %s from Guild %s", selected_player->GetName(), selected_player->GetGuild()->getGuildName()); selected_player->GetGuild()->RemoveGuildMember(selected_player->getPlayerInfo(), selected_player->GetSession()); #else if (selected_player->GetGuild()->getLeaderGUID() != selected_player->getGuid() || !m_session->GetPlayer()->isGMFlagSet()) { RedSystemMessage(m_session, "Only guild leaders and gms can remove players from a guild!"); return true; } GreenSystemMessage(m_session, "Kicked %s from Guild: %s", selected_player->GetName(), selected_player->GetGuild()->getName().c_str()); if (selected_player != m_session->GetPlayer()) sGMLog.writefromsession(m_session, "Kicked %s from Guild %s", selected_player->GetName(), selected_player->GetGuild()->getName().c_str()); selected_player->GetGuild()->handleRemoveMember(selected_player->GetSession(), selected_player->getGuid()); #endif return true; }
//.guild rename bool ChatHandler::HandleRenameGuildCommand(const char* args, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; #if VERSION_STRING != Cata if (selected_player->IsInGuild()) { RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName()); return true; } #else if (selected_player->GetGuild()) { RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName()); return true; } #endif if (!*args) return false; #if VERSION_STRING != Cata Guild* guild = objmgr.GetGuildByGuildName(std::string(args)); #else Guild* guild = sGuildMgr.getGuildByName(std::string(args)); #endif if (guild != nullptr) { RedSystemMessage(m_session, "Guild name %s is already taken.", args); return true; } else { #if VERSION_STRING != Cata GreenSystemMessage(m_session, "Changed guild name of %s to %s. This will take effect next restart.", selected_player->GetGuild()->getGuildName(), args); CharacterDatabase.Execute("UPDATE guilds SET `guildName` = \'%s\' WHERE `guildId` = '%u'", CharacterDatabase.EscapeString(std::string(args)).c_str(), selected_player->GetGuild()->getGuildId()); sGMLog.writefromsession(m_session, "Changed guild name of '%s' to '%s'", selected_player->GetGuild()->getGuildName(), args); #else GreenSystemMessage(m_session, "Changed guild name of %s to %s. This will take effect next restart.", selected_player->GetGuild()->getName().c_str(), args); CharacterDatabase.Execute("UPDATE guilds SET `guildName` = \'%s\' WHERE `guildId` = '%u'", CharacterDatabase.EscapeString(std::string(args)).c_str(), selected_player->GetGuild()->getId()); sGMLog.writefromsession(m_session, "Changed guild name of '%s' to '%s'", selected_player->GetGuild()->getName().c_str(), args); #endif } return true; }
//.pet create bool ChatHandler::HandlePetCreateCommand(const char* args, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; if (!*args) return false; uint32 entry = atol(args); CreatureProperties const* creature_proto = sMySQLStore.GetCreatureProperties(entry); if (creature_proto == nullptr) { RedSystemMessage(m_session, "Creature Entry: %u is not a valid endtry!", entry); return true; } selected_player->DismissActivePets(); selected_player->RemoveFieldSummon(); float followangle = -M_PI_FLOAT * 2; LocationVector vector(selected_player->GetPosition()); vector.x += (3 * (cosf(followangle + selected_player->GetOrientation()))); vector.y += (3 * (sinf(followangle + selected_player->GetOrientation()))); Pet* pet = objmgr.CreatePet(entry); if (!pet->CreateAsSummon(entry, creature_proto, nullptr, selected_player, nullptr, 1, 0, &vector, true)) { pet->DeleteMe(); return true; } pet->GetAIInterface()->SetUnitToFollowAngle(followangle); if (selected_player != m_session->GetPlayer()) { sGMLog.writefromsession(m_session, "used created pet with entry %u for player %s", entry, selected_player->GetName()); BlueSystemMessage(m_session, "Pet with entry %u created for player %s.", entry, selected_player->GetName()); BlueSystemMessage(selected_player->GetSession(), "%s created a pet with entry %u for you.", m_session->GetPlayer()->GetName(), entry); } else { BlueSystemMessage(m_session, "Pet with entry %u created.", entry); } return true; }
//.pet dismiss bool ChatHandler::HandlePetDismissCommand(const char* args, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, false, true); Pet* selected_pet = nullptr; if (selected_player != nullptr) { if (selected_player->GetSummon() == nullptr) { RedSystemMessage(m_session, "Player has no pet."); return true; } else { selected_player->DismissActivePets(); } } else { // no player selected, see if it is a pet Creature* selected_creature = GetSelectedCreature(m_session, false); if (selected_creature == nullptr) return false; if (!selected_creature->IsPet()) return false; selected_pet = static_cast< Pet* >(selected_creature); selected_player = selected_pet->GetPetOwner(); selected_pet->Dismiss(); } if (selected_player != m_session->GetPlayer()) { GreenSystemMessage(m_session, "Dismissed %s's pet.", selected_player->GetName()); SystemMessage(selected_player->GetSession(), "%s dismissed your pet.", m_session->GetPlayer()->GetName()); sGMLog.writefromsession(m_session, "used dismiss pet command on player %s", selected_player->GetName()); } else { GreenSystemMessage(m_session, "Your pet is dismissed."); } return true; }
bool ChatHandler::HandleGuildInfoCommand(const char* /*args*/, WorldSession* session) { Player* selected_player = GetSelectedPlayer(session, true, true); if (selected_player == nullptr) return true; if (!selected_player->GetGuild()) { RedSystemMessage(session, "%s is not in a guild.", selected_player->GetName()); return true; } GreenSystemMessage(session, "Player Guild Information:"); GreenSystemMessage(session, " GuildName: %s", selected_player->GetGuild()->getName().c_str()); GreenSystemMessage(session, " GuildId: %u", selected_player->GetGuild()->getId()); GreenSystemMessage(session, " Player rank: %u", selected_player->GetRankFromDB(selected_player->getGuid())); return true; }
//.guild listmembers bool ChatHandler::HandleGuildListMembersCommand(const char* /*args*/, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; #if VERSION_STRING != Cata if (selected_player->IsInGuild()) { RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName()); return true; } #else if (selected_player->GetGuild()) { RedSystemMessage(m_session, "%s not in a guild.", selected_player->GetName()); return true; } #endif #if VERSION_STRING != Cata GreenSystemMessage(m_session, "Now showing guild members for %s", selected_player->GetGuild()->getGuildName()); #else GreenSystemMessage(m_session, "Now showing guild members for %s", selected_player->GetGuild()->getName().c_str()); #endif #if VERSION_STRING != Cata selected_player->GetGuild()->Lock(); for (GuildMemberMap::iterator itr = selected_player->GetGuild()->GetGuildMembersBegin(); itr != selected_player->GetGuild()->GetGuildMembersEnd(); ++itr) { GuildMember* member = itr->second; if (!member || !member->pPlayer) continue; BlueSystemMessage(m_session, "%s (Rank: %s)", member->pPlayer->name, member->pRank->szRankName); } selected_player->GetGuild()->Unlock(); #endif return true; }
//.guild create bool ChatHandler::HandleGuildCreateCommand(const char* args, WorldSession* m_session) { #if VERSION_STRING != Cata Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; if (!*args) return false; if (selected_player->IsInGuild()) { RedSystemMessage(m_session, "%s is already in a guild.", selected_player->GetName()); return true; } if (strlen((char*)args) > 75) { // send message to user char buf[256]; snprintf((char*)buf, 256, "The name was too long by %u", (uint32)strlen(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; } } Guild* pGuild = NULL; pGuild = objmgr.GetGuildByGuildName(std::string(args)); if (pGuild) { RedSystemMessage(m_session, "Guild name is already taken."); return true; } Charter tempCharter(0, selected_player->getGuidLow(), CHARTER_TYPE_GUILD); tempCharter.SignatureCount = 0; tempCharter.GuildName = std::string(args); pGuild = Guild::Create(); pGuild->CreateFromCharter(&tempCharter, selected_player->GetSession()); GreenSystemMessage(m_session, "Guild created"); sGMLog.writefromsession(m_session, "Created guild '%s'", args); return true; #else Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; if (!*args) return false; if (selected_player->GetGuild()) { RedSystemMessage(m_session, "%s is already in a guild.", selected_player->GetName()); return true; } if (strlen((char*)args) > 75) { // send message to user char buf[256]; snprintf((char*)buf, 256, "The name was too long by %u", (uint32)strlen(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, selected_player->getGuidLow(), CHARTER_TYPE_GUILD); tempCharter.SignatureCount = 0; tempCharter.GuildName = std::string(args); Guild* guild = new Guild; if (!guild->create(selected_player, std::string(args))) { delete guild; SystemMessage(m_session, "Guild not created"); return true; } sGuildMgr.addGuild(guild); //\todo danko //pGuild->CreateFromCharter(&tempCharter, selected_player->GetSession()); GreenSystemMessage(m_session, "Guild created"); sGMLog.writefromsession(m_session, "Created guild '%s'", args); return true; #endif }
//.guild join bool ChatHandler::HandleGuildJoinCommand(const char* args, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; #if VERSION_STRING != Cata if (selected_player->IsInGuild()) { RedSystemMessage(m_session, "%s is already in a guild.", selected_player->GetName()); return true; } #else if (selected_player->GetGuild()) { RedSystemMessage(m_session, "%s is already in a guild.", selected_player->GetName()); return true; } #endif if (!*args) return false; #if VERSION_STRING != Cata Guild* guild = objmgr.GetGuildByGuildName(std::string(args)); if (guild != nullptr) { guild->getLock().Acquire(); uint32 memberCount = static_cast<uint32>(guild->GetNumMembers()); guild->getLock().Release(); if (memberCount >= MAX_GUILD_MEMBERS) { m_session->SystemMessage("That guild is full."); return true; } guild->AddGuildMember(selected_player->getPlayerInfo(), m_session, -2); GreenSystemMessage(m_session, "You have joined the guild '%s'", guild->getGuildName()); sGMLog.writefromsession(m_session, "Force joined guild '%s'", guild->getGuildName()); return true; } else { RedSystemMessage(m_session, "Guild %s is not a valid guildname!", args); } #else Guild* guild = sGuildMgr.getGuildByName(std::string(args)); if (guild != nullptr) { uint32 memberCount = guild->getMembersCount(); if (memberCount >= worldConfig.guild.maxMembers) { m_session->SystemMessage("That guild is full."); return true; } guild->addMember(selected_player->getGuid(), 4); GreenSystemMessage(m_session, "You have joined the guild '%s'", guild->getName().c_str()); sGMLog.writefromsession(m_session, "Force joined guild '%s'", guild->getName().c_str()); return true; } else { RedSystemMessage(m_session, "Guild %s is not a valid guildname!", args); } #endif return false; }