AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
lookup_commandscript Class Reference
Inheritance diagram for lookup_commandscript:
CommandScript ScriptObject

Public Member Functions

 lookup_commandscript ()
 
ChatCommandTable GetCommands () const override
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 
uint16 GetTotalAvailableHooks ()
 

Static Public Member Functions

static bool HandleLookupAreaCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupCreatureCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupEventCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupFactionCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupItemCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupItemSetCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupObjectCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupQuestCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupSkillCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupSpellCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupSpellIdCommand (ChatHandler *handler, SpellInfo const *spell)
 
static bool HandleLookupTaxiNodeCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupTeleCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupTitleCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupMapCommand (ChatHandler *handler, Tail namePart)
 
static bool HandleLookupPlayerIpCommand (ChatHandler *handler, Optional< Tail > ip, Optional< int32 > limit)
 
static bool HandleLookupPlayerAccountCommand (ChatHandler *handler, std::string account, Optional< int32 > limit)
 
static bool HandleLookupPlayerEmailCommand (ChatHandler *handler, std::string email, Optional< int32 > limit)
 
static bool LookupPlayerSearchCommand (PreparedQueryResult result, int32 limit, ChatHandler *handler)
 

Additional Inherited Members

- Protected Member Functions inherited from CommandScript
 CommandScript (const char *name)
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name, uint16 totalAvailableHooks=0)
 
virtual ~ScriptObject ()=default
 

Detailed Description

Constructor & Destructor Documentation

◆ lookup_commandscript()

