diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Chat/Chat.cpp | 222 | ||||
| -rwxr-xr-x | src/server/game/Chat/Chat.h | 154 | ||||
| -rwxr-xr-x | src/server/game/Chat/Commands/Debugcmds.cpp | 1101 | ||||
| -rwxr-xr-x | src/server/game/Chat/Commands/Level0.cpp | 148 | ||||
| -rwxr-xr-x | src/server/game/Chat/Commands/Level1.cpp | 1572 | ||||
| -rwxr-xr-x | src/server/game/Chat/Commands/Level2.cpp | 1580 | ||||
| -rwxr-xr-x | src/server/game/Chat/Commands/Level3.cpp | 1525 | ||||
| -rwxr-xr-x | src/server/game/Chat/Commands/TicketCommands.cpp | 42 | ||||
| -rwxr-xr-x | src/server/game/Scripting/ScriptLoader.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptLoader.h | 2 | ||||
| -rw-r--r-- | src/server/scripts/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_gm.cpp | 35 | ||||
| -rwxr-xr-x | src/server/worldserver/CommandLine/CliRunnable.cpp | 146 |
13 files changed, 77 insertions, 6459 deletions
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index bba11c08b22..0aaecd233f5 100755 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -90,27 +90,6 @@ static size_t appendCommandTable(ChatCommand* target, const ChatCommand* source) ChatCommand * ChatHandler::getCommandTable() { - static ChatCommand accountSetCommandTable[] = - { - { "addon", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleAccountSetAddonCommand>, "", NULL }, - { "gmlevel", SEC_CONSOLE, true, OldHandler<&ChatHandler::HandleAccountSetGmLevelCommand>, "", NULL }, - { "password", SEC_CONSOLE, true, OldHandler<&ChatHandler::HandleAccountSetPasswordCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - - static ChatCommand accountCommandTable[] = - { - { "addon", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleAccountAddonCommand>, "", NULL }, - { "create", SEC_CONSOLE, true, OldHandler<&ChatHandler::HandleAccountCreateCommand>, "", NULL }, - { "delete", SEC_CONSOLE, true, OldHandler<&ChatHandler::HandleAccountDeleteCommand>, "", NULL }, - { "onlinelist", SEC_CONSOLE, true, OldHandler<&ChatHandler::HandleAccountOnlineListCommand>, "", NULL }, - { "lock", SEC_PLAYER, false, OldHandler<&ChatHandler::HandleAccountLockCommand>, "", NULL }, - { "set", SEC_ADMINISTRATOR, true, NULL, "", accountSetCommandTable }, - { "password", SEC_PLAYER, false, OldHandler<&ChatHandler::HandleAccountPasswordCommand>, "", NULL }, - { "", SEC_PLAYER, false, OldHandler<&ChatHandler::HandleAccountCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - static ChatCommand banCommandTable[] = { { "account", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleBanAccountCommand>, "", NULL }, @@ -181,59 +160,6 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; - static ChatCommand debugPlayCommandTable[] = - { - { "cinematic", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleDebugPlayCinematicCommand>, "", NULL }, - { "movie", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleDebugPlayMovieCommand>, "", NULL }, - { "sound", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleDebugPlaySoundCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - - static ChatCommand debugSendCommandTable[] = - { - { "buyerror", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendBuyErrorCommand>, "", NULL }, - { "channelnotify", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendChannelNotifyCommand>, "", NULL }, - { "chatmmessage", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendChatMsgCommand>, "", NULL }, - { "equiperror", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendEquipErrorCommand>, "", NULL }, - { "largepacket", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendLargePacketCommand>, "", NULL }, - { "opcode", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendOpcodeCommand>, "", NULL }, - { "poi", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendPoiCommand>, "", NULL }, - { "qpartymsg", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendQuestPartyMsgCommand>, "", NULL }, - { "qinvalidmsg", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendQuestInvalidMsgCommand>, "", NULL }, - { "sellerror", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendSellErrorCommand>, "", NULL }, - { "setphaseshift", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendSetPhaseShiftCommand>, "", NULL }, - { "spellfail", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSendSpellFailCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - - static ChatCommand debugCommandTable[] = - { - { "setbit", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSet32Bit>, "", NULL }, - { "threat", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugThreatList>, "", NULL }, - { "hostil", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugHostileRefList>, "", NULL }, - { "anim", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleDebugAnimCommand>, "", NULL }, - { "arena", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugArenaCommand>, "", NULL }, - { "bg", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugBattlegroundCommand>, "", NULL }, - { "getitemstate", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugGetItemStateCommand>, "", NULL }, - { "lootrecipient", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleDebugGetLootRecipientCommand>, "", NULL }, - { "getvalue", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugGetValueCommand>, "", NULL }, - { "getitemvalue", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugGetItemValueCommand>, "", NULL }, - { "Mod32Value", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugMod32ValueCommand>, "", NULL }, - { "play", SEC_MODERATOR, false, NULL, "", debugPlayCommandTable }, - { "send", SEC_ADMINISTRATOR, false, NULL, "", debugSendCommandTable }, - { "setaurastate", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSetAuraStateCommand>, "", NULL }, - { "setitemvalue", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSetItemValueCommand>, "", NULL }, - { "setvalue", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSetValueCommand>, "", NULL }, - { "spawnvehicle", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSpawnVehicle>, "", NULL }, - { "setvid", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugSetVehicleId>, "", NULL }, - { "entervehicle", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugEnterVehicle>, "", NULL }, - { "uws", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugUpdateWorldStateCommand>, "", NULL }, - { "update", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugUpdateCommand>, "", NULL }, - { "itemexpire", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugItemExpireCommand>, "", NULL }, - { "areatriggers", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleDebugAreaTriggers>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - static ChatCommand eventCommandTable[] = { { "activelist", SEC_GAMEMASTER, true, OldHandler<&ChatHandler::HandleEventActiveListCommand>, "", NULL }, @@ -243,39 +169,12 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; - static ChatCommand gmCommandTable[] = - { - { "chat", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGMChatCommand>, "", NULL }, - { "fly", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleGMFlyCommand>, "", NULL }, - { "ingame", SEC_PLAYER, true, OldHandler<&ChatHandler::HandleGMListIngameCommand>, "", NULL }, - { "list", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleGMListFullCommand>, "", NULL }, - { "visible", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGMVisibleCommand>, "", NULL }, - { "", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGMCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - - static ChatCommand goCommandTable[] = - { - { "creature", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoCreatureCommand>, "", NULL }, - { "graveyard", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoGraveyardCommand>, "", NULL }, - { "grid", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoGridCommand>, "", NULL }, - { "object", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoObjectCommand>, "", NULL }, - { "taxinode", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoTaxinodeCommand>, "", NULL }, - { "trigger", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoTriggerCommand>, "", NULL }, - { "zonexy", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoZoneXYCommand>, "", NULL }, - { "xy", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoXYCommand>, "", NULL }, - { "xyz", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoXYZCommand>, "", NULL }, - { "ticket", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoTicketCommand>, "", NULL }, - { "", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleGoXYZCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - static ChatCommand gobjectCommandTable[] = { { "activate", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleActivateObjectCommand>, "", NULL }, { "add", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectAddCommand>, "", NULL }, { "delete", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectDeleteCommand>, "", NULL }, - { "info", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGOInfoCommand>, "", NULL }, + { "info", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectInfoCommand>, "", NULL }, { "move", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectMoveCommand>, "", NULL }, { "near", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectNearCommand>, "", NULL }, { "state", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleGameObjectStateCommand>, "", NULL }, @@ -321,22 +220,6 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; - static ChatCommand learnCommandTable[] = - { - { "all", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleLearnAllCommand>, "", NULL }, - { "all_gm", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleLearnAllGMCommand>, "", NULL }, - { "all_crafts", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleLearnAllCraftsCommand>, "", NULL }, - { "all_default", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleLearnAllDefaultCommand>, "", NULL }, - { "all_lang", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleLearnAllLangCommand>, "", NULL }, - { "all_myclass", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleLearnAllMyClassCommand>, "", NULL }, - { "all_mypettalents",SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleLearnAllMyPetTalentsCommand>,"", NULL }, - { "all_myspells", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleLearnAllMySpellsCommand>, "", NULL }, - { "all_mytalents", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleLearnAllMyTalentsCommand>, "", NULL }, - { "all_recipes", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleLearnAllRecipesCommand>, "", NULL }, - { "", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleLearnCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - static ChatCommand listCommandTable[] = { { "creature", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleListCreatureCommand>, "", NULL }, @@ -374,77 +257,6 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; - static ChatCommand modifyCommandTable[] = - { - { "hp", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyHPCommand>, "", NULL }, - { "mana", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyManaCommand>, "", NULL }, - { "rage", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyRageCommand>, "", NULL }, - { "runicpower", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyRunicPowerCommand>, "", NULL }, - { "energy", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyEnergyCommand>, "", NULL }, - { "money", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyMoneyCommand>, "", NULL }, - { "speed", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifySpeedCommand>, "", NULL }, - { "swim", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifySwimCommand>, "", NULL }, - { "scale", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyScaleCommand>, "", NULL }, - { "bit", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyBitCommand>, "", NULL }, - { "bwalk", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyBWalkCommand>, "", NULL }, - { "fly", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyFlyCommand>, "", NULL }, - { "aspeed", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyASpeedCommand>, "", NULL }, - { "faction", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyFactionCommand>, "", NULL }, - { "spell", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifySpellCommand>, "", NULL }, - { "tp", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyTalentCommand>, "", NULL }, - { "mount", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyMountCommand>, "", NULL }, - { "honor", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyHonorCommand>, "", NULL }, - { "rep", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleModifyRepCommand>, "", NULL }, - { "arena", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyArenaCommand>, "", NULL }, - { "drunk", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleModifyDrunkCommand>, "", NULL }, - { "standstate", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleModifyStandStateCommand>, "", NULL }, - { "morph", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleModifyMorphCommand>, "", NULL }, - { "phase", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleModifyPhaseCommand>, "", NULL }, - { "gender", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleModifyGenderCommand>, "", NULL }, - { NULL, 0, false, NULL, "", NULL } - }; - - static ChatCommand npcCommandTable[] = - { - { "add", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcAddCommand>, "", NULL }, - { "additem", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcAddVendorItemCommand>, "", NULL }, - { "addmove", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcAddMoveCommand>, "", NULL }, - { "allowmove", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleNpcAllowMovementCommand>, "", NULL }, - { "changeentry", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleNpcChangeEntryCommand>, "", NULL }, - { "changelevel", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcChangeLevelCommand>, "", NULL }, - { "delete", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcDeleteCommand>, "", NULL }, - { "delitem", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcDelVendorItemCommand>, "", NULL }, - { "factionid", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcFactionIdCommand>, "", NULL }, - { "flag", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcFlagCommand>, "", NULL }, - { "follow", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcFollowCommand>, "", NULL }, - { "info", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleNpcInfoCommand>, "", NULL }, - { "move", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcMoveCommand>, "", NULL }, - { "playemote", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleNpcPlayEmoteCommand>, "", NULL }, - { "setmodel", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcSetModelCommand>, "", NULL }, - { "setmovetype", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcSetMoveTypeCommand>, "", NULL }, - { "setphase", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcSetPhaseCommand>, "", NULL }, - { "spawndist", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcSpawnDistCommand>, "", NULL }, - { "spawntime", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcSpawnTimeCommand>, "", NULL }, - { "say", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleNpcSayCommand>, "", NULL }, - { "textemote", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleNpcTextEmoteCommand>, "", NULL }, - { "unfollow", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcUnFollowCommand>, "", NULL }, - { "whisper", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleNpcWhisperCommand>, "", NULL }, - { "yell", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleNpcYellCommand>, "", NULL }, - { "tempadd", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleTempAddSpwCommand>, "", NULL }, - { "tame", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcTameCommand>, "", NULL }, - { "setdeathstate", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcSetDeathStateCommand>, "", NULL }, - { "addformation", SEC_MODERATOR, false, OldHandler<&ChatHandler::HandleNpcAddFormationCommand>, "", NULL }, - { "setlink", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcSetLinkCommand>, "", NULL }, - - //{ TODO: fix or remove this commands - { "addweapon", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleNpcAddWeaponCommand>, "", NULL }, - { "name", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcNameCommand>, "", NULL }, - { "subname", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleNpcSubNameCommand>, "", NULL }, - //} - - { NULL, 0, false, NULL, "", NULL } - }; - static ChatCommand petCommandTable[] = { { "create", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleCreatePetCommand>, "", NULL }, @@ -534,7 +346,6 @@ ChatCommand * ChatHandler::getCommandTable() { "locales_page_text", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesPageTextCommand>, "", NULL }, { "locales_points_of_interest", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesPointsOfInterestCommand>, "", NULL }, { "locales_quest", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLocalesQuestCommand>, "", NULL }, -// { "auctions", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadAuctionsCommand>, "", NULL }, { "mail_level_reward", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadMailLevelRewardCommand>, "", NULL }, { "mail_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesMailCommand>, "", NULL }, { "milling_loot_template", SEC_ADMINISTRATOR, true, OldHandler<&ChatHandler::HandleReloadLootTemplatesMillingCommand>, "", NULL }, @@ -720,22 +531,8 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; - static ChatCommand achievementCommandTable[] = - { - { "add", SEC_ADMINISTRATOR, false, OldHandler<&ChatHandler::HandleAchievementAddCommand>, "", NULL}, - { NULL, 0, false, NULL, "", NULL } - }; - static ChatCommand commandTable[] = { - { "account", SEC_PLAYER, true, NULL, "", accountCommandTable }, - { "achievement", SEC_ADMINISTRATOR, false, NULL, "", achievementCommandTable}, - { "gm", SEC_MODERATOR, true, NULL, "", gmCommandTable }, - { "npc", SEC_MODERATOR, false, NULL, "", npcCommandTable }, - { "go", SEC_MODERATOR, false, NULL, "", goCommandTable }, - { "learn", SEC_MODERATOR, false, NULL, "", learnCommandTable }, - { "modify", SEC_MODERATOR, false, NULL, "", modifyCommandTable }, - { "debug", SEC_MODERATOR, true, NULL, "", debugCommandTable }, { "tele", SEC_MODERATOR, true, NULL, "", teleCommandTable }, { "character", SEC_GAMEMASTER, true, NULL, "", characterCommandTable}, { "event", SEC_GAMEMASTER, false, NULL, "", eventCommandTable }, @@ -1077,6 +874,23 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand *table, const char* text, co if (!table[i].Handler || !isAvailable(table[i])) continue; + bool match = false; + if (strlen(table[i].Name) > strlen(cmd.c_str())) + { + for (uint32 j = 0; table[j].Name != NULL; ++j) + { + if (strcmp(table[j].Name,cmd.c_str()) != 0) + continue; + else + { + match = true; + break; + } + } + } + if (match) + continue; + SetSentErrorMessage(false); // table[i].Name == "" is special case: send original command to handler if ((table[i].Handler)(this, strlen(table[i].Name) != 0 ? text : oldtext)) diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index 56f254463e1..6a90ae9c9a4 100755 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -46,6 +46,7 @@ class ChatCommand class ChatHandler { public: + WorldSession * GetSession() { return m_session; } explicit ChatHandler(WorldSession* session) : m_session(session) {} explicit ChatHandler(Player* player) : m_session(player->GetSession()) {} ~ChatHandler() {} @@ -119,6 +120,7 @@ class ChatHandler GameObject* GetNearbyGameObject(); GameObject* GetObjectGlobalyWithGuidOrNearWithDbGuid(uint32 lowguid,uint32 entry); + void SetSentErrorMessage(bool val){ sentErrorMessage = val;}; protected: explicit ChatHandler() : m_session(NULL) {} // for CLI subclass @@ -127,17 +129,6 @@ class ChatHandler bool ShowHelpForCommand(ChatCommand *table, const char* cmd); bool ShowHelpForSubCommands(ChatCommand *table, char const* cmd, char const* subcmd); - bool HandleAccountCommand(const char* args); - bool HandleAccountAddonCommand(const char* args); - bool HandleAccountCreateCommand(const char* args); - bool HandleAccountDeleteCommand(const char* args); - bool HandleAccountLockCommand(const char* args); - bool HandleAccountOnlineListCommand(const char* args); - bool HandleAccountPasswordCommand(const char* args); - bool HandleAccountSetAddonCommand(const char* args); - bool HandleAccountSetGmLevelCommand(const char* args); - bool HandleAccountSetPasswordCommand(const char* args); - bool HandleNameAnnounceCommand(const char* args); bool HandleGMNameAnnounceCommand(const char* args); bool HandleGMAnnounceCommand(const char* args); @@ -175,51 +166,11 @@ class ChatHandler bool HandleChannelSetPublic(const char *args); - bool HandleDebugAnimCommand(const char* args); - bool HandleDebugArenaCommand(const char * args); - bool HandleDebugBattlegroundCommand(const char * args); - bool HandleDebugGetItemStateCommand(const char * args); - bool HandleDebugGetLootRecipientCommand(const char * args); - bool HandleDebugGetValueCommand(const char* args); - bool HandleDebugGetItemValueCommand(const char* args); - bool HandleDebugMod32ValueCommand(const char* args); - bool HandleDebugSetAuraStateCommand(const char * args); - bool HandleDebugSetItemValueCommand(const char * args); - bool HandleDebugItemExpireCommand(const char * args); - bool HandleDebugSetVehicleId(const char * args); - bool HandleDebugEnterVehicle(const char * args); - bool HandleDebugSetValueCommand(const char* args); - bool HandleDebugSpawnVehicle(const char * args); - bool HandleDebugSpellCheckCommand(const char* args); - bool HandleDebugUpdateCommand(const char* args); - bool HandleDebugUpdateWorldStateCommand(const char* args); - bool HandleDebugAreaTriggers(const char* args); - - bool HandleDebugSet32Bit(const char* args); - bool HandleDebugThreatList(const char * args); - bool HandleDebugHostileRefList(const char * args); bool HandlePossessCommand(const char* args); bool HandleUnPossessCommand(const char* args); bool HandleBindSightCommand(const char* args); bool HandleUnbindSightCommand(const char* args); - bool HandleDebugPlayCinematicCommand(const char* args); - bool HandleDebugPlayMovieCommand(const char* args); - bool HandleDebugPlaySoundCommand(const char* args); - - bool HandleDebugSendBuyErrorCommand(const char* args); - bool HandleDebugSendChannelNotifyCommand(const char* args); - bool HandleDebugSendChatMsgCommand(const char* args); - bool HandleDebugSendEquipErrorCommand(const char* args); - bool HandleDebugSendLargePacketCommand(const char * args); - bool HandleDebugSendOpcodeCommand(const char* args); - bool HandleDebugSendPoiCommand(const char* args); - bool HandleDebugSendQuestPartyMsgCommand(const char* args); - bool HandleDebugSendQuestInvalidMsgCommand(const char* args); - bool HandleDebugSendSellErrorCommand(const char* args); - bool HandleDebugSendSetPhaseShiftCommand(const char * args); - bool HandleDebugSendSpellFailCommand(const char* args); - bool HandleEventActiveListCommand(const char* args); bool HandleEventStartCommand(const char* args); bool HandleEventStopCommand(const char* args); @@ -227,7 +178,7 @@ class ChatHandler bool HandleGameObjectAddCommand(const char* args); bool HandleGameObjectDeleteCommand(const char* args); - bool HandleGOInfoCommand(const char* args); + bool HandleGameObjectInfoCommand(const char* args); bool HandleGameObjectMoveCommand(const char* args); bool HandleGameObjectNearCommand(const char* args); bool HandleGameObjectPhaseCommand(const char* args); @@ -235,26 +186,6 @@ class ChatHandler bool HandleGameObjectTargetCommand(const char* args); bool HandleGameObjectTurnCommand(const char* args); - bool HandleGMCommand(const char* args); - bool HandleGMChatCommand(const char* args); - bool HandleGMFlyCommand(const char* args); - bool HandleGMListFullCommand(const char* args); - bool HandleGMListIngameCommand(const char* args); - bool HandleGMVisibleCommand(const char* args); - - bool HandleGoCommand(const char* args); - bool HandleGoCreatureCommand(const char* args); - bool HandleGoGraveyardCommand(const char* args); - bool HandleGoGridCommand(const char* args); - bool HandleGoObjectCommand(const char* args); - bool HandleGoTaxinodeCommand(const char* args); - bool HandleGoTriggerCommand(const char* args); - bool HandleGoXYCommand(const char* args); - bool HandleGoXYZCommand(const char* args); - bool HandleGoZoneXYCommand(const char* args); - - bool HandleGoTicketCommand(const char* args); - bool HandleGuildCreateCommand(const char* args); bool HandleGuildInviteCommand(const char* args); bool HandleGuildUninviteCommand(const char* args); @@ -270,18 +201,6 @@ class ChatHandler bool HandleInstanceStatsCommand(const char* args); bool HandleInstanceSaveDataCommand(const char * args); - bool HandleLearnCommand(const char* args); - bool HandleLearnAllCommand(const char* args); - bool HandleLearnAllGMCommand(const char* args); - bool HandleLearnAllCraftsCommand(const char* args); - bool HandleLearnAllRecipesCommand(const char* args); - bool HandleLearnAllDefaultCommand(const char* args); - bool HandleLearnAllLangCommand(const char* args); - bool HandleLearnAllMyClassCommand(const char* args); - bool HandleLearnAllMyPetTalentsCommand(const char* args); - bool HandleLearnAllMySpellsCommand(const char* args); - bool HandleLearnAllMyTalentsCommand(const char* args); - bool HandleListAurasCommand(const char * args); bool HandleListCreatureCommand(const char* args); bool HandleListItemCommand(const char* args); @@ -305,65 +224,6 @@ class ChatHandler bool HandleLookupMapCommand(const char* args); bool HandleLookupTitleCommand(const char * args); - bool HandleModifyHPCommand(const char* args); - bool HandleModifyManaCommand(const char* args); - bool HandleModifyRageCommand(const char* args); - bool HandleModifyRunicPowerCommand(const char* args); - bool HandleModifyEnergyCommand(const char* args); - bool HandleModifyMoneyCommand(const char* args); - bool HandleModifyASpeedCommand(const char* args); - bool HandleModifySpeedCommand(const char* args); - bool HandleModifyBWalkCommand(const char* args); - bool HandleModifyFlyCommand(const char* args); - bool HandleModifySwimCommand(const char* args); - bool HandleModifyScaleCommand(const char* args); - bool HandleModifyMountCommand(const char* args); - bool HandleModifyBitCommand(const char* args); - bool HandleModifyFactionCommand(const char* args); - bool HandleModifySpellCommand(const char* args); - bool HandleModifyTalentCommand (const char* args); - bool HandleModifyHonorCommand (const char* args); - bool HandleModifyRepCommand(const char* args); - bool HandleModifyArenaCommand(const char* args); - bool HandleModifyPhaseCommand(const char* args); - bool HandleModifyGenderCommand(const char* args); - - //-----------------------Npc Commands----------------------- - bool HandleNpcAddCommand(const char* args); - bool HandleNpcAddMoveCommand(const char* args); - bool HandleNpcAddVendorItemCommand(const char* args); - bool HandleNpcAllowMovementCommand(const char* args); - bool HandleNpcChangeEntryCommand(const char *args); - bool HandleNpcChangeLevelCommand(const char* args); - bool HandleNpcDeleteCommand(const char* args); - bool HandleNpcDelVendorItemCommand(const char* args); - bool HandleNpcFactionIdCommand(const char* args); - bool HandleNpcFlagCommand(const char* args); - bool HandleNpcFollowCommand(const char* args); - bool HandleNpcInfoCommand(const char* args); - bool HandleNpcMoveCommand(const char* args); - bool HandleNpcPlayEmoteCommand(const char* args); - bool HandleNpcSayCommand(const char* args); - bool HandleNpcSetDeathStateCommand(const char* args); - bool HandleNpcSetModelCommand(const char* args); - bool HandleNpcSetMoveTypeCommand(const char* args); - bool HandleNpcSetPhaseCommand(const char* args); - bool HandleNpcSpawnDistCommand(const char* args); - bool HandleNpcSpawnTimeCommand(const char* args); - bool HandleNpcTameCommand(const char* args); - bool HandleNpcTextEmoteCommand(const char* args); - bool HandleNpcUnFollowCommand(const char* args); - bool HandleNpcWhisperCommand(const char* args); - bool HandleNpcYellCommand(const char* args); - bool HandleNpcAddFormationCommand(const char* args); - bool HandleNpcSetLinkCommand(const char* args); - - //TODO: NpcCommands that needs to be fixed : - bool HandleNpcAddWeaponCommand(const char* args); - bool HandleNpcNameCommand(const char* args); - bool HandleNpcSubNameCommand(const char* args); - //---------------------------------------------------------- - bool HandlePDumpLoadCommand(const char *args); bool HandlePDumpWriteCommand(const char *args); @@ -545,7 +405,6 @@ class ChatHandler bool HandleGPSCommand(const char* args); bool HandleTaxiCheatCommand(const char* args); bool HandleWhispersCommand(const char* args); - bool HandleModifyDrunkCommand(const char* args); bool HandleGUIDCommand(const char* args); bool HandleItemMoveCommand(const char* args); @@ -561,11 +420,9 @@ class ChatHandler bool HandleCooldownCommand(const char* args); bool HandleUnLearnCommand(const char* args); bool HandleGetDistanceCommand(const char* args); - bool HandleModifyStandStateCommand(const char* args); bool HandleDieCommand(const char* args); bool HandleDamageCommand(const char *args); bool HandleReviveCommand(const char* args); - bool HandleModifyMorphCommand(const char* args); bool HandleAuraCommand(const char* args); bool HandleUnAuraCommand(const char* args); bool HandleLinkGraveCommand(const char* args); @@ -593,9 +450,6 @@ class ChatHandler bool HandleChangeWeather(const char* args); bool HandleKickPlayerCommand(const char * args); - // Achievement commands - bool HandleAchievementAddCommand(const char* args); - // GM ticket command handlers bool HandleGMTicketListCommand(const char* args); bool HandleGMTicketListOnlineCommand(const char* args); @@ -629,7 +483,6 @@ class ChatHandler bool HandleRepairitemsCommand(const char* args); bool HandleTempGameObjectCommand(const char* args); - bool HandleTempAddSpwCommand(const char* args); //! Development Commands @@ -665,7 +518,6 @@ class ChatHandler void HandleCharacterDeletedListHelper(DeletedInfoList const& foundList); void HandleCharacterDeletedRestoreHelper(DeletedInfo const& delInfo); - void SetSentErrorMessage(bool val){ sentErrorMessage = val;}; private: WorldSession * m_session; // != NULL for chat command call and NULL for CLI command diff --git a/src/server/game/Chat/Commands/Debugcmds.cpp b/src/server/game/Chat/Commands/Debugcmds.cpp index a83df8e57ce..c831fde2ecd 100755 --- a/src/server/game/Chat/Commands/Debugcmds.cpp +++ b/src/server/game/Chat/Commands/Debugcmds.cpp @@ -37,1103 +37,4 @@ #include "SpellMgr.h" #include "ScriptMgr.h" -bool ChatHandler::HandleDebugSendSpellFailCommand(const char* args) -{ - if (!*args) - return false; - - char* px = strtok((char*)args, " "); - if (!px) - return false; - - uint8 failnum = (uint8)atoi(px); - if (failnum == 0 && *px != '0') - return false; - - char* p1 = strtok(NULL, " "); - uint8 failarg1 = p1 ? (uint8)atoi(p1) : 0; - - char* p2 = strtok(NULL, " "); - uint8 failarg2 = p2 ? (uint8)atoi(p2) : 0; - - WorldPacket data(SMSG_CAST_FAILED, 5); - data << uint8(0); - data << uint32(133); - data << uint8(failnum); - if (p1 || p2) - data << uint32(failarg1); - if (p2) - data << uint32(failarg2); - - m_session->SendPacket(&data); - - return true; -} - -bool ChatHandler::HandleDebugSendPoiCommand(const char* args) -{ - if (!*args) - return false; - - Player *pPlayer = m_session->GetPlayer(); - Unit* target = getSelectedUnit(); - if (!target) - { - SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); - return true; - } - - char* icon_text = strtok((char*)args, " "); - char* flags_text = strtok(NULL, " "); - if (!icon_text || !flags_text) - return false; - - uint32 icon = atol(icon_text); - uint32 flags = atol(flags_text); - - sLog.outDetail("Command : POI, NPC = %u, icon = %u flags = %u", target->GetGUIDLow(), icon,flags); - pPlayer->PlayerTalkClass->SendPointOfInterest(target->GetPositionX(), target->GetPositionY(), Poi_Icon(icon), flags, 30, "Test POI"); - return true; -} - -bool ChatHandler::HandleDebugSendEquipErrorCommand(const char* args) -{ - if (!*args) - return false; - - uint8 msg = atoi(args); - m_session->GetPlayer()->SendEquipError(msg, NULL, NULL); - return true; -} - -bool ChatHandler::HandleDebugSendSellErrorCommand(const char* args) -{ - if (!*args) - return false; - - uint8 msg = atoi(args); - m_session->GetPlayer()->SendSellError(msg, 0, 0, 0); - return true; -} - -bool ChatHandler::HandleDebugSendBuyErrorCommand(const char* args) -{ - if (!*args) - return false; - - uint8 msg = atoi(args); - m_session->GetPlayer()->SendBuyError(msg, 0, 0, 0); - return true; -} - -bool ChatHandler::HandleDebugSendOpcodeCommand(const char* /*args*/) -{ - Unit *unit = getSelectedUnit(); - Player *player = NULL; - if (!unit || (unit->GetTypeId() != TYPEID_PLAYER)) - player = m_session->GetPlayer(); - else - player = (Player*)unit; - if (!unit) unit = player; - - std::ifstream ifs("opcode.txt"); - if (ifs.bad()) - return false; - - uint32 opcode; - ifs >> opcode; - - WorldPacket data(opcode, 0); - - while (!ifs.eof()) - { - std::string type; - ifs >> type; - - if (type == "") - break; - - if (type == "uint8") - { - uint16 val1; - ifs >> val1; - data << uint8(val1); - } - else if (type == "uint16") - { - uint16 val2; - ifs >> val2; - data << val2; - } - else if (type == "uint32") - { - uint32 val3; - ifs >> val3; - data << val3; - } - else if (type == "uint64") - { - uint64 val4; - ifs >> val4; - data << val4; - } - else if (type == "float") - { - float val5; - ifs >> val5; - data << val5; - } - else if (type == "string") - { - std::string val6; - ifs >> val6; - data << val6; - } - else if (type == "appitsguid") - { - data.append(unit->GetPackGUID()); - } - else if (type == "appmyguid") - { - data.append(player->GetPackGUID()); - } - else if (type == "appgoguid") - { - GameObject *obj = GetNearbyGameObject(); - if (!obj) - { - PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, 0); - SetSentErrorMessage(true); - ifs.close(); - return false; - } - data.append(obj->GetPackGUID()); - } - else if (type == "goguid") - { - GameObject *obj = GetNearbyGameObject(); - if (!obj) - { - PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, 0); - SetSentErrorMessage(true); - ifs.close(); - return false; - } - data << uint64(obj->GetGUID()); - } - else if (type == "myguid") - { - data << uint64(player->GetGUID()); - } - else if (type == "itsguid") - { - data << uint64(unit->GetGUID()); - } - else if (type == "pos") - { - data << unit->GetPositionX(); - data << unit->GetPositionY(); - data << unit->GetPositionZ(); - } - else if (type == "mypos") - { - data << player->GetPositionX(); - data << player->GetPositionY(); - data << player->GetPositionZ(); - } - else - { - sLog.outDebug("Sending opcode: unknown type '%s'", type.c_str()); - break; - } - } - ifs.close(); - sLog.outDebug("Sending opcode %u", data.GetOpcode()); - data.hexlike(); - player->GetSession()->SendPacket(&data); - PSendSysMessage(LANG_COMMAND_OPCODESENT, data.GetOpcode(), unit->GetName()); - return true; -} - -bool ChatHandler::HandleDebugUpdateWorldStateCommand(const char* args) -{ - char* w = strtok((char*)args, " "); - char* s = strtok(NULL, " "); - - if (!w || !s) - return false; - - uint32 world = (uint32)atoi(w); - uint32 state = (uint32)atoi(s); - m_session->GetPlayer()->SendUpdateWorldState(world, state); - return true; -} - -bool ChatHandler::HandleDebugAreaTriggers(const char* /*args*/) -{ - Player* plr = m_session->GetPlayer(); - if (!plr->isDebugAreaTriggers) - { - PSendSysMessage(LANG_DEBUG_AREATRIGGER_ON); - plr->isDebugAreaTriggers = true; - } else { - PSendSysMessage(LANG_DEBUG_AREATRIGGER_OFF); - plr->isDebugAreaTriggers = false; - } - return true; -} - -bool ChatHandler::HandleDebugPlayCinematicCommand(const char* args) -{ - // USAGE: .debug play cinematic #cinematicid - // #cinematicid - ID decimal number from CinemaicSequences.dbc (1st column) - if (!*args) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - uint32 dwId = atoi((char*)args); - - if (!sCinematicSequencesStore.LookupEntry(dwId)) - { - PSendSysMessage(LANG_CINEMATIC_NOT_EXIST, dwId); - SetSentErrorMessage(true); - return false; - } - - m_session->GetPlayer()->SendCinematicStart(dwId); - return true; -} - -bool ChatHandler::HandleDebugPlayMovieCommand(const char* args) -{ - // USAGE: .debug play movie #movieid - // #movieid - ID decimal number from Movie.dbc (1st column) - if (!*args) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - uint32 dwId = atoi((char*)args); - - if (!sMovieStore.LookupEntry(dwId)) - { - PSendSysMessage(LANG_MOVIE_NOT_EXIST, dwId); - SetSentErrorMessage(true); - return false; - } - - m_session->GetPlayer()->SendMovieStart(dwId); - return true; -} - -//Play sound -bool ChatHandler::HandleDebugPlaySoundCommand(const char* args) -{ - // USAGE: .debug playsound #soundid - // #soundid - ID decimal number from SoundEntries.dbc (1st column) - if (!*args) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - uint32 dwSoundId = atoi((char*)args); - - if (!sSoundEntriesStore.LookupEntry(dwSoundId)) - { - PSendSysMessage(LANG_SOUND_NOT_EXIST, dwSoundId); - SetSentErrorMessage(true); - return false; - } - - Unit* unit = getSelectedUnit(); - if (!unit) - { - SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); - SetSentErrorMessage(true); - return false; - } - - if (m_session->GetPlayer()->GetSelection()) - unit->PlayDistanceSound(dwSoundId,m_session->GetPlayer()); - else - unit->PlayDirectSound(dwSoundId,m_session->GetPlayer()); - - PSendSysMessage(LANG_YOU_HEAR_SOUND, dwSoundId); - return true; -} - -//Send notification in channel -bool ChatHandler::HandleDebugSendChannelNotifyCommand(const char* args) -{ - if (!*args) - return false; - - const char *name = "test"; - uint8 code = atoi(args); - - WorldPacket data(SMSG_CHANNEL_NOTIFY, (1+10)); - data << code; // notify type - data << name; // channel name - data << uint32(0); - data << uint32(0); - m_session->SendPacket(&data); - return true; -} - -//Send notification in chat -bool ChatHandler::HandleDebugSendChatMsgCommand(const char* args) -{ - if (!*args) - return false; - - const char *msg = "testtest"; - uint8 type = atoi(args); - WorldPacket data; - ChatHandler::FillMessageData(&data, m_session, type, 0, "chan", m_session->GetPlayer()->GetGUID(), msg, m_session->GetPlayer()); - m_session->SendPacket(&data); - return true; -} - -bool ChatHandler::HandleDebugSendQuestPartyMsgCommand(const char* args) -{ - uint32 msg = atol((char*)args); - m_session->GetPlayer()->SendPushToPartyResponse(m_session->GetPlayer(), msg); - return true; -} - -bool ChatHandler::HandleDebugGetLootRecipientCommand(const char* /*args*/) -{ - Creature* target = getSelectedCreature(); - if (!target) - return false; - - PSendSysMessage("loot recipient: %s", target->hasLootRecipient()?(target->GetLootRecipient()?target->GetLootRecipient()->GetName():"offline"):"no loot recipient"); - return true; -} - -bool ChatHandler::HandleDebugSendQuestInvalidMsgCommand(const char* args) -{ - uint32 msg = atol((char*)args); - m_session->GetPlayer()->SendCanTakeQuestResponse(msg); - return true; -} - -bool ChatHandler::HandleDebugGetItemStateCommand(const char* args) -{ - if (!*args) - return false; - - std::string state_str = args; - - ItemUpdateState state = ITEM_UNCHANGED; - bool list_queue = false, check_all = false; - if (state_str == "unchanged") state = ITEM_UNCHANGED; - else if (state_str == "changed") state = ITEM_CHANGED; - else if (state_str == "new") state = ITEM_NEW; - else if (state_str == "removed") state = ITEM_REMOVED; - else if (state_str == "queue") list_queue = true; - else if (state_str == "check_all") check_all = true; - else return false; - - Player* player = getSelectedPlayer(); - if (!player) player = m_session->GetPlayer(); - - if (!list_queue && !check_all) - { - state_str = "The player has the following " + state_str + " items: "; - SendSysMessage(state_str.c_str()); - for (uint8 i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; ++i) - { - if (i >= BUYBACK_SLOT_START && i < BUYBACK_SLOT_END) - continue; - - Item *item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i); - if (!item) continue; - if (!item->IsBag()) - { - if (item->GetState() == state) - PSendSysMessage("bag: 255 slot: %d guid: %d owner: %d", item->GetSlot(), item->GetGUIDLow(), GUID_LOPART(item->GetOwnerGUID())); - } - else - { - Bag *bag = (Bag*)item; - for (uint8 j = 0; j < bag->GetBagSize(); ++j) - { - Item* item2 = bag->GetItemByPos(j); - if (item2 && item2->GetState() == state) - PSendSysMessage("bag: 255 slot: %d guid: %d owner: %d", item2->GetSlot(), item2->GetGUIDLow(), GUID_LOPART(item2->GetOwnerGUID())); - } - } - } - } - - if (list_queue) - { - std::vector<Item *> &updateQueue = player->GetItemUpdateQueue(); - for (size_t i = 0; i < updateQueue.size(); ++i) - { - Item *item = updateQueue[i]; - if (!item) continue; - - Bag *container = item->GetContainer(); - uint8 bag_slot = container ? container->GetSlot() : uint8(INVENTORY_SLOT_BAG_0); - - std::string st; - switch(item->GetState()) - { - case ITEM_UNCHANGED: st = "unchanged"; break; - case ITEM_CHANGED: st = "changed"; break; - case ITEM_NEW: st = "new"; break; - case ITEM_REMOVED: st = "removed"; break; - } - - PSendSysMessage("bag: %d slot: %d guid: %d - state: %s", bag_slot, item->GetSlot(), item->GetGUIDLow(), st.c_str()); - } - if (updateQueue.empty()) - PSendSysMessage("updatequeue empty"); - } - - if (check_all) - { - bool error = false; - std::vector<Item *> &updateQueue = player->GetItemUpdateQueue(); - for (uint8 i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; ++i) - { - if (i >= BUYBACK_SLOT_START && i < BUYBACK_SLOT_END) - continue; - - Item *item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i); - if (!item) continue; - - if (item->GetSlot() != i) - { - PSendSysMessage("item at slot %d, guid %d has an incorrect slot value: %d", i, item->GetGUIDLow(), item->GetSlot()); - error = true; continue; - } - - if (item->GetOwnerGUID() != player->GetGUID()) - { - PSendSysMessage("for the item at slot %d and itemguid %d, owner's guid (%d) and player's guid (%d) don't match!", item->GetSlot(), item->GetGUIDLow(), GUID_LOPART(item->GetOwnerGUID()), player->GetGUIDLow()); - error = true; continue; - } - - if (Bag *container = item->GetContainer()) - { - PSendSysMessage("item at slot: %d guid: %d has a container (slot: %d, guid: %d) but shouldnt!", item->GetSlot(), item->GetGUIDLow(), container->GetSlot(), container->GetGUIDLow()); - error = true; continue; - } - - if (item->IsInUpdateQueue()) - { - uint16 qp = item->GetQueuePos(); - if (qp > updateQueue.size()) - { - PSendSysMessage("item at slot: %d guid: %d has a queuepos (%d) larger than the update queue size! ", item->GetSlot(), item->GetGUIDLow(), qp); - error = true; continue; - } - - if (updateQueue[qp] == NULL) - { - PSendSysMessage("item at slot: %d guid: %d has a queuepos (%d) that points to NULL in the queue!", item->GetSlot(), item->GetGUIDLow(), qp); - error = true; continue; - } - - if (updateQueue[qp] != item) - { - PSendSysMessage("item at slot: %d guid: %d has has a queuepos (%d) that points to another item in the queue (bag: %d, slot: %d, guid: %d)", item->GetSlot(), item->GetGUIDLow(), qp, updateQueue[qp]->GetBagSlot(), updateQueue[qp]->GetSlot(), updateQueue[qp]->GetGUIDLow()); - error = true; continue; - } - } - else if (item->GetState() != ITEM_UNCHANGED) - { - PSendSysMessage("item at slot: %d guid: %d is not in queue but should be (state: %d)!", item->GetSlot(), item->GetGUIDLow(), item->GetState()); - error = true; continue; - } - - if (item->IsBag()) - { - Bag *bag = (Bag*)item; - for (uint8 j = 0; j < bag->GetBagSize(); ++j) - { - Item* item2 = bag->GetItemByPos(j); - if (!item2) continue; - - if (item2->GetSlot() != j) - { - PSendSysMessage("the item in bag %d slot %d, guid %d has an incorrect slot value: %d", bag->GetSlot(), j, item2->GetGUIDLow(), item2->GetSlot()); - error = true; continue; - } - - if (item2->GetOwnerGUID() != player->GetGUID()) - { - PSendSysMessage("for the item in bag %d at slot %d and itemguid %d, owner's guid (%d) and player's guid (%d) don't match!", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow(), GUID_LOPART(item2->GetOwnerGUID()), player->GetGUIDLow()); - error = true; continue; - } - - Bag *container = item2->GetContainer(); - if (!container) - { - PSendSysMessage("the item in bag %d at slot %d with guid %d has no container!", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow()); - error = true; continue; - } - - if (container != bag) - { - PSendSysMessage("the item in bag %d at slot %d with guid %d has a different container(slot %d guid %d)!", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow(), container->GetSlot(), container->GetGUIDLow()); - error = true; continue; - } - - if (item2->IsInUpdateQueue()) - { - uint16 qp = item2->GetQueuePos(); - if (qp > updateQueue.size()) - { - PSendSysMessage("item in bag: %d at slot: %d guid: %d has a queuepos (%d) larger than the update queue size! ", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow(), qp); - error = true; continue; - } - - if (updateQueue[qp] == NULL) - { - PSendSysMessage("item in bag: %d at slot: %d guid: %d has a queuepos (%d) that points to NULL in the queue!", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow(), qp); - error = true; continue; - } - - if (updateQueue[qp] != item2) - { - PSendSysMessage("item in bag: %d at slot: %d guid: %d has has a queuepos (%d) that points to another item in the queue (bag: %d, slot: %d, guid: %d)", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow(), qp, updateQueue[qp]->GetBagSlot(), updateQueue[qp]->GetSlot(), updateQueue[qp]->GetGUIDLow()); - error = true; continue; - } - } - else if (item2->GetState() != ITEM_UNCHANGED) - { - PSendSysMessage("item in bag: %d at slot: %d guid: %d is not in queue but should be (state: %d)!", bag->GetSlot(), item2->GetSlot(), item2->GetGUIDLow(), item2->GetState()); - error = true; continue; - } - } - } - } - - for (size_t i = 0; i < updateQueue.size(); ++i) - { - Item *item = updateQueue[i]; - if (!item) continue; - - if (item->GetOwnerGUID() != player->GetGUID()) - { - PSendSysMessage("queue(" SIZEFMTD "): for the an item (guid %d), the owner's guid (%d) and player's guid (%d) don't match!", i, item->GetGUIDLow(), GUID_LOPART(item->GetOwnerGUID()), player->GetGUIDLow()); - error = true; continue; - } - - if (item->GetQueuePos() != i) - { - PSendSysMessage("queue(" SIZEFMTD "): for the an item (guid %d), the queuepos doesn't match it's position in the queue!", i, item->GetGUIDLow()); - error = true; continue; - } - - if (item->GetState() == ITEM_REMOVED) continue; - Item *test = player->GetItemByPos(item->GetBagSlot(), item->GetSlot()); - - if (test == NULL) - { - PSendSysMessage("queue(" SIZEFMTD "): the bag(%d) and slot(%d) values for the item with guid %d are incorrect, the player doesn't have an item at that position!", i, item->GetBagSlot(), item->GetSlot(), item->GetGUIDLow()); - error = true; continue; - } - - if (test != item) - { - PSendSysMessage("queue(" SIZEFMTD "): the bag(%d) and slot(%d) values for the item with guid %d are incorrect, the item with guid %d is there instead!", i, item->GetBagSlot(), item->GetSlot(), item->GetGUIDLow(), test->GetGUIDLow()); - error = true; continue; - } - } - if (!error) - SendSysMessage("All OK!"); - } - - return true; -} - -bool ChatHandler::HandleDebugBattlegroundCommand(const char * /*args*/) -{ - sBattlegroundMgr.ToggleTesting(); - return true; -} - -bool ChatHandler::HandleDebugArenaCommand(const char * /*args*/) -{ - sBattlegroundMgr.ToggleArenaTesting(); - return true; -} - -bool ChatHandler::HandleDebugThreatList(const char * /*args*/) -{ - Creature* target = getSelectedCreature(); - if (!target || target->isTotem() || target->isPet()) - return false; - - std::list<HostileReference*>& tlist = target->getThreatManager().getThreatList(); - std::list<HostileReference*>::iterator itr; - uint32 cnt = 0; - PSendSysMessage("Threat list of %s (guid %u)",target->GetName(), target->GetGUIDLow()); - for (itr = tlist.begin(); itr != tlist.end(); ++itr) - { - Unit* unit = (*itr)->getTarget(); - if (!unit) - continue; - ++cnt; - PSendSysMessage(" %u. %s (guid %u) - threat %f",cnt,unit->GetName(), unit->GetGUIDLow(), (*itr)->getThreat()); - } - SendSysMessage("End of threat list."); - return true; -} - -bool ChatHandler::HandleDebugHostileRefList(const char * /*args*/) -{ - Unit* target = getSelectedUnit(); - if (!target) - target = m_session->GetPlayer(); - HostileReference* ref = target->getHostileRefManager().getFirst(); - uint32 cnt = 0; - PSendSysMessage("Hostil reference list of %s (guid %u)",target->GetName(), target->GetGUIDLow()); - while (ref) - { - if (Unit * unit = ref->getSource()->getOwner()) - { - ++cnt; - PSendSysMessage(" %u. %s (guid %u) - threat %f",cnt,unit->GetName(), unit->GetGUIDLow(), ref->getThreat()); - } - ref = ref->next(); - } - SendSysMessage("End of hostil reference list."); - return true; -} - -bool ChatHandler::HandleDebugSetVehicleId(const char *args) -{ - Unit* target = getSelectedUnit(); - if (!target || target->IsVehicle()) - return false; - - if (!args) - return false; - - char* i = strtok((char*)args, " "); - if (!i) - return false; - - uint32 id = (uint32)atoi(i); - //target->SetVehicleId(id); - PSendSysMessage("Vehicle id set to %u", id); - return true; -} - -bool ChatHandler::HandleDebugEnterVehicle(const char * args) -{ - Unit* target = getSelectedUnit(); - if (!target || !target->IsVehicle()) - return false; - - if (!args) - return false; - - char* i = strtok((char*)args, " "); - if (!i) - return false; - - char* j = strtok(NULL, " "); - - uint32 entry = (uint32)atoi(i); - int8 seatId = j ? (int8)atoi(j) : -1; - - if (!entry) - m_session->GetPlayer()->EnterVehicle(target, seatId); - else - { - Creature *passenger = NULL; - Trinity::AllCreaturesOfEntryInRange check(m_session->GetPlayer(), entry, 20.0f); - Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(m_session->GetPlayer(), passenger, check); - m_session->GetPlayer()->VisitNearbyObject(30.0f, searcher); - if (!passenger || passenger == target) - return false; - passenger->EnterVehicle(target, seatId); - } - - PSendSysMessage("Unit %u entered vehicle %d", entry, (int32)seatId); - return true; -} - -bool ChatHandler::HandleDebugSpawnVehicle(const char* args) -{ - if (!*args) - return false; - - char* e = strtok((char*)args, " "); - char* i = strtok(NULL, " "); - - if (!e) - return false; - - uint32 entry = (uint32)atoi(e); - - float x, y, z, o = m_session->GetPlayer()->GetOrientation(); - m_session->GetPlayer()->GetClosePoint(x, y, z, m_session->GetPlayer()->GetObjectSize()); - - if (!i) - return m_session->GetPlayer()->SummonCreature(entry, x, y, z, o); - - uint32 id = (uint32)atoi(i); - - CreatureInfo const *ci = sObjectMgr.GetCreatureTemplate(entry); - - if (!ci) - return false; - - VehicleEntry const *ve = sVehicleStore.LookupEntry(id); - - if (!ve) - return false; - - Creature *v = new Creature; - - Map *map = m_session->GetPlayer()->GetMap(); - - if (!v->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_VEHICLE), map, m_session->GetPlayer()->GetPhaseMask(), entry, id, m_session->GetPlayer()->GetTeam(), x, y, z, o)) - { - delete v; - return false; - } - - map->Add(v->ToCreature()); - - return true; -} - -bool ChatHandler::HandleDebugSendLargePacketCommand(const char* /*args*/) -{ - const char* stuffingString = "This is a dummy string to push the packet's size beyond 128000 bytes. "; - std::ostringstream ss; - while (ss.str().size() < 128000) - ss << stuffingString; - SendSysMessage(ss.str().c_str()); - return true; -} - -bool ChatHandler::HandleDebugSendSetPhaseShiftCommand(const char* args) -{ - if (!*args) - return false; - - uint32 PhaseShift = atoi(args); - m_session->SendSetPhaseShift(PhaseShift); - return true; -} - -bool ChatHandler::HandleDebugGetItemValueCommand(const char* args) -{ - if (!*args) - return false; - - char* e = strtok((char*)args, " "); - char* f = strtok(NULL, " "); - - if (!e || !f) - return false; - - uint32 guid = (uint32)atoi(e); - uint32 index = (uint32)atoi(f); - - Item *i = m_session->GetPlayer()->GetItemByGuid(MAKE_NEW_GUID(guid, 0, HIGHGUID_ITEM)); - - if (!i) - return false; - - if (index >= i->GetValuesCount()) - return false; - - uint32 value = i->GetUInt32Value(index); - - PSendSysMessage("Item %u: value at %u is %u", guid, index, value); - - return true; -} - -bool ChatHandler::HandleDebugSetItemValueCommand(const char* args) -{ - if (!*args) - return false; - - char* e = strtok((char*)args, " "); - char* f = strtok(NULL, " "); - char* g = strtok(NULL, " "); - - if (!e || !f || !g) - return false; - - uint32 guid = (uint32)atoi(e); - uint32 index = (uint32)atoi(f); - uint32 value = (uint32)atoi(g); - - Item *i = m_session->GetPlayer()->GetItemByGuid(MAKE_NEW_GUID(guid, 0, HIGHGUID_ITEM)); - - if (!i) - return false; - - if (index >= i->GetValuesCount()) - return false; - - i->SetUInt32Value(index, value); - - return true; -} - -bool ChatHandler::HandleDebugItemExpireCommand(const char* args) -{ - if (!*args) - return false; - - char* e = strtok((char*)args, " "); - if (!e) - return false; - - uint32 guid = (uint32)atoi(e); - - Item *i = m_session->GetPlayer()->GetItemByGuid(MAKE_NEW_GUID(guid, 0, HIGHGUID_ITEM)); - - if (!i) - return false; - - m_session->GetPlayer()->DestroyItem(i->GetBagSlot(), i->GetSlot(), true); - sScriptMgr.OnItemExpire(m_session->GetPlayer(), i->GetProto()); - - return true; -} - -//show animation -bool ChatHandler::HandleDebugAnimCommand(const char* args) -{ - if (!*args) - return false; - - uint32 anim_id = atoi((char*)args); - m_session->GetPlayer()->HandleEmoteCommand(anim_id); - return true; -} - -bool ChatHandler::HandleDebugSetAuraStateCommand(const char* args) -{ - if (!*args) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Unit* unit = getSelectedUnit(); - if (!unit) - { - SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); - SetSentErrorMessage(true); - return false; - } - - int32 state = atoi((char*)args); - if (!state) - { - // reset all states - for (int i = 1; i <= 32; ++i) - unit->ModifyAuraState(AuraState(i),false); - return true; - } - - unit->ModifyAuraState(AuraState(abs(state)),state > 0); - return true; -} - -bool ChatHandler::HandleDebugSetValueCommand(const char* args) -{ - if (!*args) - return false; - - char* px = strtok((char*)args, " "); - char* py = strtok(NULL, " "); - char* pz = strtok(NULL, " "); - - if (!px || !py) - return false; - - WorldObject* target = getSelectedObject(); - if (!target) - { - SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); - SetSentErrorMessage(true); - return false; - } - - uint64 guid = target->GetGUID(); - - uint32 Opcode = (uint32)atoi(px); - if (Opcode >= target->GetValuesCount()) - { - PSendSysMessage(LANG_TOO_BIG_INDEX, Opcode, GUID_LOPART(guid), target->GetValuesCount()); - return false; - } - uint32 iValue; - float fValue; - bool isint32 = true; - if (pz) - isint32 = (bool)atoi(pz); - if (isint32) - { - iValue = (uint32)atoi(py); - sLog.outDebug(GetTrinityString(LANG_SET_UINT), GUID_LOPART(guid), Opcode, iValue); - target->SetUInt32Value(Opcode , iValue); - PSendSysMessage(LANG_SET_UINT_FIELD, GUID_LOPART(guid), Opcode,iValue); - } - else - { - fValue = (float)atof(py); - sLog.outDebug(GetTrinityString(LANG_SET_FLOAT), GUID_LOPART(guid), Opcode, fValue); - target->SetFloatValue(Opcode , fValue); - PSendSysMessage(LANG_SET_FLOAT_FIELD, GUID_LOPART(guid), Opcode,fValue); - } - - return true; -} - -bool ChatHandler::HandleDebugGetValueCommand(const char* args) -{ - if (!*args) - return false; - - char* px = strtok((char*)args, " "); - char* pz = strtok(NULL, " "); - - if (!px) - return false; - - Unit* target = getSelectedUnit(); - if (!target) - { - SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); - SetSentErrorMessage(true); - return false; - } - - uint64 guid = target->GetGUID(); - - uint32 Opcode = (uint32)atoi(px); - if (Opcode >= target->GetValuesCount()) - { - PSendSysMessage(LANG_TOO_BIG_INDEX, Opcode, GUID_LOPART(guid), target->GetValuesCount()); - return false; - } - uint32 iValue; - float fValue; - bool isint32 = true; - if (pz) - isint32 = (bool)atoi(pz); - - if (isint32) - { - iValue = target->GetUInt32Value(Opcode); - sLog.outDebug(GetTrinityString(LANG_GET_UINT), GUID_LOPART(guid), Opcode, iValue); - PSendSysMessage(LANG_GET_UINT_FIELD, GUID_LOPART(guid), Opcode, iValue); - } - else - { - fValue = target->GetFloatValue(Opcode); - sLog.outDebug(GetTrinityString(LANG_GET_FLOAT), GUID_LOPART(guid), Opcode, fValue); - PSendSysMessage(LANG_GET_FLOAT_FIELD, GUID_LOPART(guid), Opcode, fValue); - } - - return true; -} - -bool ChatHandler::HandleDebugMod32ValueCommand(const char* args) -{ - if (!*args) - return false; - - char* px = strtok((char*)args, " "); - char* py = strtok(NULL, " "); - - if (!px || !py) - return false; - - uint32 Opcode = (uint32)atoi(px); - int Value = atoi(py); - - if (Opcode >= m_session->GetPlayer()->GetValuesCount()) - { - PSendSysMessage(LANG_TOO_BIG_INDEX, Opcode, m_session->GetPlayer()->GetGUIDLow(), m_session->GetPlayer()->GetValuesCount()); - return false; - } - - sLog.outDebug(GetTrinityString(LANG_CHANGE_32BIT), Opcode, Value); - - int CurrentValue = (int)m_session->GetPlayer()->GetUInt32Value(Opcode); - - CurrentValue += Value; - m_session->GetPlayer()->SetUInt32Value(Opcode , (uint32)CurrentValue); - - PSendSysMessage(LANG_CHANGE_32BIT_FIELD, Opcode,CurrentValue); - - return true; -} - -bool ChatHandler::HandleDebugUpdateCommand(const char* args) -{ - if (!*args) - return false; - - uint32 updateIndex; - uint32 value; - - char* pUpdateIndex = strtok((char*)args, " "); - - Unit* chr = getSelectedUnit(); - if (chr == NULL) - { - SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); - SetSentErrorMessage(true); - return false; - } - - if (!pUpdateIndex) - { - return true; - } - updateIndex = atoi(pUpdateIndex); - //check updateIndex - if (chr->GetTypeId() == TYPEID_PLAYER) - { - if (updateIndex >= PLAYER_END) return true; - } - else - { - if (updateIndex >= UNIT_END) return true; - } - - char* pvalue = strtok(NULL, " "); - if (!pvalue) - { - value=chr->GetUInt32Value(updateIndex); - - PSendSysMessage(LANG_UPDATE, chr->GetGUIDLow(),updateIndex,value); - return true; - } - - value=atoi(pvalue); - - PSendSysMessage(LANG_UPDATE_CHANGE, chr->GetGUIDLow(),updateIndex,value); - - chr->SetUInt32Value(updateIndex,value); - - return true; -} +// This file is deprecated
\ No newline at end of file diff --git a/src/server/game/Chat/Commands/Level0.cpp b/src/server/game/Chat/Commands/Level0.cpp index f0ae7eade65..a1321b81125 100755 --- a/src/server/game/Chat/Commands/Level0.cpp +++ b/src/server/game/Chat/Commands/Level0.cpp @@ -52,13 +52,6 @@ bool ChatHandler::HandleCommandsCommand(const char* /*args*/) return true; } -bool ChatHandler::HandleAccountCommand(const char* /*args*/) -{ - AccountTypes gmlevel = m_session->GetSecurity(); - PSendSysMessage(LANG_ACCOUNT_LEVEL, uint32(gmlevel)); - return true; -} - bool ChatHandler::HandleStartCommand(const char* /*args*/) { Player *chr = m_session->GetPlayer(); @@ -151,147 +144,6 @@ bool ChatHandler::HandleSaveCommand(const char* /*args*/) return true; } -bool ChatHandler::HandleGMListIngameCommand(const char* /*args*/) -{ - bool first = true; - - ACE_GUARD_RETURN(ACE_Thread_Mutex, guard, *HashMapHolder<Player>::GetLock(), true); - HashMapHolder<Player>::MapType &m = sObjectAccessor.GetPlayers(); - for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr) - { - AccountTypes itr_sec = itr->second->GetSession()->GetSecurity(); - if ((itr->second->isGameMaster() || (itr_sec > SEC_PLAYER && itr_sec <= AccountTypes(sWorld.getIntConfig(CONFIG_GM_LEVEL_IN_GM_LIST)))) && - (!m_session || itr->second->IsVisibleGloballyFor(m_session->GetPlayer()))) - { - if (first) - { - SendSysMessage(LANG_GMS_ON_SRV); - first = false; - } - - SendSysMessage(GetNameLink(itr->second).c_str()); - } - } - - if (first) - SendSysMessage(LANG_GMS_NOT_LOGGED); - - return true; -} - -bool ChatHandler::HandleAccountPasswordCommand(const char* args) -{ - if (!*args) - { - SendSysMessage(LANG_CMD_SYNTAX); - SetSentErrorMessage(true); - return false; - } - - char *old_pass = strtok((char*)args, " "); - char *new_pass = strtok(NULL, " "); - char *new_pass_c = strtok(NULL, " "); - - if (!old_pass || !new_pass || !new_pass_c) - { - SendSysMessage(LANG_CMD_SYNTAX); - SetSentErrorMessage(true); - return false; - } - - std::string password_old = old_pass; - std::string password_new = new_pass; - std::string password_new_c = new_pass_c; - - if (!sAccountMgr.CheckPassword(m_session->GetAccountId(), password_old)) - { - SendSysMessage(LANG_COMMAND_WRONGOLDPASSWORD); - SetSentErrorMessage(true); - return false; - } - - if (strcmp(new_pass, new_pass_c) != 0) - { - SendSysMessage(LANG_NEW_PASSWORDS_NOT_MATCH); - SetSentErrorMessage(true); - return false; - } - - AccountOpResult result = sAccountMgr.ChangePassword(m_session->GetAccountId(), password_new); - switch(result) - { - case AOR_OK: - SendSysMessage(LANG_COMMAND_PASSWORD); - break; - case AOR_PASS_TOO_LONG: - SendSysMessage(LANG_PASSWORD_TOO_LONG); - SetSentErrorMessage(true); - return false; - default: - SendSysMessage(LANG_COMMAND_NOTCHANGEPASSWORD); - SetSentErrorMessage(true); - return false; - } - - return true; -} - -bool ChatHandler::HandleAccountAddonCommand(const char* args) -{ - if (!*args) - { - SendSysMessage(LANG_CMD_SYNTAX); - SetSentErrorMessage(true); - return false; - } - - char *szExp = strtok((char*)args, " "); - - uint32 account_id = m_session->GetAccountId(); - - int expansion = atoi(szExp); //get int anyway (0 if error) - if (expansion < 0 || uint8(expansion) > sWorld.getIntConfig(CONFIG_EXPANSION)) - { - SendSysMessage(LANG_IMPROPER_VALUE); - SetSentErrorMessage(true); - return false; - } - - // No SQL injection - LoginDatabase.PExecute("UPDATE account SET expansion = '%d' WHERE id = '%u'", expansion, account_id); - PSendSysMessage(LANG_ACCOUNT_ADDON, expansion); - return true; -} - -bool ChatHandler::HandleAccountLockCommand(const char* args) -{ - if (!*args) - { - SendSysMessage(LANG_USE_BOL); - SetSentErrorMessage(true); - return false; - } - - std::string argstr = (char*)args; - if (argstr == "on") - { - LoginDatabase.PExecute("UPDATE account SET locked = '1' WHERE id = '%d'",m_session->GetAccountId()); - PSendSysMessage(LANG_COMMAND_ACCLOCKLOCKED); - return true; - } - - if (argstr == "off") - { - LoginDatabase.PExecute("UPDATE account SET locked = '0' WHERE id = '%d'",m_session->GetAccountId()); - PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED); - return true; - } - - SendSysMessage(LANG_USE_BOL); - SetSentErrorMessage(true); - return false; -} - /// Display the 'Message of the day' for the realm bool ChatHandler::HandleServerMotdCommand(const char* /*args*/) { diff --git a/src/server/game/Chat/Commands/Level1.cpp b/src/server/game/Chat/Commands/Level1.cpp index 209b0fdbb1a..0cd416275f3 100755 --- a/src/server/game/Chat/Commands/Level1.cpp +++ b/src/server/game/Chat/Commands/Level1.cpp @@ -39,104 +39,6 @@ #include "VMapFactory.h" #endif -//-----------------------Npc Commands----------------------- -bool ChatHandler::HandleNpcSayCommand(const char* args) -{ - if (!*args) - return false; - - Creature* pCreature = getSelectedCreature(); - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - pCreature->MonsterSay(args, LANG_UNIVERSAL, 0); - - // make some emotes - char lastchar = args[strlen(args) - 1]; - switch(lastchar) - { - case '?': pCreature->HandleEmoteCommand(EMOTE_ONESHOT_QUESTION); break; - case '!': pCreature->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION); break; - default: pCreature->HandleEmoteCommand(EMOTE_ONESHOT_TALK); break; - } - - return true; -} - -bool ChatHandler::HandleNpcYellCommand(const char* args) -{ - if (!*args) - return false; - - Creature* pCreature = getSelectedCreature(); - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - pCreature->MonsterYell(args, LANG_UNIVERSAL, 0); - - // make an emote - pCreature->HandleEmoteCommand(EMOTE_ONESHOT_SHOUT); - - return true; -} - -//show text emote by creature in chat -bool ChatHandler::HandleNpcTextEmoteCommand(const char* args) -{ - if (!*args) - return false; - - Creature* pCreature = getSelectedCreature(); - - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - pCreature->MonsterTextEmote(args, 0); - - return true; -} - -// make npc whisper to player -bool ChatHandler::HandleNpcWhisperCommand(const char* args) -{ - if (!*args) - return false; - - char* receiver_str = strtok((char*)args, " "); - char* text = strtok(NULL, ""); - - uint64 guid = m_session->GetPlayer()->GetSelection(); - Creature* pCreature = m_session->GetPlayer()->GetMap()->GetCreature(guid); - - if (!pCreature || !receiver_str || !text) - { - return false; - } - - uint64 receiver_guid= atol(receiver_str); - - // check online security - if (HasLowerSecurity(sObjectMgr.GetPlayer(receiver_guid), 0)) - return false; - - pCreature->MonsterWhisper(text,receiver_guid); - - return true; -} -//---------------------------------------------------------- - bool ChatHandler::HandleNameAnnounceCommand(const char* args) { WorldPacket data; @@ -211,112 +113,6 @@ bool ChatHandler::HandleGMNotifyCommand(const char* args) return true; } -//Enable\Dissable GM Mode -bool ChatHandler::HandleGMCommand(const char* args) -{ - if (!*args) - { - if (m_session->GetPlayer()->isGameMaster()) - m_session->SendNotification(LANG_GM_ON); - else - m_session->SendNotification(LANG_GM_OFF); - return true; - } - - std::string argstr = (char*)args; - - if (argstr == "on") - { - m_session->GetPlayer()->SetGameMaster(true); - m_session->SendNotification(LANG_GM_ON); - m_session->GetPlayer()->UpdateTriggerVisibility(); - #ifdef _DEBUG_VMAPS - VMAP::IVMapManager *vMapManager = VMAP::VMapFactory::createOrGetVMapManager(); - vMapManager->processCommand("stoplog"); - #endif - return true; - } - - if (argstr == "off") - { - m_session->GetPlayer()->SetGameMaster(false); - m_session->SendNotification(LANG_GM_OFF); - m_session->GetPlayer()->UpdateTriggerVisibility(); - #ifdef _DEBUG_VMAPS - VMAP::IVMapManager *vMapManager = VMAP::VMapFactory::createOrGetVMapManager(); - vMapManager->processCommand("startlog"); - #endif - return true; - } - - SendSysMessage(LANG_USE_BOL); - SetSentErrorMessage(true); - return false; -} - -// Enables or disables hiding of the staff badge -bool ChatHandler::HandleGMChatCommand(const char* args) -{ - if (!*args) - { - if (m_session->GetPlayer()->isGMChat()) - m_session->SendNotification(LANG_GM_CHAT_ON); - else - m_session->SendNotification(LANG_GM_CHAT_OFF); - return true; - } - - std::string argstr = (char*)args; - - if (argstr == "on") - { - m_session->GetPlayer()->SetGMChat(true); - m_session->SendNotification(LANG_GM_CHAT_ON); - return true; - } - - if (argstr == "off") - { - m_session->GetPlayer()->SetGMChat(false); - m_session->SendNotification(LANG_GM_CHAT_OFF); - return true; - } - - SendSysMessage(LANG_USE_BOL); - SetSentErrorMessage(true); - return false; -} - -//Enable\Dissable Invisible mode -bool ChatHandler::HandleGMVisibleCommand(const char* args) -{ - if (!*args) - { - PSendSysMessage(LANG_YOU_ARE, m_session->GetPlayer()->isGMVisible() ? GetTrinityString(LANG_VISIBLE) : GetTrinityString(LANG_INVISIBLE)); - return true; - } - - std::string argstr = (char*)args; - - if (argstr == "on") - { - m_session->GetPlayer()->SetGMVisible(true); - m_session->SendNotification(LANG_INVISIBLE_VISIBLE); - return true; - } - - if (argstr == "off") - { - m_session->SendNotification(LANG_INVISIBLE_INVISIBLE); - m_session->GetPlayer()->SetGMVisible(false); - return true; - } - - SendSysMessage(LANG_USE_BOL); - SetSentErrorMessage(true); - return false; -} - bool ChatHandler::HandleGPSCommand(const char* args) { WorldObject *obj = NULL; @@ -699,393 +495,6 @@ bool ChatHandler::HandleRecallCommand(const char* args) return true; } -//Edit Player HP -bool ChatHandler::HandleModifyHPCommand(const char* args) -{ - if (!*args) - return false; - - int32 hp = atoi((char*)args); - int32 hpm = atoi((char*)args); - - if (hp < 1 || hpm < 1 || hpm < hp) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - if (HasLowerSecurity(chr, 0)) - return false; - - PSendSysMessage(LANG_YOU_CHANGE_HP, GetNameLink(chr).c_str(), hp, hpm); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_HP_CHANGED, GetNameLink().c_str(), hp, hpm); - - chr->SetMaxHealth(hpm); - chr->SetHealth(hp); - - return true; -} - -//Edit Player Mana -bool ChatHandler::HandleModifyManaCommand(const char* args) -{ - if (!*args) - return false; - - int32 mana = atoi((char*)args); - int32 manam = atoi((char*)args); - - if (mana <= 0 || manam <= 0 || manam < mana) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - PSendSysMessage(LANG_YOU_CHANGE_MANA, GetNameLink(chr).c_str(), mana, manam); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_MANA_CHANGED, GetNameLink().c_str(), mana, manam); - - chr->SetMaxPower(POWER_MANA,manam); - chr->SetPower(POWER_MANA, mana); - - return true; -} - -//Edit Player Energy -bool ChatHandler::HandleModifyEnergyCommand(const char* args) -{ - if (!*args) - return false; - - // char* pmana = strtok((char*)args, " "); - // if (!pmana) - // return false; - - // char* pmanaMax = strtok(NULL, " "); - // if (!pmanaMax) - // return false; - - // int32 manam = atoi(pmanaMax); - // int32 mana = atoi(pmana); - - int32 energy = atoi((char*)args)*10; - int32 energym = atoi((char*)args)*10; - - if (energy <= 0 || energym <= 0 || energym < energy) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (!chr) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - PSendSysMessage(LANG_YOU_CHANGE_ENERGY, GetNameLink(chr).c_str(), energy/10, energym/10); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_ENERGY_CHANGED, GetNameLink().c_str(), energy/10, energym/10); - - chr->SetMaxPower(POWER_ENERGY,energym); - chr->SetPower(POWER_ENERGY, energy); - - sLog.outDetail(GetTrinityString(LANG_CURRENT_ENERGY),chr->GetMaxPower(POWER_ENERGY)); - - return true; -} - -//Edit Player Rage -bool ChatHandler::HandleModifyRageCommand(const char* args) -{ - if (!*args) - return false; - - // char* pmana = strtok((char*)args, " "); - // if (!pmana) - // return false; - - // char* pmanaMax = strtok(NULL, " "); - // if (!pmanaMax) - // return false; - - // int32 manam = atoi(pmanaMax); - // int32 mana = atoi(pmana); - - int32 rage = atoi((char*)args)*10; - int32 ragem = atoi((char*)args)*10; - - if (rage <= 0 || ragem <= 0 || ragem < rage) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - PSendSysMessage(LANG_YOU_CHANGE_RAGE, GetNameLink(chr).c_str(), rage/10, ragem/10); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_RAGE_CHANGED, GetNameLink().c_str(), rage/10, ragem/10); - - chr->SetMaxPower(POWER_RAGE,ragem); - chr->SetPower(POWER_RAGE, rage); - - return true; -} - -// Edit Player Runic Power -bool ChatHandler::HandleModifyRunicPowerCommand(const char* args) -{ - if (!*args) - return false; - - int32 rune = atoi((char*)args)*10; - int32 runem = atoi((char*)args)*10; - - if (rune <= 0 || runem <= 0 || runem < rune) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - PSendSysMessage(LANG_YOU_CHANGE_RUNIC_POWER, GetNameLink(chr).c_str(), rune/10, runem/10); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_RUNIC_POWER_CHANGED, GetNameLink().c_str(), rune/10, runem/10); - - chr->SetMaxPower(POWER_RUNIC_POWER,runem); - chr->SetPower(POWER_RUNIC_POWER, rune); - - return true; -} - -//Edit Player Faction -bool ChatHandler::HandleModifyFactionCommand(const char* args) -{ - if (!*args) - return false; - - char* pfactionid = extractKeyFromLink((char*)args,"Hfaction"); - - Creature* chr = getSelectedCreature(); - if (!chr) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - if (!pfactionid) - { - if (chr) - { - uint32 factionid = chr->getFaction(); - uint32 flag = chr->GetUInt32Value(UNIT_FIELD_FLAGS); - uint32 npcflag = chr->GetUInt32Value(UNIT_NPC_FLAGS); - uint32 dyflag = chr->GetUInt32Value(UNIT_DYNAMIC_FLAGS); - PSendSysMessage(LANG_CURRENT_FACTION,chr->GetGUIDLow(),factionid,flag,npcflag,dyflag); - } - return true; - } - - if (!chr) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - uint32 factionid = atoi(pfactionid); - uint32 flag; - - char *pflag = strtok(NULL, " "); - if (!pflag) - flag = chr->GetUInt32Value(UNIT_FIELD_FLAGS); - else - flag = atoi(pflag); - - char* pnpcflag = strtok(NULL, " "); - - uint32 npcflag; - if (!pnpcflag) - npcflag = chr->GetUInt32Value(UNIT_NPC_FLAGS); - else - npcflag = atoi(pnpcflag); - - char* pdyflag = strtok(NULL, " "); - - uint32 dyflag; - if (!pdyflag) - dyflag = chr->GetUInt32Value(UNIT_DYNAMIC_FLAGS); - else - dyflag = atoi(pdyflag); - - if (!sFactionTemplateStore.LookupEntry(factionid)) - { - PSendSysMessage(LANG_WRONG_FACTION, factionid); - SetSentErrorMessage(true); - return false; - } - - PSendSysMessage(LANG_YOU_CHANGE_FACTION, chr->GetGUIDLow(),factionid,flag,npcflag,dyflag); - - chr->setFaction(factionid); - chr->SetUInt32Value(UNIT_FIELD_FLAGS,flag); - chr->SetUInt32Value(UNIT_NPC_FLAGS,npcflag); - chr->SetUInt32Value(UNIT_DYNAMIC_FLAGS,dyflag); - - return true; -} - -//Edit Player Spell -bool ChatHandler::HandleModifySpellCommand(const char* args) -{ - if (!*args) return false; - char* pspellflatid = strtok((char*)args, " "); - if (!pspellflatid) - return false; - - char* pop = strtok(NULL, " "); - if (!pop) - return false; - - char* pval = strtok(NULL, " "); - if (!pval) - return false; - - uint16 mark; - - char* pmark = strtok(NULL, " "); - - uint8 spellflatid = atoi(pspellflatid); - uint8 op = atoi(pop); - uint16 val = atoi(pval); - if (!pmark) - mark = 65535; - else - mark = atoi(pmark); - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - PSendSysMessage(LANG_YOU_CHANGE_SPELLFLATID, spellflatid, val, mark, GetNameLink(chr).c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_SPELLFLATID_CHANGED, GetNameLink().c_str(), spellflatid, val, mark); - - WorldPacket data(SMSG_SET_FLAT_SPELL_MODIFIER, (1+1+2+2)); - data << uint8(spellflatid); - data << uint8(op); - data << uint16(val); - data << uint16(mark); - chr->GetSession()->SendPacket(&data); - - return true; -} - -//Edit Player TP -bool ChatHandler::HandleModifyTalentCommand (const char* args) -{ - if (!*args) - return false; - - int tp = atoi((char*)args); - if (tp < 0) - return false; - - Unit* target = getSelectedUnit(); - if (!target) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - if (target->GetTypeId() == TYPEID_PLAYER) - { - // check online security - if (HasLowerSecurity((Player*)target, 0)) - return false; - target->ToPlayer()->SetFreeTalentPoints(tp); - target->ToPlayer()->SendTalentsInfoData(false); - return true; - } - else if (target->ToCreature()->isPet()) - { - Unit *owner = target->GetOwner(); - if (owner && owner->GetTypeId() == TYPEID_PLAYER && ((Pet *)target)->IsPermanentPetFor(owner->ToPlayer())) - { - // check online security - if (HasLowerSecurity((Player*)owner, 0)) - return false; - ((Pet *)target)->SetFreeTalentPoints(tp); - owner->ToPlayer()->SendTalentsInfoData(true); - return true; - } - } - - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; -} - //Enable On\OFF all taxi paths bool ChatHandler::HandleTaxiCheatCommand(const char* args) { @@ -1132,711 +541,6 @@ bool ChatHandler::HandleTaxiCheatCommand(const char* args) return false; } -//Edit Player Aspeed -bool ChatHandler::HandleModifyASpeedCommand(const char* args) -{ - if (!*args) - return false; - - float ASpeed = (float)atof((char*)args); - - if (ASpeed > 50.0f || ASpeed < 0.1f) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - std::string chrNameLink = GetNameLink(chr); - - if (chr->isInFlight()) - { - PSendSysMessage(LANG_CHAR_IN_FLIGHT,chrNameLink.c_str()); - SetSentErrorMessage(true); - return false; - } - - PSendSysMessage(LANG_YOU_CHANGE_ASPEED, ASpeed, chrNameLink.c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_ASPEED_CHANGED, GetNameLink().c_str(), ASpeed); - - chr->SetSpeed(MOVE_WALK, ASpeed,true); - chr->SetSpeed(MOVE_RUN, ASpeed,true); - chr->SetSpeed(MOVE_SWIM, ASpeed,true); - //chr->SetSpeed(MOVE_TURN, ASpeed,true); - chr->SetSpeed(MOVE_FLIGHT, ASpeed,true); - return true; -} - -//Edit Player Speed -bool ChatHandler::HandleModifySpeedCommand(const char* args) -{ - if (!*args) - return false; - - float Speed = (float)atof((char*)args); - - if (Speed > 50.0f || Speed < 0.1f) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - std::string chrNameLink = GetNameLink(chr); - - if (chr->isInFlight()) - { - PSendSysMessage(LANG_CHAR_IN_FLIGHT,chrNameLink.c_str()); - SetSentErrorMessage(true); - return false; - } - - PSendSysMessage(LANG_YOU_CHANGE_SPEED, Speed, chrNameLink.c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_SPEED_CHANGED, GetNameLink().c_str(), Speed); - - chr->SetSpeed(MOVE_RUN,Speed,true); - - return true; -} - -//Edit Player Swim Speed -bool ChatHandler::HandleModifySwimCommand(const char* args) -{ - if (!*args) - return false; - - float Swim = (float)atof((char*)args); - - if (Swim > 50.0f || Swim < 0.1f) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - std::string chrNameLink = GetNameLink(chr); - - if (chr->isInFlight()) - { - PSendSysMessage(LANG_CHAR_IN_FLIGHT,chrNameLink.c_str()); - SetSentErrorMessage(true); - return false; - } - - PSendSysMessage(LANG_YOU_CHANGE_SWIM_SPEED, Swim, chrNameLink.c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_SWIM_SPEED_CHANGED, GetNameLink().c_str(), Swim); - - chr->SetSpeed(MOVE_SWIM,Swim,true); - - return true; -} - -//Edit Player Walk Speed -bool ChatHandler::HandleModifyBWalkCommand(const char* args) -{ - if (!*args) - return false; - - float BSpeed = (float)atof((char*)args); - - if (BSpeed > 50.0f || BSpeed < 0.1f) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - std::string chrNameLink = GetNameLink(chr); - - if (chr->isInFlight()) - { - PSendSysMessage(LANG_CHAR_IN_FLIGHT,chrNameLink.c_str()); - SetSentErrorMessage(true); - return false; - } - - PSendSysMessage(LANG_YOU_CHANGE_BACK_SPEED, BSpeed, chrNameLink.c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_BACK_SPEED_CHANGED, GetNameLink().c_str(), BSpeed); - - chr->SetSpeed(MOVE_RUN_BACK,BSpeed,true); - - return true; -} - -//Edit Player Fly -bool ChatHandler::HandleModifyFlyCommand(const char* args) -{ - if (!*args) - return false; - - float FSpeed = (float)atof((char*)args); - - if (FSpeed > 50.0f || FSpeed < 0.1f) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - PSendSysMessage(LANG_YOU_CHANGE_FLY_SPEED, FSpeed, GetNameLink(chr).c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_FLY_SPEED_CHANGED, GetNameLink().c_str(), FSpeed); - - chr->SetSpeed(MOVE_FLIGHT,FSpeed,true); - - return true; -} - -//Edit Player Scale -bool ChatHandler::HandleModifyScaleCommand(const char* args) -{ - if (!*args) - return false; - - float Scale = (float)atof((char*)args); - if (Scale > 10.0f || Scale < 0.1f) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - PSendSysMessage(LANG_YOU_CHANGE_SIZE, Scale, GetNameLink(chr).c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_SIZE_CHANGED, GetNameLink().c_str(), Scale); - - chr->SetFloatValue(OBJECT_FIELD_SCALE_X, Scale); - - return true; -} - -//Enable Player mount -bool ChatHandler::HandleModifyMountCommand(const char* args) -{ - if (!*args) - return false; - - uint16 mId = 1147; - float speed = (float)15; - uint32 num = 0; - - num = atoi((char*)args); - switch(num) - { - case 1: - mId=14340; - break; - case 2: - mId=4806; - break; - case 3: - mId=6471; - break; - case 4: - mId=12345; - break; - case 5: - mId=6472; - break; - case 6: - mId=6473; - break; - case 7: - mId=10670; - break; - case 8: - mId=10719; - break; - case 9: - mId=10671; - break; - case 10: - mId=10672; - break; - case 11: - mId=10720; - break; - case 12: - mId=14349; - break; - case 13: - mId=11641; - break; - case 14: - mId=12244; - break; - case 15: - mId=12242; - break; - case 16: - mId=14578; - break; - case 17: - mId=14579; - break; - case 18: - mId=14349; - break; - case 19: - mId=12245; - break; - case 20: - mId=14335; - break; - case 21: - mId=207; - break; - case 22: - mId=2328; - break; - case 23: - mId=2327; - break; - case 24: - mId=2326; - break; - case 25: - mId=14573; - break; - case 26: - mId=14574; - break; - case 27: - mId=14575; - break; - case 28: - mId=604; - break; - case 29: - mId=1166; - break; - case 30: - mId=2402; - break; - case 31: - mId=2410; - break; - case 32: - mId=2409; - break; - case 33: - mId=2408; - break; - case 34: - mId=2405; - break; - case 35: - mId=14337; - break; - case 36: - mId=6569; - break; - case 37: - mId=10661; - break; - case 38: - mId=10666; - break; - case 39: - mId=9473; - break; - case 40: - mId=9476; - break; - case 41: - mId=9474; - break; - case 42: - mId=14374; - break; - case 43: - mId=14376; - break; - case 44: - mId=14377; - break; - case 45: - mId=2404; - break; - case 46: - mId=2784; - break; - case 47: - mId=2787; - break; - case 48: - mId=2785; - break; - case 49: - mId=2736; - break; - case 50: - mId=2786; - break; - case 51: - mId=14347; - break; - case 52: - mId=14346; - break; - case 53: - mId=14576; - break; - case 54: - mId=9695; - break; - case 55: - mId=9991; - break; - case 56: - mId=6448; - break; - case 57: - mId=6444; - break; - case 58: - mId=6080; - break; - case 59: - mId=6447; - break; - case 60: - mId=4805; - break; - case 61: - mId=9714; - break; - case 62: - mId=6448; - break; - case 63: - mId=6442; - break; - case 64: - mId=14632; - break; - case 65: - mId=14332; - break; - case 66: - mId=14331; - break; - case 67: - mId=8469; - break; - case 68: - mId=2830; - break; - case 69: - mId=2346; - break; - default: - SendSysMessage(LANG_NO_MOUNT); - SetSentErrorMessage(true); - return false; - } - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - PSendSysMessage(LANG_YOU_GIVE_MOUNT, GetNameLink(chr).c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_MOUNT_GIVED, GetNameLink().c_str()); - - chr->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP); - chr->Mount(mId); - - WorldPacket data(SMSG_FORCE_RUN_SPEED_CHANGE, (8+4+1+4)); - data.append(chr->GetPackGUID()); - data << (uint32)0; - data << (uint8)0; //new 2.1.0 - data << float(speed); - chr->SendMessageToSet(&data, true); - - data.Initialize(SMSG_FORCE_SWIM_SPEED_CHANGE, (8+4+4)); - data.append(chr->GetPackGUID()); - data << (uint32)0; - data << float(speed); - chr->SendMessageToSet(&data, true); - - return true; -} - -//Edit Player money -bool ChatHandler::HandleModifyMoneyCommand(const char* args) -{ - if (!*args) - return false; - - Player *chr = getSelectedPlayer(); - if (chr == NULL) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(chr, 0)) - return false; - - int32 addmoney = atoi((char*)args); - - uint32 moneyuser = chr->GetMoney(); - - if (addmoney < 0) - { - int32 newmoney = int32(moneyuser) + addmoney; - - sLog.outDetail(GetTrinityString(LANG_CURRENT_MONEY), moneyuser, addmoney, newmoney); - if (newmoney <= 0) - { - PSendSysMessage(LANG_YOU_TAKE_ALL_MONEY, GetNameLink(chr).c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_ALL_MONEY_GONE, GetNameLink().c_str()); - - chr->SetMoney(0); - } - else - { - if (newmoney > MAX_MONEY_AMOUNT) - newmoney = MAX_MONEY_AMOUNT; - - PSendSysMessage(LANG_YOU_TAKE_MONEY, abs(addmoney), GetNameLink(chr).c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_MONEY_TAKEN, GetNameLink().c_str(), abs(addmoney)); - chr->SetMoney(newmoney); - } - } - else - { - PSendSysMessage(LANG_YOU_GIVE_MONEY, addmoney, GetNameLink(chr).c_str()); - if (needReportToTarget(chr)) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_MONEY_GIVEN, GetNameLink().c_str(), addmoney); - - if (addmoney >=MAX_MONEY_AMOUNT) - chr->SetMoney(MAX_MONEY_AMOUNT); - else - chr->ModifyMoney(addmoney); - } - - sLog.outDetail(GetTrinityString(LANG_NEW_MONEY), moneyuser, addmoney, chr->GetMoney()); - - return true; -} - -//Edit Unit field -bool ChatHandler::HandleModifyBitCommand(const char* args) -{ - if (!*args) - return false; - - Unit *unit = getSelectedUnit(); - if (!unit) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (unit->GetTypeId() == TYPEID_PLAYER && HasLowerSecurity(unit->ToPlayer(), 0)) - return false; - - char* pField = strtok((char*)args, " "); - if (!pField) - return false; - - char* pBit = strtok(NULL, " "); - if (!pBit) - return false; - - uint16 field = atoi(pField); - uint32 bit = atoi(pBit); - - if (field < OBJECT_END || field >= unit->GetValuesCount()) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - if (bit < 1 || bit > 32) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - if (unit->HasFlag(field, (1<<(bit-1)))) - { - unit->RemoveFlag(field, (1<<(bit-1))); - PSendSysMessage(LANG_REMOVE_BIT, bit, field); - } - else - { - unit->SetFlag(field, (1<<(bit-1))); - PSendSysMessage(LANG_SET_BIT, bit, field); - } - return true; -} - -bool ChatHandler::HandleModifyHonorCommand (const char* args) -{ - if (!*args) - return false; - - Player *target = getSelectedPlayer(); - if (!target) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(target, 0)) - return false; - - int32 amount = (uint32)atoi(args); - - target->ModifyHonorPoints(amount); - - PSendSysMessage(LANG_COMMAND_MODIFY_HONOR, GetNameLink(target).c_str(), target->GetHonorPoints()); - - return true; -} - -bool ChatHandler::HandleTeleCommand(const char * args) -{ - if (!*args) - return false; - - Player* _player = m_session->GetPlayer(); - - // id, or string, or [name] Shift-click form |color|Htele:id|h[name]|h|r - GameTele const* tele = extractGameTeleFromLink((char*)args); - - if (!tele) - { - SendSysMessage(LANG_COMMAND_TELE_NOTFOUND); - SetSentErrorMessage(true); - return false; - } - - if (_player->isInCombat()) - { - SendSysMessage(LANG_YOU_IN_COMBAT); - SetSentErrorMessage(true); - return false; - } - - MapEntry const * me = sMapStore.LookupEntry(tele->mapId); - if (!me || me->IsBattlegroundOrArena()) - { - SendSysMessage(LANG_CANNOT_TELE_TO_BG); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - _player->TeleportTo(tele->mapId, tele->position_x, tele->position_y, tele->position_z, tele->orientation); - return true; -} - bool ChatHandler::HandleLookupAreaCommand(const char* args) { if (!*args) @@ -2311,279 +1015,3 @@ bool ChatHandler::HandleGroupSummonCommand(const char* args) return true; } - -bool ChatHandler::HandleGoTaxinodeCommand(const char* args) -{ - Player* _player = m_session->GetPlayer(); - - if (!*args) - return false; - - char* cNodeId = extractKeyFromLink((char*)args,"Htaxinode"); - if (!cNodeId) - return false; - - int32 i_nodeId = atoi(cNodeId); - if (!i_nodeId) - return false; - - TaxiNodesEntry const* node = sTaxiNodesStore.LookupEntry(i_nodeId); - if (!node) - { - PSendSysMessage(LANG_COMMAND_GOTAXINODENOTFOUND,i_nodeId); - SetSentErrorMessage(true); - return false; - } - - if ((node->x == 0.0f && node->y == 0.0f && node->z == 0.0f) || - !MapManager::IsValidMapCoord(node->map_id,node->x,node->y,node->z)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,node->x,node->y,node->map_id); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - _player->TeleportTo(node->map_id, node->x, node->y, node->z, _player->GetOrientation()); - return true; -} - -//teleport at coordinates -bool ChatHandler::HandleGoXYCommand(const char* args) -{ - if (!*args) - return false; - - Player* _player = m_session->GetPlayer(); - - char* px = strtok((char*)args, " "); - char* py = strtok(NULL, " "); - char* pmapid = strtok(NULL, " "); - - if (!px || !py) - return false; - - float x = (float)atof(px); - float y = (float)atof(py); - uint32 mapid; - if (pmapid) - mapid = (uint32)atoi(pmapid); - else - mapid = _player->GetMapId(); - - if (!MapManager::IsValidMapCoord(mapid,x,y)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,x,y,mapid); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - Map const *map = sMapMgr.CreateBaseMap(mapid); - float z = std::max(map->GetHeight(x, y, MAX_HEIGHT), map->GetWaterLevel(x, y)); - - _player->TeleportTo(mapid, x, y, z, _player->GetOrientation()); - - return true; -} - -//teleport at coordinates, including Z -bool ChatHandler::HandleGoXYZCommand(const char* args) -{ - if (!*args) - return false; - - Player* _player = m_session->GetPlayer(); - - char* px = strtok((char*)args, " "); - char* py = strtok(NULL, " "); - char* pz = strtok(NULL, " "); - char* pmapid = strtok(NULL, " "); - - if (!px || !py || !pz) - return false; - - float x = (float)atof(px); - float y = (float)atof(py); - float z = (float)atof(pz); - uint32 mapid; - if (pmapid) - mapid = (uint32)atoi(pmapid); - else - mapid = _player->GetMapId(); - - if (!MapManager::IsValidMapCoord(mapid,x,y,z)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,x,y,mapid); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - _player->TeleportTo(mapid, x, y, z, _player->GetOrientation()); - - return true; -} - -//teleport at coordinates -bool ChatHandler::HandleGoZoneXYCommand(const char* args) -{ - if (!*args) - return false; - - Player* _player = m_session->GetPlayer(); - - char* px = strtok((char*)args, " "); - char* py = strtok(NULL, " "); - char* tail = strtok(NULL,""); - - char* cAreaId = extractKeyFromLink(tail,"Harea"); // string or [name] Shift-click form |color|Harea:area_id|h[name]|h|r - - if (!px || !py) - return false; - - float x = (float)atof(px); - float y = (float)atof(py); - - // prevent accept wrong numeric args - if ((x == 0.0f && *px != '0') || (y == 0.0f && *py != '0')) - return false; - - uint32 areaid = cAreaId ? (uint32)atoi(cAreaId) : _player->GetZoneId(); - - AreaTableEntry const* areaEntry = GetAreaEntryByAreaID(areaid); - - if (x < 0 || x > 100 || y < 0 || y > 100 || !areaEntry) - { - PSendSysMessage(LANG_INVALID_ZONE_COORD,x,y,areaid); - SetSentErrorMessage(true); - return false; - } - - // update to parent zone if exist (client map show only zones without parents) - AreaTableEntry const* zoneEntry = areaEntry->zone ? GetAreaEntryByAreaID(areaEntry->zone) : areaEntry; - - Map const *map = sMapMgr.CreateBaseMap(zoneEntry->mapid); - - if (map->Instanceable()) - { - PSendSysMessage(LANG_INVALID_ZONE_MAP,areaEntry->ID,areaEntry->area_name[GetSessionDbcLocale()],map->GetId(),map->GetMapName()); - SetSentErrorMessage(true); - return false; - } - - Zone2MapCoordinates(x,y,zoneEntry->ID); - - if (!MapManager::IsValidMapCoord(zoneEntry->mapid,x,y)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,x,y,zoneEntry->mapid); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - float z = std::max(map->GetHeight(x, y, MAX_HEIGHT), map->GetWaterLevel(x, y)); - _player->TeleportTo(zoneEntry->mapid, x, y, z, _player->GetOrientation()); - - return true; -} - -//teleport to grid -bool ChatHandler::HandleGoGridCommand(const char* args) -{ - if (!*args) return false; - Player* _player = m_session->GetPlayer(); - - char* px = strtok((char*)args, " "); - char* py = strtok(NULL, " "); - char* pmapid = strtok(NULL, " "); - - if (!px || !py) - return false; - - float grid_x = (float)atof(px); - float grid_y = (float)atof(py); - uint32 mapid; - if (pmapid) - mapid = (uint32)atoi(pmapid); - else mapid = _player->GetMapId(); - - // center of grid - float x = (grid_x-CENTER_GRID_ID+0.5f)*SIZE_OF_GRIDS; - float y = (grid_y-CENTER_GRID_ID+0.5f)*SIZE_OF_GRIDS; - - if (!MapManager::IsValidMapCoord(mapid,x,y)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,x,y,mapid); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - Map const *map = sMapMgr.CreateBaseMap(mapid); - float z = std::max(map->GetHeight(x, y, MAX_HEIGHT), map->GetWaterLevel(x, y)); - _player->TeleportTo(mapid, x, y, z, _player->GetOrientation()); - - return true; -} - -bool ChatHandler::HandleModifyDrunkCommand(const char* args) -{ - if (!*args) return false; - - uint32 drunklevel = (uint32)atoi(args); - if (drunklevel > 100) - drunklevel = 100; - - uint16 drunkMod = drunklevel * 0xFFFF / 100; - - m_session->GetPlayer()->SetDrunkValue(drunkMod); - - return true; -} - diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp index 2e52a9e5c96..ae86c290b7b 100755 --- a/src/server/game/Chat/Commands/Level2.cpp +++ b/src/server/game/Chat/Commands/Level2.cpp @@ -136,256 +136,6 @@ bool ChatHandler::HandleUnmuteCommand(const char* args) return true; } -bool ChatHandler::HandleGoTriggerCommand(const char* args) -{ - Player* _player = m_session->GetPlayer(); - - if (!*args) - return false; - - char *atId = strtok((char*)args, " "); - if (!atId) - return false; - - int32 i_atId = atoi(atId); - - if (!i_atId) - return false; - - AreaTriggerEntry const* at = sAreaTriggerStore.LookupEntry(i_atId); - if (!at) - { - PSendSysMessage(LANG_COMMAND_GOAREATRNOTFOUND,i_atId); - SetSentErrorMessage(true); - return false; - } - - if (!MapManager::IsValidMapCoord(at->mapid,at->x,at->y,at->z)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,at->x,at->y,at->mapid); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - _player->TeleportTo(at->mapid, at->x, at->y, at->z, _player->GetOrientation()); - return true; -} - -bool ChatHandler::HandleGoGraveyardCommand(const char* args) -{ - Player* _player = m_session->GetPlayer(); - - if (!*args) - return false; - - char *gyId = strtok((char*)args, " "); - if (!gyId) - return false; - - int32 i_gyId = atoi(gyId); - - if (!i_gyId) - return false; - - WorldSafeLocsEntry const* gy = sWorldSafeLocsStore.LookupEntry(i_gyId); - if (!gy) - { - PSendSysMessage(LANG_COMMAND_GRAVEYARDNOEXIST,i_gyId); - SetSentErrorMessage(true); - return false; - } - - if (!MapManager::IsValidMapCoord(gy->map_id,gy->x,gy->y,gy->z)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,gy->x,gy->y,gy->map_id); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - _player->TeleportTo(gy->map_id, gy->x, gy->y, gy->z, _player->GetOrientation()); - return true; -} - -/** \brief Teleport the GM to the specified creature -* -* .gocreature <GUID> --> TP using creature.guid -* .gocreature azuregos --> TP player to the mob with this name -* Warning: If there is more than one mob with this name -* you will be teleported to the first one that is found. -* .gocreature id 6109 --> TP player to the mob, that has this creature_template.entry -* Warning: If there is more than one mob with this "id" -* you will be teleported to the first one that is found. -*/ -//teleport to creature -bool ChatHandler::HandleGoCreatureCommand(const char* args) -{ - if (!*args) - return false; - Player* _player = m_session->GetPlayer(); - - // "id" or number or [name] Shift-click form |color|Hcreature_entry:creature_id|h[name]|h|r - char* pParam1 = extractKeyFromLink((char*)args,"Hcreature"); - if (!pParam1) - return false; - - std::ostringstream whereClause; - - // User wants to teleport to the NPC's template entry - if (strcmp(pParam1, "id") == 0) - { - //sLog.outError("DEBUG: ID found"); - - // Get the "creature_template.entry" - // number or [name] Shift-click form |color|Hcreature_entry:creature_id|h[name]|h|r - char* tail = strtok(NULL,""); - if (!tail) - return false; - char* cId = extractKeyFromLink(tail,"Hcreature_entry"); - if (!cId) - return false; - - int32 tEntry = atoi(cId); - //sLog.outError("DEBUG: ID value: %d", tEntry); - if (!tEntry) - return false; - - whereClause << "WHERE id = '" << tEntry << "'"; - } - else - { - //sLog.outError("DEBUG: ID *not found*"); - - int32 guid = atoi(pParam1); - - // Number is invalid - maybe the user specified the mob's name - if (!guid) - { - std::string name = pParam1; - WorldDatabase.escape_string(name); - whereClause << ", creature_template WHERE creature.id = creature_template.entry AND creature_template.name "_LIKE_" '" << name << "'"; - } - else - { - whereClause << "WHERE guid = '" << guid << "'"; - } - } - //sLog.outError("DEBUG: %s", whereClause.c_str()); - - QueryResult result = WorldDatabase.PQuery("SELECT position_x,position_y,position_z,orientation,map FROM creature %s", whereClause.str().c_str()); - if (!result) - { - SendSysMessage(LANG_COMMAND_GOCREATNOTFOUND); - SetSentErrorMessage(true); - return false; - } - if (result->GetRowCount() > 1) - SendSysMessage(LANG_COMMAND_GOCREATMULTIPLE); - - Field *fields = result->Fetch(); - float x = fields[0].GetFloat(); - float y = fields[1].GetFloat(); - float z = fields[2].GetFloat(); - float ort = fields[3].GetFloat(); - int mapid = fields[4].GetUInt16(); - - if (!MapManager::IsValidMapCoord(mapid,x,y,z,ort)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,x,y,mapid); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - _player->TeleportTo(mapid, x, y, z, ort); - return true; -} - -//teleport to gameobject -bool ChatHandler::HandleGoObjectCommand(const char* args) -{ - if (!*args) - return false; - - Player* _player = m_session->GetPlayer(); - - // number or [name] Shift-click form |color|Hgameobject:go_guid|h[name]|h|r - char* cId = extractKeyFromLink((char*)args,"Hgameobject"); - if (!cId) - return false; - - int32 guid = atoi(cId); - if (!guid) - return false; - - float x, y, z, ort; - int mapid; - - // by DB guid - if (GameObjectData const* go_data = sObjectMgr.GetGOData(guid)) - { - x = go_data->posX; - y = go_data->posY; - z = go_data->posZ; - ort = go_data->orientation; - mapid = go_data->mapid; - } - else - { - SendSysMessage(LANG_COMMAND_GOOBJNOTFOUND); - SetSentErrorMessage(true); - return false; - } - - if (!MapManager::IsValidMapCoord(mapid,x,y,z,ort)) - { - PSendSysMessage(LANG_INVALID_TARGET_COORD,x,y,mapid); - SetSentErrorMessage(true); - return false; - } - - // stop flight if need - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - // save only in non-flight case - else - _player->SaveRecallPosition(); - - _player->TeleportTo(mapid, x, y, z, ort); - return true; -} - bool ChatHandler::HandleGameObjectTargetCommand(const char* args) { Player* pl = m_session->GetPlayer(); @@ -837,1050 +587,7 @@ bool ChatHandler::HandleGUIDCommand(const char* /*args*/) return true; } -bool ChatHandler::HandleModifyRepCommand(const char * args) -{ - if (!*args) return false; - - Player* target = NULL; - target = getSelectedPlayer(); - - if (!target) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - // check online security - if (HasLowerSecurity(target, 0)) - return false; - - char* factionTxt = extractKeyFromLink((char*)args,"Hfaction"); - if (!factionTxt) - return false; - - uint32 factionId = atoi(factionTxt); - - int32 amount = 0; - char *rankTxt = strtok(NULL, " "); - if (!factionTxt || !rankTxt) - return false; - - amount = atoi(rankTxt); - if ((amount == 0) && (rankTxt[0] != '-') && !isdigit(rankTxt[0])) - { - std::string rankStr = rankTxt; - std::wstring wrankStr; - if (!Utf8toWStr(rankStr,wrankStr)) - return false; - wstrToLower(wrankStr); - - int r = 0; - amount = -42000; - for (; r < MAX_REPUTATION_RANK; ++r) - { - std::string rank = GetTrinityString(ReputationRankStrIndex[r]); - if (rank.empty()) - continue; - - std::wstring wrank; - if (!Utf8toWStr(rank,wrank)) - continue; - - wstrToLower(wrank); - - if (wrank.substr(0,wrankStr.size()) == wrankStr) - { - char *deltaTxt = strtok(NULL, " "); - if (deltaTxt) - { - int32 delta = atoi(deltaTxt); - if ((delta < 0) || (delta > ReputationMgr::PointsInRank[r] -1)) - { - PSendSysMessage(LANG_COMMAND_FACTION_DELTA, (ReputationMgr::PointsInRank[r]-1)); - SetSentErrorMessage(true); - return false; - } - amount += delta; - } - break; - } - amount += ReputationMgr::PointsInRank[r]; - } - if (r >= MAX_REPUTATION_RANK) - { - PSendSysMessage(LANG_COMMAND_FACTION_INVPARAM, rankTxt); - SetSentErrorMessage(true); - return false; - } - } - - FactionEntry const *factionEntry = sFactionStore.LookupEntry(factionId); - - if (!factionEntry) - { - PSendSysMessage(LANG_COMMAND_FACTION_UNKNOWN, factionId); - SetSentErrorMessage(true); - return false; - } - - if (factionEntry->reputationListID < 0) - { - PSendSysMessage(LANG_COMMAND_FACTION_NOREP_ERROR, factionEntry->name[GetSessionDbcLocale()], factionId); - SetSentErrorMessage(true); - return false; - } - - target->GetReputationMgr().SetReputation(factionEntry,amount); - PSendSysMessage(LANG_COMMAND_MODIFY_REP, factionEntry->name[GetSessionDbcLocale()], factionId, - GetNameLink(target).c_str(), target->GetReputationMgr().GetReputation(factionEntry)); - return true; -} - -//-----------------------Npc Commands----------------------- -//add spawn of creature -bool ChatHandler::HandleNpcAddCommand(const char* args) -{ - if (!*args) - return false; - char* charID = extractKeyFromLink((char*)args,"Hcreature_entry"); - if (!charID) - return false; - - char* team = strtok(NULL, " "); - int32 teamval = 0; - if (team) { teamval = atoi(team); } - if (teamval < 0) { teamval = 0; } - - uint32 id = atoi(charID); - - Player *chr = m_session->GetPlayer(); - float x = chr->GetPositionX(); - float y = chr->GetPositionY(); - float z = chr->GetPositionZ(); - float o = chr->GetOrientation(); - Map *map = chr->GetMap(); - - if (chr->GetTransport()) - { - uint32 tguid = chr->GetTransport()->AddNPCPassenger(0, id, chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); - if (tguid > 0) - WorldDatabase.PQuery("INSERT INTO creature_transport (guid, npc_entry, transport_entry, TransOffsetX, TransOffsetY, TransOffsetZ, TransOffsetO) values (%u, %u, %f, %f, %f, %f, %u)", tguid, id, chr->GetTransport()->GetEntry(), chr->GetTransOffsetX(), chr->GetTransOffsetY(), chr->GetTransOffsetZ(), chr->GetTransOffsetO()); - - return true; - } - - Creature* pCreature = new Creature; - if (!pCreature->Create(sObjectMgr.GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id, 0, (uint32)teamval, x, y, z, o)) - { - delete pCreature; - return false; - } - - pCreature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), chr->GetPhaseMaskForSpawn()); - - uint32 db_guid = pCreature->GetDBTableGUIDLow(); - - // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells(); - pCreature->LoadFromDB(db_guid, map); - - map->Add(pCreature); - sObjectMgr.AddCreatureToGrid(db_guid, sObjectMgr.GetCreatureData(db_guid)); - return true; -} - -//add item in vendorlist -bool ChatHandler::HandleNpcAddVendorItemCommand(const char* args) -{ - if (!*args) - return false; - - char* pitem = extractKeyFromLink((char*)args,"Hitem"); - if (!pitem) - { - SendSysMessage(LANG_COMMAND_NEEDITEMSEND); - SetSentErrorMessage(true); - return false; - } - - uint32 itemId = atol(pitem); - - char* fmaxcount = strtok(NULL, " "); //add maxcount, default: 0 - uint32 maxcount = 0; - if (fmaxcount) - maxcount = atol(fmaxcount); - - char* fincrtime = strtok(NULL, " "); //add incrtime, default: 0 - uint32 incrtime = 0; - if (fincrtime) - incrtime = atol(fincrtime); - - char* fextendedcost = strtok(NULL, " "); //add ExtendedCost, default: 0 - uint32 extendedcost = fextendedcost ? atol(fextendedcost) : 0; - - Creature* vendor = getSelectedCreature(); - - uint32 vendor_entry = vendor ? vendor->GetEntry() : 0; - - if (!sObjectMgr.IsVendorItemValid(vendor_entry,itemId,maxcount,incrtime,extendedcost,m_session->GetPlayer())) - { - SetSentErrorMessage(true); - return false; - } - - sObjectMgr.AddVendorItem(vendor_entry,itemId,maxcount,incrtime,extendedcost); - - ItemPrototype const* pProto = sObjectMgr.GetItemPrototype(itemId); - - PSendSysMessage(LANG_ITEM_ADDED_TO_LIST,itemId,pProto->Name1,maxcount,incrtime,extendedcost); - return true; -} - -//del item from vendor list -bool ChatHandler::HandleNpcDelVendorItemCommand(const char* args) -{ - if (!*args) - return false; - - Creature* vendor = getSelectedCreature(); - if (!vendor || !vendor->isVendor()) - { - SendSysMessage(LANG_COMMAND_VENDORSELECTION); - SetSentErrorMessage(true); - return false; - } - - char* pitem = extractKeyFromLink((char*)args,"Hitem"); - if (!pitem) - { - SendSysMessage(LANG_COMMAND_NEEDITEMSEND); - SetSentErrorMessage(true); - return false; - } - uint32 itemId = atol(pitem); - - if (!sObjectMgr.RemoveVendorItem(vendor->GetEntry(),itemId)) - { - PSendSysMessage(LANG_ITEM_NOT_IN_LIST,itemId); - SetSentErrorMessage(true); - return false; - } - - ItemPrototype const* pProto = sObjectMgr.GetItemPrototype(itemId); - - PSendSysMessage(LANG_ITEM_DELETED_FROM_LIST,itemId,pProto->Name1); - return true; -} - -//add move for creature -bool ChatHandler::HandleNpcAddMoveCommand(const char* args) -{ - if (!*args) - return false; - - char* guid_str = strtok((char*)args, " "); - char* wait_str = strtok((char*)NULL, " "); - - uint32 lowguid = atoi((char*)guid_str); - - Creature* pCreature = NULL; - - /* FIXME: impossible without entry - if (lowguid) - pCreature = ObjectAccessor::GetCreature(*m_session->GetPlayer(),MAKE_GUID(lowguid,HIGHGUID_UNIT)); - */ - - // attempt check creature existence by DB data - if (!pCreature) - { - CreatureData const* data = sObjectMgr.GetCreatureData(lowguid); - if (!data) - { - PSendSysMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowguid); - SetSentErrorMessage(true); - return false; - } - } - else - { - // obtain real GUID for DB operations - lowguid = pCreature->GetDBTableGUIDLow(); - } - - int wait = wait_str ? atoi(wait_str) : 0; - - if (wait < 0) - wait = 0; - - //Player* player = m_session->GetPlayer(); - - //WaypointMgr.AddLastNode(lowguid, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), wait, 0); - - // update movement type - WorldDatabase.PExecute("UPDATE creature SET MovementType = '%u' WHERE guid = '%u'", WAYPOINT_MOTION_TYPE,lowguid); - if (pCreature && pCreature->GetWaypointPath()) - { - pCreature->SetDefaultMovementType(WAYPOINT_MOTION_TYPE); - pCreature->GetMotionMaster()->Initialize(); - if (pCreature->isAlive()) // dead creature will reset movement generator at respawn - { - pCreature->setDeathState(JUST_DIED); - pCreature->Respawn(true); - } - pCreature->SaveToDB(); - } - - SendSysMessage(LANG_WAYPOINT_ADDED); - - return true; -} - -//change level of creature or pet -bool ChatHandler::HandleNpcChangeLevelCommand(const char* args) -{ - if (!*args) - return false; - - uint8 lvl = (uint8) atoi((char*)args); - if (lvl < 1 || lvl > sWorld.getIntConfig(CONFIG_MAX_PLAYER_LEVEL) + 3) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Creature* pCreature = getSelectedCreature(); - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - if (pCreature->isPet()) - { - if (((Pet*)pCreature)->getPetType() == HUNTER_PET) - { - pCreature->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, sObjectMgr.GetXPForLevel(lvl)/4); - pCreature->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0); - } - ((Pet*)pCreature)->GivePetLevel(lvl); - } - else - { - pCreature->SetMaxHealth(100 + 30*lvl); - pCreature->SetHealth(100 + 30*lvl); - pCreature->SetLevel(lvl); - pCreature->SaveToDB(); - } - - return true; -} - -//set npcflag of creature -bool ChatHandler::HandleNpcFlagCommand(const char* args) -{ - if (!*args) - return false; - - uint32 npcFlags = (uint32) atoi((char*)args); - - Creature* pCreature = getSelectedCreature(); - - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - pCreature->SetUInt32Value(UNIT_NPC_FLAGS, npcFlags); - - WorldDatabase.PExecute("UPDATE creature_template SET npcflag = '%u' WHERE entry = '%u'", npcFlags, pCreature->GetEntry()); - - SendSysMessage(LANG_VALUE_SAVED_REJOIN); - - return true; -} - -bool ChatHandler::HandleNpcDeleteCommand(const char* args) -{ - Creature* unit = NULL; - - if (*args) - { - // number or [name] Shift-click form |color|Hcreature:creature_guid|h[name]|h|r - char* cId = extractKeyFromLink((char*)args,"Hcreature"); - if (!cId) - return false; - - uint32 lowguid = atoi(cId); - if (!lowguid) - return false; - - if (CreatureData const* cr_data = sObjectMgr.GetCreatureData(lowguid)) - unit = m_session->GetPlayer()->GetMap()->GetCreature(MAKE_NEW_GUID(lowguid, cr_data->id, HIGHGUID_UNIT)); - } - else - unit = getSelectedCreature(); - - if (!unit || unit->isPet() || unit->isTotem()) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - // Delete the creature - unit->CombatStop(); - unit->DeleteFromDB(); - unit->AddObjectToRemoveList(); - - SendSysMessage(LANG_COMMAND_DELCREATMESSAGE); - - return true; -} - -//move selected creature -bool ChatHandler::HandleNpcMoveCommand(const char* args) -{ - uint32 lowguid = 0; - - Creature* pCreature = getSelectedCreature(); - - if (!pCreature) - { - // number or [name] Shift-click form |color|Hcreature:creature_guid|h[name]|h|r - char* cId = extractKeyFromLink((char*)args,"Hcreature"); - if (!cId) - return false; - - lowguid = atoi(cId); - - /* FIXME: impossibel without entry - if (lowguid) - pCreature = ObjectAccessor::GetCreature(*m_session->GetPlayer(),MAKE_GUID(lowguid,HIGHGUID_UNIT)); - */ - - // Attempting creature load from DB data - if (!pCreature) - { - CreatureData const* data = sObjectMgr.GetCreatureData(lowguid); - if (!data) - { - PSendSysMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowguid); - SetSentErrorMessage(true); - return false; - } - - uint32 map_id = data->mapid; - - if (m_session->GetPlayer()->GetMapId() != map_id) - { - PSendSysMessage(LANG_COMMAND_CREATUREATSAMEMAP, lowguid); - SetSentErrorMessage(true); - return false; - } - } - else - { - lowguid = pCreature->GetDBTableGUIDLow(); - } - } - else - { - lowguid = pCreature->GetDBTableGUIDLow(); - } - - float x = m_session->GetPlayer()->GetPositionX(); - float y = m_session->GetPlayer()->GetPositionY(); - float z = m_session->GetPlayer()->GetPositionZ(); - float o = m_session->GetPlayer()->GetOrientation(); - - if (pCreature) - { - if (CreatureData const* data = sObjectMgr.GetCreatureData(pCreature->GetDBTableGUIDLow())) - { - const_cast<CreatureData*>(data)->posX = x; - const_cast<CreatureData*>(data)->posY = y; - const_cast<CreatureData*>(data)->posZ = z; - const_cast<CreatureData*>(data)->orientation = o; - } - pCreature->GetMap()->CreatureRelocation(pCreature,x, y, z,o); - pCreature->GetMotionMaster()->Initialize(); - if (pCreature->isAlive()) // dead creature will reset movement generator at respawn - { - pCreature->setDeathState(JUST_DIED); - pCreature->Respawn(); - } - } - - WorldDatabase.PExecute("UPDATE creature SET position_x = '%f', position_y = '%f', position_z = '%f', orientation = '%f' WHERE guid = '%u'", x, y, z, o, lowguid); - PSendSysMessage(LANG_COMMAND_CREATUREMOVED); - return true; -} - -/**HandleNpcSetMoveTypeCommand - * Set the movement type for an NPC.<br/> - * <br/> - * Valid movement types are: - * <ul> - * <li> stay - NPC wont move </li> - * <li> random - NPC will move randomly according to the spawndist </li> - * <li> way - NPC will move with given waypoints set </li> - * </ul> - * additional parameter: NODEL - so no waypoints are deleted, if you - * change the movement type - */ -bool ChatHandler::HandleNpcSetMoveTypeCommand(const char* args) -{ - if (!*args) - return false; - - // 3 arguments: - // GUID (optional - you can also select the creature) - // stay|random|way (determines the kind of movement) - // NODEL (optional - tells the system NOT to delete any waypoints) - // this is very handy if you want to do waypoints, that are - // later switched on/off according to special events (like escort - // quests, etc) - char* guid_str = strtok((char*)args, " "); - char* type_str = strtok((char*)NULL, " "); - char* dontdel_str = strtok((char*)NULL, " "); - - bool doNotDelete = false; - - if (!guid_str) - return false; - - uint32 lowguid = 0; - Creature* pCreature = NULL; - - if (dontdel_str) - { - //sLog.outError("DEBUG: All 3 params are set"); - - // All 3 params are set - // GUID - // type - // doNotDEL - if (stricmp(dontdel_str, "NODEL") == 0) - { - //sLog.outError("DEBUG: doNotDelete = true;"); - doNotDelete = true; - } - } - else - { - // Only 2 params - but maybe NODEL is set - if (type_str) - { - sLog.outError("DEBUG: Only 2 params "); - if (stricmp(type_str, "NODEL") == 0) - { - //sLog.outError("DEBUG: type_str, NODEL "); - doNotDelete = true; - type_str = NULL; - } - } - } - - if (!type_str) // case .setmovetype $move_type (with selected creature) - { - type_str = guid_str; - pCreature = getSelectedCreature(); - if (!pCreature || pCreature->isPet()) - return false; - lowguid = pCreature->GetDBTableGUIDLow(); - } - else // case .setmovetype #creature_guid $move_type (with selected creature) - { - lowguid = atoi((char*)guid_str); - - /* impossible without entry - if (lowguid) - pCreature = ObjectAccessor::GetCreature(*m_session->GetPlayer(),MAKE_GUID(lowguid,HIGHGUID_UNIT)); - */ - - // attempt check creature existence by DB data - if (!pCreature) - { - CreatureData const* data = sObjectMgr.GetCreatureData(lowguid); - if (!data) - { - PSendSysMessage(LANG_COMMAND_CREATGUIDNOTFOUND, lowguid); - SetSentErrorMessage(true); - return false; - } - } - else - { - lowguid = pCreature->GetDBTableGUIDLow(); - } - } - - // now lowguid is low guid really existed creature - // and pCreature point (maybe) to this creature or NULL - - MovementGeneratorType move_type; - - std::string type = type_str; - - if (type == "stay") - move_type = IDLE_MOTION_TYPE; - else if (type == "random") - move_type = RANDOM_MOTION_TYPE; - else if (type == "way") - move_type = WAYPOINT_MOTION_TYPE; - else - return false; - - // update movement type - //if (doNotDelete == false) - // WaypointMgr.DeletePath(lowguid); - - if (pCreature) - { - // update movement type - if (doNotDelete == false) - pCreature->LoadPath(0); - - pCreature->SetDefaultMovementType(move_type); - pCreature->GetMotionMaster()->Initialize(); - if (pCreature->isAlive()) // dead creature will reset movement generator at respawn - { - pCreature->setDeathState(JUST_DIED); - pCreature->Respawn(); - } - pCreature->SaveToDB(); - } - if (doNotDelete == false) - { - PSendSysMessage(LANG_MOVE_TYPE_SET,type_str); - } - else - { - PSendSysMessage(LANG_MOVE_TYPE_SET_NODEL,type_str); - } - - return true; -} - -//set model of creature -bool ChatHandler::HandleNpcSetModelCommand(const char* args) -{ - if (!*args) - return false; - - uint32 displayId = (uint32) atoi((char*)args); - - Creature *pCreature = getSelectedCreature(); - - if (!pCreature || pCreature->isPet()) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - pCreature->SetDisplayId(displayId); - pCreature->SetNativeDisplayId(displayId); - - pCreature->SaveToDB(); - - return true; -} -//set faction of creature -bool ChatHandler::HandleNpcFactionIdCommand(const char* args) -{ - if (!*args) - return false; - - uint32 factionId = (uint32) atoi((char*)args); - - if (!sFactionTemplateStore.LookupEntry(factionId)) - { - PSendSysMessage(LANG_WRONG_FACTION, factionId); - SetSentErrorMessage(true); - return false; - } - - Creature* pCreature = getSelectedCreature(); - - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - pCreature->setFaction(factionId); - - // faction is set in creature_template - not inside creature - - // update in memory - if (CreatureInfo const *cinfo = pCreature->GetCreatureInfo()) - { - const_cast<CreatureInfo*>(cinfo)->faction_A = factionId; - const_cast<CreatureInfo*>(cinfo)->faction_H = factionId; - } - - // and DB - WorldDatabase.PExecute("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", factionId, factionId, pCreature->GetEntry()); - - return true; -} -//set spawn dist of creature -bool ChatHandler::HandleNpcSpawnDistCommand(const char* args) -{ - if (!*args) - return false; - - float option = (float)(atof((char*)args)); - if (option < 0.0f) - { - SendSysMessage(LANG_BAD_VALUE); - return false; - } - - MovementGeneratorType mtype = IDLE_MOTION_TYPE; - if (option >0.0f) - mtype = RANDOM_MOTION_TYPE; - - Creature *pCreature = getSelectedCreature(); - uint32 u_guidlow = 0; - - if (pCreature) - u_guidlow = pCreature->GetDBTableGUIDLow(); - else - return false; - - pCreature->SetRespawnRadius((float)option); - pCreature->SetDefaultMovementType(mtype); - pCreature->GetMotionMaster()->Initialize(); - if (pCreature->isAlive()) // dead creature will reset movement generator at respawn - { - pCreature->setDeathState(JUST_DIED); - pCreature->Respawn(); - } - - WorldDatabase.PExecute("UPDATE creature SET spawndist=%f, MovementType=%i WHERE guid=%u",option,mtype,u_guidlow); - PSendSysMessage(LANG_COMMAND_SPAWNDIST,option); - return true; -} -//spawn time handling -bool ChatHandler::HandleNpcSpawnTimeCommand(const char* args) -{ - if (!*args) - return false; - - char* stime = strtok((char*)args, " "); - - if (!stime) - return false; - - int i_stime = atoi((char*)stime); - - if (i_stime < 0) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Creature *pCreature = getSelectedCreature(); - uint32 u_guidlow = 0; - - if (pCreature) - u_guidlow = pCreature->GetDBTableGUIDLow(); - else - return false; - - WorldDatabase.PExecute("UPDATE creature SET spawntimesecs=%i WHERE guid=%u",i_stime,u_guidlow); - pCreature->SetRespawnDelay((uint32)i_stime); - PSendSysMessage(LANG_COMMAND_SPAWNTIME,i_stime); - - return true; -} -//npc follow handling -bool ChatHandler::HandleNpcFollowCommand(const char* /*args*/) -{ - Player *player = m_session->GetPlayer(); - Creature *creature = getSelectedCreature(); - - if (!creature) - { - PSendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - // Follow player - Using pet's default dist and angle - creature->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, creature->GetFollowAngle()); - - PSendSysMessage(LANG_CREATURE_FOLLOW_YOU_NOW, creature->GetName()); - return true; -} -//npc unfollow handling -bool ChatHandler::HandleNpcUnFollowCommand(const char* /*args*/) -{ - Player *player = m_session->GetPlayer(); - Creature *creature = getSelectedCreature(); - - if (!creature) - { - PSendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - if (/*creature->GetMotionMaster()->empty() ||*/ - creature->GetMotionMaster()->GetCurrentMovementGeneratorType () != TARGETED_MOTION_TYPE) - { - PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU, creature->GetName()); - SetSentErrorMessage(true); - return false; - } - - TargetedMovementGenerator<Creature> const* mgen - = static_cast<TargetedMovementGenerator<Creature> const*>((creature->GetMotionMaster()->top())); - - if (mgen->GetTarget() != player) - { - PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU, creature->GetName()); - SetSentErrorMessage(true); - return false; - } - - // reset movement - creature->GetMotionMaster()->MovementExpired(true); - - PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU_NOW, creature->GetName()); - return true; -} -//npc tame handling -bool ChatHandler::HandleNpcTameCommand(const char* /*args*/) -{ - Creature *creatureTarget = getSelectedCreature (); - if (!creatureTarget || creatureTarget->isPet ()) - { - PSendSysMessage (LANG_SELECT_CREATURE); - SetSentErrorMessage (true); - return false; - } - - Player *player = m_session->GetPlayer (); - - if (player->GetPetGUID ()) - { - SendSysMessage (LANG_YOU_ALREADY_HAVE_PET); - SetSentErrorMessage (true); - return false; - } - - CreatureInfo const* cInfo = creatureTarget->GetCreatureInfo(); - - if (!cInfo->isTameable (player->CanTameExoticPets())) - { - PSendSysMessage (LANG_CREATURE_NON_TAMEABLE,cInfo->Entry); - SetSentErrorMessage (true); - return false; - } - - // Everything looks OK, create new pet - Pet* pet = player->CreateTamedPetFrom (creatureTarget); - if (!pet) - { - PSendSysMessage (LANG_CREATURE_NON_TAMEABLE,cInfo->Entry); - SetSentErrorMessage (true); - return false; - } - - // place pet before player - float x,y,z; - player->GetClosePoint (x,y,z,creatureTarget->GetObjectSize (),CONTACT_DISTANCE); - pet->Relocate (x,y,z,M_PI-player->GetOrientation ()); - - // set pet to defensive mode by default (some classes can't control controlled pets in fact). - pet->SetReactState(REACT_DEFENSIVE); - - // calculate proper level - uint8 level = (creatureTarget->getLevel() < (player->getLevel() - 5)) ? (player->getLevel() - 5) : creatureTarget->getLevel(); - - // prepare visual effect for levelup - pet->SetUInt32Value(UNIT_FIELD_LEVEL, level - 1); - - // add to world - pet->GetMap()->Add(pet->ToCreature()); - - // visual effect for levelup - pet->SetUInt32Value(UNIT_FIELD_LEVEL, level); - - // caster have pet now - player->SetMinion(pet, true); - - pet->SavePetToDB(PET_SAVE_AS_CURRENT); - player->PetSpellInitialize(); - - return true; -} -//npc phasemask handling -//change phasemask of creature or pet -bool ChatHandler::HandleNpcSetPhaseCommand(const char* args) -{ - if (!*args) - return false; - - uint32 phasemask = (uint32) atoi((char*)args); - if (phasemask == 0) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - Creature* pCreature = getSelectedCreature(); - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - pCreature->SetPhaseMask(phasemask,true); - - if (!pCreature->isPet()) - pCreature->SaveToDB(); - - return true; -} -//npc deathstate handling -bool ChatHandler::HandleNpcSetDeathStateCommand(const char* args) -{ - if (!*args) - return false; - - Creature* pCreature = getSelectedCreature(); - if (!pCreature || pCreature->isPet()) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - if (strncmp(args, "on", 3) == 0) - pCreature->SetDeadByDefault(true); - else if (strncmp(args, "off", 4) == 0) - pCreature->SetDeadByDefault(false); - else - { - SendSysMessage(LANG_USE_BOL); - SetSentErrorMessage(true); - return false; - } - - pCreature->SaveToDB(); - pCreature->Respawn(); - - return true; -} - -//TODO: NpcCommands that need to be fixed : - -bool ChatHandler::HandleNpcNameCommand(const char* /*args*/) -{ - /* Temp. disabled - if (!*args) - return false; - - if (strlen((char*)args)>75) - { - PSendSysMessage(LANG_TOO_LONG_NAME, strlen((char*)args)-75); - return true; - } - - for (uint8 i = 0; i < strlen(args); ++i) - { - if (!isalpha(args[i]) && args[i] != ' ') - { - SendSysMessage(LANG_CHARS_ONLY); - return false; - } - } - - uint64 guid; - guid = m_session->GetPlayer()->GetSelection(); - if (guid == 0) - { - SendSysMessage(LANG_NO_SELECTION); - return true; - } - - Creature* pCreature = ObjectAccessor::GetCreature(*m_session->GetPlayer(), guid); - - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - return true; - } - - pCreature->SetName(args); - uint32 idname = sObjectMgr.AddCreatureTemplate(pCreature->GetName()); - pCreature->SetUInt32Value(OBJECT_FIELD_ENTRY, idname); - - pCreature->SaveToDB(); - */ - - return true; -} - -bool ChatHandler::HandleNpcSubNameCommand(const char* /*args*/) -{ - /* Temp. disabled - - if (!*args) - args = ""; - - if (strlen((char*)args)>75) - { - - PSendSysMessage(LANG_TOO_LONG_SUBNAME, strlen((char*)args)-75); - return true; - } - - for (uint8 i = 0; i < strlen(args); i++) - { - if (!isalpha(args[i]) && args[i] != ' ') - { - SendSysMessage(LANG_CHARS_ONLY); - return false; - } - } - uint64 guid; - guid = m_session->GetPlayer()->GetSelection(); - if (guid == 0) - { - SendSysMessage(LANG_NO_SELECTION); - return true; - } - - Creature* pCreature = ObjectAccessor::GetCreature(*m_session->GetPlayer(), guid); - - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - return true; - } - - uint32 idname = sObjectMgr.AddCreatureSubName(pCreature->GetName(),args,pCreature->GetUInt32Value(UNIT_FIELD_DISPLAYID)); - pCreature->SetUInt32Value(OBJECT_FIELD_ENTRY, idname); - - pCreature->SaveToDB(); - */ - return true; -} - -//move item to other slot + //move item to other slot bool ChatHandler::HandleItemMoveCommand(const char* args) { if (!*args) @@ -1931,27 +638,6 @@ bool ChatHandler::HandleDeMorphCommand(const char* /*args*/) return true; } -//morph creature or player -bool ChatHandler::HandleModifyMorphCommand(const char* args) -{ - if (!*args) - return false; - - uint16 display_id = (uint16)atoi((char*)args); - - Unit *target = getSelectedUnit(); - if (!target) - target = m_session->GetPlayer(); - - // check online security - else if (target->GetTypeId() == TYPEID_PLAYER && HasLowerSecurity((Player*)target, 0)) - return false; - - target->SetDisplayId(display_id); - - return true; -} - //kick player bool ChatHandler::HandleKickPlayerCommand(const char *args) { @@ -2068,28 +754,8 @@ bool ChatHandler::HandleKickPlayerCommand(const char *args) return true; } -//set temporary phase mask for player -bool ChatHandler::HandleModifyPhaseCommand(const char* args) -{ - if (!*args) - return false; - - uint32 phasemask = (uint32)atoi((char*)args); - - Unit *target = getSelectedUnit(); - if (!target) - target = m_session->GetPlayer(); - - // check online security - else if (target->GetTypeId() == TYPEID_PLAYER && HasLowerSecurity((Player*)target, 0)) - return false; - - target->SetPhaseMask(phasemask,true); - - return true; -} //show info of gameobject -bool ChatHandler::HandleGOInfoCommand(const char* args) +bool ChatHandler::HandleGameObjectInfoCommand(const char* args) { uint32 entry = 0; uint32 type = 0; @@ -3334,18 +2000,6 @@ bool ChatHandler::HandleCharacterReputationCommand(const char* args) return true; } -//change standstate -bool ChatHandler::HandleModifyStandStateCommand(const char* args) -{ - if (!*args) - return false; - - uint32 anim_id = atoi((char*)args); - m_session->GetPlayer()->SetUInt32Value(UNIT_NPC_EMOTESTATE , anim_id); - - return true; -} - bool ChatHandler::HandleHonorAddCommand(const char* args) { if (!*args) @@ -3634,137 +2288,6 @@ bool ChatHandler::HandleCombatStopCommand(const char* args) return true; } -void ChatHandler::HandleLearnSkillRecipesHelper(Player* player,uint32 skill_id) -{ - uint32 classmask = player->getClassMask(); - - for (uint32 j = 0; j < sSkillLineAbilityStore.GetNumRows(); ++j) - { - SkillLineAbilityEntry const *skillLine = sSkillLineAbilityStore.LookupEntry(j); - if (!skillLine) - continue; - - // wrong skill - if (skillLine->skillId != skill_id) - continue; - - // not high rank - if (skillLine->forward_spellid) - continue; - - // skip racial skills - if (skillLine->racemask != 0) - continue; - - // skip wrong class skills - if (skillLine->classmask && (skillLine->classmask & classmask) == 0) - continue; - - SpellEntry const* spellInfo = sSpellStore.LookupEntry(skillLine->spellId); - if (!spellInfo || !SpellMgr::IsSpellValid(spellInfo,player,false)) - continue; - - player->learnSpell(skillLine->spellId, false); - } -} - -bool ChatHandler::HandleLearnAllCraftsCommand(const char* /*args*/) -{ - - for (uint32 i = 0; i < sSkillLineStore.GetNumRows(); ++i) - { - SkillLineEntry const *skillInfo = sSkillLineStore.LookupEntry(i); - if (!skillInfo) - continue; - - if ((skillInfo->categoryId == SKILL_CATEGORY_PROFESSION || skillInfo->categoryId == SKILL_CATEGORY_SECONDARY) && - skillInfo->canLink) // only prof. with recipes have - { - HandleLearnSkillRecipesHelper(m_session->GetPlayer(),skillInfo->id); - } - } - - SendSysMessage(LANG_COMMAND_LEARN_ALL_CRAFT); - return true; -} - -bool ChatHandler::HandleLearnAllRecipesCommand(const char* args) -{ - // Learns all recipes of specified profession and sets skill to max - // Example: .learn all_recipes enchanting - - Player* target = getSelectedPlayer(); - if (!target) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - return false; - } - - if (!*args) - return false; - - std::wstring wnamepart; - - if (!Utf8toWStr(args,wnamepart)) - return false; - - // converting string that we try to find to lower case - wstrToLower(wnamepart); - - std::string name; - - SkillLineEntry const *targetSkillInfo = NULL; - for (uint32 i = 1; i < sSkillLineStore.GetNumRows(); ++i) - { - SkillLineEntry const *skillInfo = sSkillLineStore.LookupEntry(i); - if (!skillInfo) - continue; - - if ((skillInfo->categoryId != SKILL_CATEGORY_PROFESSION && - skillInfo->categoryId != SKILL_CATEGORY_SECONDARY) || - !skillInfo->canLink) // only prof with recipes have set - continue; - - int loc = GetSessionDbcLocale(); - name = skillInfo->name[loc]; - if (name.empty()) - continue; - - if (!Utf8FitTo(name, wnamepart)) - { - loc = 0; - for (; loc < TOTAL_LOCALES; ++loc) - { - if (loc == GetSessionDbcLocale()) - continue; - - name = skillInfo->name[loc]; - if (name.empty()) - continue; - - if (Utf8FitTo(name, wnamepart)) - break; - } - } - - if (loc < TOTAL_LOCALES) - { - targetSkillInfo = skillInfo; - break; - } - } - - if (!targetSkillInfo) - return false; - - HandleLearnSkillRecipesHelper(target,targetSkillInfo->id); - - uint16 maxLevel = target->GetPureMaxSkillValue(targetSkillInfo->id); - target->SetSkill(targetSkillInfo->id, target->GetSkillStep(targetSkillInfo->id), maxLevel, maxLevel); - PSendSysMessage(LANG_COMMAND_LEARN_ALL_RECIPES, name.c_str()); - return true; -} - bool ChatHandler::HandleLookupPlayerIpCommand(const char* args) { @@ -4135,26 +2658,6 @@ bool ChatHandler::HandleActivateObjectCommand(const char *args) return true; } -// add creature, temp only -bool ChatHandler::HandleTempAddSpwCommand(const char* args) -{ - if (!*args) - return false; - char* charID = strtok((char*)args, " "); - if (!charID) - return false; - - Player *chr = m_session->GetPlayer(); - - uint32 id = atoi(charID); - if (!id) - return false; - - chr->SummonCreature(id, *chr, TEMPSUMMON_CORPSE_DESPAWN, 120); - - return true; -} - // add go, temp only bool ChatHandler::HandleTempGameObjectCommand(const char* args) { @@ -4187,85 +2690,6 @@ bool ChatHandler::HandleTempGameObjectCommand(const char* args) return true; } -bool ChatHandler::HandleNpcAddFormationCommand(const char* args) -{ - if (!*args) - return false; - - uint32 leaderGUID = (uint32) atoi((char*)args); - Creature *pCreature = getSelectedCreature(); - - if (!pCreature || !pCreature->GetDBTableGUIDLow()) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - uint32 lowguid = pCreature->GetDBTableGUIDLow(); - if (pCreature->GetFormation()) - { - PSendSysMessage("Selected creature is already member of group %u", pCreature->GetFormation()->GetId()); - return false; - } - - if (!lowguid) - return false; - - Player *chr = m_session->GetPlayer(); - FormationInfo *group_member; - - group_member = new FormationInfo; - group_member->follow_angle = (pCreature->GetAngle(chr) - chr->GetOrientation()) * 180 / M_PI; - group_member->follow_dist = sqrtf(pow(chr->GetPositionX() - pCreature->GetPositionX(),int(2))+pow(chr->GetPositionY()-pCreature->GetPositionY(),int(2))); - group_member->leaderGUID = leaderGUID; - group_member->groupAI = 0; - - CreatureGroupMap[lowguid] = group_member; - pCreature->SearchFormation(); - - WorldDatabase.PExecute("INSERT INTO creature_formations (leaderGUID, memberGUID, dist, angle, groupAI) VALUES ('%u','%u','%f', '%f', '%u')", - leaderGUID, lowguid, group_member->follow_dist, group_member->follow_angle, group_member->groupAI); - - PSendSysMessage("Creature %u added to formation with leader %u", lowguid, leaderGUID); - - return true; - } - -bool ChatHandler::HandleNpcSetLinkCommand(const char* args) -{ - if (!*args) - return false; - - uint32 linkguid = (uint32) atoi((char*)args); - - Creature* pCreature = getSelectedCreature(); - - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - if (!pCreature->GetDBTableGUIDLow()) - { - PSendSysMessage("Selected creature %u isn't in creature table", pCreature->GetGUIDLow()); - SetSentErrorMessage(true); - return false; - } - - if (!sObjectMgr.SetCreatureLinkedRespawn(pCreature->GetDBTableGUIDLow(), linkguid)) - { - PSendSysMessage("Selected creature can't link with guid '%u'", linkguid); - SetSentErrorMessage(true); - return false; - } - - PSendSysMessage("LinkGUID '%u' added to creature with DBTableGUID: '%u'", linkguid, pCreature->GetDBTableGUIDLow()); - return true; -} - bool ChatHandler::HandleLookupTitleCommand(const char* args) { if (!*args) diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp index ab9e56d81f1..fcb29b623fe 100755 --- a/src/server/game/Chat/Commands/Level3.cpp +++ b/src/server/game/Chat/Commands/Level3.cpp @@ -1186,169 +1186,6 @@ bool ChatHandler::HandleReloadSmartScripts(const char* /*args*/) return true; } -bool ChatHandler::HandleAccountSetGmLevelCommand(const char *args) -{ - if (!*args) - return false; - - std::string targetAccountName; - uint32 targetAccountId = 0; - uint32 targetSecurity = 0; - uint32 gm = 0; - char* arg1 = strtok((char*)args, " "); - char* arg2 = strtok(NULL, " "); - char* arg3 = strtok(NULL, " "); - bool isAccountNameGiven = true; - - if (arg1 && !arg3) - { - if (!getSelectedPlayer()) - return false; - isAccountNameGiven = false; - } - - // Check for second parameter - if (!isAccountNameGiven && !arg2) - return false; - - // Check for account - if (isAccountNameGiven) - { - targetAccountName = arg1; - if (!AccountMgr::normalizeString(targetAccountName)) - { - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,targetAccountName.c_str()); - SetSentErrorMessage(true); - return false; - } - } - - // Check for invalid specified GM level. - gm = (isAccountNameGiven) ? atoi(arg2) : atoi(arg1); - if (gm > SEC_CONSOLE) - { - SendSysMessage(LANG_BAD_VALUE); - SetSentErrorMessage(true); - return false; - } - - // m_session == NULL only for console - targetAccountId = (isAccountNameGiven) ? sAccountMgr.GetId(targetAccountName) : getSelectedPlayer()->GetSession()->GetAccountId(); - int32 gmRealmID = (isAccountNameGiven) ? atoi(arg3) : atoi(arg2); - uint32 plSecurity; - if (m_session) - plSecurity = sAccountMgr.GetSecurity(m_session->GetAccountId(), gmRealmID); - else - plSecurity = SEC_CONSOLE; - - // can set security level only for target with less security and to less security that we have - // This is also reject self apply in fact - targetSecurity = sAccountMgr.GetSecurity(targetAccountId, gmRealmID); - if (targetSecurity >= plSecurity || gm >= plSecurity) - { - SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); - SetSentErrorMessage(true); - return false; - } - - // Check and abort if the target gm has a higher rank on one of the realms and the new realm is -1 - if (gmRealmID == -1) - { - QueryResult result = LoginDatabase.PQuery("SELECT * FROM account_access WHERE id = '%u' AND gmlevel > '%d'", targetAccountId, gm); - if (result) - { - SendSysMessage(LANG_YOURS_SECURITY_IS_LOW); - SetSentErrorMessage(true); - return false; - } - } - - // Check if provided realmID has a negative value other than -1 - if (gmRealmID < -1) - { - SendSysMessage(LANG_INVALID_REALMID); - SetSentErrorMessage(true); - return false; - } - - // If gmRealmID is -1, delete all values for the account id, else, insert values for the specific realmID - if (gmRealmID == -1) - LoginDatabase.PExecute("DELETE FROM account_access WHERE id = '%u'", targetAccountId); - else - LoginDatabase.PExecute("DELETE FROM account_access WHERE id = '%u' AND (RealmID = '%d' OR RealmID = '-1')", targetAccountId, realmID); - - if (gm != 0) - LoginDatabase.PExecute("INSERT INTO account_access VALUES ('%u','%d','%d')", targetAccountId, gm, realmID); - PSendSysMessage(LANG_YOU_CHANGE_SECURITY, targetAccountName.c_str(), gm); - return true; -} - -/// Set password for account -bool ChatHandler::HandleAccountSetPasswordCommand(const char *args) -{ - if (!*args) - return false; - - ///- Get the command line arguments - char *szAccount = strtok ((char*)args," "); - char *szPassword1 = strtok (NULL," "); - char *szPassword2 = strtok (NULL," "); - - if (!szAccount||!szPassword1 || !szPassword2) - return false; - - std::string account_name = szAccount; - if (!AccountMgr::normalizeString(account_name)) - { - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); - SetSentErrorMessage(true); - return false; - } - - uint32 targetAccountId = sAccountMgr.GetId(account_name); - if (!targetAccountId) - { - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); - SetSentErrorMessage(true); - return false; - } - - /// can set password only for target with less security - /// This is also reject self apply in fact - if (HasLowerSecurityAccount (NULL,targetAccountId,true)) - return false; - - if (strcmp(szPassword1,szPassword2)) - { - SendSysMessage (LANG_NEW_PASSWORDS_NOT_MATCH); - SetSentErrorMessage (true); - return false; - } - - AccountOpResult result = sAccountMgr.ChangePassword(targetAccountId, szPassword1); - - switch (result) - { - case AOR_OK: - SendSysMessage(LANG_COMMAND_PASSWORD); - break; - case AOR_NAME_NOT_EXIST: - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); - SetSentErrorMessage(true); - return false; - case AOR_PASS_TOO_LONG: - SendSysMessage(LANG_PASSWORD_TOO_LONG); - SetSentErrorMessage(true); - return false; - default: - SendSysMessage(LANG_COMMAND_NOTCHANGEPASSWORD); - SetSentErrorMessage(true); - return false; - } - - return true; -} - bool ChatHandler::HandleMaxSkillCommand(const char* /*args*/) { Player* SelectedPlayer = getSelectedPlayer(); @@ -1424,34 +1261,6 @@ bool ChatHandler::HandleSetSkillCommand(const char *args) return true; } -bool ChatHandler::HandleAchievementAddCommand(const char *args) -{ - if (!*args) - return false; - - uint32 achievementId = atoi((char*)args); - if (!achievementId) - { - if (char* cId = extractKeyFromLink((char*)args, "Hachievement")) - achievementId = atoi(cId); - if (!achievementId) - return false; - } - - Player* target = getSelectedPlayer(); - if (!target) - { - SendSysMessage(LANG_NO_CHAR_SELECTED); - SetSentErrorMessage(true); - return false; - } - - if (AchievementEntry const* pAE = GetAchievementStore()->LookupEntry(achievementId)) - target->CompletedAchievement(pAE, true); - - return true; -} - bool ChatHandler::HandleUnLearnCommand(const char *args) { if (!*args) @@ -1524,916 +1333,6 @@ bool ChatHandler::HandleCooldownCommand(const char *args) return true; } -bool ChatHandler::HandleLearnAllCommand(const char* /*args*/) -{ - static const char *allSpellList[] = - { - "3365", - "6233", - "6247", - "6246", - "6477", - "6478", - "22810", - "8386", - "21651", - "21652", - "522", - "7266", - "8597", - "2479", - "22027", - "6603", - "5019", - "133", - "168", - "227", - "5009", - "9078", - "668", - "203", - "20599", - "20600", - "81", - "20597", - "20598", - "20864", - "1459", - "5504", - "587", - "5143", - "118", - "5505", - "597", - "604", - "1449", - "1460", - "2855", - "1008", - "475", - "5506", - "1463", - "12824", - "8437", - "990", - "5145", - "8450", - "1461", - "759", - "8494", - "8455", - "8438", - "6127", - "8416", - "6129", - "8451", - "8495", - "8439", - "3552", - "8417", - "10138", - "12825", - "10169", - "10156", - "10144", - "10191", - "10201", - "10211", - "10053", - "10173", - "10139", - "10145", - "10192", - "10170", - "10202", - "10054", - "10174", - "10193", - "12826", - "2136", - "143", - "145", - "2137", - "2120", - "3140", - "543", - "2138", - "2948", - "8400", - "2121", - "8444", - "8412", - "8457", - "8401", - "8422", - "8445", - "8402", - "8413", - "8458", - "8423", - "8446", - "10148", - "10197", - "10205", - "10149", - "10215", - "10223", - "10206", - "10199", - "10150", - "10216", - "10207", - "10225", - "10151", - "116", - "205", - "7300", - "122", - "837", - "10", - "7301", - "7322", - "6143", - "120", - "865", - "8406", - "6141", - "7302", - "8461", - "8407", - "8492", - "8427", - "8408", - "6131", - "7320", - "10159", - "8462", - "10185", - "10179", - "10160", - "10180", - "10219", - "10186", - "10177", - "10230", - "10181", - "10161", - "10187", - "10220", - "2018", - "2663", - "12260", - "2660", - "3115", - "3326", - "2665", - "3116", - "2738", - "3293", - "2661", - "3319", - "2662", - "9983", - "8880", - "2737", - "2739", - "7408", - "3320", - "2666", - "3323", - "3324", - "3294", - "22723", - "23219", - "23220", - "23221", - "23228", - "23338", - "10788", - "10790", - "5611", - "5016", - "5609", - "2060", - "10963", - "10964", - "10965", - "22593", - "22594", - "596", - "996", - "499", - "768", - "17002", - "1448", - "1082", - "16979", - "1079", - "5215", - "20484", - "5221", - "15590", - "17007", - "6795", - "6807", - "5487", - "1446", - "1066", - "5421", - "3139", - "779", - "6811", - "6808", - "1445", - "5216", - "1737", - "5222", - "5217", - "1432", - "6812", - "9492", - "5210", - "3030", - "1441", - "783", - "6801", - "20739", - "8944", - "9491", - "22569", - "5226", - "6786", - "1433", - "8973", - "1828", - "9495", - "9006", - "6794", - "8993", - "5203", - "16914", - "6784", - "9635", - "22830", - "20722", - "9748", - "6790", - "9753", - "9493", - "9752", - "9831", - "9825", - "9822", - "5204", - "5401", - "22831", - "6793", - "9845", - "17401", - "9882", - "9868", - "20749", - "9893", - "9899", - "9895", - "9832", - "9902", - "9909", - "22832", - "9828", - "9851", - "9883", - "9869", - "17406", - "17402", - "9914", - "20750", - "9897", - "9848", - "3127", - "107", - "204", - "9116", - "2457", - "78", - "18848", - "331", - "403", - "2098", - "1752", - "11278", - "11288", - "11284", - "6461", - "2344", - "2345", - "6463", - "2346", - "2352", - "775", - "1434", - "1612", - "71", - "2468", - "2458", - "2467", - "7164", - "7178", - "7367", - "7376", - "7381", - "21156", - "5209", - "3029", - "5201", - "9849", - "9850", - "20719", - "22568", - "22827", - "22828", - "22829", - "6809", - "8972", - "9005", - "9823", - "9827", - "6783", - "9913", - "6785", - "6787", - "9866", - "9867", - "9894", - "9896", - "6800", - "8992", - "9829", - "9830", - "780", - "769", - "6749", - "6750", - "9755", - "9754", - "9908", - "20745", - "20742", - "20747", - "20748", - "9746", - "9745", - "9880", - "9881", - "5391", - "842", - "3025", - "3031", - "3287", - "3329", - "1945", - "3559", - "4933", - "4934", - "4935", - "4936", - "5142", - "5390", - "5392", - "5404", - "5420", - "6405", - "7293", - "7965", - "8041", - "8153", - "9033", - "9034", - //"9036", problems with ghost state - "16421", - "21653", - "22660", - "5225", - "9846", - "2426", - "5916", - "6634", - //"6718", phasing stealth, annoying for learn all case. - "6719", - "8822", - "9591", - "9590", - "10032", - "17746", - "17747", - "8203", - "11392", - "12495", - "16380", - "23452", - "4079", - "4996", - "4997", - "4998", - "4999", - "5000", - "6348", - "6349", - "6481", - "6482", - "6483", - "6484", - "11362", - "11410", - "11409", - "12510", - "12509", - "12885", - "13142", - "21463", - "23460", - "11421", - "11416", - "11418", - "1851", - "10059", - "11423", - "11417", - "11422", - "11419", - "11424", - "11420", - "27", - "31", - "33", - "34", - "35", - "15125", - "21127", - "22950", - "1180", - "201", - "12593", - "16770", - "6057", - "12051", - "18468", - "12606", - "12605", - "18466", - "12502", - "12043", - "15060", - "12042", - "12341", - "12848", - "12344", - "12353", - "18460", - "11366", - "12350", - "12352", - "13043", - "11368", - "11113", - "12400", - "11129", - "16766", - "12573", - "12580", - "12472", - "12953", - "12488", - "11189", - "12985", - "12519", - "16758", - "11958", - "12490", - "11426", - "3565", - "3562", - "18960", - "3567", - "3561", - "3566", - "3563", - "1953", - "2139", - "12505", - "13018", - "12522", - "12523", - "5146", - "5144", - "5148", - "8419", - "8418", - "10213", - "10212", - "10157", - "12524", - "13019", - "12525", - "13020", - "12526", - "13021", - "18809", - "13031", - "13032", - "13033", - "4036", - "3920", - "3919", - "3918", - "7430", - "3922", - "3923", - "7411", - "7418", - "7421", - "13262", - "7412", - "7415", - "7413", - "7416", - "13920", - "13921", - "7745", - "7779", - "7428", - "7457", - "7857", - "7748", - "7426", - "13421", - "7454", - "13378", - "7788", - "14807", - "14293", - "7795", - "6296", - "20608", - "755", - "444", - "427", - "428", - "442", - "447", - "3578", - "3581", - "19027", - "3580", - "665", - "3579", - "3577", - "6755", - "3576", - "2575", - "2577", - "2578", - "2579", - "2580", - "2656", - "2657", - "2576", - "3564", - "10248", - "8388", - "2659", - "14891", - "3308", - "3307", - "10097", - "2658", - "3569", - "16153", - "3304", - "10098", - "4037", - "3929", - "3931", - "3926", - "3924", - "3930", - "3977", - "3925", - "136", - "228", - "5487", - "43", - "202", - "0" - }; - - int loop = 0; - while (strcmp(allSpellList[loop], "0")) - { - uint32 spell = atol((char*)allSpellList[loop++]); - - if (m_session->GetPlayer()->HasSpell(spell)) - continue; - - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); - if (!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) - { - PSendSysMessage(LANG_COMMAND_SPELL_BROKEN,spell); - continue; - } - - m_session->GetPlayer()->learnSpell(spell, false); - } - - SendSysMessage(LANG_COMMAND_LEARN_MANY_SPELLS); - - return true; -} - -bool ChatHandler::HandleLearnAllGMCommand(const char* /*args*/) -{ - static const char *gmSpellList[] = - { - "24347", // Become A Fish, No Breath Bar - "35132", // Visual Boom - "38488", // Attack 4000-8000 AOE - "38795", // Attack 2000 AOE + Slow Down 90% - "15712", // Attack 200 - "1852", // GM Spell Silence - "31899", // Kill - "31924", // Kill - "29878", // Kill My Self - "26644", // More Kill - - "28550", //Invisible 24 - "23452", //Invisible + Target - "0" - }; - - uint16 gmSpellIter = 0; - while (strcmp(gmSpellList[gmSpellIter], "0")) - { - uint32 spell = atol((char*)gmSpellList[gmSpellIter++]); - - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); - if (!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) - { - PSendSysMessage(LANG_COMMAND_SPELL_BROKEN,spell); - continue; - } - - m_session->GetPlayer()->learnSpell(spell, false); - } - - SendSysMessage(LANG_LEARNING_GM_SKILLS); - return true; -} - -bool ChatHandler::HandleLearnAllMyClassCommand(const char* /*args*/) -{ - HandleLearnAllMySpellsCommand(""); - HandleLearnAllMyTalentsCommand(""); - return true; -} - -bool ChatHandler::HandleLearnAllMySpellsCommand(const char* /*args*/) -{ - ChrClassesEntry const* clsEntry = sChrClassesStore.LookupEntry(m_session->GetPlayer()->getClass()); - if (!clsEntry) - return true; - uint32 family = clsEntry->spellfamily; - - for (uint32 i = 0; i < sSpellStore.GetNumRows(); ++i) - { - SpellEntry const *spellInfo = sSpellStore.LookupEntry(i); - if (!spellInfo) - continue; - - // skip server-side/triggered spells - if (spellInfo->spellLevel == 0) - continue; - - // skip wrong class/race skills - if (!m_session->GetPlayer()->IsSpellFitByClassAndRace(spellInfo->Id)) - continue; - - // skip other spell families - if (spellInfo->SpellFamilyName != family) - continue; - - // skip spells with first rank learned as talent (and all talents then also) - uint32 first_rank = sSpellMgr.GetFirstSpellInChain(spellInfo->Id); - if (GetTalentSpellCost(first_rank) > 0) - continue; - - // skip broken spells - if (!SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer(),false)) - continue; - - m_session->GetPlayer()->learnSpell(i, false); - } - - SendSysMessage(LANG_COMMAND_LEARN_CLASS_SPELLS); - return true; -} - -bool ChatHandler::HandleLearnAllMyTalentsCommand(const char* /*args*/) -{ - Player* player = m_session->GetPlayer(); - uint32 classMask = player->getClassMask(); - - for (uint32 i = 0; i < sTalentStore.GetNumRows(); ++i) - { - TalentEntry const *talentInfo = sTalentStore.LookupEntry(i); - if (!talentInfo) - continue; - - TalentTabEntry const *talentTabInfo = sTalentTabStore.LookupEntry(talentInfo->TalentTab); - if (!talentTabInfo) - continue; - - if ((classMask & talentTabInfo->ClassMask) == 0) - continue; - - // search highest talent rank - uint32 spellId = 0; - for (int8 rank = MAX_TALENT_RANK-1; rank >= 0; --rank) - { - if (talentInfo->RankID[rank] != 0) - { - spellId = talentInfo->RankID[rank]; - break; - } - } - - if (!spellId) // ??? none spells in talent - continue; - - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellId); - if (!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer(),false)) - continue; - - // learn highest rank of talent and learn all non-talent spell ranks (recursive by tree) - player->learnSpellHighRank(spellId); - player->AddTalent(spellId, player->GetActiveSpec(), true); - } - - player->SetFreeTalentPoints(0); - - SendSysMessage(LANG_COMMAND_LEARN_CLASS_TALENTS); - return true; -} - -bool ChatHandler::HandleLearnAllMyPetTalentsCommand(const char* /*args*/) -{ - Player* player = m_session->GetPlayer(); - - Pet* pet = player->GetPet(); - if (!pet) - { - SendSysMessage(LANG_NO_PET_FOUND); - SetSentErrorMessage(true); - return false; - } - - CreatureInfo const *ci = pet->GetCreatureInfo(); - if (!ci) - { - SendSysMessage(LANG_WRONG_PET_TYPE); - SetSentErrorMessage(true); - return false; - } - - CreatureFamilyEntry const *pet_family = sCreatureFamilyStore.LookupEntry(ci->family); - if (!pet_family) - { - SendSysMessage(LANG_WRONG_PET_TYPE); - SetSentErrorMessage(true); - return false; - } - - if (pet_family->petTalentType < 0) // not hunter pet - { - SendSysMessage(LANG_WRONG_PET_TYPE); - SetSentErrorMessage(true); - return false; - } - - for (uint32 i = 0; i < sTalentStore.GetNumRows(); ++i) - { - TalentEntry const *talentInfo = sTalentStore.LookupEntry(i); - if (!talentInfo) - continue; - - TalentTabEntry const *talentTabInfo = sTalentTabStore.LookupEntry(talentInfo->TalentTab); - if (!talentTabInfo) - continue; - - // prevent learn talent for different family (cheating) - if (((1 << pet_family->petTalentType) & talentTabInfo->petTalentMask) == 0) - continue; - - // search highest talent rank - uint32 spellid = 0; - - for (int8 rank = MAX_TALENT_RANK-1; rank >= 0; --rank) - { - if (talentInfo->RankID[rank] != 0) - { - spellid = talentInfo->RankID[rank]; - break; - } - } - - if (!spellid) // ??? none spells in talent - continue; - - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellid); - if (!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer(),false)) - continue; - - // learn highest rank of talent and learn all non-talent spell ranks (recursive by tree) - pet->learnSpellHighRank(spellid); - } - - pet->SetFreeTalentPoints(0); - - SendSysMessage(LANG_COMMAND_LEARN_PET_TALENTS); - return true; -} - -bool ChatHandler::HandleLearnAllLangCommand(const char* /*args*/) -{ - // skipping UNIVERSAL language (0) - for (uint8 i = 1; i < LANGUAGES_COUNT; ++i) - m_session->GetPlayer()->learnSpell(lang_description[i].spell_id, false); - - SendSysMessage(LANG_COMMAND_LEARN_ALL_LANG); - return true; -} - -bool ChatHandler::HandleLearnAllDefaultCommand(const char *args) -{ - Player* target; - if (!extractPlayerTarget((char*)args,&target)) - return false; - - target->learnDefaultSpells(); - target->learnQuestRewardedSpells(); - - PSendSysMessage(LANG_COMMAND_LEARN_ALL_DEFAULT_AND_QUEST,GetNameLink(target).c_str()); - return true; -} - -bool ChatHandler::HandleLearnCommand(const char *args) -{ - Player* targetPlayer = getSelectedPlayer(); - - if (!targetPlayer) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form - uint32 spell = extractSpellIdFromLink((char*)args); - if (!spell || !sSpellStore.LookupEntry(spell)) - return false; - - char const* allStr = strtok(NULL," "); - bool allRanks = allStr ? (strncmp(allStr, "all", strlen(allStr)) == 0) : false; - - SpellEntry const* spellInfo = sSpellStore.LookupEntry(spell); - if (!spellInfo || !SpellMgr::IsSpellValid(spellInfo,m_session->GetPlayer())) - { - PSendSysMessage(LANG_COMMAND_SPELL_BROKEN,spell); - SetSentErrorMessage(true); - return false; - } - - if (!allRanks && targetPlayer->HasSpell(spell)) - { - if (targetPlayer == m_session->GetPlayer()) - SendSysMessage(LANG_YOU_KNOWN_SPELL); - else - PSendSysMessage(LANG_TARGET_KNOWN_SPELL,GetNameLink(targetPlayer).c_str()); - SetSentErrorMessage(true); - return false; - } - - if (allRanks) - targetPlayer->learnSpellHighRank(spell); - else - targetPlayer->learnSpell(spell, false); - - uint32 first_spell = sSpellMgr.GetFirstSpellInChain(spell); - if (GetTalentSpellCost(first_spell)) - targetPlayer->SendTalentsInfoData(false); - - return true; -} - bool ChatHandler::HandleAddItemCommand(const char *args) { if (!*args) @@ -4214,28 +3113,6 @@ bool ChatHandler::HandleDamageCommand(const char * args) return true; } -bool ChatHandler::HandleModifyArenaCommand(const char * args) -{ - if (!*args) - return false; - - Player *target = getSelectedPlayer(); - if (!target) - { - SendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - int32 amount = (uint32)atoi(args); - - target->ModifyArenaPoints(amount); - - PSendSysMessage(LANG_COMMAND_MODIFY_ARENA, GetNameLink(target).c_str(), target->GetArenaPoints()); - - return true; -} - bool ChatHandler::HandleReviveCommand(const char *args) { Player* target; @@ -4421,189 +3298,6 @@ bool ChatHandler::HandleNearGraveCommand(const char *args) return true; } -//-----------------------Npc Commands----------------------- -bool ChatHandler::HandleNpcAllowMovementCommand(const char* /*args*/) -{ - if (sWorld.getAllowMovement()) - { - sWorld.SetAllowMovement(false); - SendSysMessage(LANG_CREATURE_MOVE_DISABLED); - } - else - { - sWorld.SetAllowMovement(true); - SendSysMessage(LANG_CREATURE_MOVE_ENABLED); - } - return true; -} - -bool ChatHandler::HandleNpcChangeEntryCommand(const char *args) -{ - if (!*args) - return false; - - uint32 newEntryNum = atoi(args); - if (!newEntryNum) - return false; - - Unit* unit = getSelectedUnit(); - if (!unit || unit->GetTypeId() != TYPEID_UNIT) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - Creature* creature = unit->ToCreature(); - if (creature->UpdateEntry(newEntryNum)) - SendSysMessage(LANG_DONE); - else - SendSysMessage(LANG_ERROR); - return true; -} - -bool ChatHandler::HandleNpcInfoCommand(const char* /*args*/) -{ - Creature* target = getSelectedCreature(); - - if (!target) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - uint32 faction = target->getFaction(); - uint32 npcflags = target->GetUInt32Value(UNIT_NPC_FLAGS); - uint32 displayid = target->GetDisplayId(); - uint32 nativeid = target->GetNativeDisplayId(); - uint32 Entry = target->GetEntry(); - CreatureInfo const* cInfo = target->GetCreatureInfo(); - - int64 curRespawnDelay = target->GetRespawnTimeEx()-time(NULL); - if (curRespawnDelay < 0) - curRespawnDelay = 0; - std::string curRespawnDelayStr = secsToTimeString(uint64(curRespawnDelay),true); - std::string defRespawnDelayStr = secsToTimeString(target->GetRespawnDelay(),true); - - PSendSysMessage(LANG_NPCINFO_CHAR, target->GetDBTableGUIDLow(), faction, npcflags, Entry, displayid, nativeid); - PSendSysMessage(LANG_NPCINFO_LEVEL, target->getLevel()); - PSendSysMessage(LANG_NPCINFO_HEALTH,target->GetCreateHealth(), target->GetMaxHealth(), target->GetHealth()); - PSendSysMessage(LANG_NPCINFO_FLAGS, target->GetUInt32Value(UNIT_FIELD_FLAGS), target->GetUInt32Value(UNIT_DYNAMIC_FLAGS), target->getFaction()); - PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(),curRespawnDelayStr.c_str()); - PSendSysMessage(LANG_NPCINFO_LOOT, cInfo->lootid,cInfo->pickpocketLootId,cInfo->SkinLootId); - PSendSysMessage(LANG_NPCINFO_DUNGEON_ID, target->GetInstanceId()); - PSendSysMessage(LANG_NPCINFO_PHASEMASK, target->GetPhaseMask()); - PSendSysMessage(LANG_NPCINFO_ARMOR, target->GetArmor()); - PSendSysMessage(LANG_NPCINFO_POSITION,float(target->GetPositionX()), float(target->GetPositionY()), float(target->GetPositionZ())); - if (const CreatureData* const linked = target->GetLinkedRespawnCreatureData()) - if (CreatureInfo const *master = GetCreatureInfo(linked->id)) - PSendSysMessage(LANG_NPCINFO_LINKGUID, sObjectMgr.GetLinkedRespawnGuid(target->GetDBTableGUIDLow()), linked->id, master->Name); - - if ((npcflags & UNIT_NPC_FLAG_VENDOR)) - { - SendSysMessage(LANG_NPCINFO_VENDOR); - } - if ((npcflags & UNIT_NPC_FLAG_TRAINER)) - { - SendSysMessage(LANG_NPCINFO_TRAINER); - } - - return true; -} - -//play npc emote -bool ChatHandler::HandleNpcPlayEmoteCommand(const char *args) -{ - uint32 emote = atoi((char*)args); - - Creature* target = getSelectedCreature(); - if (!target) - { - SendSysMessage(LANG_SELECT_CREATURE); - SetSentErrorMessage(true); - return false; - } - - if (target->GetTransport()) - if (target->GetGUIDTransport()) - WorldDatabase.PQuery("UPDATE creature_transport SET emote=%u WHERE transport_entry=%u AND guid=%u", emote, target->GetTransport()->GetEntry(), target->GetGUIDTransport()); - - target->SetUInt32Value(UNIT_NPC_EMOTESTATE,emote); - - return true; -} - -//TODO: NpcCommands that needs to be fixed : - -bool ChatHandler::HandleNpcAddWeaponCommand(const char* /*args*/) -{ - /*if (!*args) - return false; - - uint64 guid = m_session->GetPlayer()->GetSelection(); - if (guid == 0) - { - SendSysMessage(LANG_NO_SELECTION); - return true; - } - - Creature *pCreature = ObjectAccessor::GetCreature(*m_session->GetPlayer(), guid); - - if (!pCreature) - { - SendSysMessage(LANG_SELECT_CREATURE); - return true; - } - - char* pSlotID = strtok((char*)args, " "); - if (!pSlotID) - return false; - - char* pItemID = strtok(NULL, " "); - if (!pItemID) - return false; - - uint32 ItemID = atoi(pItemID); - uint32 SlotID = atoi(pSlotID); - - ItemPrototype* tmpItem = sObjectMgr.GetItemPrototype(ItemID); - - bool added = false; - if (tmpItem) - { - switch(SlotID) - { - case 1: - pCreature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, ItemID); - added = true; - break; - case 2: - pCreature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_01, ItemID); - added = true; - break; - case 3: - pCreature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_02, ItemID); - added = true; - break; - default: - PSendSysMessage(LANG_ITEM_SLOT_NOT_EXIST,SlotID); - added = false; - break; - } - - if (added) - PSendSysMessage(LANG_ITEM_ADDED_TO_SLOT,ItemID,tmpItem->Name1,SlotID); - } - else - { - PSendSysMessage(LANG_ITEM_NOT_FOUND,ItemID); - return true; - } - */ - return true; -} -//---------------------------------------------------------- - bool ChatHandler::HandleExploreCheatCommand(const char *args) { if (!*args) @@ -4883,36 +3577,49 @@ bool ChatHandler::HandleChangeWeather(const char *args) return true; } -bool ChatHandler::HandleDebugSet32Bit(const char *args) +bool ChatHandler::HandleTeleCommand(const char* args) { if (!*args) return false; - WorldObject* target = getSelectedObject(); - if (!target) + Player* me = GetSession()->GetPlayer(); + + // id, or string, or [name] Shift-click form |color|Htele:id|h[name]|h|r + GameTele const* tele = extractGameTeleFromLink((char*)args); + + if (!tele) { - SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); + SendSysMessage(LANG_COMMAND_TELE_NOTFOUND); SetSentErrorMessage(true); return false; } - char* px = strtok((char*)args, " "); - char* py = strtok(NULL, " "); - - if (!px || !py) + if (me->isInCombat()) + { + SendSysMessage(LANG_YOU_IN_COMBAT); + SetSentErrorMessage(true); return false; + } - uint32 Opcode = (uint32)atoi(px); - uint32 Value = (uint32)atoi(py); - if (Value > 32) //uint32 = 32 bits + MapEntry const * map = sMapStore.LookupEntry(tele->mapId); + if (!map || map->IsBattlegroundOrArena()) + { + SendSysMessage(LANG_CANNOT_TELE_TO_BG); + SetSentErrorMessage(true); return false; + } - sLog.outDebug(GetTrinityString(LANG_SET_32BIT), Opcode, Value); - - uint32 iValue = Value ? 1 << (Value - 1) : 0; - target->SetUInt32Value(Opcode , iValue); + // stop flight if need + if (me->isInFlight()) + { + me->GetMotionMaster()->MovementExpired(); + me->CleanupAfterTaxiFlight(); + } + // save only in non-flight case + else + me->SaveRecallPosition(); - PSendSysMessage(LANG_SET_32BIT_FIELD, Opcode, iValue); + me->TeleportTo(tele->mapId, tele->position_x, tele->position_y, tele->position_z, tele->orientation); return true; } @@ -6290,32 +4997,6 @@ bool ChatHandler::HandleRespawnCommand(const char* /*args*/) return true; } -bool ChatHandler::HandleGMFlyCommand(const char *args) -{ - if (!*args) - return false; - - Player *target = getSelectedPlayer(); - if (!target) - target = m_session->GetPlayer(); - - WorldPacket data(12); - if (strncmp(args, "on", 3) == 0) - data.SetOpcode(SMSG_MOVE_SET_CAN_FLY); - else if (strncmp(args, "off", 4) == 0) - data.SetOpcode(SMSG_MOVE_UNSET_CAN_FLY); - else - { - SendSysMessage(LANG_USE_BOL); - return false; - } - data.append(target->GetPackGUID()); - data << uint32(0); // unknown - target->SendMessageToSet(&data, true); - PSendSysMessage(LANG_COMMAND_FLYMODE_STATUS, GetNameLink(target).c_str(), args); - return true; -} - bool ChatHandler::HandlePDumpLoadCommand(const char *args) { if (!*args) @@ -6981,33 +5662,6 @@ bool ChatHandler::HandleInstanceSaveDataCommand(const char * /*args*/) return true; } -/// Display the list of GMs -bool ChatHandler::HandleGMListFullCommand(const char* /*args*/) -{ - ///- Get the accounts with GM Level >0 - QueryResult result = LoginDatabase.Query("SELECT a.username,aa.gmlevel FROM account a, account_access aa WHERE a.id=aa.id AND aa.gmlevel > 0"); - if (result) - { - SendSysMessage(LANG_GMLIST); - SendSysMessage(" ======================== "); - SendSysMessage(LANG_GMLIST_HEADER); - SendSysMessage(" ======================== "); - - ///- Circle through them. Display username and GM level - do - { - Field *fields = result->Fetch(); - PSendSysMessage("|%15s|%6s|", fields[0].GetCString(),fields[1].GetCString()); - } - while (result->NextRow()); - - PSendSysMessage(" ======================== "); - } - else - PSendSysMessage(LANG_GMLIST_EMPTY); - return true; -} - /// Define the 'Message of the day' for the realm bool ChatHandler::HandleServerSetMotdCommand(const char *args) { @@ -7039,66 +5693,6 @@ bool ChatHandler::HandleServerSetClosedCommand(const char *args) return false; } -/// Set/Unset the expansion level for an account -bool ChatHandler::HandleAccountSetAddonCommand(const char *args) -{ - ///- Get the command line arguments - char *szAcc = strtok((char*)args," "); - char *szExp = strtok(NULL," "); - - if (!szAcc) - return false; - - std::string account_name; - uint32 account_id; - - if (!szExp) - { - Player* player = getSelectedPlayer(); - if (!player) - return false; - - account_id = player->GetSession()->GetAccountId(); - sAccountMgr.GetName(account_id,account_name); - szExp = szAcc; - } - else - { - ///- Convert Account name to Upper Format - account_name = szAcc; - if (!AccountMgr::normalizeString(account_name)) - { - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); - SetSentErrorMessage(true); - return false; - } - - account_id = sAccountMgr.GetId(account_name); - if (!account_id) - { - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); - SetSentErrorMessage(true); - return false; - } - - } - - // Let set addon state only for lesser (strong) security level - // or to self account - if (m_session && m_session->GetAccountId () != account_id && - HasLowerSecurityAccount (NULL,account_id,true)) - return false; - - int expansion = atoi(szExp); //get int anyway (0 if error) - if (expansion < 0 || uint8(expansion) > sWorld.getIntConfig(CONFIG_EXPANSION)) - return false; - - // No SQL injection - LoginDatabase.PExecute("UPDATE account SET expansion = '%d' WHERE id = '%u'",expansion,account_id); - PSendSysMessage(LANG_ACCOUNT_SETADDON,account_name.c_str(),account_id,expansion); - return true; -} - //Send items by mail bool ChatHandler::HandleSendItemsCommand(const char *args) { @@ -7297,67 +5891,6 @@ bool ChatHandler::HandleFlushArenaPointsCommand(const char * /*args*/) return true; } -bool ChatHandler::HandleModifyGenderCommand(const char *args) -{ - if (!*args) - return false; - - Player *player = getSelectedPlayer(); - - if (!player) - { - PSendSysMessage(LANG_PLAYER_NOT_FOUND); - SetSentErrorMessage(true); - return false; - } - - PlayerInfo const* info = sObjectMgr.GetPlayerInfo(player->getRace(), player->getClass()); - if (!info) - return false; - - char const* gender_str = (char*)args; - int gender_len = strlen(gender_str); - - Gender gender; - - if (!strncmp(gender_str, "male", gender_len)) // MALE - { - if (player->getGender() == GENDER_MALE) - return true; - - gender = GENDER_MALE; - } - else if (!strncmp(gender_str, "female", gender_len)) // FEMALE - { - if (player->getGender() == GENDER_FEMALE) - return true; - - gender = GENDER_FEMALE; - } - else - { - SendSysMessage(LANG_MUST_MALE_OR_FEMALE); - SetSentErrorMessage(true); - return false; - } - - // Set gender - player->SetByteValue(UNIT_FIELD_BYTES_0, 2, gender); - player->SetByteValue(PLAYER_BYTES_3, 0, gender); - - // Change display ID - player->InitDisplayIds(); - - char const* gender_full = gender ? "female" : "male"; - - PSendSysMessage(LANG_YOU_CHANGE_GENDER, GetNameLink(player).c_str(), gender_full); - - if (needReportToTarget(player)) - ChatHandler(player).PSendSysMessage(LANG_YOUR_GENDER_CHANGED, gender_full, GetNameLink().c_str()); - - return true; -} - bool ChatHandler::HandleChannelSetPublic(const char *args) { if (!*args) diff --git a/src/server/game/Chat/Commands/TicketCommands.cpp b/src/server/game/Chat/Commands/TicketCommands.cpp index fcee0a210ea..81b4a475ab4 100755 --- a/src/server/game/Chat/Commands/TicketCommands.cpp +++ b/src/server/game/Chat/Commands/TicketCommands.cpp @@ -439,48 +439,6 @@ bool ChatHandler::HandleToggleGMTicketSystem(const char* /* args */) return true; } -bool ChatHandler::HandleGoTicketCommand(const char * args) -{ - if (!*args) - return false; - - char *cstrticket_id = strtok((char*)args, " "); - - if (!cstrticket_id) - return false; - - uint64 ticket_id = atoi(cstrticket_id); - if (!ticket_id) - return false; - - GM_Ticket *ticket = sTicketMgr.GetGMTicket(ticket_id); - if (!ticket) - { - SendSysMessage(LANG_COMMAND_TICKETNOTEXIST); - return true; - } - - float x, y, z; - int mapid; - - x = ticket->pos_x; - y = ticket->pos_y; - z = ticket->pos_z; - mapid = ticket->map; - - Player* _player = m_session->GetPlayer(); - if (_player->isInFlight()) - { - _player->GetMotionMaster()->MovementExpired(); - _player->CleanupAfterTaxiFlight(); - } - else - _player->SaveRecallPosition(); - - _player->TeleportTo(mapid, x, y, z, 1, 0); - return true; -} - bool ChatHandler::HandleGMTicketEscalateCommand(const char *args) { if (!*args) diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index f3f062ac713..d904e171290 100755 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -44,7 +44,6 @@ void AddSC_example_spell_scripts(); void AddSC_SmartSCripts(); -/* //Commands void AddSC_account_commandscript(); void AddSC_achievement_commandscript(); @@ -54,7 +53,6 @@ void AddSC_go_commandscript(); void AddSC_learn_commandscript(); void AddSC_modify_commandscript(); void AddSC_debug_commandscript(); -*/ #ifdef SCRIPTS //world @@ -581,9 +579,7 @@ void AddScripts() AddExampleScripts(); AddSpellScripts(); AddSC_SmartSCripts(); -/* AddCommandScripts(); -*/ #ifdef SCRIPTS AddWorldScripts(); AddEasternKingdomsScripts(); @@ -623,7 +619,6 @@ void AddSpellScripts() AddSC_example_spell_scripts(); } -/* void AddCommandScripts() { AddSC_account_commandscript(); @@ -635,7 +630,6 @@ void AddCommandScripts() AddSC_modify_commandscript(); AddSC_debug_commandscript(); } -*/ void AddWorldScripts() { diff --git a/src/server/game/Scripting/ScriptLoader.h b/src/server/game/Scripting/ScriptLoader.h index 8d7e7c244c3..409b3db4b7f 100644 --- a/src/server/game/Scripting/ScriptLoader.h +++ b/src/server/game/Scripting/ScriptLoader.h @@ -8,9 +8,7 @@ void AddScripts(); void AddExampleScripts(); void AddSpellScripts(); -/* void AddCommandScripts(); -*/ void AddWorldScripts(); void AddEasternKingdomsScripts(); void AddKalimdorScripts(); diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt index db62d24761e..42f10bc6645 100644 --- a/src/server/scripts/CMakeLists.txt +++ b/src/server/scripts/CMakeLists.txt @@ -25,8 +25,7 @@ endif() message(STATUS "SCRIPT PREPARATIONS") include(Spells/CMakeLists.txt) -# temporarily disabled -# include(Commands/CMakeLists.txt) +include(Commands/CMakeLists.txt) include(Examples/CMakeLists.txt) diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp index 41fa7a3b4d7..c9a36ca2f5b 100644 --- a/src/server/scripts/Commands/cs_gm.cpp +++ b/src/server/scripts/Commands/cs_gm.cpp @@ -43,7 +43,7 @@ class gm_commandscript : public CommandScript }; static ChatCommand commandTable[] = { - { "gm", SEC_MODERATOR, true, NULL, "", gmCommandTable }, + { "gm", SEC_MODERATOR, false, NULL, "", gmCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; @@ -111,6 +111,7 @@ class gm_commandscript : public CommandScript static bool HandleGMListIngameCommand(ChatHandler* handler, const char* /*args*/) { bool first = true; + bool footer = false; ACE_GUARD_RETURN(ACE_Thread_Mutex, guard, *HashMapHolder<Player>::GetLock(), true); HashMapHolder<Player>::MapType &m = sObjectAccessor.GetPlayers(); @@ -122,17 +123,24 @@ class gm_commandscript : public CommandScript { if (first) { - handler->SendSysMessage(LANG_GMS_ON_SRV); first = false; + footer = true; + handler->SendSysMessage(LANG_GMS_ON_SRV); + handler->SendSysMessage("========================"); } - - handler->SendSysMessage(handler->GetNameLink(itr->second).c_str()); + const char* name = itr->second->GetName(); + uint8 security = itr_sec; + uint8 max = ((16 - strlen(name)) / 2); + if (handler->GetSession()) + handler->PSendSysMessage("|%s GMLevel %u", name, security); + else + handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max, " ", security); } } - + if (footer) + handler->SendSysMessage("========================"); if (first) handler->SendSysMessage(LANG_GMS_NOT_LOGGED); - return true; } @@ -144,19 +152,22 @@ class gm_commandscript : public CommandScript if (result) { handler->SendSysMessage(LANG_GMLIST); - handler->SendSysMessage(" ======================== "); - handler->SendSysMessage(LANG_GMLIST_HEADER); - handler->SendSysMessage(" ======================== "); - + handler->SendSysMessage("========================"); ///- Cycle through them. Display username and GM level do { Field *fields = result->Fetch(); - handler->PSendSysMessage("|%15s|%6s|", fields[0].GetCString(),fields[1].GetCString()); + const char* name = fields[0].GetCString(); + uint8 security = fields[1].GetUInt8(); + uint8 max = ((16 - strlen(name)) / 2); + if (handler->GetSession()) + handler->PSendSysMessage("|%s GMLevel %u", name, security); + else + handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max, " ", security); } while (result->NextRow()); - handler->PSendSysMessage(" ======================== "); + handler->SendSysMessage("========================"); } else handler->PSendSysMessage(LANG_GMLIST_EMPTY); diff --git a/src/server/worldserver/CommandLine/CliRunnable.cpp b/src/server/worldserver/CommandLine/CliRunnable.cpp index c6bc310de57..e3a7fef571a 100755 --- a/src/server/worldserver/CommandLine/CliRunnable.cpp +++ b/src/server/worldserver/CommandLine/CliRunnable.cpp @@ -117,63 +117,6 @@ void commandFinished(void*, bool /*success*/) printf("TC> "); fflush(stdout); } -/// Delete a user account and all associated characters in this realm -/// \todo This function has to be enhanced to respect the login/realm split (delete char, delete account chars in realm, delete account chars in realm then delete account -bool ChatHandler::HandleAccountDeleteCommand(const char* args) -{ - if (!*args) - return false; - - ///- Get the account name from the command line - char *account_name_str=strtok ((char*)args," "); - if (!account_name_str) - return false; - - std::string account_name = account_name_str; - if (!AccountMgr::normalizeString(account_name)) - { - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); - SetSentErrorMessage(true); - return false; - } - - uint32 account_id = sAccountMgr.GetId(account_name); - if (!account_id) - { - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); - SetSentErrorMessage(true); - return false; - } - - /// Commands not recommended call from chat, but support anyway - /// can delete only for account with less security - /// This is also reject self apply in fact - if (HasLowerSecurityAccount (NULL,account_id,true)) - return false; - - AccountOpResult result = sAccountMgr.DeleteAccount(account_id); - switch(result) - { - case AOR_OK: - PSendSysMessage(LANG_ACCOUNT_DELETED,account_name.c_str()); - break; - case AOR_NAME_NOT_EXIST: - PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str()); - SetSentErrorMessage(true); - return false; - case AOR_DB_INTERNAL_ERROR: - PSendSysMessage(LANG_ACCOUNT_NOT_DELETED_SQL_ERROR,account_name.c_str()); - SetSentErrorMessage(true); - return false; - default: - PSendSysMessage(LANG_ACCOUNT_NOT_DELETED,account_name.c_str()); - SetSentErrorMessage(true); - return false; - } - - return true; -} - /** * Collects all GUIDs (and related info) from deleted characters which are still in the database. * @@ -540,95 +483,6 @@ bool ChatHandler::HandleServerExitCommand(const char* /*args*/) return true; } -/// Display info on users currently in the realm -bool ChatHandler::HandleAccountOnlineListCommand(const char* /*args*/) -{ - ///- Get the list of accounts ID logged to the realm - QueryResult resultDB = CharacterDatabase.Query("SELECT name,account,map,zone FROM characters WHERE online > 0"); - if (!resultDB) - { - SendSysMessage(LANG_ACCOUNT_LIST_EMPTY); - return true; - } - - ///- Display the list of account/characters online - SendSysMessage(LANG_ACCOUNT_LIST_BAR_HEADER); - SendSysMessage(LANG_ACCOUNT_LIST_HEADER); - SendSysMessage(LANG_ACCOUNT_LIST_BAR); - - ///- Circle through accounts - do - { - Field *fieldsDB = resultDB->Fetch(); - std::string name = fieldsDB[0].GetString(); - uint32 account = fieldsDB[1].GetUInt32(); - - ///- Get the username, last IP and GM level of each account - // No SQL injection. account is uint32. - QueryResult resultLogin = - LoginDatabase.PQuery("SELECT a.username, a.last_ip, aa.gmlevel, a.expansion " - "FROM account a " - "LEFT JOIN account_access aa " - "ON (a.id = aa.id) " - "WHERE a.id = '%u'", account); - if (resultLogin) - { - Field *fieldsLogin = resultLogin->Fetch(); - PSendSysMessage(LANG_ACCOUNT_LIST_LINE, - fieldsLogin[0].GetCString(),name.c_str(),fieldsLogin[1].GetCString(),fieldsDB[2].GetInt32(),fieldsDB[3].GetInt32(),fieldsLogin[3].GetUInt32(),fieldsLogin[2].GetUInt32()); - } - else - PSendSysMessage(LANG_ACCOUNT_LIST_ERROR,name.c_str()); - - }while (resultDB->NextRow()); - - SendSysMessage(LANG_ACCOUNT_LIST_BAR); - return true; -} - -/// Create an account -bool ChatHandler::HandleAccountCreateCommand(const char* args) -{ - if (!*args) - return false; - - ///- %Parse the command line arguments - char *szAcc = strtok((char*)args, " "); - char *szPassword = strtok(NULL, " "); - if (!szAcc || !szPassword) - return false; - - // normalized in sAccountMgr.CreateAccount - std::string account_name = szAcc; - std::string password = szPassword; - - AccountOpResult result = sAccountMgr.CreateAccount(account_name, password); - switch(result) - { - case AOR_OK: - PSendSysMessage(LANG_ACCOUNT_CREATED,account_name.c_str()); - break; - case AOR_NAME_TOO_LONG: - SendSysMessage(LANG_ACCOUNT_TOO_LONG); - SetSentErrorMessage(true); - return false; - case AOR_NAME_ALREDY_EXIST: - SendSysMessage(LANG_ACCOUNT_ALREADY_EXIST); - SetSentErrorMessage(true); - return false; - case AOR_DB_INTERNAL_ERROR: - PSendSysMessage(LANG_ACCOUNT_NOT_CREATED_SQL_ERROR,account_name.c_str()); - SetSentErrorMessage(true); - return false; - default: - PSendSysMessage(LANG_ACCOUNT_NOT_CREATED,account_name.c_str()); - SetSentErrorMessage(true); - return false; - } - - return true; -} - /// Set the level of logging bool ChatHandler::HandleServerSetLogFileLevelCommand(const char *args) { |
