Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
cs_lookup.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6/* ScriptData
7Name: lookup_commandscript
8%Complete: 100
9Comment: All lookup related commands
10Category: commandscripts
11EndScriptData */
12
13#include "AccountMgr.h"
14#include "Chat.h"
15#include "GameEventMgr.h"
16#include "ObjectAccessor.h"
17#include "ObjectMgr.h"
18#include "Player.h"
19#include "ReputationMgr.h"
20#include "ScriptMgr.h"
21#include "SpellInfo.h"
22
24{
25public:
26 lookup_commandscript() : CommandScript("lookup_commandscript") { }
27
28 std::vector<ChatCommand> GetCommands() const OVERRIDE
29 {
30 static std::vector<ChatCommand> lookupPlayerCommandTable =
31 {
35 };
36
37 static std::vector<ChatCommand> lookupSpellCommandTable =
38 {
41 };
42
43 static std::vector<ChatCommand> lookupCommandTable =
44 {
53 { "player", rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER, true, NULL, "", lookupPlayerCommandTable },
55 { "spell", rbac::RBAC_PERM_COMMAND_LOOKUP_SPELL, true, NULL, "", lookupSpellCommandTable },
60 };
61
62 static std::vector<ChatCommand> commandTable =
63 {
64 { "lookup", rbac::RBAC_PERM_COMMAND_LOOKUP, true, NULL, "", lookupCommandTable },
65 };
66 return commandTable;
67 }
68
69 static bool HandleLookupAreaCommand(ChatHandler* handler, char const* args)
70 {
71 if (!*args)
72 return false;
73
74 std::string namePart = args;
75 std::wstring wNamePart;
76
77 if (!Utf8toWStr(namePart, wNamePart))
78 return false;
79
80 bool found = false;
81 uint32 count = 0;
83
84 // converting string that we try to find to lower case
85 wstrToLower(wNamePart);
86
87 // Search in AreaTable.dbc
88 for (uint32 areaflag = 0; areaflag < sAreaStore.GetNumRows(); ++areaflag)
89 {
90 AreaTableEntry const* areaEntry = sAreaStore.LookupEntry(areaflag);
91 if (areaEntry)
92 {
93 std::string name = areaEntry->m_AreaName;
94 if (name.empty())
95 continue;
96
97 if (!Utf8FitTo(name, wNamePart))
98 continue;
99
100 if (maxResults && count++ == maxResults)
101 {
103 return true;
104 }
105
106 // send area in "id - [name]" format
107 std::ostringstream ss;
108 if (handler->GetSession())
109 ss << areaEntry->m_ID << " - |cffffffff|Harea:" << areaEntry->m_ID << "|h[" << name << "]|h|r";
110 else
111 ss << areaEntry->m_ID << " - " << name;
112
113 handler->SendSysMessage(ss.str().c_str());
114
115 if (!found)
116 found = true;
117 }
118 }
119
120 if (!found)
122
123 return true;
124 }
125
126 static bool HandleLookupCreatureCommand(ChatHandler* handler, char const* args)
127 {
128 if (!*args)
129 return false;
130
131 std::string namePart = args;
132 std::wstring wNamePart;
133
134 // converting string that we try to find to lower case
135 if (!Utf8toWStr(namePart, wNamePart))
136 return false;
137
138 wstrToLower(wNamePart);
139
140 bool found = false;
141 uint32 count = 0;
143
144 CreatureTemplateContainer const* ctc = sObjectMgr->GetCreatureTemplates();
145 for (CreatureTemplateContainer::const_iterator itr = ctc->begin(); itr != ctc->end(); ++itr)
146 {
147 uint32 id = itr->second.Entry;
148 uint8 localeIndex = handler->GetSessionDbLocaleIndex();
149 if (CreatureLocale const* creatureLocale = sObjectMgr->GetCreatureLocale(id))
150 {
151 if (creatureLocale->Name.size() > localeIndex && !creatureLocale->Name[localeIndex].empty())
152 {
153 std::string name = creatureLocale->Name[localeIndex];
154
155 if (Utf8FitTo(name, wNamePart))
156 {
157 if (maxResults && count++ == maxResults)
158 {
160 return true;
161 }
162
163 if (handler->GetSession())
164 handler->PSendSysMessage(LANG_CREATURE_ENTRY_LIST_CHAT, id, id, name.c_str());
165 else
166 handler->PSendSysMessage(LANG_CREATURE_ENTRY_LIST_CONSOLE, id, name.c_str());
167
168 if (!found)
169 found = true;
170
171 continue;
172 }
173 }
174 }
175
176 std::string name = itr->second.Name;
177 if (name.empty())
178 continue;
179
180 if (Utf8FitTo(name, wNamePart))
181 {
182 if (maxResults && count++ == maxResults)
183 {
185 return true;
186 }
187
188 if (handler->GetSession())
189 handler->PSendSysMessage(LANG_CREATURE_ENTRY_LIST_CHAT, id, id, name.c_str());
190 else
191 handler->PSendSysMessage(LANG_CREATURE_ENTRY_LIST_CONSOLE, id, name.c_str());
192
193 if (!found)
194 found = true;
195 }
196 }
197
198 if (!found)
200
201 return true;
202 }
203
204 static bool HandleLookupEventCommand(ChatHandler* handler, char const* args)
205 {
206 if (!*args)
207 return false;
208
209 std::string namePart = args;
210 std::wstring wNamePart;
211
212 // converting string that we try to find to lower case
213 if (!Utf8toWStr(namePart, wNamePart))
214 return false;
215
216 wstrToLower(wNamePart);
217
218 bool found = false;
219 uint32 count = 0;
221
222 GameEventMgr::GameEventDataMap const& events = sGameEventMgr->GetEventMap();
223 GameEventMgr::ActiveEvents const& activeEvents = sGameEventMgr->GetActiveEventList();
224
225 for (uint32 id = 0; id < events.size(); ++id)
226 {
227 GameEventData const& eventData = events[id];
228
229 std::string descr = eventData.description;
230 if (descr.empty())
231 continue;
232
233 if (Utf8FitTo(descr, wNamePart))
234 {
235 if (maxResults && count++ == maxResults)
236 {
238 return true;
239 }
240
241 char const* active = activeEvents.find(id) != activeEvents.end() ? handler->GetSkyFireString(LANG_ACTIVE) : "";
242
243 if (handler->GetSession())
244 handler->PSendSysMessage(LANG_EVENT_ENTRY_LIST_CHAT, id, id, eventData.description.c_str(), active);
245 else
246 handler->PSendSysMessage(LANG_EVENT_ENTRY_LIST_CONSOLE, id, eventData.description.c_str(), active);
247
248 if (!found)
249 found = true;
250 }
251 }
252
253 if (!found)
255
256 return true;
257 }
258
259 static bool HandleLookupFactionCommand(ChatHandler* handler, char const* args)
260 {
261 if (!*args)
262 return false;
263
264 // Can be NULL at console call
265 Player* target = handler->getSelectedPlayer();
266
267 std::string namePart = args;
268 std::wstring wNamePart;
269
270 if (!Utf8toWStr(namePart, wNamePart))
271 return false;
272
273 // converting string that we try to find to lower case
274 wstrToLower(wNamePart);
275
276 bool found = false;
277 uint32 count = 0;
279
280 for (uint32 id = 0; id < sFactionStore.GetNumRows(); ++id)
281 {
282 if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(id))
283 {
284 FactionState const* factionState = target ? target->GetReputationMgr().GetState(factionEntry) : NULL;
285
286 std::string name = factionEntry->name;
287 if (name.empty())
288 continue;
289
290 if (!Utf8FitTo(name, wNamePart))
291 continue;
292
293 if (maxResults && count++ == maxResults)
294 {
296 return true;
297 }
298
299 // send faction in "id - [faction] rank reputation [visible] [at war] [own team] [unknown] [invisible] [inactive]" format
300 // or "id - [faction] [no reputation]" format
301 std::ostringstream ss;
302 if (handler->GetSession())
303 ss << id << " - |cffffffff|Hfaction:" << id << "|h[" << name << "]|h|r";
304 else
305 ss << id << " - " << name;
306
307 if (factionState) // and then target != NULL also
308 {
309 uint32 index = target->GetReputationMgr().GetReputationRankStrIndex(factionEntry);
310 std::string rankName = handler->GetSkyFireString(index);
311
312 ss << ' ' << rankName << "|h|r (" << target->GetReputationMgr().GetReputation(factionEntry) << ')';
313
314 if (factionState->Flags & FACTION_FLAG_VISIBLE)
316 if (factionState->Flags & FACTION_FLAG_AT_WAR)
317 ss << handler->GetSkyFireString(LANG_FACTION_ATWAR);
318 if (factionState->Flags & FACTION_FLAG_PEACE_FORCED)
320 if (factionState->Flags & FACTION_FLAG_HIDDEN)
322 if (factionState->Flags & FACTION_FLAG_INVISIBLE_FORCED)
324 if (factionState->Flags & FACTION_FLAG_INACTIVE)
326 }
327 else
329
330 handler->SendSysMessage(ss.str().c_str());
331
332 if (!found)
333 found = true;
334 }
335 }
336
337 if (!found)
339 return true;
340 }
341
342 static bool HandleLookupItemCommand(ChatHandler* handler, char const* args)
343 {
344 if (!*args)
345 return false;
346
347 std::string namePart = args;
348 std::wstring wNamePart;
349
350 // converting string that we try to find to lower case
351 if (!Utf8toWStr(namePart, wNamePart))
352 return false;
353
354 wstrToLower(wNamePart);
355
356 bool found = false;
357 uint32 count = 0;
359
360 // Search in `item_template`
361 ItemTemplateContainer const* its = sObjectMgr->GetItemTemplateStore();
362 for (ItemTemplateContainer::const_iterator itr = its->begin(); itr != its->end(); ++itr)
363 {
364 int localeIndex = handler->GetSessionDbLocaleIndex();
365 if (localeIndex >= 0)
366 {
367 uint8 ulocaleIndex = uint8(localeIndex);
368 if (ItemLocale const* il = sObjectMgr->GetItemLocale(itr->second.ItemId))
369 {
370 if (il->Name.size() > ulocaleIndex && !il->Name[ulocaleIndex].empty())
371 {
372 std::string name = il->Name[ulocaleIndex];
373
374 if (Utf8FitTo(name, wNamePart))
375 {
376 if (maxResults && count++ == maxResults)
377 {
379 return true;
380 }
381
382 if (handler->GetSession())
383 handler->PSendSysMessage(LANG_ITEM_LIST_CHAT, itr->second.ItemId, itr->second.ItemId, name.c_str());
384 else
385 handler->PSendSysMessage(LANG_ITEM_LIST_CONSOLE, itr->second.ItemId, name.c_str());
386
387 if (!found)
388 found = true;
389
390 continue;
391 }
392 }
393 }
394 }
395
396 std::string name = itr->second.Name1;
397 if (name.empty())
398 continue;
399
400 if (Utf8FitTo(name, wNamePart))
401 {
402 if (maxResults && count++ == maxResults)
403 {
405 return true;
406 }
407
408 if (handler->GetSession())
409 handler->PSendSysMessage(LANG_ITEM_LIST_CHAT, itr->second.ItemId, itr->second.ItemId, name.c_str());
410 else
411 handler->PSendSysMessage(LANG_ITEM_LIST_CONSOLE, itr->second.ItemId, name.c_str());
412
413 if (!found)
414 found = true;
415 }
416 }
417
418 if (!found)
420
421 return true;
422 }
423
424 static bool HandleLookupItemSetCommand(ChatHandler* handler, char const* args)
425 {
426 if (!*args)
427 return false;
428
429 std::string namePart = args;
430 std::wstring wNamePart;
431
432 if (!Utf8toWStr(namePart, wNamePart))
433 return false;
434
435 // converting string that we try to find to lower case
436 wstrToLower(wNamePart);
437
438 bool found = false;
439 uint32 count = 0;
441
442 // Search in ItemSet.dbc
443 for (uint32 id = 0; id < sItemSetStore.GetNumRows(); id++)
444 {
445 ItemSetEntry const* set = sItemSetStore.LookupEntry(id);
446 if (set)
447 {
448 std::string name = set->name;
449 if (name.empty())
450 continue;
451
452 if (!Utf8FitTo(name, wNamePart))
453 continue;
454
455 if (maxResults && count++ == maxResults)
456 {
458 return true;
459 }
460
461 // send item set in "id - [namedlink locale]" format
462 if (handler->GetSession())
463 handler->PSendSysMessage(LANG_ITEMSET_LIST_CHAT, id, id, name.c_str(), "");
464 else
465 handler->PSendSysMessage(LANG_ITEMSET_LIST_CONSOLE, id, name.c_str(), "");
466
467 if (!found)
468 found = true;
469 }
470 }
471 if (!found)
473
474 return true;
475 }
476
477 static bool HandleLookupObjectCommand(ChatHandler* handler, char const* args)
478 {
479 if (!*args)
480 return false;
481
482 std::string namePart = args;
483 std::wstring wNamePart;
484
485 // converting string that we try to find to lower case
486 if (!Utf8toWStr(namePart, wNamePart))
487 return false;
488
489 wstrToLower(wNamePart);
490
491 bool found = false;
492 uint32 count = 0;
494
495 GameObjectTemplateContainer const* gotc = sObjectMgr->GetGameObjectTemplates();
496 for (GameObjectTemplateContainer::const_iterator itr = gotc->begin(); itr != gotc->end(); ++itr)
497 {
498 uint8 localeIndex = handler->GetSessionDbLocaleIndex();
499 if (GameObjectLocale const* objectLocalte = sObjectMgr->GetGameObjectLocale(itr->second.entry))
500 {
501 if (objectLocalte->Name.size() > localeIndex && !objectLocalte->Name[localeIndex].empty())
502 {
503 std::string name = objectLocalte->Name[localeIndex];
504
505 if (Utf8FitTo(name, wNamePart))
506 {
507 if (maxResults && count++ == maxResults)
508 {
510 return true;
511 }
512
513 if (handler->GetSession())
514 handler->PSendSysMessage(LANG_GO_ENTRY_LIST_CHAT, itr->second.entry, itr->second.entry, name.c_str());
515 else
516 handler->PSendSysMessage(LANG_GO_ENTRY_LIST_CONSOLE, itr->second.entry, name.c_str());
517
518 if (!found)
519 found = true;
520
521 continue;
522 }
523 }
524 }
525
526 std::string name = itr->second.name;
527 if (name.empty())
528 continue;
529
530 if (Utf8FitTo(name, wNamePart))
531 {
532 if (maxResults && count++ == maxResults)
533 {
535 return true;
536 }
537
538 if (handler->GetSession())
539 handler->PSendSysMessage(LANG_GO_ENTRY_LIST_CHAT, itr->second.entry, itr->second.entry, name.c_str());
540 else
541 handler->PSendSysMessage(LANG_GO_ENTRY_LIST_CONSOLE, itr->second.entry, name.c_str());
542
543 if (!found)
544 found = true;
545 }
546 }
547
548 if (!found)
550
551 return true;
552 }
553
554 static bool HandleLookupQuestCommand(ChatHandler* handler, char const* args)
555 {
556 if (!*args)
557 return false;
558
559 // can be NULL at console call
560 Player* target = handler->getSelectedPlayer();
561
562 std::string namePart = args;
563 std::wstring wNamePart;
564
565 // converting string that we try to find to lower case
566 if (!Utf8toWStr(namePart, wNamePart))
567 return false;
568
569 wstrToLower(wNamePart);
570
571 bool found = false;
572 uint32 count = 0;
574
575 ObjectMgr::QuestMap const& qTemplates = sObjectMgr->GetQuestTemplates();
576 for (ObjectMgr::QuestMap::const_iterator iter = qTemplates.begin(); iter != qTemplates.end(); ++iter)
577 {
578 Quest* qInfo = iter->second;
579
580 int localeIndex = handler->GetSessionDbLocaleIndex();
581 if (localeIndex >= 0)
582 {
583 uint8 ulocaleIndex = uint8(localeIndex);
584 if (QuestLocale const* questLocale = sObjectMgr->GetQuestLocale(qInfo->GetQuestId()))
585 {
586 if (questLocale->Title.size() > ulocaleIndex && !questLocale->Title[ulocaleIndex].empty())
587 {
588 std::string title = questLocale->Title[ulocaleIndex];
589
590 if (Utf8FitTo(title, wNamePart))
591 {
592 if (maxResults && count++ == maxResults)
593 {
595 return true;
596 }
597
598 char const* statusStr = "";
599
600 if (target)
601 {
602 QuestStatus status = target->GetQuestStatus(qInfo->GetQuestId());
603
604 switch (status)
605 {
607 statusStr = handler->GetSkyFireString(LANG_COMMAND_QUEST_COMPLETE);
608 break;
610 statusStr = handler->GetSkyFireString(LANG_COMMAND_QUEST_ACTIVE);
611 break;
613 statusStr = handler->GetSkyFireString(LANG_COMMAND_QUEST_REWARDED);
614 break;
615 default:
616 break;
617 }
618 }
619
620 if (handler->GetSession())
621 handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, qInfo->GetQuestId(), qInfo->GetQuestId(), qInfo->GetQuestLevel(), title.c_str(), statusStr);
622 else
623 handler->PSendSysMessage(LANG_QUEST_LIST_CONSOLE, qInfo->GetQuestId(), title.c_str(), statusStr);
624
625 if (!found)
626 found = true;
627
628 continue;
629 }
630 }
631 }
632 }
633
634 std::string title = qInfo->GetTitle();
635 if (title.empty())
636 continue;
637
638 if (Utf8FitTo(title, wNamePart))
639 {
640 if (maxResults && count++ == maxResults)
641 {
643 return true;
644 }
645
646 char const* statusStr = "";
647
648 if (target)
649 {
650 QuestStatus status = target->GetQuestStatus(qInfo->GetQuestId());
651
652 switch (status)
653 {
655 statusStr = handler->GetSkyFireString(LANG_COMMAND_QUEST_COMPLETE);
656 break;
658 statusStr = handler->GetSkyFireString(LANG_COMMAND_QUEST_ACTIVE);
659 break;
661 statusStr = handler->GetSkyFireString(LANG_COMMAND_QUEST_REWARDED);
662 break;
663 default:
664 break;
665 }
666 }
667
668 if (handler->GetSession())
669 handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, qInfo->GetQuestId(), qInfo->GetQuestId(), qInfo->GetQuestLevel(), title.c_str(), statusStr);
670 else
671 handler->PSendSysMessage(LANG_QUEST_LIST_CONSOLE, qInfo->GetQuestId(), title.c_str(), statusStr);
672
673 if (!found)
674 found = true;
675 }
676 }
677
678 if (!found)
680
681 return true;
682 }
683
684 static bool HandleLookupSkillCommand(ChatHandler* handler, char const* args)
685 {
686 if (!*args)
687 return false;
688
689 // can be NULL in console call
690 Player* target = handler->getSelectedPlayer();
691
692 std::string namePart = args;
693 std::wstring wNamePart;
694
695 if (!Utf8toWStr(namePart, wNamePart))
696 return false;
697
698 // converting string that we try to find to lower case
699 wstrToLower(wNamePart);
700
701 bool found = false;
702 uint32 count = 0;
704
705 // Search in SkillLine.dbc
706 for (uint32 id = 0; id < sSkillLineStore.GetNumRows(); id++)
707 {
708 SkillLineEntry const* skillInfo = sSkillLineStore.LookupEntry(id);
709 if (skillInfo)
710 {
711 std::string name = skillInfo->name;
712 if (name.empty())
713 continue;
714
715 if (!Utf8FitTo(name, wNamePart))
716 continue;
717
718 if (maxResults && count++ == maxResults)
719 {
721 return true;
722 }
723
724 char valStr[50] = "";
725 char const* knownStr = "";
726 if (target && target->HasSkill(id))
727 {
728 knownStr = handler->GetSkyFireString(LANG_KNOWN);
729 uint32 curValue = target->GetPureSkillValue(id);
730 uint32 maxValue = target->GetPureMaxSkillValue(id);
731 uint32 permValue = target->GetSkillPermBonusValue(id);
732 uint32 tempValue = target->GetSkillTempBonusValue(id);
733
734 char const* valFormat = handler->GetSkyFireString(LANG_SKILL_VALUES);
735 snprintf(valStr, 50, valFormat, curValue, maxValue, permValue, tempValue);
736 }
737
738 // send skill in "id - [namedlink locale]" format
739 if (handler->GetSession())
740 handler->PSendSysMessage(LANG_SKILL_LIST_CHAT, id, id, name.c_str(), "", knownStr, valStr);
741 else
742 handler->PSendSysMessage(LANG_SKILL_LIST_CONSOLE, id, name.c_str(), "", knownStr, valStr);
743
744 if (!found)
745 found = true;
746 }
747 }
748 if (!found)
750
751 return true;
752 }
753
754 static bool HandleLookupSpellCommand(ChatHandler* handler, char const* args)
755 {
756 if (!*args)
757 return false;
758
759 // can be NULL at console call
760 Player* target = handler->getSelectedPlayer();
761
762 std::string namePart = args;
763 std::wstring wNamePart;
764
765 if (!Utf8toWStr(namePart, wNamePart))
766 return false;
767
768 // converting string that we try to find to lower case
769 wstrToLower(wNamePart);
770
771 bool found = false;
772 uint32 count = 0;
774
775 // Search in Spell.dbc
776 for (uint32 id = 0; id < sSpellMgr->GetSpellInfoStoreSize(); id++)
777 {
778 SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(id);
779 if (spellInfo)
780 {
781 std::string name = spellInfo->SpellName;
782 if (name.empty())
783 continue;
784
785 if (!Utf8FitTo(name, wNamePart))
786 continue;
787
788 if (maxResults && count++ == maxResults)
789 {
791 return true;
792 }
793
794 bool known = target && target->HasSpell(id);
795 bool learn = (spellInfo->Effects[0].Effect == SPELL_EFFECT_LEARN_SPELL);
796
797 SpellInfo const* learnSpellInfo = sSpellMgr->GetSpellInfo(spellInfo->Effects[0].TriggerSpell);
798
799 uint32 talentCost = GetTalentSpellCost(id);
800
801 bool talent = (talentCost > 0);
802 bool passive = spellInfo->IsPassive();
803 bool active = target && target->HasAura(id);
804
805 // unit32 used to prevent interpreting uint8 as char at output
806 // find rank of learned spell for learning spell, or talent rank
807 uint32 rank = talentCost ? talentCost : learn && learnSpellInfo ? learnSpellInfo->GetRank() : spellInfo->GetRank();
808
809 // send spell in "id - [name, rank N] [talent] [passive] [learn] [known]" format
810 std::ostringstream ss;
811 if (handler->GetSession())
812 ss << id << " - |cffffffff|Hspell:" << id << "|h[" << name;
813 else
814 ss << id << " - " << name;
815
816 // include rank in link name
817 if (rank)
818 ss << handler->GetSkyFireString(LANG_SPELL_RANK) << rank;
819
820 if (handler->GetSession())
821 ss << "]|h|r";
822
823 if (talent)
824 ss << handler->GetSkyFireString(LANG_TALENT);
825 if (passive)
826 ss << handler->GetSkyFireString(LANG_PASSIVE);
827 if (learn)
828 ss << handler->GetSkyFireString(LANG_LEARN);
829 if (known)
830 ss << handler->GetSkyFireString(LANG_KNOWN);
831 if (active)
832 ss << handler->GetSkyFireString(LANG_ACTIVE);
833
834 handler->SendSysMessage(ss.str().c_str());
835
836 if (!found)
837 found = true;
838 }
839 }
840 if (!found)
842
843 return true;
844 }
845
846 static bool HandleLookupSpellIdCommand(ChatHandler* handler, char const* args)
847 {
848 if (!*args)
849 return false;
850
851 // can be NULL at console call
852 Player* target = handler->getSelectedPlayer();
853
854 uint32 id = atoi((char*)args);
855
856 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(id))
857 {
858 int locale = handler->GetSessionDbcLocale();
859 std::string name = spellInfo->SpellName;
860 if (name.empty())
861 {
863 return true;
864 }
865
866 bool known = target && target->HasSpell(id);
867 bool learn = (spellInfo->Effects[0].Effect == SPELL_EFFECT_LEARN_SPELL);
868
869 SpellInfo const* learnSpellInfo = sSpellMgr->GetSpellInfo(spellInfo->Effects[0].TriggerSpell);
870
871 uint32 talentCost = GetTalentSpellCost(id);
872
873 bool talent = (talentCost > 0);
874 bool passive = spellInfo->IsPassive();
875 bool active = target && target->HasAura(id);
876
877 // unit32 used to prevent interpreting uint8 as char at output
878 // find rank of learned spell for learning spell, or talent rank
879 uint32 rank = talentCost ? talentCost : learn && learnSpellInfo ? learnSpellInfo->GetRank() : spellInfo->GetRank();
880
881 // send spell in "id - [name, rank N] [talent] [passive] [learn] [known]" format
882 std::ostringstream ss;
883 if (handler->GetSession())
884 ss << id << " - |cffffffff|Hspell:" << id << "|h[" << name;
885 else
886 ss << id << " - " << name;
887
888 // include rank in link name
889 if (rank)
890 ss << handler->GetSkyFireString(LANG_SPELL_RANK) << rank;
891
892 if (handler->GetSession())
893 ss << ' ' << localeNames[locale] << "]|h|r";
894 else
895 ss << ' ' << localeNames[locale];
896
897 if (talent)
898 ss << handler->GetSkyFireString(LANG_TALENT);
899 if (passive)
900 ss << handler->GetSkyFireString(LANG_PASSIVE);
901 if (learn)
902 ss << handler->GetSkyFireString(LANG_LEARN);
903 if (known)
904 ss << handler->GetSkyFireString(LANG_KNOWN);
905 if (active)
906 ss << handler->GetSkyFireString(LANG_ACTIVE);
907
908 handler->SendSysMessage(ss.str().c_str());
909 }
910 else
912
913 return true;
914 }
915
916 static bool HandleLookupTaxiNodeCommand(ChatHandler* handler, const char* args)
917 {
918 if (!*args)
919 return false;
920
921 std::string namePart = args;
922 std::wstring wNamePart;
923
924 if (!Utf8toWStr(namePart, wNamePart))
925 return false;
926
927 // converting string that we try to find to lower case
928 wstrToLower(wNamePart);
929
930 bool found = false;
931 uint32 count = 0;
933
934 // Search in TaxiNodes.dbc
935 for (uint32 id = 0; id < sTaxiNodesStore.GetNumRows(); id++)
936 {
937 TaxiNodesEntry const* nodeEntry = sTaxiNodesStore.LookupEntry(id);
938 if (nodeEntry)
939 {
940 std::string name = nodeEntry->name;
941 if (name.empty())
942 continue;
943
944 if (!Utf8FitTo(name, wNamePart))
945 continue;
946
947 if (maxResults && count++ == maxResults)
948 {
950 return true;
951 }
952
953 // send taxinode in "id - [name] (Map:m X:x Y:y Z:z)" format
954 if (handler->GetSession())
955 handler->PSendSysMessage(LANG_TAXINODE_ENTRY_LIST_CHAT, id, id, name.c_str(), "",
956 nodeEntry->map_id, nodeEntry->x, nodeEntry->y, nodeEntry->z);
957 else
958 handler->PSendSysMessage(LANG_TAXINODE_ENTRY_LIST_CONSOLE, id, name.c_str(), "",
959 nodeEntry->map_id, nodeEntry->x, nodeEntry->y, nodeEntry->z);
960
961 if (!found)
962 found = true;
963 }
964 }
965 if (!found)
967
968 return true;
969 }
970
971 // Find tele in game_tele order by name
972 static bool HandleLookupTeleCommand(ChatHandler* handler, char const* args)
973 {
974 if (!*args)
975 {
977 handler->SetSentErrorMessage(true);
978 return false;
979 }
980
981 char const* str = strtok((char*)args, " ");
982 if (!str)
983 return false;
984
985 std::string namePart = str;
986 std::wstring wNamePart;
987
988 if (!Utf8toWStr(namePart, wNamePart))
989 return false;
990
991 // converting string that we try to find to lower case
992 wstrToLower(wNamePart);
993
994 std::ostringstream reply;
995 uint32 count = 0;
997 bool limitReached = false;
998
999 GameTeleContainer const& teleMap = sObjectMgr->GetGameTeleMap();
1000 for (GameTeleContainer::const_iterator itr = teleMap.begin(); itr != teleMap.end(); ++itr)
1001 {
1002 GameTele const* tele = &itr->second;
1003
1004 if (tele->wnameLow.find(wNamePart) == std::wstring::npos)
1005 continue;
1006
1007 if (maxResults && count++ == maxResults)
1008 {
1009 limitReached = true;
1010 break;
1011 }
1012
1013 if (handler->GetSession())
1014 reply << " |cffffffff|Htele:" << itr->first << "|h[" << tele->name << "]|h|r\n";
1015 else
1016 reply << " " << itr->first << ' ' << tele->name << "\n";
1017 }
1018
1019 if (reply.str().empty())
1021 else
1022 handler->PSendSysMessage(LANG_COMMAND_TELE_LOCATION, reply.str().c_str());
1023
1024 if (limitReached)
1026
1027 return true;
1028 }
1029
1030 static bool HandleLookupTitleCommand(ChatHandler* handler, char const* args)
1031 {
1032 if (!*args)
1033 return false;
1034
1035 // can be NULL in console call
1036 Player* target = handler->getSelectedPlayer();
1037
1038 // title name have single string arg for player name
1039 char const* targetName = target ? target->GetName().c_str() : "NAME";
1040
1041 std::string namePart = args;
1042 std::wstring wNamePart;
1043
1044 if (!Utf8toWStr(namePart, wNamePart))
1045 return false;
1046
1047 // converting string that we try to find to lower case
1048 wstrToLower(wNamePart);
1049
1050 uint32 counter = 0; // Counter for figure out that we found smth.
1052
1053 // Search in CharTitles.dbc
1054 for (uint32 id = 0; id < sCharTitlesStore.GetNumRows(); id++)
1055 {
1056 CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);
1057 if (titleInfo)
1058 {
1059 std::string name = titleInfo->name;
1060 if (name.empty())
1061 continue;
1062
1063 if (!Utf8FitTo(name, wNamePart))
1064 continue;
1065
1066 if (maxResults && counter == maxResults)
1067 {
1069 return true;
1070 }
1071
1072 char const* knownStr = target && target->HasTitle(titleInfo) ? handler->GetSkyFireString(LANG_KNOWN) : "";
1073
1074 char const* activeStr = target && target->GetUInt32Value(PLAYER_FIELD_PLAYER_TITLE) == titleInfo->bit_index
1075 ? handler->GetSkyFireString(LANG_ACTIVE)
1076 : "";
1077
1078 char titleNameStr[80];
1079 snprintf(titleNameStr, 80, name.c_str(), targetName);
1080
1081 // send title in "id (idx:idx) - [namedlink locale]" format
1082 if (handler->GetSession())
1083 handler->PSendSysMessage(LANG_TITLE_LIST_CHAT, id, titleInfo->bit_index, id, titleNameStr, "", knownStr, activeStr);
1084 else
1085 handler->PSendSysMessage(LANG_TITLE_LIST_CONSOLE, id, titleInfo->bit_index, titleNameStr, "", knownStr, activeStr);
1086
1087 ++counter;
1088 }
1089 }
1090 if (counter == 0) // if counter == 0 then we found nth
1092
1093 return true;
1094 }
1095
1096 static bool HandleLookupMapCommand(ChatHandler* handler, char const* args)
1097 {
1098 if (!*args)
1099 return false;
1100
1101 std::string namePart = args;
1102 std::wstring wNamePart;
1103
1104 if (!Utf8toWStr(namePart, wNamePart))
1105 return false;
1106
1107 wstrToLower(wNamePart);
1108
1109 uint32 counter = 0;
1111 uint8 locale = handler->GetSession() ? handler->GetSession()->GetSessionDbcLocale() : sWorld->GetDefaultDbcLocale();
1112
1113 // search in Map.dbc
1114 for (uint32 id = 0; id < sMapStore.GetNumRows(); id++)
1115 {
1116 if (MapEntry const* mapInfo = sMapStore.LookupEntry(id))
1117 {
1118 std::string name = mapInfo->name;
1119 if (name.empty())
1120 continue;
1121
1122 if (Utf8FitTo(name, wNamePart) && locale < TOTAL_LOCALES)
1123 {
1124 if (maxResults && counter == maxResults)
1125 {
1127 return true;
1128 }
1129
1130 std::ostringstream ss;
1131 ss << id << " - [" << name << ']';
1132
1133 if (mapInfo->IsContinent())
1134 ss << handler->GetSkyFireString(LANG_CONTINENT);
1135
1136 switch (mapInfo->map_type)
1137 {
1138 case MAP_DUNGEON:
1139 ss << handler->GetSkyFireString(LANG_INSTANCE);
1140 break;
1141 case MAP_RAID:
1142 ss << handler->GetSkyFireString(LANG_RAID);
1143 break;
1144 case MAP_BATTLEGROUND:
1145 ss << handler->GetSkyFireString(LANG_BATTLEGROUND);
1146 break;
1147 case MAP_ARENA:
1148 ss << handler->GetSkyFireString(LANG_ARENA);
1149 break;
1150 case MAP_SCENARIO:
1151 ss << handler->GetSkyFireString(LANG_SCENARIO);
1152 break;
1153 }
1154
1155 handler->SendSysMessage(ss.str().c_str());
1156
1157 ++counter;
1158 }
1159 }
1160 }
1161
1162 if (!counter)
1164
1165 return true;
1166 }
1167
1168 static bool HandleLookupPlayerIpCommand(ChatHandler* handler, char const* args)
1169 {
1170 std::string ip;
1171 int32 limit;
1172 char* limitStr;
1173
1174 Player* target = handler->getSelectedPlayer();
1175 if (!*args)
1176 {
1177 // NULL only if used from console
1178 if (!target || target == handler->GetSession()->GetPlayer())
1179 return false;
1180
1181 ip = target->GetSession()->GetRemoteAddress();
1182 limit = -1;
1183 }
1184 else
1185 {
1186 ip = strtok((char*)args, " ");
1187 limitStr = strtok(NULL, " ");
1188 limit = limitStr ? atoi(limitStr) : -1;
1189 }
1190
1191 PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BY_IP);
1192 stmt->setString(0, ip);
1193 PreparedQueryResult result = LoginDatabase.Query(stmt);
1194
1195 return LookupPlayerSearchCommand(result, limit, handler);
1196 }
1197
1198 static bool HandleLookupPlayerAccountCommand(ChatHandler* handler, char const* args)
1199 {
1200 if (!*args)
1201 return false;
1202
1203 char* accountStr = strtok((char*)args, " ");
1204 if (!accountStr)
1205 return false;
1206
1207 std::string account = accountStr;
1208 char* limitStr = strtok(NULL, " ");
1209 int32 limit = limitStr ? atoi(limitStr) : -1;
1210
1212 (account))
1213 return false;
1214
1216 stmt->setString(0, account);
1217 PreparedQueryResult result = LoginDatabase.Query(stmt);
1218
1219 return LookupPlayerSearchCommand(result, limit, handler);
1220 }
1221
1222 static bool HandleLookupPlayerEmailCommand(ChatHandler* handler, char const* args)
1223 {
1224 if (!*args)
1225 return false;
1226
1227 char* emailStr = strtok((char*)args, " ");
1228 if (!emailStr)
1229 return false;
1230
1231 std::string email = emailStr;
1232 char* limitStr = strtok(NULL, " ");
1233 int32 limit = limitStr ? atoi(limitStr) : -1;
1234
1236 stmt->setString(0, email);
1237 PreparedQueryResult result = LoginDatabase.Query(stmt);
1238
1239 return LookupPlayerSearchCommand(result, limit, handler);
1240 }
1241
1243 {
1244 if (!result)
1245 {
1247 handler->SetSentErrorMessage(true);
1248 return false;
1249 }
1250
1251 int32 counter = 0;
1252 uint32 count = 0;
1254
1255 do
1256 {
1257 if (maxResults && count++ == maxResults)
1258 {
1260 return true;
1261 }
1262
1263 Field* fields = result->Fetch();
1264 uint32 accountId = fields[0].GetUInt32();
1265 std::string accountName = fields[1].GetString();
1266
1268 stmt->setUInt32(0, accountId);
1269 PreparedQueryResult result2 = CharacterDatabase.Query(stmt);
1270
1271 if (result2)
1272 {
1273 handler->PSendSysMessage(LANG_LOOKUP_PLAYER_ACCOUNT, accountName.c_str(), accountId);
1274
1275 do
1276 {
1277 Field* characterFields = result2->Fetch();
1278 uint32 guid = characterFields[0].GetUInt32();
1279 std::string name = characterFields[1].GetString();
1280
1281 handler->PSendSysMessage(LANG_LOOKUP_PLAYER_CHARACTER, name.c_str(), guid);
1282 ++counter;
1283 } while (result2->NextRow() && (limit == -1 || counter < limit));
1284 }
1285 } while (result->NextRow());
1286
1287 if (counter == 0) // empty accounts only
1288 {
1290 handler->SetSentErrorMessage(true);
1291 return false;
1292 }
1293
1294 return true;
1295 }
1296};
1297
@ CHAR_SEL_CHAR_GUID_NAME_BY_ACC
char const * localeNames[TOTAL_LOCALES]
Definition Common.cpp:8
const uint8 TOTAL_LOCALES
Definition Common.h:153
UNORDERED_MAP< uint32, CreatureTemplate > CreatureTemplateContainer
Definition Creature.h:187
@ MAP_SCENARIO
Definition DBCEnums.h:398
@ MAP_DUNGEON
Definition DBCEnums.h:394
@ MAP_BATTLEGROUND
Definition DBCEnums.h:396
@ MAP_ARENA
Definition DBCEnums.h:397
@ MAP_RAID
Definition DBCEnums.h:395
DBCStorage< AreaTableEntry > sAreaStore(AreaTableEntryfmt)
DBCStorage< CharTitlesEntry > sCharTitlesStore(CharTitlesEntryfmt)
DBCStorage< FactionEntry > sFactionStore(FactionEntryfmt)
DBCStorage< ItemSetEntry > sItemSetStore(ItemSetEntryfmt)
uint32 GetTalentSpellCost(uint32 spellId)
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
DBCStorage< TaxiNodesEntry > sTaxiNodesStore(TaxiNodesEntryfmt)
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
#define sGameEventMgr
UNORDERED_MAP< uint32, GameObjectTemplate > GameObjectTemplateContainer
Definition GameObject.h:529
UNORDERED_MAP< uint32, ItemTemplate > ItemTemplateContainer
@ LANG_FACTION_PEACE_FORCED
Definition Language.h:321
@ LANG_COMMAND_TELE_PARAMETER
Definition Language.h:174
@ LANG_COMMAND_NOAREAFOUND
Definition Language.h:422
@ LANG_ITEM_LIST_CHAT
Definition Language.h:503
@ LANG_COMMAND_TELE_LOCATION
Definition Language.h:177
@ LANG_FACTION_ATWAR
Definition Language.h:320
@ LANG_COMMAND_QUEST_REWARDED
Definition Language.h:455
@ LANG_EVENT_ENTRY_LIST_CONSOLE
Definition Language.h:893
@ LANG_COMMAND_NOTAXINODEFOUND
Definition Language.h:446
@ LANG_SKILL_LIST_CHAT
Definition Language.h:512
@ LANG_GO_ENTRY_LIST_CONSOLE
Definition Language.h:897
@ LANG_COMMAND_TELE_NOLOCATION
Definition Language.h:175
@ LANG_ITEMSET_LIST_CHAT
Definition Language.h:509
@ LANG_KNOWN
Definition Language.h:44
@ LANG_EVENT_ENTRY_LIST_CHAT
Definition Language.h:588
@ LANG_COMMAND_NOCREATUREFOUND
Definition Language.h:427
@ LANG_CREATURE_ENTRY_LIST_CONSOLE
Definition Language.h:894
@ LANG_FACTION_NOREPUTATION
Definition Language.h:334
@ LANG_SKILL_LIST_CONSOLE
Definition Language.h:899
@ LANG_TALENT
Definition Language.h:47
@ LANG_FACTION_INVISIBLE_FORCED
Definition Language.h:323
@ LANG_COMMAND_NOITEMFOUND
Definition Language.h:416
@ LANG_QUEST_LIST_CONSOLE
Definition Language.h:898
@ LANG_COMMAND_QUEST_ACTIVE
Definition Language.h:457
@ LANG_LOOKUP_PLAYER_CHARACTER
Definition Language.h:336
@ LANG_GO_ENTRY_LIST_CHAT
Definition Language.h:507
@ LANG_LEARN
Definition Language.h:45
@ LANG_COMMAND_NOMAPFOUND
Definition Language.h:1080
@ LANG_TITLE_LIST_CHAT
Definition Language.h:356
@ LANG_BATTLEGROUND
Definition Language.h:1083
@ LANG_COMMAND_NOSKILLFOUND
Definition Language.h:424
@ LANG_COMMAND_NOTITLEFOUND
Definition Language.h:358
@ LANG_COMMAND_NOITEMSETFOUND
Definition Language.h:423
@ LANG_TAXINODE_ENTRY_LIST_CHAT
Definition Language.h:918
@ LANG_FACTION_HIDDEN
Definition Language.h:322
@ LANG_COMMAND_NOSPELLFOUND
Definition Language.h:425
@ LANG_COMMAND_LOOKUP_MAX_RESULTS
Definition Language.h:1097
@ LANG_COMMAND_NOQUESTFOUND
Definition Language.h:426
@ LANG_ARENA
Definition Language.h:1084
@ LANG_INSTANCE
Definition Language.h:1082
@ LANG_COMMAND_FACTION_NOTFOUND
Definition Language.h:314
@ LANG_COMMAND_NOGAMEOBJECTFOUND
Definition Language.h:428
@ LANG_ACTIVE
Definition Language.h:48
@ LANG_SPELL_RANK
Definition Language.h:43
@ LANG_TAXINODE_ENTRY_LIST_CONSOLE
Definition Language.h:919
@ LANG_COMMAND_QUEST_COMPLETE
Definition Language.h:456
@ LANG_CONTINENT
Definition Language.h:1081
@ LANG_SKILL_VALUES
Definition Language.h:912
@ LANG_NOEVENTFOUND
Definition Language.h:589
@ LANG_TITLE_LIST_CONSOLE
Definition Language.h:357
@ LANG_PASSIVE
Definition Language.h:46
@ LANG_ITEMSET_LIST_CONSOLE
Definition Language.h:896
@ LANG_LOOKUP_PLAYER_ACCOUNT
Definition Language.h:335
@ LANG_NO_PLAYERS_FOUND
Definition Language.h:337
@ LANG_RAID
Definition Language.h:1085
@ LANG_CREATURE_ENTRY_LIST_CHAT
Definition Language.h:505
@ LANG_FACTION_INACTIVE
Definition Language.h:324
@ LANG_SCENARIO
Definition Language.h:1086
@ LANG_FACTION_VISIBLE
Definition Language.h:319
@ LANG_ITEM_LIST_CONSOLE
Definition Language.h:895
@ LANG_QUEST_LIST_CHAT
Definition Language.h:504
@ LOGIN_SEL_ACCOUNT_LIST_BY_EMAIL
@ LOGIN_SEL_ACCOUNT_BY_IP
@ LOGIN_SEL_ACCOUNT_LIST_BY_NAME
#define sObjectMgr
Definition ObjectMgr.h:1617
UNORDERED_MAP< uint32, GameTele > GameTeleContainer
Definition ObjectMgr.h:135
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Definition QueryResult.h:94
QuestStatus
Definition QuestDef.h:85
@ QUEST_STATUS_REWARDED
Definition QuestDef.h:92
@ QUEST_STATUS_INCOMPLETE
Definition QuestDef.h:89
@ QUEST_STATUS_COMPLETE
Definition QuestDef.h:87
@ FACTION_FLAG_INACTIVE
@ FACTION_FLAG_PEACE_FORCED
@ FACTION_FLAG_INVISIBLE_FORCED
@ FACTION_FLAG_HIDDEN
@ FACTION_FLAG_VISIBLE
@ FACTION_FLAG_AT_WAR
@ SPELL_EFFECT_LEARN_SPELL
#define sSpellMgr
Definition SpellMgr.h:744
@ PLAYER_FIELD_PLAYER_TITLE
bool Utf8FitTo(const std::string &str, const std::wstring &search)
Definition Util.cpp:473
bool Utf8toWStr(char const *utf8str, size_t csize, wchar_t *wstr, size_t &wsize)
Definition Util.cpp:305
void wstrToLower(std::wstring &str)
Definition Util.h:314
static bool normalizeString(std::string &utf8String)
Player * getSelectedPlayer()
Definition Chat.cpp:829
WorldSession * GetSession()
Definition Chat.h:43
virtual LocaleConstant GetSessionDbcLocale() const
Definition Chat.cpp:1277
virtual int GetSessionDbLocaleIndex() const
Definition Chat.cpp:1282
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
Definition Chat.cpp:221
void SetSentErrorMessage(bool val)
Definition Chat.h:114
virtual void SendSysMessage(const char *str)
Definition Chat.cpp:153
virtual const char * GetSkyFireString(int32 entry) const
Definition Chat.cpp:68
CommandScript(const char *name)
Definition Field.h:16
std::string GetString() const
Definition Field.h:228
uint32 GetUInt32() const
Definition Field.h:105
std::vector< GameEventData > GameEventDataMap
std::set< uint16 > ActiveEvents
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:325
UNORDERED_MAP< uint32, Quest * > QuestMap
Definition ObjectMgr.h:722
bool HasTitle(uint32 bitIndex)
Definition Player.cpp:20424
uint16 GetPureSkillValue(uint32 skill) const
Definition Player.cpp:6631
int16 GetSkillTempBonusValue(uint32 skill) const
Definition Player.cpp:6661
int16 GetSkillPermBonusValue(uint32 skill) const
Definition Player.cpp:6646
WorldSession * GetSession() const
Definition Player.h:2417
bool HasSkill(uint32 skill) const
Definition Player.cpp:6542
uint16 GetPureMaxSkillValue(uint32 skill) const
Definition Player.cpp:6599
QuestStatus GetQuestStatus(uint32 quest_id) const
bool HasSpell(uint32 spell) const override
Definition Player.cpp:4674
ReputationMgr & GetReputationMgr()
Definition Player.h:2555
void setString(const uint8 index, const std::string &value)
void setUInt32(const uint8 index, const uint32 value)
int32 GetQuestLevel() const
Definition QuestDef.h:275
uint32 GetQuestId() const
Definition QuestDef.h:270
std::string const & GetTitle() const
Definition QuestDef.h:297
int32 GetReputation(uint32 faction_id) const
FactionState const * GetState(FactionEntry const *factionEntry) const
uint32 GetReputationRankStrIndex(FactionEntry const *factionEntry) const
uint32 TriggerSpell
Definition SpellInfo.h:108
SpellEffectInfo Effects[MAX_SPELL_EFFECTS]
Definition SpellInfo.h:255
bool IsPassive() const
uint8 GetRank() const
char * SpellName
Definition SpellInfo.h:222
bool HasAura(uint32 spellId, uint64 casterGUID=0, uint64 itemCasterGUID=0, uint32 reqEffMask=0) const
std::string const & GetName() const
Definition Object.h:664
LocaleConstant GetSessionDbcLocale() const
Player * GetPlayer() const
std::string const & GetRemoteAddress()
static bool HandleLookupPlayerAccountCommand(ChatHandler *handler, char const *args)
static bool HandleLookupSkillCommand(ChatHandler *handler, char const *args)
static bool HandleLookupItemCommand(ChatHandler *handler, char const *args)
static bool HandleLookupSpellIdCommand(ChatHandler *handler, char const *args)
static bool HandleLookupPlayerEmailCommand(ChatHandler *handler, char const *args)
static bool HandleLookupFactionCommand(ChatHandler *handler, char const *args)
static bool HandleLookupPlayerIpCommand(ChatHandler *handler, char const *args)
static bool HandleLookupMapCommand(ChatHandler *handler, char const *args)
static bool HandleLookupAreaCommand(ChatHandler *handler, char const *args)
Definition cs_lookup.cpp:69
static bool HandleLookupTaxiNodeCommand(ChatHandler *handler, const char *args)
static bool LookupPlayerSearchCommand(PreparedQueryResult result, int32 limit, ChatHandler *handler)
static bool HandleLookupItemSetCommand(ChatHandler *handler, char const *args)
std::vector< ChatCommand > GetCommands() const OVERRIDE
Definition cs_lookup.cpp:28
static bool HandleLookupObjectCommand(ChatHandler *handler, char const *args)
static bool HandleLookupCreatureCommand(ChatHandler *handler, char const *args)
static bool HandleLookupSpellCommand(ChatHandler *handler, char const *args)
static bool HandleLookupQuestCommand(ChatHandler *handler, char const *args)
static bool HandleLookupTitleCommand(ChatHandler *handler, char const *args)
static bool HandleLookupEventCommand(ChatHandler *handler, char const *args)
static bool HandleLookupTeleCommand(ChatHandler *handler, char const *args)
void AddSC_lookup_commandscript()
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
Definition Main.cpp:41
#define sWorld
Definition World.h:910
@ CONFIG_MAX_RESULTS_LOOKUP_COMMANDS
Definition World.h:327
@ RBAC_PERM_COMMAND_LOOKUP_QUEST
Definition RBAC.h:338
@ RBAC_PERM_COMMAND_LOOKUP_EVENT
Definition RBAC.h:333
@ RBAC_PERM_COMMAND_LOOKUP_SPELL
Definition RBAC.h:344
@ RBAC_PERM_COMMAND_LOOKUP_PLAYER_EMAIL
Definition RBAC.h:342
@ RBAC_PERM_COMMAND_LOOKUP_OBJECT
Definition RBAC.h:337
@ RBAC_PERM_COMMAND_LOOKUP_PLAYER
Definition RBAC.h:339
@ RBAC_PERM_COMMAND_LOOKUP_AREA
Definition RBAC.h:331
@ RBAC_PERM_COMMAND_LOOKUP_ITEMSET
Definition RBAC.h:336
@ RBAC_PERM_COMMAND_LOOKUP_FACTION
Definition RBAC.h:334
@ RBAC_PERM_COMMAND_LOOKUP_TELE
Definition RBAC.h:347
@ RBAC_PERM_COMMAND_LOOKUP_PLAYER_IP
Definition RBAC.h:340
@ RBAC_PERM_COMMAND_LOOKUP
Definition RBAC.h:330
@ RBAC_PERM_COMMAND_LOOKUP_SPELL_ID
Definition RBAC.h:345
@ RBAC_PERM_COMMAND_LOOKUP_SKILL
Definition RBAC.h:343
@ RBAC_PERM_COMMAND_LOOKUP_CREATURE
Definition RBAC.h:332
@ RBAC_PERM_COMMAND_LOOKUP_TITLE
Definition RBAC.h:348
@ RBAC_PERM_COMMAND_LOOKUP_PLAYER_ACCOUNT
Definition RBAC.h:341
@ RBAC_PERM_COMMAND_LOOKUP_ITEM
Definition RBAC.h:335
@ RBAC_PERM_COMMAND_LOOKUP_MAP
Definition RBAC.h:349
@ RBAC_PERM_COMMAND_LOOKUP_TAXINODE
Definition RBAC.h:346
LoginDatabaseWorkerPool LoginDatabase
Definition Main.cpp:54
uint32 m_ID
char * m_AreaName
uint32 bit_index
char * name
std::string description
std::string name
Definition ObjectMgr.h:131
std::wstring wnameLow
Definition ObjectMgr.h:132
char * name
char * name
float z
char * name
uint32 map_id
float x
float y