lookup_commandscript::lookup_commandscript ( )
inline
36: CommandScript("lookup_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable lookup_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

39 {
40 static ChatCommandTable lookupPlayerCommandTable =
41 {
45 };
46
47 static ChatCommandTable lookupCommandTable =
48 {
65 { "player", lookupPlayerCommandTable },
66 };
67
68 static ChatCommandTable commandTable =
69 {
70 { "lookup", lookupCommandTable }
71 };
72
73 return commandTable;
74 }
static bool HandleLookupTaxiNodeCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:1261
static bool HandleLookupPlayerIpCommand(ChatHandler *handler, Optional< Tail > ip, Optional< int32 > limit)
Definition cs_lookup.cpp:1580
static bool HandleLookupEventCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:263
static bool HandleLookupMapCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:1504
static bool HandleLookupItemCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:455
static bool HandleLookupPlayerEmailCommand(ChatHandler *handler, std::string email, Optional< int32 > limit)
Definition cs_lookup.cpp:1619
static bool HandleLookupItemSetCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:559
static bool HandleLookupObjectCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:650
static bool HandleLookupAreaCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:76
static bool HandleLookupTeleCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:1352
static bool HandleLookupFactionCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:317
static bool HandleLookupQuestCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:745
static bool HandleLookupSkillCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:891
static bool HandleLookupTitleCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:1414
static bool HandleLookupSpellIdCommand(ChatHandler *handler, SpellInfo const *spell)
Definition cs_lookup.cpp:1148
static bool HandleLookupSpellCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:996
static bool HandleLookupCreatureCommand(ChatHandler *handler, Tail namePart)
Definition cs_lookup.cpp:167
static bool HandleLookupPlayerAccountCommand(ChatHandler *handler, std::string account, Optional< int32 > limit)
Definition cs_lookup.cpp:1605
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46
@ RBAC_PERM_COMMAND_LOOKUP_QUEST
Definition RBAC.h:282
@ RBAC_PERM_COMMAND_LOOKUP_EVENT
Definition RBAC.h:277
@ RBAC_PERM_COMMAND_LOOKUP_SPELL
Definition RBAC.h:288
@ RBAC_PERM_COMMAND_LOOKUP_PLAYER_EMAIL
Definition RBAC.h:286
@ RBAC_PERM_COMMAND_LOOKUP_OBJECT
Definition RBAC.h:281
@ RBAC_PERM_COMMAND_LOOKUP_AREA
Definition RBAC.h:275
@ RBAC_PERM_COMMAND_LOOKUP_ITEMSET
Definition RBAC.h:280
@ RBAC_PERM_COMMAND_LOOKUP_FACTION
Definition RBAC.h:278
@ RBAC_PERM_COMMAND_LOOKUP_TELE
Definition RBAC.h:291
@ RBAC_PERM_COMMAND_LOOKUP_PLAYER_IP
Definition RBAC.h:284
@ RBAC_PERM_COMMAND_LOOKUP_SPELL_ID
Definition RBAC.h:289
@ RBAC_PERM_COMMAND_LOOKUP_SKILL
Definition RBAC.h:287
@ RBAC_PERM_COMMAND_LOOKUP_CREATURE
Definition RBAC.h:276
@ RBAC_PERM_COMMAND_LOOKUP_TITLE
Definition RBAC.h:292
@ RBAC_PERM_COMMAND_LOOKUP_PLAYER_ACCOUNT
Definition RBAC.h:285
@ RBAC_PERM_COMMAND_LOOKUP_ITEM
Definition RBAC.h:279
@ RBAC_PERM_COMMAND_LOOKUP_MAP
Definition RBAC.h:293
@ RBAC_PERM_COMMAND_LOOKUP_TAXINODE
Definition RBAC.h:290

References HandleLookupAreaCommand(), HandleLookupCreatureCommand(), HandleLookupEventCommand(), HandleLookupFactionCommand(), HandleLookupItemCommand(), HandleLookupItemSetCommand(), HandleLookupMapCommand(), HandleLookupObjectCommand(), HandleLookupPlayerAccountCommand(), HandleLookupPlayerEmailCommand(), HandleLookupPlayerIpCommand(), HandleLookupQuestCommand(), HandleLookupSkillCommand(), HandleLookupSpellCommand(), HandleLookupSpellIdCommand(), HandleLookupTaxiNodeCommand(), HandleLookupTeleCommand(), HandleLookupTitleCommand(), rbac::RBAC_PERM_COMMAND_LOOKUP_AREA, rbac::RBAC_PERM_COMMAND_LOOKUP_CREATURE, rbac::RBAC_PERM_COMMAND_LOOKUP_EVENT, rbac::RBAC_PERM_COMMAND_LOOKUP_FACTION, rbac::RBAC_PERM_COMMAND_LOOKUP_ITEM, rbac::RBAC_PERM_COMMAND_LOOKUP_ITEMSET, rbac::RBAC_PERM_COMMAND_LOOKUP_MAP, rbac::RBAC_PERM_COMMAND_LOOKUP_OBJECT, rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER_ACCOUNT, rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER_EMAIL, rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER_IP, rbac::RBAC_PERM_COMMAND_LOOKUP_QUEST, rbac::RBAC_PERM_COMMAND_LOOKUP_SKILL, rbac::RBAC_PERM_COMMAND_LOOKUP_SPELL, rbac::RBAC_PERM_COMMAND_LOOKUP_SPELL_ID, rbac::RBAC_PERM_COMMAND_LOOKUP_TAXINODE, rbac::RBAC_PERM_COMMAND_LOOKUP_TELE, and rbac::RBAC_PERM_COMMAND_LOOKUP_TITLE.

◆ HandleLookupAreaCommand()

static bool lookup_commandscript::HandleLookupAreaCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
77 {
78 if (namePart.empty())
79 {
80 return false;
81 }
82
83 std::wstring wNamePart;
84
85 if (!Utf8toWStr(namePart, wNamePart))
86 {
87 return false;
88 }
89
90 bool found = false;
91 uint32 count = 0;
92 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
93
94 // converting string that we try to find to lower case
95 wstrToLower(wNamePart);
96
97 // Search in AreaTable.dbc
98 for (auto areaEntry : sAreaTableStore)
99 {
100 int locale = handler->GetSessionDbcLocale();
101 std::string name = areaEntry->area_name[locale];
102
103 if (name.empty())
104 {
105 continue;
106 }
107
108 if (!Utf8FitTo(name, wNamePart))
109 {
110 locale = 0;
111 for (; locale < TOTAL_LOCALES; ++locale)
112 {
113 if (locale == handler->GetSessionDbcLocale())
114 {
115 continue;
116 }
117
118 name = areaEntry->area_name[locale];
119 if (name.empty())
120 {
121 continue;
122 }
123
124 if (Utf8FitTo(name, wNamePart))
125 {
126 break;
127 }
128 }
129 }
130
131 if (locale < TOTAL_LOCALES)
132 {
133 if (maxResults && count++ == maxResults)
134 {
136 return true;
137 }
138
139 // send area in "id - [name]" format
140 std::ostringstream ss;
141 if (handler->GetSession())
142 {
143 ss << areaEntry->ID << " - |cffffffff|Harea:" << areaEntry->ID << "|h[" << name << ' ' << localeNames[locale] << "]|h|r";
144 }
145 else
146 {
147 ss << areaEntry->ID << " - " << name << ' ' << localeNames[locale];
148 }
149
150 handler->SendSysMessage(ss.str().c_str());
151
152 if (!found)
153 {
154 found = true;
155 }
156 }
157 }
158
159 if (!found)
160 {
162 }
163
164 return true;
165 }
char const * localeNames[TOTAL_LOCALES]
Definition Common.cpp:20
@ TOTAL_LOCALES
Definition Common.h:128
DBCStorage< AreaTableEntry > sAreaTableStore(AreaTableEntryfmt)
std::uint32_t uint32
Definition Define.h:107
@ LANG_COMMAND_NOAREAFOUND
Definition Language.h:483
@ LANG_COMMAND_LOOKUP_MAX_RESULTS
Definition Language.h:1091
bool Utf8toWStr(char const *utf8str, std::size_t csize, wchar_t *wstr, std::size_t &wsize)
Definition Util.cpp:281
void wstrToLower(std::wstring &str)
Definition Util.cpp:382
bool Utf8FitTo(std::string_view str, std::wstring_view search)
Definition Util.cpp:481
@ CONFIG_MAX_RESULTS_LOOKUP_COMMANDS
Definition WorldConfig.h:315
void PSendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:219
WorldSession * GetSession()
Definition Chat.h:242
virtual LocaleConstant GetSessionDbcLocale() const
Definition Chat.cpp:878
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:168
#define sWorld
Definition World.h:317

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOAREAFOUND, localeNames, ChatHandler::PSendSysMessage(), sAreaTableStore, ChatHandler::SendSysMessage(), sWorld, TOTAL_LOCALES, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupCreatureCommand()

static bool lookup_commandscript::HandleLookupCreatureCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
168 {
169 if (namePart.empty())
170 {
171 return false;
172 }
173
174 std::wstring wNamePart;
175
176 // converting string that we try to find to lower case
177 if (!Utf8toWStr(namePart, wNamePart))
178 {
179 return false;
180 }
181
182 wstrToLower(wNamePart);
183
184 bool found = false;
185 uint32 count = 0;
186 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
187
188 for (auto const& [entry, creatureTemplate] : *sObjectMgr->GetCreatureTemplates())
189 {
190 uint32 id = creatureTemplate.Entry;
191 uint8 localeIndex = handler->GetSessionDbLocaleIndex();
192 if (CreatureLocale const* creatureLocale = sObjectMgr->GetCreatureLocale(id))
193 {
194 if (creatureLocale->Name.size() > localeIndex && !creatureLocale->Name[localeIndex].empty())
195 {
196 std::string name = creatureLocale->Name[localeIndex];
197
198 if (Utf8FitTo(name, wNamePart))
199 {
200 if (maxResults && count++ == maxResults)
201 {
203 return true;
204 }
205
206 if (handler->GetSession())
207 {
208 handler->PSendSysMessage(LANG_CREATURE_ENTRY_LIST_CHAT, id, id, name);
209 }
210 else
211 {
213 }
214
215 if (!found)
216 {
217 found = true;
218 }
219
220 continue;
221 }
222 }
223 }
224
225 std::string name = creatureTemplate.Name;
226 if (name.empty())
227 {
228 continue;
229 }
230
231 if (Utf8FitTo(name, wNamePart))
232 {
233 if (maxResults && count++ == maxResults)
234 {
236 return true;
237 }
238
239 if (handler->GetSession())
240 {
241 handler->PSendSysMessage(LANG_CREATURE_ENTRY_LIST_CHAT, id, id, name);
242 }
243 else
244 {
246 }
247
248 if (!found)
249 {
250 found = true;
251 }
252 }
253 }
254
255 if (!found)
256 {
258 }
259
260 return true;
261 }
std::uint8_t uint8
Definition Define.h:109
@ LANG_COMMAND_NOCREATUREFOUND
Definition Language.h:488
@ LANG_CREATURE_ENTRY_LIST_CONSOLE
Definition Language.h:905
@ LANG_CREATURE_ENTRY_LIST_CHAT
Definition Language.h:566
#define sObjectMgr
Definition ObjectMgr.h:1723
virtual int GetSessionDbLocaleIndex() const
Definition Chat.cpp:883
Definition CreatureData.h:343

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetSession(), ChatHandler::GetSessionDbLocaleIndex(), LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOCREATUREFOUND, LANG_CREATURE_ENTRY_LIST_CHAT, LANG_CREATURE_ENTRY_LIST_CONSOLE, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sObjectMgr, sWorld, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupEventCommand()

static bool lookup_commandscript::HandleLookupEventCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
264 {
265 if (namePart.empty())
266 return false;
267
268 std::wstring wNamePart;
269
270 // converting string that we try to find to lower case
271 if (!Utf8toWStr(namePart, wNamePart))
272 return false;
273
274 wstrToLower(wNamePart);
275
276 bool found = false;
277 uint32 count = 0;
278 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
279
281 GameEventMgr::ActiveEvents const& activeEvents = sGameEventMgr->GetActiveEventList();
282
283 for (uint32 id = 0; id < events.size(); ++id)
284 {
285 GameEventData const& eventData = events[id];
286
287 std::string descr = eventData.Description;
288 if (descr.empty())
289 continue;
290
291 if (Utf8FitTo(descr, wNamePart))
292 {
293 if (maxResults && count++ == maxResults)
294 {
296 return true;
297 }
298
299 std::string active = activeEvents.find(id) != activeEvents.end() ? handler->GetAcoreString(LANG_ACTIVE) : "";
300
301 if (handler->GetSession())
302 handler->PSendSysMessage(LANG_EVENT_ENTRY_LIST_CHAT, id, id, eventData.Description, active);
303 else
304 handler->PSendSysMessage(LANG_EVENT_ENTRY_LIST_CONSOLE, id, eventData.Description, active);
305
306 if (!found)
307 found = true;
308 }
309 }
310
311 if (!found)
313
314 return true;
315 }
#define sGameEventMgr
Definition GameEventMgr.h:201
@ LANG_EVENT_ENTRY_LIST_CONSOLE
Definition Language.h:904
@ LANG_EVENT_ENTRY_LIST_CHAT
Definition Language.h:652
@ LANG_ACTIVE
Definition Language.h:67
@ LANG_NOEVENTFOUND
Definition Language.h:653
events
Definition boss_sartura.cpp:43
virtual std::string GetAcoreString(uint32 entry) const
Definition Chat.cpp:42
std::vector< GameEventData > GameEventDataMap
Definition GameEventMgr.h:107
std::set< uint16 > ActiveEvents
Definition GameEventMgr.h:106
Definition GameEventMgr.h:57
std::string Description
Definition GameEventMgr.h:70

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, GameEventData::Description, ChatHandler::GetAcoreString(), ChatHandler::GetSession(), LANG_ACTIVE, LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_EVENT_ENTRY_LIST_CHAT, LANG_EVENT_ENTRY_LIST_CONSOLE, LANG_NOEVENTFOUND, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sGameEventMgr, sWorld, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupFactionCommand()

static bool lookup_commandscript::HandleLookupFactionCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
318 {
319 if (namePart.empty())
320 {
321 return false;
322 }
323
324 // Can be nullptr at console call
325 Player* target = handler->getSelectedPlayer();
326
327 std::wstring wNamePart;
328
329 if (!Utf8toWStr(namePart, wNamePart))
330 {
331 return false;
332 }
333
334 // converting string that we try to find to lower case
335 wstrToLower(wNamePart);
336
337 bool found = false;
338 uint32 count = 0;
339 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
340
341 for (auto factionEntry : sFactionStore)
342 {
343 FactionState const* factionState = target ? target->GetReputationMgr().GetState(factionEntry) : nullptr;
344
345 int locale = handler->GetSessionDbcLocale();
346 std::string name = factionEntry->name[locale];
347 if (name.empty())
348 {
349 continue;
350 }
351
352 if (!Utf8FitTo(name, wNamePart))
353 {
354 locale = 0;
355
356 for (; locale < TOTAL_LOCALES; ++locale)
357 {
358 if (locale == handler->GetSessionDbcLocale())
359 {
360 continue;
361 }
362
363 name = factionEntry->name[locale];
364 if (name.empty())
365 {
366 continue;
367 }
368
369 if (Utf8FitTo(name, wNamePart))
370 {
371 break;
372 }
373 }
374 }
375
376 if (locale < TOTAL_LOCALES)
377 {
378 if (maxResults && count++ == maxResults)
379 {
381 return true;
382 }
383
384 // send faction in "id - [faction] rank reputation [visible] [at war] [own team] [unknown] [invisible] [inactive]" format
385 // or "id - [faction] [no reputation]" format
386 std::ostringstream ss;
387 if (handler->GetSession())
388 {
389 ss << factionEntry->ID << " - |cffffffff|Hfaction:" << factionEntry->ID << "|h[" << name << ' ' << localeNames[locale] << "]|h|r";
390 }
391 else
392 {
393 ss << factionEntry->ID << " - " << name << ' ' << localeNames[locale];
394 }
395
396 if (factionState) // and then target != nullptr also
397 {
398 uint32 index = target->GetReputationMgr().GetReputationRankStrIndex(factionEntry);
399 std::string rankName = handler->GetAcoreString(index);
400
401 ss << ' ' << rankName << "|h|r (" << target->GetReputationMgr().GetReputation(factionEntry) << ')';
402
403 if (factionState->Flags & FACTION_FLAG_VISIBLE)
404 {
405 ss << handler->GetAcoreString(LANG_FACTION_VISIBLE);
406 }
407
408 if (factionState->Flags & FACTION_FLAG_AT_WAR)
409 {
410 ss << handler->GetAcoreString(LANG_FACTION_ATWAR);
411 }
412
413 if (factionState->Flags & FACTION_FLAG_PEACE_FORCED)
414 {
416 }
417
418 if (factionState->Flags & FACTION_FLAG_HIDDEN)
419 {
420 ss << handler->GetAcoreString(LANG_FACTION_HIDDEN);
421 }
422
423 if (factionState->Flags & FACTION_FLAG_INVISIBLE_FORCED)
424 {
426 }
427
428 if (factionState->Flags & FACTION_FLAG_INACTIVE)
429 {
431 }
432 }
433 else
434 {
436 }
437
438 handler->SendSysMessage(ss.str().c_str());
439
440 if (!found)
441 {
442 found = true;
443 }
444 }
445 }
446
447 if (!found)
448 {
450 }
451
452 return true;
453 }
@ FACTION_FLAG_INACTIVE
Definition DBCEnums.h:312
@ FACTION_FLAG_PEACE_FORCED
Definition DBCEnums.h:311
@ FACTION_FLAG_INVISIBLE_FORCED
Definition DBCEnums.h:310
@ FACTION_FLAG_HIDDEN
Definition DBCEnums.h:309
@ FACTION_FLAG_VISIBLE
Definition DBCEnums.h:307
@ FACTION_FLAG_AT_WAR
Definition DBCEnums.h:308
DBCStorage< FactionEntry > sFactionStore(FactionEntryfmt)
@ LANG_FACTION_PEACE_FORCED
Definition Language.h:364
@ LANG_FACTION_ATWAR
Definition Language.h:363
@ LANG_FACTION_NOREPUTATION
Definition Language.h:377
@ LANG_FACTION_INVISIBLE_FORCED
Definition Language.h:366
@ LANG_FACTION_HIDDEN
Definition Language.h:365
@ LANG_COMMAND_FACTION_NOTFOUND
Definition Language.h:357
@ LANG_FACTION_INACTIVE
Definition Language.h:367
@ LANG_FACTION_VISIBLE
Definition Language.h:362
Player * getSelectedPlayer() const
Definition Chat.cpp:382
Definition Player.h:1084
ReputationMgr & GetReputationMgr()
Definition Player.h:2145
int32 GetReputation(uint32 faction_id) const
Definition ReputationMgr.cpp:78
FactionState const * GetState(FactionEntry const *factionEntry) const
Definition ReputationMgr.h:81
uint32 GetReputationRankStrIndex(FactionEntry const *factionEntry) const
Definition ReputationMgr.h:101
Definition ReputationMgr.h:41
uint8 Flags
Definition ReputationMgr.h:45

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, FACTION_FLAG_AT_WAR, FACTION_FLAG_HIDDEN, FACTION_FLAG_INACTIVE, FACTION_FLAG_INVISIBLE_FORCED, FACTION_FLAG_PEACE_FORCED, FACTION_FLAG_VISIBLE, FactionState::Flags, ChatHandler::GetAcoreString(), ReputationMgr::GetReputation(), Player::GetReputationMgr(), ReputationMgr::GetReputationRankStrIndex(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), ReputationMgr::GetState(), LANG_COMMAND_FACTION_NOTFOUND, LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_FACTION_ATWAR, LANG_FACTION_HIDDEN, LANG_FACTION_INACTIVE, LANG_FACTION_INVISIBLE_FORCED, LANG_FACTION_NOREPUTATION, LANG_FACTION_PEACE_FORCED, LANG_FACTION_VISIBLE, localeNames, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sFactionStore, sWorld, TOTAL_LOCALES, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupItemCommand()

static bool lookup_commandscript::HandleLookupItemCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
456 {
457 if (namePart.empty())
458 {
459 return false;
460 }
461
462 std::wstring wNamePart;
463
464 // converting string that we try to find to lower case
465 if (!Utf8toWStr(namePart, wNamePart))
466 {
467 return false;
468 }
469
470 wstrToLower(wNamePart);
471
472 bool found = false;
473 uint32 count = 0;
474 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
475
476 // Search in `item_template`
477 for (auto const& [entry, itemTemplate] : *sObjectMgr->GetItemTemplateStore())
478 {
479 int localeIndex = handler->GetSessionDbLocaleIndex();
480 if (localeIndex >= 0)
481 {
482 uint8 ulocaleIndex = uint8(localeIndex);
483 if (ItemLocale const* il = sObjectMgr->GetItemLocale(itemTemplate.ItemId))
484 {
485 if (il->Name.size() > ulocaleIndex && !il->Name[ulocaleIndex].empty())
486 {
487 std::string name = il->Name[ulocaleIndex];
488
489 if (Utf8FitTo(name, wNamePart))
490 {
491 if (maxResults && count++ == maxResults)
492 {
494 return true;
495 }
496
497 if (handler->GetSession())
498 {
499 std::ostringstream color;
500 color << std::hex << ItemQualityColors[itemTemplate.Quality];
501 handler->PSendSysMessage(LANG_ITEM_LIST_CHAT, itemTemplate.ItemId, color.str(), itemTemplate.ItemId, name);
502 }
503 else
504 {
505 handler->PSendSysMessage(LANG_ITEM_LIST_CONSOLE, itemTemplate.ItemId, name);
506 }
507
508 if (!found)
509 {
510 found = true;
511 }
512
513 continue;
514 }
515 }
516 }
517 }
518
519 std::string name = itemTemplate.Name1;
520 if (name.empty())
521 {
522 continue;
523 }
524
525 if (Utf8FitTo(name, wNamePart))
526 {
527 if (maxResults && count++ == maxResults)
528 {
530 return true;
531 }
532
533 if (handler->GetSession())
534 {
535 std::ostringstream color;
536 color << std::hex << ItemQualityColors[itemTemplate.Quality];
537 handler->PSendSysMessage(LANG_ITEM_LIST_CHAT, itemTemplate.ItemId, color.str(), itemTemplate.ItemId, name);
538 }
539 else
540 {
541 handler->PSendSysMessage(LANG_ITEM_LIST_CONSOLE, itemTemplate.ItemId, name);
542 }
543
544 if (!found)
545 {
546 found = true;
547 }
548 }
549 }
550
551 if (!found)
552 {
554 }
555
556 return true;
557 }
@ LANG_ITEM_LIST_CHAT
Definition Language.h:564
@ LANG_COMMAND_NOITEMFOUND
Definition Language.h:477
@ LANG_ITEM_LIST_CONSOLE
Definition Language.h:906
const uint32 ItemQualityColors[MAX_ITEM_QUALITY]
Definition SharedDefines.h:341
Definition ItemTemplate.h:834

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetSession(), ChatHandler::GetSessionDbLocaleIndex(), ItemQualityColors, LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOITEMFOUND, LANG_ITEM_LIST_CHAT, LANG_ITEM_LIST_CONSOLE, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sObjectMgr, sWorld, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupItemSetCommand()

static bool lookup_commandscript::HandleLookupItemSetCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
560 {
561 if (namePart.empty())
562 {
563 return false;
564 }
565
566 std::wstring wNamePart;
567
568 if (!Utf8toWStr(namePart, wNamePart))
569 {
570 return false;
571 }
572
573 // converting string that we try to find to lower case
574 wstrToLower(wNamePart);
575
576 bool found = false;
577 uint32 count = 0;
578 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
579
580 // Search in ItemSet.dbc
581 for (uint32 id = 0; id < sItemSetStore.GetNumRows(); id++)
582 {
583 ItemSetEntry const* set = sItemSetStore.LookupEntry(id);
584 if (set)
585 {
586 int locale = handler->GetSessionDbcLocale();
587 std::string name = set->name[locale];
588 if (name.empty())
589 {
590 continue;
591 }
592
593 if (!Utf8FitTo(name, wNamePart))
594 {
595 locale = 0;
596 for (; locale < TOTAL_LOCALES; ++locale)
597 {
598 if (locale == handler->GetSessionDbcLocale())
599 {
600 continue;
601 }
602
603 name = set->name[locale];
604 if (name.empty())
605 {
606 continue;
607 }
608
609 if (Utf8FitTo(name, wNamePart))
610 {
611 break;
612 }
613 }
614 }
615
616 if (locale < TOTAL_LOCALES)
617 {
618 if (maxResults && count++ == maxResults)
619 {
621 return true;
622 }
623
624 // send item set in "id - [namedlink locale]" format
625 if (handler->GetSession())
626 {
627 handler->PSendSysMessage(LANG_ITEMSET_LIST_CHAT, id, id, name, localeNames[locale]);
628 }
629 else
630 {
631 handler->PSendSysMessage(LANG_ITEMSET_LIST_CONSOLE, id, name, localeNames[locale]);
632 }
633
634 if (!found)
635 {
636 found = true;
637 }
638 }
639 }
640 }
641
642 if (!found)
643 {
645 }
646
647 return true;
648 }
DBCStorage< ItemSetEntry > sItemSetStore(ItemSetEntryfmt)
@ LANG_ITEMSET_LIST_CHAT
Definition Language.h:570
@ LANG_COMMAND_NOITEMSETFOUND
Definition Language.h:484
@ LANG_ITEMSET_LIST_CONSOLE
Definition Language.h:907
Definition DBCStructure.h:1232
char const * name[16]
Definition DBCStructure.h:1234

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOITEMSETFOUND, LANG_ITEMSET_LIST_CHAT, LANG_ITEMSET_LIST_CONSOLE, localeNames, ItemSetEntry::name, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sItemSetStore, sWorld, TOTAL_LOCALES, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupMapCommand()

static bool lookup_commandscript::HandleLookupMapCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
1505 {
1506 if (namePart.empty())
1507 {
1508 return false;
1509 }
1510
1511 std::wstring wNamePart;
1512
1513 if (!Utf8toWStr(namePart, wNamePart))
1514 {
1515 return false;
1516 }
1517
1518 wstrToLower(wNamePart);
1519
1520 uint32 counter = 0;
1521 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
1522 uint8 locale = handler->GetSession() ? handler->GetSession()->GetSessionDbcLocale() : sWorld->GetDefaultDbcLocale();
1523
1524 // search in Map.dbc
1525 for (auto mapInfo : sMapStore)
1526 {
1527 std::string name = mapInfo->name[locale];
1528
1529 if (name.empty())
1530 {
1531 continue;
1532 }
1533
1534 if (Utf8FitTo(name, wNamePart) && locale < TOTAL_LOCALES)
1535 {
1536 if (maxResults && counter == maxResults)
1537 {
1539 return true;
1540 }
1541
1542 std::ostringstream ss;
1543 ss << mapInfo->MapID << " - [" << name << ']';
1544
1545 if (mapInfo->IsContinent())
1546 {
1547 ss << handler->GetAcoreString(LANG_CONTINENT);
1548 }
1549
1550 switch (mapInfo->map_type)
1551 {
1552 case MAP_INSTANCE:
1553 ss << handler->GetAcoreString(LANG_INSTANCE);
1554 break;
1555 case MAP_RAID:
1556 ss << handler->GetAcoreString(LANG_RAID);
1557 break;
1558 case MAP_BATTLEGROUND:
1559 ss << handler->GetAcoreString(LANG_BATTLEGROUND);
1560 break;
1561 case MAP_ARENA:
1562 ss << handler->GetAcoreString(LANG_ARENA);
1563 break;
1564 }
1565
1566 handler->SendSysMessage(ss.str().c_str());
1567
1568 ++counter;
1569 }
1570 }
1571
1572 if (!counter)
1573 {
1575 }
1576
1577 return true;
1578 }
@ MAP_BATTLEGROUND
Definition DBCEnums.h:349
@ MAP_ARENA
Definition DBCEnums.h:350
@ MAP_INSTANCE
Definition DBCEnums.h:347
@ MAP_RAID
Definition DBCEnums.h:348
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
@ LANG_COMMAND_NOMAPFOUND
Definition Language.h:1074
@ LANG_BATTLEGROUND
Definition Language.h:1077
@ LANG_ARENA
Definition Language.h:1078
@ LANG_INSTANCE
Definition Language.h:1076
@ LANG_CONTINENT
Definition Language.h:1075
@ LANG_RAID
Definition Language.h:1079
LocaleConstant GetSessionDbcLocale() const
Definition WorldSession.h:588

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetAcoreString(), ChatHandler::GetSession(), WorldSession::GetSessionDbcLocale(), LANG_ARENA, LANG_BATTLEGROUND, LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOMAPFOUND, LANG_CONTINENT, LANG_INSTANCE, LANG_RAID, MAP_ARENA, MAP_BATTLEGROUND, MAP_INSTANCE, MAP_RAID, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sMapStore, sWorld, TOTAL_LOCALES, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupObjectCommand()

static bool lookup_commandscript::HandleLookupObjectCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
651 {
652 if (namePart.empty())
653 {
654 return false;
655 }
656
657 std::wstring wNamePart;
658
659 // converting string that we try to find to lower case
660 if (!Utf8toWStr(namePart, wNamePart))
661 {
662 return false;
663 }
664
665 wstrToLower(wNamePart);
666
667 bool found = false;
668 uint32 count = 0;
669 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
670
671 for (auto const& [entry, gameObjectTemplate] : *sObjectMgr->GetGameObjectTemplates())
672 {
673 uint8 localeIndex = handler->GetSessionDbLocaleIndex();
674 if (GameObjectLocale const* objectLocalte = sObjectMgr->GetGameObjectLocale(gameObjectTemplate.entry))
675 {
676 if (objectLocalte->Name.size() > localeIndex && !objectLocalte->Name[localeIndex].empty())
677 {
678 std::string name = objectLocalte->Name[localeIndex];
679
680 if (Utf8FitTo(name, wNamePart))
681 {
682 if (maxResults && count++ == maxResults)
683 {
685 return true;
686 }
687
688 if (handler->GetSession())
689 {
690 handler->PSendSysMessage(LANG_GO_ENTRY_LIST_CHAT, gameObjectTemplate.entry, gameObjectTemplate.entry, name);
691 }
692 else
693 {
694 handler->PSendSysMessage(LANG_GO_ENTRY_LIST_CONSOLE, gameObjectTemplate.entry, name);
695 }
696
697 if (!found)
698 {
699 found = true;
700 }
701
702 continue;
703 }
704 }
705 }
706
707 std::string name = gameObjectTemplate.name;
708 if (name.empty())
709 {
710 continue;
711 }
712
713 if (Utf8FitTo(name, wNamePart))
714 {
715 if (maxResults && count++ == maxResults)
716 {
718 return true;
719 }
720
721 if (handler->GetSession())
722 {
723 handler->PSendSysMessage(LANG_GO_ENTRY_LIST_CHAT, gameObjectTemplate.entry, gameObjectTemplate.entry, name);
724 }
725 else
726 {
727 handler->PSendSysMessage(LANG_GO_ENTRY_LIST_CONSOLE, gameObjectTemplate.entry, name);
728 }
729
730 if (!found)
731 {
732 found = true;
733 }
734 }
735 }
736
737 if (!found)
738 {
740 }
741
742 return true;
743 }
@ LANG_GO_ENTRY_LIST_CONSOLE
Definition Language.h:908
@ LANG_GO_ENTRY_LIST_CHAT
Definition Language.h:568
@ LANG_COMMAND_NOGAMEOBJECTFOUND
Definition Language.h:489
Definition GameObjectData.h:677

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetSession(), ChatHandler::GetSessionDbLocaleIndex(), LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOGAMEOBJECTFOUND, LANG_GO_ENTRY_LIST_CHAT, LANG_GO_ENTRY_LIST_CONSOLE, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sObjectMgr, sWorld, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupPlayerAccountCommand()

static bool lookup_commandscript::HandleLookupPlayerAccountCommand ( ChatHandler handler,
std::string  account,
Optional< int32 limit 
)
inlinestatic
1606 {
1607 if (!Utf8ToUpperOnlyLatin(account))
1608 {
1609 return false;
1610 }
1611
1613 stmt->SetData(0, account);
1614 PreparedQueryResult result = LoginDatabase.Query(stmt);
1615
1616 return LookupPlayerSearchCommand(result, *limit ? *limit : -1, handler);
1617 }
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition DatabaseEnvFwd.h:45
DatabaseWorkerPool< LoginDatabaseConnection > LoginDatabase
Accessor to the realm/login database.
Definition DatabaseEnv.cpp:22
@ LOGIN_SEL_ACCOUNT_LIST_BY_NAME
Definition LoginDatabase.h:49
bool Utf8ToUpperOnlyLatin(std::string &utf8String)
Definition Util.cpp:532
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition PreparedStatement.h:77
Definition PreparedStatement.h:157
static bool LookupPlayerSearchCommand(PreparedQueryResult result, int32 limit, ChatHandler *handler)
Definition cs_lookup.cpp:1628

References LOGIN_SEL_ACCOUNT_LIST_BY_NAME, LoginDatabase, LookupPlayerSearchCommand(), PreparedStatementBase::SetData(), and Utf8ToUpperOnlyLatin().

Referenced by GetCommands().

◆ HandleLookupPlayerEmailCommand()

static bool lookup_commandscript::HandleLookupPlayerEmailCommand ( ChatHandler handler,
std::string  email,
Optional< int32 limit 
)
inlinestatic
1620 {
1622 stmt->SetData(0, email);
1623 PreparedQueryResult result = LoginDatabase.Query(stmt);
1624
1625 return LookupPlayerSearchCommand(result, *limit ? *limit : -1, handler);
1626 }
@ LOGIN_SEL_ACCOUNT_LIST_BY_EMAIL
Definition LoginDatabase.h:51

References LOGIN_SEL_ACCOUNT_LIST_BY_EMAIL, LoginDatabase, LookupPlayerSearchCommand(), and PreparedStatementBase::SetData().

Referenced by GetCommands().

◆ HandleLookupPlayerIpCommand()

static bool lookup_commandscript::HandleLookupPlayerIpCommand ( ChatHandler handler,
Optional< Tail ip,
Optional< int32 limit 
)
inlinestatic
1581 {
1582 Player* target = handler->getSelectedPlayerOrSelf();
1583 if (!ip)
1584 {
1585 // nullptr only if used from console
1586 if (!target || target == handler->GetSession()->GetPlayer())
1587 {
1588 return false;
1589 }
1590
1591 *ip = target->GetSession()->GetRemoteAddress();
1592 }
1593 else
1594 {
1595 ip = *ip;
1596 }
1597
1599 stmt->SetData(0, *ip);
1600 PreparedQueryResult result = LoginDatabase.Query(stmt);
1601
1602 return LookupPlayerSearchCommand(result, *limit ? *limit : -1, handler);
1603 }
@ LOGIN_SEL_ACCOUNT_BY_IP
Definition LoginDatabase.h:54
Player * getSelectedPlayerOrSelf() const
Definition Chat.cpp:426
WorldSession * GetSession() const
Definition Player.h:2020
Player * GetPlayer() const
Definition WorldSession.h:454
std::string const & GetRemoteAddress()
Definition WorldSession.h:463

References WorldSession::GetPlayer(), WorldSession::GetRemoteAddress(), ChatHandler::getSelectedPlayerOrSelf(), ChatHandler::GetSession(), Player::GetSession(), LOGIN_SEL_ACCOUNT_BY_IP, LoginDatabase, LookupPlayerSearchCommand(), and PreparedStatementBase::SetData().

Referenced by GetCommands().

◆ HandleLookupQuestCommand()

static bool lookup_commandscript::HandleLookupQuestCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
746 {
747 if (namePart.empty())
748 {
749 return false;
750 }
751
752 // can be nullptr at console call
753 Player* target = handler->getSelectedPlayer();
754
755 std::wstring wNamePart;
756
757 // converting string that we try to find to lower case
758 if (!Utf8toWStr(namePart, wNamePart))
759 {
760 return false;
761 }
762
763 wstrToLower(wNamePart);
764
765 bool found = false;
766 uint32 count = 0;
767 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
768
769 for (auto const& [entry, qInfo] : sObjectMgr->GetQuestTemplates())
770 {
771 int localeIndex = handler->GetSessionDbLocaleIndex();
772 if (localeIndex >= 0)
773 {
774 uint8 ulocaleIndex = uint8(localeIndex);
775 if (QuestLocale const* questLocale = sObjectMgr->GetQuestLocale(qInfo->GetQuestId()))
776 {
777 if (questLocale->Title.size() > ulocaleIndex && !questLocale->Title[ulocaleIndex].empty())
778 {
779 std::string title = questLocale->Title[ulocaleIndex];
780
781 if (Utf8FitTo(title, wNamePart))
782 {
783 if (maxResults && count++ == maxResults)
784 {
786 return true;
787 }
788
789 std::string statusStr = "";
790
791 if (target)
792 {
793 QuestStatus status = target->GetQuestStatus(qInfo->GetQuestId());
794
795 switch (status)
796 {
798 statusStr = handler->GetAcoreString(LANG_COMPLETE);
799 break;
801 statusStr = handler->GetAcoreString(LANG_ACTIVE);
802 break;
804 statusStr = handler->GetAcoreString(LANG_REWARDED);
805 break;
806 default:
807 break;
808 }
809 }
810
811 if (handler->GetSession())
812 {
813 handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, qInfo->GetQuestId(), qInfo->GetQuestId(), qInfo->GetQuestLevel(), title, statusStr);
814 }
815 else
816 {
817 handler->PSendSysMessage(LANG_QUEST_LIST_CONSOLE, qInfo->GetQuestId(), title, statusStr);
818 }
819
820 if (!found)
821 {
822 found = true;
823 }
824
825 continue;
826 }
827 }
828 }
829 }
830
831 std::string title = qInfo->GetTitle();
832 if (title.empty())
833 {
834 continue;
835 }
836
837 if (Utf8FitTo(title, wNamePart))
838 {
839 if (maxResults && count++ == maxResults)
840 {
842 return true;
843 }
844
845 std::string statusStr = "";
846
847 if (target)
848 {
849 QuestStatus status = target->GetQuestStatus(qInfo->GetQuestId());
850
851 switch (status)
852 {
854 statusStr = handler->GetAcoreString(LANG_COMPLETE);
855 break;
857 statusStr = handler->GetAcoreString(LANG_ACTIVE);
858 break;
860 statusStr = handler->GetAcoreString(LANG_REWARDED);
861 break;
862 default:
863 break;
864 }
865 }
866
867 if (handler->GetSession())
868 {
869 handler->PSendSysMessage(LANG_QUEST_LIST_CHAT, qInfo->GetQuestId(), qInfo->GetQuestId(), qInfo->GetQuestLevel(), title, statusStr);
870 }
871 else
872 {
873 handler->PSendSysMessage(LANG_QUEST_LIST_CONSOLE, qInfo->GetQuestId(), title, statusStr);
874 }
875
876 if (!found)
877 {
878 found = true;
879 }
880 }
881 }
882
883 if (!found)
884 {
886 }
887
888 return true;
889 }
@ LANG_COMPLETE
Definition Language.h:68
@ LANG_QUEST_LIST_CONSOLE
Definition Language.h:909
@ LANG_REWARDED
Definition Language.h:675
@ LANG_COMMAND_NOQUESTFOUND
Definition Language.h:487
@ LANG_QUEST_LIST_CHAT
Definition Language.h:565
QuestStatus
Definition QuestDef.h:99
@ QUEST_STATUS_REWARDED
Definition QuestDef.h:106
@ QUEST_STATUS_INCOMPLETE
Definition QuestDef.h:103
@ QUEST_STATUS_COMPLETE
Definition QuestDef.h:101
QuestStatus GetQuestStatus(uint32 quest_id) const
Definition PlayerQuest.cpp:1465
Definition QuestDef.h:183

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetAcoreString(), Player::GetQuestStatus(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), ChatHandler::GetSessionDbLocaleIndex(), LANG_ACTIVE, LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOQUESTFOUND, LANG_COMPLETE, LANG_QUEST_LIST_CHAT, LANG_QUEST_LIST_CONSOLE, LANG_REWARDED, ChatHandler::PSendSysMessage(), QUEST_STATUS_COMPLETE, QUEST_STATUS_INCOMPLETE, QUEST_STATUS_REWARDED, ChatHandler::SendSysMessage(), sObjectMgr, sWorld, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupSkillCommand()

