[9924] Implement .server log filter and .server log level comamnds.
[getmangos.git] / src / game / Chat.h
blob87aa895cf097cfe12e400279caf82bf4e9b89f21
1 /*
2 * Copyright (C) 2005-2010 MaNGOS <http://getmangos.com/>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef MANGOSSERVER_CHAT_H
20 #define MANGOSSERVER_CHAT_H
22 #include "SharedDefines.h"
24 class ChatHandler;
25 class WorldSession;
26 class Creature;
27 class Player;
28 class Unit;
29 struct GameTele;
31 class ChatCommand
33 public:
34 const char * Name;
35 uint32 SecurityLevel; // function pointer required correct align (use uint32)
36 bool AllowConsole;
37 bool (ChatHandler::*Handler)(const char* args);
38 std::string Help;
39 ChatCommand * ChildCommands;
42 class ChatHandler
44 public:
45 explicit ChatHandler(WorldSession* session) : m_session(session) {}
46 explicit ChatHandler(Player* player) : m_session(player->GetSession()) {}
47 ~ChatHandler() {}
49 static void FillMessageData( WorldPacket *data, WorldSession* session, uint8 type, uint32 language, const char *channelName, uint64 target_guid, const char *message, Unit *speaker);
51 void FillMessageData( WorldPacket *data, uint8 type, uint32 language, uint64 target_guid, const char* message)
53 FillMessageData( data, m_session, type, language, NULL, target_guid, message, NULL);
56 void FillSystemMessageData( WorldPacket *data, const char* message )
58 FillMessageData( data, CHAT_MSG_SYSTEM, LANG_UNIVERSAL, 0, message );
61 static char* LineFromMessage(char*& pos) { char* start = strtok(pos,"\n"); pos = NULL; return start; }
63 // function with different implementation for chat/console
64 virtual const char *GetMangosString(int32 entry) const;
65 virtual void SendSysMessage( const char *str);
67 void SendSysMessage( int32 entry);
68 void PSendSysMessage( const char *format, ...) ATTR_PRINTF(2,3);
69 void PSendSysMessage( int32 entry, ... );
71 int ParseCommands(const char* text);
73 bool isValidChatMessage(const char* msg);
74 bool HasSentErrorMessage() { return sentErrorMessage;}
75 protected:
76 explicit ChatHandler() : m_session(NULL) {} // for CLI subclass
78 bool hasStringAbbr(const char* name, const char* part);
80 // function with different implementation for chat/console
81 virtual uint32 GetAccountId() const;
82 virtual AccountTypes GetAccessLevel() const;
83 virtual bool isAvailable(ChatCommand const& cmd) const;
84 virtual std::string GetNameLink() const { return GetNameLink(m_session->GetPlayer()); }
85 virtual bool needReportToTarget(Player* chr) const;
86 virtual LocaleConstant GetSessionDbcLocale() const;
87 virtual int GetSessionDbLocaleIndex() const;
89 bool HasLowerSecurity(Player* target, uint64 guid, bool strong = false);
90 bool HasLowerSecurityAccount(WorldSession* target, uint32 account, bool strong = false);
92 void SendGlobalSysMessage(const char *str);
94 bool SetDataForCommandInTable(ChatCommand *table, const char* text, uint32 security, std::string const& help, std::string const& fullcommand );
95 bool ExecuteCommandInTable(ChatCommand *table, const char* text, const std::string& fullcommand);
96 bool ShowHelpForCommand(ChatCommand *table, const char* cmd);
97 bool ShowHelpForSubCommands(ChatCommand *table, char const* cmd, char const* subcmd);
99 ChatCommand* getCommandTable();
101 bool HandleAccountCommand(const char* args);
102 bool HandleAccountCharactersCommand(const char* args);
103 bool HandleAccountCreateCommand(const char* args);
104 bool HandleAccountDeleteCommand(const char* args);
105 bool HandleAccountLockCommand(const char* args);
106 bool HandleAccountOnlineListCommand(const char* args);
107 bool HandleAccountPasswordCommand(const char* args);
108 bool HandleAccountSetAddonCommand(const char* args);
109 bool HandleAccountSetGmLevelCommand(const char* args);
110 bool HandleAccountSetPasswordCommand(const char* args);
112 bool HandleBanAccountCommand(const char* args);
113 bool HandleBanCharacterCommand(const char* args);
114 bool HandleBanIPCommand(const char* args);
115 bool HandleBanInfoAccountCommand(const char* args);
116 bool HandleBanInfoCharacterCommand(const char* args);
117 bool HandleBanInfoIPCommand(const char* args);
118 bool HandleBanListAccountCommand(const char* args);
119 bool HandleBanListCharacterCommand(const char* args);
120 bool HandleBanListIPCommand(const char* args);
122 bool HandleCastCommand(const char *args);
123 bool HandleCastBackCommand(const char *args);
124 bool HandleCastDistCommand(const char *args);
125 bool HandleCastSelfCommand(const char *args);
126 bool HandleCastTargetCommand(const char *args);
128 bool HandleCharacterCustomizeCommand(const char * args);
129 bool HandleCharacterDeletedDeleteCommand(const char* args);
130 bool HandleCharacterDeletedListCommand(const char* args);
131 bool HandleCharacterDeletedRestoreCommand(const char* args);
132 bool HandleCharacterDeletedOldCommand(const char* args);
133 bool HandleCharacterEraseCommand(const char* args);
134 bool HandleCharacterLevelCommand(const char* args);
135 bool HandleCharacterRenameCommand(const char * args);
136 bool HandleCharacterReputationCommand(const char* args);
137 bool HandleCharacterTitlesCommand(const char* args);
139 bool HandleDebugAnimCommand(const char* args);
140 bool HandleDebugArenaCommand(const char * args);
141 bool HandleDebugBattlegroundCommand(const char * args);
142 bool HandleDebugGetItemStateCommand(const char * args);
143 bool HandleDebugGetLootRecipientCommand(const char * args);
144 bool HandleDebugGetValueCommand(const char* args);
145 bool HandleDebugGetItemValueCommand(const char* args);
146 bool HandleDebugMod32ValueCommand(const char* args);
147 bool HandleDebugSetAuraStateCommand(const char * args);
148 bool HandleDebugSetItemValueCommand(const char * args);
149 bool HandleDebugSetValueCommand(const char* args);
150 bool HandleDebugSpawnVehicle(const char * args);
151 bool HandleDebugSpellCheckCommand(const char* args);
152 bool HandleDebugUpdateCommand(const char* args);
153 bool HandleDebugUpdateWorldStateCommand(const char* args);
155 bool HandleDebugPlayCinematicCommand(const char* args);
156 bool HandleDebugPlayMovieCommand(const char* args);
157 bool HandleDebugPlaySoundCommand(const char* args);
159 bool HandleDebugSendBuyErrorCommand(const char* args);
160 bool HandleDebugSendChannelNotifyCommand(const char* args);
161 bool HandleDebugSendChatMsgCommand(const char* args);
162 bool HandleDebugSendEquipErrorCommand(const char* args);
163 bool HandleDebugSendLargePacketCommand(const char * args);
164 bool HandleDebugSendOpcodeCommand(const char* args);
165 bool HandleDebugSendPoiCommand(const char* args);
166 bool HandleDebugSendQuestPartyMsgCommand(const char* args);
167 bool HandleDebugSendQuestInvalidMsgCommand(const char* args);
168 bool HandleDebugSendSellErrorCommand(const char* args);
169 bool HandleDebugSendSetPhaseShiftCommand(const char * args);
170 bool HandleDebugSendSpellFailCommand(const char* args);
172 bool HandleEventListCommand(const char* args);
173 bool HandleEventStartCommand(const char* args);
174 bool HandleEventStopCommand(const char* args);
175 bool HandleEventInfoCommand(const char* args);
177 bool HandleGameObjectAddCommand(const char* args);
178 bool HandleGameObjectDeleteCommand(const char* args);
179 bool HandleGameObjectMoveCommand(const char* args);
180 bool HandleGameObjectNearCommand(const char* args);
181 bool HandleGameObjectPhaseCommand(const char* args);
182 bool HandleGameObjectTargetCommand(const char* args);
183 bool HandleGameObjectTurnCommand(const char* args);
185 bool HandleGMCommand(const char* args);
186 bool HandleGMChatCommand(const char* args);
187 bool HandleGMFlyCommand(const char* args);
188 bool HandleGMListFullCommand(const char* args);
189 bool HandleGMListIngameCommand(const char* args);
190 bool HandleGMVisibleCommand(const char* args);
192 bool HandleGoCommand(const char* args);
193 bool HandleGoCreatureCommand(const char* args);
194 bool HandleGoGraveyardCommand(const char* args);
195 bool HandleGoGridCommand(const char* args);
196 bool HandleGoObjectCommand(const char* args);
197 bool HandleGoTaxinodeCommand(const char* args);
198 bool HandleGoTriggerCommand(const char* args);
199 bool HandleGoXYCommand(const char* args);
200 bool HandleGoXYZCommand(const char* args);
201 bool HandleGoZoneXYCommand(const char* args);
203 bool HandleGuildCreateCommand(const char* args);
204 bool HandleGuildInviteCommand(const char* args);
205 bool HandleGuildUninviteCommand(const char* args);
206 bool HandleGuildRankCommand(const char* args);
207 bool HandleGuildDeleteCommand(const char* args);
209 bool HandleHonorAddCommand(const char* args);
210 bool HandleHonorAddKillCommand(const char* args);
211 bool HandleHonorUpdateCommand(const char* args);
213 bool HandleInstanceListBindsCommand(const char* args);
214 bool HandleInstanceUnbindCommand(const char* args);
215 bool HandleInstanceStatsCommand(const char* args);
216 bool HandleInstanceSaveDataCommand(const char * args);
218 bool HandleLearnCommand(const char* args);
219 bool HandleLearnAllCommand(const char* args);
220 bool HandleLearnAllGMCommand(const char* args);
221 bool HandleLearnAllCraftsCommand(const char* args);
222 bool HandleLearnAllRecipesCommand(const char* args);
223 bool HandleLearnAllDefaultCommand(const char* args);
224 bool HandleLearnAllLangCommand(const char* args);
225 bool HandleLearnAllMyClassCommand(const char* args);
226 bool HandleLearnAllMyPetTalentsCommand(const char* args);
227 bool HandleLearnAllMySpellsCommand(const char* args);
228 bool HandleLearnAllMyTalentsCommand(const char* args);
230 bool HandleListAurasCommand(const char * args);
231 bool HandleListCreatureCommand(const char* args);
232 bool HandleListItemCommand(const char* args);
233 bool HandleListObjectCommand(const char* args);
234 bool HandleListTalentsCommand(const char * args);
236 bool HandleLookupAccountEmailCommand(const char* args);
237 bool HandleLookupAccountIpCommand(const char* args);
238 bool HandleLookupAccountNameCommand(const char* args);
239 bool HandleLookupAreaCommand(const char* args);
240 bool HandleLookupCreatureCommand(const char* args);
241 bool HandleLookupEventCommand(const char* args);
242 bool HandleLookupFactionCommand(const char * args);
243 bool HandleLookupItemCommand(const char * args);
244 bool HandleLookupItemSetCommand(const char * args);
245 bool HandleLookupObjectCommand(const char* args);
246 bool HandleLookupPlayerIpCommand(const char* args);
247 bool HandleLookupPlayerAccountCommand(const char* args);
248 bool HandleLookupPlayerEmailCommand(const char* args);
249 bool HandleLookupQuestCommand(const char* args);
250 bool HandleLookupSkillCommand(const char* args);
251 bool HandleLookupSpellCommand(const char* args);
252 bool HandleLookupTaxiNodeCommand(const char * args);
253 bool HandleLookupTeleCommand(const char * args);
254 bool HandleLookupTitleCommand(const char * args);
256 bool HandleModifyHPCommand(const char* args);
257 bool HandleModifyManaCommand(const char* args);
258 bool HandleModifyRageCommand(const char* args);
259 bool HandleModifyRunicPowerCommand(const char* args);
260 bool HandleModifyEnergyCommand(const char* args);
261 bool HandleModifyMoneyCommand(const char* args);
262 bool HandleModifyASpeedCommand(const char* args);
263 bool HandleModifySpeedCommand(const char* args);
264 bool HandleModifyBWalkCommand(const char* args);
265 bool HandleModifyFlyCommand(const char* args);
266 bool HandleModifySwimCommand(const char* args);
267 bool HandleModifyScaleCommand(const char* args);
268 bool HandleModifyMountCommand(const char* args);
269 bool HandleModifyBitCommand(const char* args);
270 bool HandleModifyFactionCommand(const char* args);
271 bool HandleModifySpellCommand(const char* args);
272 bool HandleModifyTalentCommand (const char* args);
273 bool HandleModifyHonorCommand (const char* args);
274 bool HandleModifyRepCommand(const char* args);
275 bool HandleModifyArenaCommand(const char* args);
276 bool HandleModifyPhaseCommand(const char* args);
277 bool HandleModifyGenderCommand(const char* args);
279 //-----------------------Npc Commands-----------------------
280 bool HandleNpcAddCommand(const char* args);
281 bool HandleNpcAddMoveCommand(const char* args);
282 bool HandleNpcAddVendorItemCommand(const char* args);
283 bool HandleNpcAllowMovementCommand(const char* args);
284 bool HandleNpcChangeEntryCommand(const char *args);
285 bool HandleNpcChangeLevelCommand(const char* args);
286 bool HandleNpcDeleteCommand(const char* args);
287 bool HandleNpcDelVendorItemCommand(const char* args);
288 bool HandleNpcFactionIdCommand(const char* args);
289 bool HandleNpcFlagCommand(const char* args);
290 bool HandleNpcFollowCommand(const char* args);
291 bool HandleNpcInfoCommand(const char* args);
292 bool HandleNpcMoveCommand(const char* args);
293 bool HandleNpcPlayEmoteCommand(const char* args);
294 bool HandleNpcSayCommand(const char* args);
295 bool HandleNpcSetDeathStateCommand(const char* args);
296 bool HandleNpcSetModelCommand(const char* args);
297 bool HandleNpcSetMoveTypeCommand(const char* args);
298 bool HandleNpcSetPhaseCommand(const char* args);
299 bool HandleNpcSpawnDistCommand(const char* args);
300 bool HandleNpcSpawnTimeCommand(const char* args);
301 bool HandleNpcTameCommand(const char* args);
302 bool HandleNpcTextEmoteCommand(const char* args);
303 bool HandleNpcUnFollowCommand(const char* args);
304 bool HandleNpcWhisperCommand(const char* args);
305 bool HandleNpcYellCommand(const char* args);
307 //TODO: NpcCommands that needs to be fixed :
308 bool HandleNpcAddWeaponCommand(const char* args);
309 bool HandleNpcNameCommand(const char* args);
310 bool HandleNpcSubNameCommand(const char* args);
311 //----------------------------------------------------------
313 bool HandlePDumpLoadCommand(const char *args);
314 bool HandlePDumpWriteCommand(const char *args);
316 bool HandleQuestAdd(const char * args);
317 bool HandleQuestRemove(const char * args);
318 bool HandleQuestComplete(const char * args);
320 bool HandleReloadAllCommand(const char* args);
321 bool HandleReloadAllAchievementCommand(const char* args);
322 bool HandleReloadAllAreaCommand(const char* args);
323 bool HandleReloadAllGossipsCommand(const char* args);
324 bool HandleReloadAllItemCommand(const char* args);
325 bool HandleReloadAllLootCommand(const char* args);
326 bool HandleReloadAllNpcCommand(const char* args);
327 bool HandleReloadAllQuestCommand(const char* args);
328 bool HandleReloadAllScriptsCommand(const char* args);
329 bool HandleReloadAllEventAICommand(const char* args);
330 bool HandleReloadAllSpellCommand(const char* args);
331 bool HandleReloadAllLocalesCommand(const char* args);
333 bool HandleReloadConfigCommand(const char* args);
335 bool HandleReloadAchievementCriteriaRequirementCommand(const char* args);
336 bool HandleReloadAchievementRewardCommand(const char* args);
337 bool HandleReloadAreaTriggerTavernCommand(const char* args);
338 bool HandleReloadAreaTriggerTeleportCommand(const char* args);
339 bool HandleReloadEventScriptsCommand(const char* args);
340 bool HandleReloadEventAITextsCommand(const char* args);
341 bool HandleReloadEventAISummonsCommand(const char* args);
342 bool HandleReloadEventAIScriptsCommand(const char* args);
343 bool HandleReloadCommandCommand(const char* args);
344 bool HandleReloadBattleEventCommand(const char* args);
345 bool HandleReloadCreatureQuestRelationsCommand(const char* args);
346 bool HandleReloadCreatureQuestInvRelationsCommand(const char* args);
347 bool HandleReloadDbScriptStringCommand(const char* args);
348 bool HandleReloadGameGraveyardZoneCommand(const char* args);
349 bool HandleReloadGameObjectScriptsCommand(const char* args);
350 bool HandleReloadGameTeleCommand(const char* args);
351 bool HandleReloadGossipMenuCommand(const char* args);
352 bool HandleReloadGossipMenuOptionCommand(const char* args);
353 bool HandleReloadGossipScriptsCommand(const char* args);
354 bool HandleReloadGOQuestRelationsCommand(const char* args);
355 bool HandleReloadGOQuestInvRelationsCommand(const char* args);
356 bool HandleReloadItemEnchantementsCommand(const char* args);
357 bool HandleReloadItemRequiredTragetCommand(const char* args);
358 bool HandleReloadLocalesAchievementRewardCommand(const char* args);
359 bool HandleReloadLocalesCreatureCommand(const char* args);
360 bool HandleReloadLocalesGameobjectCommand(const char* args);
361 bool HandleReloadLocalesGossipMenuOptionCommand(const char* args);
362 bool HandleReloadLocalesItemCommand(const char* args);
363 bool HandleReloadLocalesNpcTextCommand(const char* args);
364 bool HandleReloadLocalesPageTextCommand(const char* args);
365 bool HandleReloadLocalesPointsOfInterestCommand(const char* args);
366 bool HandleReloadLocalesQuestCommand(const char* args);
367 bool HandleReloadLootTemplatesCreatureCommand(const char* args);
368 bool HandleReloadLootTemplatesDisenchantCommand(const char* args);
369 bool HandleReloadLootTemplatesFishingCommand(const char* args);
370 bool HandleReloadLootTemplatesGameobjectCommand(const char* args);
371 bool HandleReloadLootTemplatesItemCommand(const char* args);
372 bool HandleReloadLootTemplatesMailCommand(const char* args);
373 bool HandleReloadLootTemplatesMillingCommand(const char* args);
374 bool HandleReloadLootTemplatesPickpocketingCommand(const char* args);
375 bool HandleReloadLootTemplatesProspectingCommand(const char* args);
376 bool HandleReloadLootTemplatesReferenceCommand(const char* args);
377 bool HandleReloadLootTemplatesSkinningCommand(const char* args);
378 bool HandleReloadLootTemplatesSpellCommand(const char* args);
379 bool HandleReloadMailLevelRewardCommand(const char* args);
380 bool HandleReloadMangosStringCommand(const char* args);
381 bool HandleReloadNpcGossipCommand(const char* args);
382 bool HandleReloadNpcTrainerCommand(const char* args);
383 bool HandleReloadNpcVendorCommand(const char* args);
384 bool HandleReloadPageTextsCommand(const char* args);
385 bool HandleReloadPointsOfInterestCommand(const char* args);
386 bool HandleReloadSpellClickSpellsCommand(const char* args);
387 bool HandleReloadQuestAreaTriggersCommand(const char* args);
388 bool HandleReloadQuestEndScriptsCommand(const char* args);
389 bool HandleReloadQuestPOICommand(const char* args);
390 bool HandleReloadQuestStartScriptsCommand(const char* args);
391 bool HandleReloadQuestTemplateCommand(const char* args);
392 bool HandleReloadReservedNameCommand(const char*);
393 bool HandleReloadSkillDiscoveryTemplateCommand(const char* args);
394 bool HandleReloadSkillExtraItemTemplateCommand(const char* args);
395 bool HandleReloadSkillFishingBaseLevelCommand(const char* args);
396 bool HandleReloadSpellAreaCommand(const char* args);
397 bool HandleReloadSpellChainCommand(const char* args);
398 bool HandleReloadSpellElixirCommand(const char* args);
399 bool HandleReloadSpellLearnSpellCommand(const char* args);
400 bool HandleReloadSpellProcEventCommand(const char* args);
401 bool HandleReloadSpellProcItemEnchantCommand(const char* args);
402 bool HandleReloadSpellBonusesCommand(const char* args);
403 bool HandleReloadSpellScriptTargetCommand(const char* args);
404 bool HandleReloadSpellScriptsCommand(const char* args);
405 bool HandleReloadSpellTargetPositionCommand(const char* args);
406 bool HandleReloadSpellThreatsCommand(const char* args);
407 bool HandleReloadSpellPetAurasCommand(const char* args);
409 bool HandleResetAchievementsCommand(const char * args);
410 bool HandleResetAllCommand(const char * args);
411 bool HandleResetHonorCommand(const char * args);
412 bool HandleResetLevelCommand(const char * args);
413 bool HandleResetSpecsCommand(const char * args);
414 bool HandleResetSpellsCommand(const char * args);
415 bool HandleResetStatsCommand(const char * args);
416 bool HandleResetTalentsCommand(const char * args);
418 bool HandleSendItemsCommand(const char* args);
419 bool HandleSendMailCommand(const char* args);
420 bool HandleSendMessageCommand(const char * args);
421 bool HandleSendMoneyCommand(const char* args);
423 bool HandleServerCorpsesCommand(const char* args);
424 bool HandleServerExitCommand(const char* args);
425 bool HandleServerIdleRestartCommand(const char* args);
426 bool HandleServerIdleShutDownCommand(const char* args);
427 bool HandleServerInfoCommand(const char* args);
428 bool HandleServerLogFilterCommand(const char* args);
429 bool HandleServerLogLevelCommand(const char* args);
430 bool HandleServerMotdCommand(const char* args);
431 bool HandleServerPLimitCommand(const char* args);
432 bool HandleServerRestartCommand(const char* args);
433 bool HandleServerSetMotdCommand(const char* args);
434 bool HandleServerShutDownCommand(const char* args);
435 bool HandleServerShutDownCancelCommand(const char* args);
437 bool HandleTeleCommand(const char * args);
438 bool HandleTeleAddCommand(const char * args);
439 bool HandleTeleDelCommand(const char * args);
440 bool HandleTeleGroupCommand(const char* args);
441 bool HandleTeleNameCommand(const char* args);
443 bool HandleTitlesAddCommand(const char* args);
444 bool HandleTitlesCurrentCommand(const char* args);
445 bool HandleTitlesRemoveCommand(const char* args);
446 bool HandleTitlesSetMaskCommand(const char* args);
448 bool HandleUnBanAccountCommand(const char* args);
449 bool HandleUnBanCharacterCommand(const char* args);
450 bool HandleUnBanIPCommand(const char* args);
452 bool HandleWpAddCommand(const char* args);
453 bool HandleWpModifyCommand(const char* args);
454 bool HandleWpShowCommand(const char* args);
455 bool HandleWpExportCommand(const char* args);
456 bool HandleWpImportCommand(const char* args);
458 bool HandleHelpCommand(const char* args);
459 bool HandleCommandsCommand(const char* args);
460 bool HandleStartCommand(const char* args);
461 bool HandleDismountCommand(const char* args);
462 bool HandleSaveCommand(const char* args);
464 bool HandleNamegoCommand(const char* args);
465 bool HandleGonameCommand(const char* args);
466 bool HandleGroupgoCommand(const char* args);
467 bool HandleRecallCommand(const char* args);
468 bool HandleAnnounceCommand(const char* args);
469 bool HandleNotifyCommand(const char* args);
470 bool HandleGPSCommand(const char* args);
471 bool HandleTaxiCheatCommand(const char* args);
472 bool HandleWhispersCommand(const char* args);
473 bool HandleModifyDrunkCommand(const char* args);
475 bool HandleLoadScriptsCommand(const char* args);
477 bool HandleGUIDCommand(const char* args);
478 bool HandleItemMoveCommand(const char* args);
479 bool HandleDeMorphCommand(const char* args);
480 bool HandlePInfoCommand(const char* args);
481 bool HandleMuteCommand(const char* args);
482 bool HandleUnmuteCommand(const char* args);
483 bool HandleMovegensCommand(const char* args);
485 bool HandleCooldownCommand(const char* args);
486 bool HandleUnLearnCommand(const char* args);
487 bool HandleGetDistanceCommand(const char* args);
488 bool HandleModifyStandStateCommand(const char* args);
489 bool HandleDieCommand(const char* args);
490 bool HandleDamageCommand(const char *args);
491 bool HandleReviveCommand(const char* args);
492 bool HandleModifyMorphCommand(const char* args);
493 bool HandleAuraCommand(const char* args);
494 bool HandleUnAuraCommand(const char* args);
495 bool HandleLinkGraveCommand(const char* args);
496 bool HandleNearGraveCommand(const char* args);
497 bool HandleExploreCheatCommand(const char* args);
498 bool HandleHoverCommand(const char* args);
499 bool HandleLevelUpCommand(const char* args);
500 bool HandleShowAreaCommand(const char* args);
501 bool HandleHideAreaCommand(const char* args);
502 bool HandleAddItemCommand(const char* args);
503 bool HandleAddItemSetCommand(const char* args);
505 bool HandleBankCommand(const char* args);
506 bool HandleChangeWeather(const char* args);
507 bool HandleKickPlayerCommand(const char * args);
509 bool HandleTicketCommand(const char* args);
510 bool HandleDelTicketCommand(const char* args);
511 bool HandleMaxSkillCommand(const char* args);
512 bool HandleSetSkillCommand(const char* args);
513 bool HandleRespawnCommand(const char* args);
514 bool HandleComeToMeCommand(const char *args);
515 bool HandleCombatStopCommand(const char *args);
516 bool HandleFlushArenaPointsCommand(const char *args);
517 bool HandleRepairitemsCommand(const char* args);
518 bool HandleWaterwalkCommand(const char* args);
519 bool HandleQuitCommand(const char* args);
521 //! Development Commands
522 bool HandleSaveAllCommand(const char* args);
524 Player* getSelectedPlayer();
525 Creature* getSelectedCreature();
526 Unit* getSelectedUnit();
528 char* extractKeyFromLink(char* text, char const* linkType, char** something1 = NULL);
529 char* extractKeyFromLink(char* text, char const* const* linkTypes, int* found_idx, char** something1 = NULL);
531 // if args have single value then it return in arg2 and arg1 == NULL
532 void extractOptFirstArg(char* args, char** arg1, char** arg2);
533 char* extractQuotedArg(char* args);
535 uint32 extractSpellIdFromLink(char* text);
536 uint64 extractGuidFromLink(char* text);
537 GameTele const* extractGameTeleFromLink(char* text);
538 std::string extractPlayerNameFromLink(char* text);
539 // select by arg (name/link) or in-game selection online/offline player
540 bool extractPlayerTarget(char* args, Player** player, uint64* player_guid = NULL, std::string* player_name = NULL);
542 std::string playerLink(std::string const& name) const { return m_session ? "|cffffffff|Hplayer:"+name+"|h["+name+"]|h|r" : name; }
543 std::string GetNameLink(Player* chr) const { return playerLink(chr->GetName()); }
545 uint32 extractAccountId(char* args, std::string* accountName = NULL, Player** targetIfNullArg = NULL);
547 GameObject* GetObjectGlobalyWithGuidOrNearWithDbGuid(uint32 lowguid,uint32 entry);
549 // Utility methods for commands
550 void ShowTicket(uint64 guid, char const* text, char const* time);
551 bool ShowAccountListHelper(QueryResult* result, uint32* limit = NULL, bool title = true, bool error = true);
552 bool ShowPlayerListHelper(QueryResult* result, uint32* limit = NULL, bool title = true, bool error = true);
553 bool LookupPlayerSearchCommand(QueryResult* result, uint32* limit = NULL);
554 bool HandleBanListHelper(QueryResult* result);
555 bool HandleBanHelper(BanMode mode,char const* args);
556 bool HandleBanInfoHelper(uint32 accountid, char const* accountname);
557 bool HandleUnBanHelper(BanMode mode,char const* args);
558 void HandleCharacterLevel(Player* player, uint64 player_guid, uint32 oldlevel, uint32 newlevel);
559 void HandleLearnSkillRecipesHelper(Player* player,uint32 skill_id);
560 void ShowSpellListHelper(Player* target, SpellEntry const* spellInfo, LocaleConstant loc);
563 * Stores informations about a deleted character
565 struct DeletedInfo
567 uint32 lowguid; ///< the low GUID from the character
568 std::string name; ///< the character name
569 uint32 accountId; ///< the account id
570 std::string accountName; ///< the account name
571 time_t deleteDate; ///< the date at which the character has been deleted
574 typedef std::list<DeletedInfo> DeletedInfoList;
575 bool GetDeletedCharacterInfoList(DeletedInfoList& foundList, std::string searchString = "");
576 std::string GenerateDeletedCharacterGUIDsWhereStr(DeletedInfoList::const_iterator& itr, DeletedInfoList::const_iterator const& itr_end);
577 void HandleCharacterDeletedListHelper(DeletedInfoList const& foundList);
578 void HandleCharacterDeletedRestoreHelper(DeletedInfo const& delInfo);
580 void SetSentErrorMessage(bool val){ sentErrorMessage = val;};
581 private:
582 WorldSession * m_session; // != NULL for chat command call and NULL for CLI command
584 // common global flag
585 static bool load_command_table;
586 bool sentErrorMessage;
589 class CliHandler : public ChatHandler
591 public:
592 typedef void Print(void*, char const*);
593 explicit CliHandler(uint32 accountId, AccountTypes accessLevel, void* callbackArg, Print* zprint)
594 : m_accountId(accountId), m_loginAccessLevel(accessLevel), m_callbackArg(callbackArg), m_print(zprint) {}
596 // overwrite functions
597 const char *GetMangosString(int32 entry) const;
598 uint32 GetAccountId() const;
599 AccountTypes GetAccessLevel() const;
600 bool isAvailable(ChatCommand const& cmd) const;
601 void SendSysMessage(const char *str);
602 std::string GetNameLink() const;
603 bool needReportToTarget(Player* chr) const;
604 LocaleConstant GetSessionDbcLocale() const;
605 int GetSessionDbLocaleIndex() const;
607 private:
608 uint32 m_accountId;
609 AccountTypes m_loginAccessLevel;
610 void* m_callbackArg;
611 Print* m_print;
614 char const *fmtstring( char const *format, ... );
616 #endif