* [2008_10_21_01_mangos_mangos_string.sql,2008_10_21_02_mangos_command.sql] Merge...
[getmangos.git] / src / game / Chat.h
bloba3960da7124618e6a0daddc8b19bedf006ec17a9
1 /*
2 * Copyright (C) 2005-2008 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 virtual const char *GetMangosString(int32 entry) const;
65 virtual void SendSysMessage( const char *str);
66 void SendSysMessage( int32 entry);
67 void PSendSysMessage( const char *format, ...) ATTR_PRINTF(2,3);
68 void PSendSysMessage( int32 entry, ... );
70 int ParseCommands(const char* text);
72 protected:
73 explicit ChatHandler() : m_session(NULL) {} // for CLI subclass
75 bool hasStringAbbr(const char* name, const char* part);
77 virtual bool isAvailable(ChatCommand const& cmd) const;
79 void SendGlobalSysMessage(const char *str);
81 bool ExecuteCommandInTable(ChatCommand *table, const char* text, std::string fullcommand);
82 bool ShowHelpForCommand(ChatCommand *table, const char* cmd);
83 bool ShowHelpForSubCommands(ChatCommand *table, char const* cmd, char const* subcmd);
85 ChatCommand* getCommandTable();
87 bool HandleAccountCommand(const char* args);
88 bool HandleAccountCreateCommand(const char* args);
89 bool HandleAccountDeleteCommand(const char* args);
90 bool HandleAccountOnlineListCommand(const char* args);
91 bool HandleAccountSetAddonCommand(const char* args);
92 bool HandleAccountSetGmLevelCommand(const char* args);
93 bool HandleAccountSetPasswordCommand(const char* args);
95 bool HandleHelpCommand(const char* args);
96 bool HandleCommandsCommand(const char* args);
97 bool HandleStartCommand(const char* args);
98 bool HandleInfoCommand(const char* args);
99 bool HandleDismountCommand(const char* args);
100 bool HandleSaveCommand(const char* args);
101 bool HandleGMListOnlineCommand(const char* args);
102 bool HandleGMListFullCommand(const char* args);
104 bool HandleNamegoCommand(const char* args);
105 bool HandleGonameCommand(const char* args);
106 bool HandleGroupgoCommand(const char* args);
107 bool HandleRecallCommand(const char* args);
108 bool HandleAnnounceCommand(const char* args);
109 bool HandleNotifyCommand(const char* args);
110 bool HandleGMmodeCommand(const char* args);
111 bool HandleGMChatCommand(const char* args);
112 bool HandleVisibleCommand(const char* args);
113 bool HandleGPSCommand(const char* args);
114 bool HandleTaxiCheatCommand(const char* args);
115 bool HandleWhispersCommand(const char* args);
116 bool HandleSayCommand(const char* args);
117 bool HandleNpcWhisperCommand(const char* args);
118 bool HandleYellCommand(const char* args);
119 bool HandlePlayEmoteCommand(const char* args);
120 bool HandleSendMailCommand(const char* args);
121 bool HandleNameTeleCommand(const char* args);
122 bool HandleGroupTeleCommand(const char* args);
123 bool HandleDrunkCommand(const char* args);
125 bool HandleEventActiveListCommand(const char* args);
126 bool HandleEventStartCommand(const char* args);
127 bool HandleEventStopCommand(const char* args);
128 bool HandleEventInfoCommand(const char* args);
130 bool HandleModifyKnownTitlesCommand(const char* args);
131 bool HandleModifyHPCommand(const char* args);
132 bool HandleModifyManaCommand(const char* args);
133 bool HandleModifyRageCommand(const char* args);
134 bool HandleModifyEnergyCommand(const char* args);
135 bool HandleModifyMoneyCommand(const char* args);
136 bool HandleModifyASpeedCommand(const char* args);
137 bool HandleModifySpeedCommand(const char* args);
138 bool HandleModifyBWalkCommand(const char* args);
139 bool HandleModifyFlyCommand(const char* args);
140 bool HandleModifySwimCommand(const char* args);
141 bool HandleModifyScaleCommand(const char* args);
142 bool HandleModifyMountCommand(const char* args);
143 bool HandleModifyBitCommand(const char* args);
144 bool HandleModifyFactionCommand(const char* args);
145 bool HandleModifySpellCommand(const char* args);
146 bool HandleModifyTalentCommand (const char* args);
147 bool HandleModifyHonorCommand (const char* args);
148 bool HandleModifyRepCommand(const char* args);
149 bool HandleModifyArenaCommand(const char* args);
151 bool HandleReloadCommand(const char* args);
152 bool HandleReloadAllCommand(const char* args);
153 bool HandleReloadAllAreaCommand(const char* args);
154 bool HandleReloadAllItemCommand(const char* args);
155 bool HandleReloadAllLootCommand(const char* args);
156 bool HandleReloadAllNpcCommand(const char* args);
157 bool HandleReloadAllQuestCommand(const char* args);
158 bool HandleReloadAllScriptsCommand(const char* args);
159 bool HandleReloadAllSpellCommand(const char* args);
160 bool HandleReloadAllLocalesCommand(const char* args);
162 bool HandleReloadConfigCommand(const char* args);
164 bool HandleReloadAreaTriggerTavernCommand(const char* args);
165 bool HandleReloadAreaTriggerTeleportCommand(const char* args);
166 bool HandleReloadEventScriptsCommand(const char* args);
167 bool HandleReloadCommandCommand(const char* args);
168 bool HandleReloadCreatureQuestRelationsCommand(const char* args);
169 bool HandleReloadCreatureQuestInvRelationsCommand(const char* args);
170 bool HandleReloadGameGraveyardZoneCommand(const char* args);
171 bool HandleReloadGameObjectScriptsCommand(const char* args);
172 bool HandleReloadGameTeleCommand(const char* args);
173 bool HandleReloadGOQuestRelationsCommand(const char* args);
174 bool HandleReloadGOQuestInvRelationsCommand(const char* args);
175 bool HandleReloadLootTemplatesCreatureCommand(const char* args);
176 bool HandleReloadLootTemplatesDisenchantCommand(const char* args);
177 bool HandleReloadLootTemplatesFishingCommand(const char* args);
178 bool HandleReloadLootTemplatesGameobjectCommand(const char* args);
179 bool HandleReloadLootTemplatesItemCommand(const char* args);
180 bool HandleReloadLootTemplatesPickpocketingCommand(const char* args);
181 bool HandleReloadLootTemplatesProspectingCommand(const char* args);
182 bool HandleReloadLootTemplatesReferenceCommand(const char* args);
183 bool HandleReloadLootTemplatesQuestMailCommand(const char* args);
184 bool HandleReloadLootTemplatesSkinningCommand(const char* args);
185 bool HandleReloadMangosStringCommand(const char* args);
186 bool HandleReloadNpcGossipCommand(const char* args);
187 bool HandleReloadNpcTrainerCommand(const char* args);
188 bool HandleReloadNpcVendorCommand(const char* args);
189 bool HandleReloadQuestAreaTriggersCommand(const char* args);
190 bool HandleReloadQuestEndScriptsCommand(const char* args);
191 bool HandleReloadQuestStartScriptsCommand(const char* args);
192 bool HandleReloadQuestTemplateCommand(const char* args);
193 bool HandleReloadReservedNameCommand(const char*);
194 bool HandleReloadSkillDiscoveryTemplateCommand(const char* args);
195 bool HandleReloadSkillExtraItemTemplateCommand(const char* args);
196 bool HandleReloadSkillFishingBaseLevelCommand(const char* args);
197 bool HandleReloadSpellAffectCommand(const char* args);
198 bool HandleReloadSpellChainCommand(const char* args);
199 bool HandleReloadSpellElixirCommand(const char* args);
200 bool HandleReloadSpellLearnSpellCommand(const char* args);
201 bool HandleReloadSpellProcEventCommand(const char* args);
202 bool HandleReloadSpellScriptTargetCommand(const char* args);
203 bool HandleReloadSpellScriptsCommand(const char* args);
204 bool HandleReloadSpellTargetPositionCommand(const char* args);
205 bool HandleReloadSpellThreatsCommand(const char* args);
206 bool HandleReloadSpellPetAurasCommand(const char* args);
207 bool HandleReloadPageTextsCommand(const char* args);
208 bool HandleReloadItemEnchantementsCommand(const char* args);
209 bool HandleReloadLocalesCreatureCommand(const char* args);
210 bool HandleReloadLocalesGameobjectCommand(const char* args);
211 bool HandleReloadLocalesItemCommand(const char* args);
212 bool HandleReloadLocalesNpcTextCommand(const char* args);
213 bool HandleReloadLocalesPageTextCommand(const char* args);
214 bool HandleReloadLocalesQuestCommand(const char* args);
216 bool HandleInstanceListBindsCommand(const char* args);
217 bool HandleInstanceUnbindCommand(const char* args);
218 bool HandleInstanceStatsCommand(const char* args);
219 bool HandleInstanceSaveDataCommand(const char * args);
221 bool HandleServerCorpsesCommand(const char* args);
222 bool HandleServerExitCommand(const char* args);
223 bool HandleServerMotdCommand(const char* args);
224 bool HandleServerSetMotdCommand(const char* args);
225 bool HandleServerSetLogLevelCommand(const char* args);
227 bool HandleAddHonorCommand(const char* args);
228 bool HandleHonorAddKillCommand(const char* args);
229 bool HandleUpdateHonorFieldsCommand(const char* args);
231 bool HandleLoadScriptsCommand(const char* args);
232 bool HandleSendQuestPartyMsgCommand(const char* args);
233 bool HandleSendQuestInvalidMsgCommand(const char* args);
235 bool HandleDebugInArcCommand(const char* args);
236 bool HandleDebugSpellFailCommand(const char* args);
238 bool HandleGUIDCommand(const char* args);
239 bool HandleNameCommand(const char* args);
240 bool HandleSubNameCommand(const char* args);
241 bool HandleItemMoveCommand(const char* args);
242 bool HandleDelCreatureCommand(const char* args);
243 bool HandleDeMorphCommand(const char* args);
244 bool HandleAddVendorItemCommand(const char* args);
245 bool HandleDelVendorItemCommand(const char* args);
246 bool HandleAddMoveCommand(const char* args);
247 bool HandleSetMoveTypeCommand(const char* args);
248 bool HandleChangeLevelCommand(const char* args);
249 bool HandleSetPoiCommand(const char* args);
250 bool HandleEquipErrorCommand(const char* args);
251 bool HandleNPCFlagCommand(const char* args);
252 bool HandleSetModelCommand(const char* args);
253 bool HandleFactionIdCommand(const char* args);
254 bool HandleAddSpwCommand(const char* args);
255 bool HandleSpawnDistCommand(const char* args);
256 bool HandleSpawnTimeCommand(const char* args);
257 bool HandleGoCreatureCommand(const char* args);
258 bool HandleGoObjectCommand(const char* args);
259 bool HandleGoTriggerCommand(const char* args);
260 bool HandleGoGraveyardCommand(const char* args);
261 bool HandleTargetObjectCommand(const char* args);
262 bool HandleDelObjectCommand(const char* args);
263 bool HandleMoveCreatureCommand(const char* args);
264 bool HandleMoveObjectCommand(const char* args);
265 bool HandleTurnObjectCommand(const char* args);
266 bool HandlePInfoCommand(const char* args);
267 bool HandlePLimitCommand(const char* args);
268 bool HandleMuteCommand(const char* args);
269 bool HandleUnmuteCommand(const char* args);
270 bool HandleMovegensCommand(const char* args);
272 bool HandleCharacterDeleteCommand(const char* args);
273 bool HandleBanCommand(const char* args);
274 bool HandleUnBanCommand(const char* args);
275 bool HandleBanInfoCommand(const char* args);
276 bool HandleBanListCommand(const char* args);
277 bool HandleIdleRestartCommand(const char* args);
278 bool HandleIdleShutDownCommand(const char* args);
279 bool HandleShutDownCommand(const char* args);
280 bool HandleRestartCommand(const char* args);
281 bool HandleGoXYCommand(const char* args);
282 bool HandleGoXYZCommand(const char* args);
283 bool HandleGoZoneXYCommand(const char* args);
284 bool HandleGoGridCommand(const char* args);
285 bool HandleAddWeaponCommand(const char* args);
286 bool HandleAllowMovementCommand(const char* args);
287 bool HandleGoCommand(const char* args);
289 bool HandleLearnCommand(const char* args);
290 bool HandleLearnAllCommand(const char* args);
291 bool HandleLearnAllGMCommand(const char* args);
292 bool HandleLearnAllCraftsCommand(const char* args);
293 bool HandleLearnAllRecipesCommand(const char* args);
294 bool HandleLearnAllDefaultCommand(const char* args);
295 bool HandleLearnAllLangCommand(const char* args);
296 bool HandleLearnAllMyClassCommand(const char* args);
297 bool HandleLearnAllMySpellsCommand(const char* args);
298 bool HandleLearnAllMyTalentsCommand(const char* args);
300 bool HandleLookupAreaCommand(const char* args);
301 bool HandleLookupCreatureCommand(const char* args);
302 bool HandleLookupEventCommand(const char* args);
303 bool HandleLookupFactionCommand(const char * args);
304 bool HandleLookupItemCommand(const char * args);
305 bool HandleLookupItemSetCommand(const char * args);
306 bool HandleLookupObjectCommand(const char* args);
307 bool HandleLookupPlayerIpCommand(const char* args);
308 bool HandleLookupPlayerAccountCommand(const char* args);
309 bool HandleLookupPlayerEmailCommand(const char* args);
310 bool HandleLookupQuestCommand(const char* args);
311 bool HandleLookupSkillCommand(const char* args);
312 bool HandleLookupSpellCommand(const char* args);
313 bool HandleLookupTeleCommand(const char * args);
315 bool HandleCooldownCommand(const char* args);
316 bool HandleUnLearnCommand(const char* args);
317 bool HandleGetDistanceCommand(const char* args);
318 bool HandleGameObjectCommand(const char* args);
319 bool HandleAnimCommand(const char* args);
320 bool HandlePlaySoundCommand(const char* args);
321 bool HandleStandStateCommand(const char* args);
322 bool HandleDieCommand(const char* args);
323 bool HandleDamageCommand(const char *args);
324 bool HandleReviveCommand(const char* args);
325 bool HandleMorphCommand(const char* args);
326 bool HandleAuraCommand(const char* args);
327 bool HandleUnAuraCommand(const char* args);
328 bool HandleLinkGraveCommand(const char* args);
329 bool HandleNearGraveCommand(const char* args);
330 bool HandleSpawnTransportCommand(const char* args);
331 bool HandleExploreCheatCommand(const char* args);
332 bool HandleTextEmoteCommand(const char* args);
333 bool HandleNpcInfoCommand(const char* args);
334 bool HandleHoverCommand(const char* args);
335 bool HandleLevelUpCommand(const char* args);
336 bool HandleShowAreaCommand(const char* args);
337 bool HandleHideAreaCommand(const char* args);
338 bool HandleAddItemCommand(const char* args);
339 bool HandleAddItemSetCommand(const char* args);
341 bool HandleGuildCreateCommand(const char* args);
342 bool HandleGuildInviteCommand(const char* args);
343 bool HandleGuildUninviteCommand(const char* args);
344 bool HandleGuildRankCommand(const char* args);
345 bool HandleGuildDeleteCommand(const char* args);
346 bool HandleUpdate(const char* args);
347 bool HandleBankCommand(const char* args);
348 bool HandleChangeWeather(const char* args);
349 bool HandleKickPlayerCommand(const char * args);
350 bool HandleTeleCommand(const char * args);
351 bool HandleAddTeleCommand(const char * args);
352 bool HandleDelTeleCommand(const char * args);
353 bool HandleListAurasCommand(const char * args);
355 bool HandleResetHonorCommand(const char * args);
356 bool HandleResetLevelCommand(const char * args);
357 bool HandleResetSpellsCommand(const char * args);
359 bool HandleResetStatsCommand(const char * args);
360 bool HandleResetTalentsCommand(const char * args);
362 bool HandleResetAllCommand(const char * args);
363 bool HandleTicketCommand(const char* args);
364 bool HandleDelTicketCommand(const char* args);
365 bool HandleMaxSkillCommand(const char* args);
366 bool HandleSetSkillCommand(const char* args);
367 bool HandleListCreatureCommand(const char* args);
368 bool HandleListItemCommand(const char* args);
369 bool HandleListObjectCommand(const char* args);
370 bool HandleNearObjectCommand(const char* args);
371 bool HandlePasswordCommand(const char* args);
372 bool HandleLockAccountCommand(const char* args);
373 bool HandleRespawnCommand(const char* args);
374 bool HandleWpAddCommand(const char* args);
375 bool HandleWpModifyCommand(const char* args);
376 bool HandleWpShowCommand(const char* args);
377 bool HandleWpExportCommand(const char* args);
378 bool HandleWpImportCommand(const char* args);
379 bool HandleFlyModeCommand(const char* args);
380 bool HandleSendOpcodeCommand(const char* args);
381 bool HandleSellErrorCommand(const char* args);
382 bool HandleBuyErrorCommand(const char* args);
383 bool HandleUpdateWorldStateCommand(const char* args);
384 bool HandlePlaySound2Command(const char* args);
385 bool HandleSendChannelNotifyCommand(const char* args);
386 bool HandleSendChatMsgCommand(const char* args);
387 bool HandleRenameCommand(const char * args);
388 bool HandleLoadPDumpCommand(const char *args);
389 bool HandleWritePDumpCommand(const char *args);
390 bool HandleChangeEntryCommand(const char *args);
391 bool HandleCastCommand(const char *args);
392 bool HandleCastBackCommand(const char *args);
393 bool HandleCastDistCommand(const char *args);
394 bool HandleCastSelfCommand(const char *args);
395 bool HandleCastTargetCommand(const char *args);
396 bool HandleComeToMeCommand(const char *args);
397 bool HandleCombatStopCommand(const char *args);
398 bool HandleSendMessageCommand(const char * args);
400 //! Development Commands
401 bool HandleSetValue(const char* args);
402 bool HandleGetValue(const char* args);
403 bool HandleSet32Bit(const char* args);
404 bool HandleMod32Value(const char* args);
405 bool HandleAddQuest(const char * args);
406 bool HandleRemoveQuest(const char * args);
407 bool HandleCompleteQuest(const char * args);
408 bool HandleSaveAllCommand(const char* args);
409 bool HandleGetItemState(const char * args);
410 bool HandleGetLootRecipient(const char * args);
412 Player* getSelectedPlayer();
413 Creature* getSelectedCreature();
414 Unit* getSelectedUnit();
415 char* extractKeyFromLink(char* text, char const* linkType, char** something1 = NULL);
416 char* extractKeyFromLink(char* text, char const* const* linkTypes, int* found_idx, char** something1 = NULL);
417 uint32 extractSpellIdFromLink(char* text);
418 GameTele const* extractGameTeleFromLink(char* text);
420 GameObject* GetObjectGlobalyWithGuidOrNearWithDbGuid(uint32 lowguid,uint32 entry);
422 // Utility methods for commands
423 void ShowTicket(uint64 guid, char const* text, char const* time);
424 uint32 GetTicketIDByNum(uint32 num);
425 bool LookupPlayerSearchCommand(QueryResult* result, int32 limit);
427 void SetSentErrorMessage(bool val){ sentErrorMessage = val;};
428 private:
429 WorldSession * m_session; // != NULL for chat command call and NULL for CLI command
431 // common global flag
432 static bool load_command_table;
433 bool sentErrorMessage;
436 class CliHandler : public ChatHandler
438 public:
439 typedef void Print(char const*);
440 explicit CliHandler(Print* zprint) : m_print(zprint) {}
442 // overwrite functions
443 const char *GetMangosString(int32 entry) const;
444 bool isAvailable(ChatCommand const& cmd) const;
445 void SendSysMessage(const char *str);
447 private:
448 Print* m_print;
451 char const *fmtstring( char const *format, ... );
453 #endif