static bool lookup_commandscript::HandleLookupSkillCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
892 {
893 if (namePart.empty())
894 {
895 return false;
896 }
897
898 // can be nullptr in console call
899 Player* target = handler->getSelectedPlayer();
900
901 std::wstring wNamePart;
902
903 if (!Utf8toWStr(namePart, wNamePart))
904 {
905 return false;
906 }
907
908 // converting string that we try to find to lower case
909 wstrToLower(wNamePart);
910
911 bool found = false;
912 uint32 count = 0;
913 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
914
915 // Search in SkillLine.dbc
916 for (auto skillInfo : sSkillLineStore)
917 {
918 int locale = handler->GetSessionDbcLocale();
919 std::string name = skillInfo->name[locale];
920
921 if (name.empty())
922 {
923 continue;
924 }
925
926 if (!Utf8FitTo(name, wNamePart))
927 {
928 locale = 0;
929 for (; locale < TOTAL_LOCALES; ++locale)
930 {
931 if (locale == handler->GetSessionDbcLocale())
932 {
933 continue;
934 }
935
936 name = skillInfo->name[locale];
937 if (name.empty())
938 {
939 continue;
940 }
941
942 if (Utf8FitTo(name, wNamePart))
943 {
944 break;
945 }
946 }
947 }
948
949 if (locale < TOTAL_LOCALES)
950 {
951 if (maxResults && count++ == maxResults)
952 {
954 return true;
955 }
956
957 std::string valStr;
958 std::string knownStr;
959
960 if (target && target->HasSkill(skillInfo->id))
961 {
962 knownStr = handler->GetAcoreString(LANG_KNOWN);
963 uint32 curValue = target->GetPureSkillValue(skillInfo->id);
964 uint32 maxValue = target->GetPureMaxSkillValue(skillInfo->id);
965 uint32 permValue = target->GetSkillPermBonusValue(skillInfo->id);
966 uint32 tempValue = target->GetSkillTempBonusValue(skillInfo->id);
967
968 valStr = Acore::StringFormat(handler->GetAcoreString(LANG_SKILL_VALUES), curValue, maxValue, permValue, tempValue);
969 }
970
971 // send skill in "id - [namedlink locale]" format
972 if (handler->GetSession())
973 {
974 handler->PSendSysMessage(LANG_SKILL_LIST_CHAT, skillInfo->id, skillInfo->id, name, localeNames[locale], knownStr, valStr);
975 }
976 else
977 {
978 handler->PSendSysMessage(LANG_SKILL_LIST_CONSOLE, skillInfo->id, name, localeNames[locale], knownStr, valStr);
979 }
980
981 if (!found)
982 {
983 found = true;
984 }
985 }
986 }
987
988 if (!found)
989 {
991 }
992
993 return true;
994 }
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
@ LANG_SKILL_LIST_CHAT
Definition Language.h:573
@ LANG_KNOWN
Definition Language.h:63
@ LANG_SKILL_LIST_CONSOLE
Definition Language.h:910
@ LANG_COMMAND_NOSKILLFOUND
Definition Language.h:485
@ LANG_SKILL_VALUES
Definition Language.h:923
uint16 GetPureSkillValue(uint32 skill) const
Definition Player.cpp:5515
int16 GetSkillTempBonusValue(uint32 skill) const
Definition Player.cpp:5539
int16 GetSkillPermBonusValue(uint32 skill) const
Definition Player.cpp:5527
bool HasSkill(uint32 skill) const
Definition Player.cpp:5429
uint16 GetPureMaxSkillValue(uint32 skill) const
Definition Player.cpp:5485
std::string StringFormat(FormatStringView fmt, Args &&... args)
Default AC string format function.
Definition StringFormat.h:44

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetAcoreString(), Player::GetPureMaxSkillValue(), Player::GetPureSkillValue(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), Player::GetSkillPermBonusValue(), Player::GetSkillTempBonusValue(), Player::HasSkill(), LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOSKILLFOUND, LANG_KNOWN, LANG_SKILL_LIST_CHAT, LANG_SKILL_LIST_CONSOLE, LANG_SKILL_VALUES, localeNames, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sSkillLineStore, Acore::StringFormat(), sWorld, TOTAL_LOCALES, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupSpellCommand()

static bool lookup_commandscript::HandleLookupSpellCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
997 {
998 if (namePart.empty())
999 {
1000 return false;
1001 }
1002
1003 // can be nullptr at console call
1004 Player* target = handler->getSelectedPlayer();
1005
1006 std::wstring wNamePart;
1007
1008 if (!Utf8toWStr(namePart, wNamePart))
1009 {
1010 return false;
1011 }
1012
1013 // converting string that we try to find to lower case
1014 wstrToLower(wNamePart);
1015
1016 bool found = false;
1017 uint32 count = 0;
1018 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
1019
1020 // Search in Spell.dbc
1021 for (uint32 id = 0; id < sSpellMgr->GetSpellInfoStoreSize(); id++)
1022 {
1023 SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(id);
1024 if (spellInfo)
1025 {
1026 int locale = handler->GetSessionDbcLocale();
1027 std::string name = spellInfo->SpellName[locale];
1028 if (name.empty())
1029 {
1030 continue;
1031 }
1032
1033 if (!Utf8FitTo(name, wNamePart))
1034 {
1035 locale = 0;
1036 for (; locale < TOTAL_LOCALES; ++locale)
1037 {
1038 if (locale == handler->GetSessionDbcLocale())
1039 {
1040 continue;
1041 }
1042
1043 name = spellInfo->SpellName[locale];
1044 if (name.empty())
1045 {
1046 continue;
1047 }
1048
1049 if (Utf8FitTo(name, wNamePart))
1050 {
1051 break;
1052 }
1053 }
1054 }
1055
1056 if (locale < TOTAL_LOCALES)
1057 {
1058 if (maxResults && count++ == maxResults)
1059 {
1061 return true;
1062 }
1063
1064 bool known = target && target->HasSpell(id);
1065 bool learn = (spellInfo->Effects[0].Effect == SPELL_EFFECT_LEARN_SPELL);
1066
1067 SpellInfo const* learnSpellInfo = sSpellMgr->GetSpellInfo(spellInfo->Effects[0].TriggerSpell);
1068
1069 uint32 talentCost = GetTalentSpellCost(id);
1070
1071 bool talent = (talentCost > 0);
1072 bool passive = spellInfo->IsPassive();
1073 bool active = target && target->HasAura(id);
1074
1075 // unit32 used to prevent interpreting uint8 as char at output
1076 // find rank of learned spell for learning spell, or talent rank
1077 uint32 rank = talentCost ? talentCost : learn && learnSpellInfo ? learnSpellInfo->GetRank() : spellInfo->GetRank();
1078
1079 // send spell in "id - [name, rank N] [talent] [passive] [learn] [known]" format
1080 std::ostringstream ss;
1081 if (handler->GetSession())
1082 {
1083 ss << id << " - |cffffffff|Hspell:" << id << "|h[" << name;
1084 }
1085 else
1086 {
1087 ss << id << " - " << name;
1088 }
1089
1090 // include rank in link name
1091 if (rank)
1092 {
1093 ss << handler->GetAcoreString(LANG_SPELL_RANK) << rank;
1094 }
1095
1096 if (handler->GetSession())
1097 {
1098 ss << ' ' << localeNames[locale] << "]|h|r";
1099 }
1100 else
1101 {
1102 ss << ' ' << localeNames[locale];
1103 }
1104
1105 if (talent)
1106 {
1107 ss << handler->GetAcoreString(LANG_TALENT);
1108 }
1109
1110 if (passive)
1111 {
1112 ss << handler->GetAcoreString(LANG_PASSIVE);
1113 }
1114
1115 if (learn)
1116 {
1117 ss << handler->GetAcoreString(LANG_LEARN);
1118 }
1119
1120 if (known)
1121 {
1122 ss << handler->GetAcoreString(LANG_KNOWN);
1123 }
1124
1125 if (active)
1126 {
1127 ss << handler->GetAcoreString(LANG_ACTIVE);
1128 }
1129
1130 handler->SendSysMessage(ss.str().c_str());
1131
1132 if (!found)
1133 {
1134 found = true;
1135 }
1136 }
1137 }
1138 }
1139
1140 if (!found)
1141 {
1143 }
1144
1145 return true;
1146 }
uint32 GetTalentSpellCost(uint32 spellId)
Definition DBCStores.cpp:686
@ LANG_TALENT
Definition Language.h:66
@ LANG_LEARN
Definition Language.h:64
@ LANG_COMMAND_NOSPELLFOUND
Definition Language.h:486
@ LANG_SPELL_RANK
Definition Language.h:62
@ LANG_PASSIVE
Definition Language.h:65
@ SPELL_EFFECT_LEARN_SPELL
Definition SharedDefines.h:802
#define sSpellMgr
Definition SpellMgr.h:836
bool HasSpell(uint32 spell) const override
Definition Player.cpp:3881
Definition SpellInfo.h:340
bool IsPassive() const
Definition SpellInfo.cpp:1130
uint8 GetRank() const
Definition SpellInfo.cpp:2896
std::array< SpellEffectInfo, MAX_SPELL_EFFECTS > Effects
Definition SpellInfo.h:417
std::array< char const *, 16 > SpellName
Definition SpellInfo.h:407
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5999

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, SpellInfo::Effects, ChatHandler::GetAcoreString(), SpellInfo::GetRank(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), GetTalentSpellCost(), Unit::HasAura(), Player::HasSpell(), SpellInfo::IsPassive(), LANG_ACTIVE, LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOSPELLFOUND, LANG_KNOWN, LANG_LEARN, LANG_PASSIVE, LANG_SPELL_RANK, LANG_TALENT, localeNames, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), SPELL_EFFECT_LEARN_SPELL, SpellInfo::SpellName, sSpellMgr, sWorld, TOTAL_LOCALES, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupSpellIdCommand()

static bool lookup_commandscript::HandleLookupSpellIdCommand ( ChatHandler handler,
SpellInfo const *  spell 
)
inlinestatic
1149 {
1150 // can be nullptr at console call
1151 Player* target = handler->getSelectedPlayer();
1152
1153 bool found = false;
1154 uint32 count = 0;
1155 uint32 maxResults = 1;
1156
1157 if (!SpellMgr::IsSpellValid(spell))
1158 {
1159 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
1160 return false;
1161 }
1162
1163 int locale = handler->GetSessionDbcLocale();
1164 std::string name = spell->SpellName[locale];
1165 if (name.empty())
1166 {
1168 return true;
1169 }
1170
1171 if (locale < TOTAL_LOCALES)
1172 {
1173 if (maxResults && count++ == maxResults)
1174 {
1176 return true;
1177 }
1178
1179 bool known = target && target->HasSpell(spell->Id);
1180 bool learn = (spell->Effects[0].Effect == SPELL_EFFECT_LEARN_SPELL);
1181
1182 SpellInfo const* learnSpellInfo = sSpellMgr->GetSpellInfo(spell->Effects[0].TriggerSpell);
1183
1184 uint32 talentCost = GetTalentSpellCost(spell->Id);
1185
1186 bool talent = (talentCost > 0);
1187 bool passive = spell->IsPassive();
1188 bool active = target && target->HasAura(spell->Id);
1189
1190 // unit32 used to prevent interpreting uint8 as char at output
1191 // find rank of learned spell for learning spell, or talent rank
1192 uint32 rank = talentCost ? talentCost : learn && learnSpellInfo ? learnSpellInfo->GetRank() : spell->GetRank();
1193
1194 // send spell in "id - [name, rank N] [talent] [passive] [learn] [known]" format
1195 std::ostringstream ss;
1196 if (handler->GetSession())
1197 {
1198 ss << spell->Id << " - |cffffffff|Hspell:" << spell->Id << "|h[" << name;
1199 }
1200 else
1201 {
1202 ss << spell->Id << " - " << name;
1203 }
1204
1205 // include rank in link name
1206 if (rank)
1207 {
1208 ss << handler->GetAcoreString(LANG_SPELL_RANK) << rank;
1209 }
1210
1211 if (handler->GetSession())
1212 {
1213 ss << ' ' << localeNames[locale] << "]|h|r";
1214 }
1215 else
1216 {
1217 ss << ' ' << localeNames[locale];
1218 }
1219
1220 if (talent)
1221 {
1222 ss << handler->GetAcoreString(LANG_TALENT);
1223 }
1224
1225 if (passive)
1226 {
1227 ss << handler->GetAcoreString(LANG_PASSIVE);
1228 }
1229
1230 if (learn)
1231 {
1232 ss << handler->GetAcoreString(LANG_LEARN);
1233 }
1234
1235 if (known)
1236 {
1237 ss << handler->GetAcoreString(LANG_KNOWN);
1238 }
1239
1240 if (active)
1241 {
1242 ss << handler->GetAcoreString(LANG_ACTIVE);
1243 }
1244
1245 handler->SendSysMessage(ss.str().c_str());
1246
1247 if (!found)
1248 {
1249 found = true;
1250 }
1251 }
1252
1253 if (!found)
1254 {
1256 }
1257
1258 return true;
1259 }
@ LANG_COMMAND_SPELL_BROKEN
Definition Language.h:529
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:224
static bool IsSpellValid(SpellInfo const *spellInfo)
Definition SpellMgr.cpp:488

References SpellInfo::Effects, ChatHandler::GetAcoreString(), SpellInfo::GetRank(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), GetTalentSpellCost(), Unit::HasAura(), Player::HasSpell(), SpellInfo::Id, SpellInfo::IsPassive(), SpellMgr::IsSpellValid(), LANG_ACTIVE, LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOSPELLFOUND, LANG_COMMAND_SPELL_BROKEN, LANG_KNOWN, LANG_LEARN, LANG_PASSIVE, LANG_SPELL_RANK, LANG_TALENT, localeNames, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), SPELL_EFFECT_LEARN_SPELL, SpellInfo::SpellName, sSpellMgr, and TOTAL_LOCALES.

Referenced by GetCommands().

◆ HandleLookupTaxiNodeCommand()

static bool lookup_commandscript::HandleLookupTaxiNodeCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
1262 {
1263 if (namePart.empty())
1264 {
1265 return false;
1266 }
1267
1268 std::wstring wNamePart;
1269
1270 if (!Utf8toWStr(namePart, wNamePart))
1271 {
1272 return false;
1273 }
1274
1275 // converting string that we try to find to lower case
1276 wstrToLower(wNamePart);
1277
1278 bool found = false;
1279 uint32 count = 0;
1280 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
1281
1282 // Search in TaxiNodes.dbc
1283 for (auto nodeEntry : sTaxiNodesStore)
1284 {
1285 int locale = handler->GetSessionDbcLocale();
1286 std::string name = nodeEntry->name[locale];
1287
1288 if (name.empty())
1289 {
1290 continue;
1291 }
1292
1293 if (!Utf8FitTo(name, wNamePart))
1294 {
1295 locale = 0;
1296
1297 for (; locale < TOTAL_LOCALES; ++locale)
1298 {
1299 if (locale == handler->GetSessionDbcLocale())
1300 {
1301 continue;
1302 }
1303
1304 name = nodeEntry->name[locale];
1305 if (name.empty())
1306 {
1307 continue;
1308 }
1309
1310 if (Utf8FitTo(name, wNamePart))
1311 {
1312 break;
1313 }
1314 }
1315 }
1316
1317 if (locale < TOTAL_LOCALES)
1318 {
1319 if (maxResults && count++ == maxResults)
1320 {
1322 return true;
1323 }
1324
1325 // send taxinode in "id - [name] (Map:m X:x Y:y Z:z)" format
1326 if (handler->GetSession())
1327 {
1328 handler->PSendSysMessage(LANG_TAXINODE_ENTRY_LIST_CHAT, nodeEntry->ID, nodeEntry->ID, name, localeNames[locale],
1329 nodeEntry->map_id, nodeEntry->x, nodeEntry->y, nodeEntry->z);
1330 }
1331 else
1332 {
1333 handler->PSendSysMessage(LANG_TAXINODE_ENTRY_LIST_CONSOLE, nodeEntry->ID, name, localeNames[locale],
1334 nodeEntry->map_id, nodeEntry->x, nodeEntry->y, nodeEntry->z);
1335 }
1336
1337 if (!found)
1338 {
1339 found = true;
1340 }
1341 }
1342 }
1343 if (!found)
1344 {
1346 }
1347
1348 return true;
1349 }
DBCStorage< TaxiNodesEntry > sTaxiNodesStore(TaxiNodesEntryfmt)
@ LANG_COMMAND_NOTAXINODEFOUND
Definition Language.h:507
@ LANG_TAXINODE_ENTRY_LIST_CHAT
Definition Language.h:929
@ LANG_TAXINODE_ENTRY_LIST_CONSOLE
Definition Language.h:930

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOTAXINODEFOUND, LANG_TAXINODE_ENTRY_LIST_CHAT, LANG_TAXINODE_ENTRY_LIST_CONSOLE, localeNames, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sTaxiNodesStore, sWorld, TOTAL_LOCALES, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupTeleCommand()

static bool lookup_commandscript::HandleLookupTeleCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
1353 {
1354 if (namePart.empty())
1355 {
1356 return false;
1357 }
1358
1359 std::wstring wNamePart;
1360
1361 if (!Utf8toWStr(namePart, wNamePart))
1362 {
1363 return false;
1364 }
1365
1366 // converting string that we try to find to lower case
1367 wstrToLower(wNamePart);
1368
1369 std::ostringstream reply;
1370 uint32 count = 0;
1371 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
1372 bool limitReached = false;
1373
1374 for (auto const& [id, tele] : sObjectMgr->GetGameTeleMap())
1375 {
1376 if (tele.wnameLow.find(wNamePart) == std::wstring::npos)
1377 {
1378 continue;
1379 }
1380
1381 if (maxResults && count++ == maxResults)
1382 {
1383 limitReached = true;
1384 break;
1385 }
1386
1387 if (handler->GetSession())
1388 {
1389 reply << " |cffffffff|Htele:" << id << "|h[" << tele.name << "]|h|r\n";
1390 }
1391 else
1392 {
1393 reply << " " << id << ' ' << tele.name << "\n";
1394 }
1395 }
1396
1397 if (reply.str().empty())
1398 {
1400 }
1401 else
1402 {
1403 handler->PSendSysMessage(LANG_COMMAND_TELE_LOCATION, reply.str());
1404 }
1405
1406 if (limitReached)
1407 {
1409 }
1410
1411 return true;
1412 }
@ LANG_COMMAND_TELE_LOCATION
Definition Language.h:211
@ LANG_COMMAND_TELE_NOLOCATION
Definition Language.h:209

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetSession(), LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_TELE_LOCATION, LANG_COMMAND_TELE_NOLOCATION, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), sObjectMgr, sWorld, Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ HandleLookupTitleCommand()

static bool lookup_commandscript::HandleLookupTitleCommand ( ChatHandler handler,
Tail  namePart 
)
inlinestatic
1415 {
1416 if (namePart.empty())
1417 {
1418 return false;
1419 }
1420
1421 // can be nullptr in console call
1422 Player* target = handler->getSelectedPlayer();
1423
1424 // title name have single string arg for player name
1425 char const* targetName = target ? target->GetName().c_str() : "NAME";
1426
1427 std::wstring wNamePart;
1428
1429 if (!Utf8toWStr(namePart, wNamePart))
1430 {
1431 return false;
1432 }
1433
1434 // converting string that we try to find to lower case
1435 wstrToLower(wNamePart);
1436
1437 uint32 counter = 0; // Counter for figure out that we found smth.
1438 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
1439
1440 // Search in CharTitles.dbc
1441 for (auto titleInfo : sCharTitlesStore)
1442 {
1443 int locale = handler->GetSessionDbcLocale();
1444 std::string name = titleInfo->nameMale[locale];
1445 if (name.empty())
1446 {
1447 continue;
1448 }
1449
1450 if (!Utf8FitTo(name, wNamePart))
1451 {
1452 locale = 0;
1453 for (; locale < TOTAL_LOCALES; ++locale)
1454 {
1455 if (locale == handler->GetSessionDbcLocale())
1456 {
1457 continue;
1458 }
1459
1460 name = titleInfo->nameMale[locale];
1461 if (name.empty())
1462 {
1463 continue;
1464 }
1465
1466 if (Utf8FitTo(name, wNamePart))
1467 {
1468 break;
1469 }
1470 }
1471 }
1472
1473 if (locale < TOTAL_LOCALES)
1474 {
1475 if (maxResults && counter == maxResults)
1476 {
1478 return true;
1479 }
1480
1481 std::string knownStr = target && target->HasTitle(titleInfo) ? handler->GetAcoreString(LANG_KNOWN) : "";
1482 std::string activeStr = target && target->GetUInt32Value(PLAYER_CHOSEN_TITLE) == titleInfo->bit_index ? handler->GetAcoreString(LANG_ACTIVE) : "";
1483
1484 std::string titleNameStr = Acore::StringFormat(name, targetName);
1485
1486 // send title in "id (idx:idx) - [namedlink locale]" format
1487 if (handler->GetSession())
1488 handler->PSendSysMessage(LANG_TITLE_LIST_CHAT, titleInfo->ID, titleInfo->bit_index, titleInfo->ID, titleNameStr, localeNames[locale], knownStr, activeStr);
1489 else
1490 handler->PSendSysMessage(LANG_TITLE_LIST_CONSOLE, titleInfo->ID, titleInfo->bit_index, titleNameStr, localeNames[locale], knownStr, activeStr);
1491
1492 ++counter;
1493 }
1494 }
1495
1496 if (!counter) // if counter == 0 then we found nth
1497 {
1499 }
1500
1501 return true;
1502 }
DBCStorage< CharTitlesEntry > sCharTitlesStore(CharTitlesEntryfmt)
@ LANG_TITLE_LIST_CHAT
Definition Language.h:399
@ LANG_COMMAND_NOTITLEFOUND
Definition Language.h:401
@ LANG_TITLE_LIST_CONSOLE
Definition Language.h:400
@ PLAYER_CHOSEN_TITLE
Definition UpdateFields.h:324
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:294
bool HasTitle(uint32 bitIndex) const
Definition Player.cpp:13379
std::string const & GetName() const
Definition Object.h:528

References CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ChatHandler::GetAcoreString(), WorldObject::GetName(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), Object::GetUInt32Value(), Player::HasTitle(), LANG_ACTIVE, LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_COMMAND_NOTITLEFOUND, LANG_KNOWN, LANG_TITLE_LIST_CHAT, LANG_TITLE_LIST_CONSOLE, localeNames, PLAYER_CHOSEN_TITLE, ChatHandler::PSendSysMessage(), sCharTitlesStore, ChatHandler::SendSysMessage(), Acore::StringFormat(), sWorld, TOTAL_LOCALES, Utf8FitTo(), Utf8toWStr(), and wstrToLower().

Referenced by GetCommands().

◆ LookupPlayerSearchCommand()

static bool lookup_commandscript::LookupPlayerSearchCommand ( PreparedQueryResult  result,
int32  limit,
ChatHandler handler 
)
inlinestatic
1629 {
1630 if (!result)
1631 {
1633 return false;
1634 }
1635
1636 int32 counter = 0;
1637 uint32 count = 0;
1638 uint32 maxResults = sWorld->getIntConfig(CONFIG_MAX_RESULTS_LOOKUP_COMMANDS);
1639
1640 do
1641 {
1642 if (maxResults && count++ == maxResults)
1643 {
1645 return true;
1646 }
1647
1648 Field* fields = result->Fetch();
1649 uint32 accountId = fields[0].Get<uint32>();
1650 std::string accountName = fields[1].Get<std::string>();
1651
1653 stmt->SetData(0, accountId);
1654 PreparedQueryResult result2 = CharacterDatabase.Query(stmt);
1655
1656 if (result2)
1657 {
1658 handler->PSendSysMessage(LANG_LOOKUP_PLAYER_ACCOUNT, accountName, accountId);
1659
1660 do
1661 {
1662 Field* characterFields = result2->Fetch();
1663 ObjectGuid::LowType guid = characterFields[0].Get<uint32>();
1664 std::string name = characterFields[1].Get<std::string>();
1665 uint8 plevel = 0, prace = 0, pclass = 0;
1666 bool online = ObjectAccessor::FindPlayerByLowGUID(guid) != nullptr;
1667
1668 if (CharacterCacheEntry const* gpd = sCharacterCache->GetCharacterCacheByName(name))
1669 {
1670 plevel = gpd->Level;
1671 prace = gpd->Race;
1672 pclass = gpd->Class;
1673 }
1674
1675 if (plevel > 0 && prace > 0 && prace <= RACE_DRAENEI && pclass > 0 && pclass <= CLASS_DRUID)
1676 {
1677 handler->PSendSysMessage(" {} (GUID {}) - {} - {} - {}{}", name, guid, EnumUtils::ToTitle(Races(prace)), EnumUtils::ToTitle(Classes(pclass)), plevel, (online ? " - [ONLINE]" : ""));
1678 }
1679 else
1680 {
1681 handler->PSendSysMessage(LANG_LOOKUP_PLAYER_CHARACTER, name, guid);
1682 }
1683
1684 ++counter;
1685 } while (result2->NextRow() && (limit == -1 || counter < limit));
1686 }
1687 } while (result->NextRow());
1688
1689 if (!counter) // empty accounts only
1690 {
1692 return false;
1693 }
1694
1695 return true;
1696 }
#define sCharacterCache
Definition CharacterCache.h:83
@ CHAR_SEL_CHAR_GUID_NAME_BY_ACC
Definition CharacterDatabase.h:344
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::int32_t int32
Definition Define.h:103
@ LANG_LOOKUP_PLAYER_CHARACTER
Definition Language.h:379
@ LANG_LOOKUP_PLAYER_ACCOUNT
Definition Language.h:378
@ LANG_NO_PLAYERS_FOUND
Definition Language.h:380
Classes
Definition SharedDefines.h:124
@ CLASS_DRUID
Definition SharedDefines.h:136
Races
Definition SharedDefines.h:69
static char const * ToTitle(Enum value)
Definition SmartEnum.h:126
Class used to access individual fields of database query result.
Definition Field.h:98
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:112
uint32 LowType
Definition ObjectGuid.h:122
Player * FindPlayerByLowGUID(ObjectGuid::LowType lowguid)
Definition ObjectAccessor.cpp:251
Definition CharacterCache.h:28

References CHAR_SEL_CHAR_GUID_NAME_BY_ACC, CharacterDatabase, CLASS_DRUID, CONFIG_MAX_RESULTS_LOOKUP_COMMANDS, ObjectAccessor::FindPlayerByLowGUID(), Field::Get(), LANG_COMMAND_LOOKUP_MAX_RESULTS, LANG_LOOKUP_PLAYER_ACCOUNT, LANG_LOOKUP_PLAYER_CHARACTER, LANG_NO_PLAYERS_FOUND, ChatHandler::PSendSysMessage(), sCharacterCache, ChatHandler::SendErrorMessage(), PreparedStatementBase::SetData(), sWorld, and EnumUtils::ToTitle().

Referenced by HandleLookupPlayerAccountCommand(), HandleLookupPlayerEmailCommand(), and HandleLookupPlayerIpCommand().


The documentation for this class was generated from the following file: