41 char* start = strtok(pos,
"\n");
71 if (!target_session && !target_account)
95 else if (target_account)
113 std::string msg(str);
116 if (escapeCharacters)
154 return fmt::vsprintf<char>(messageFormat, messageFormatArgs);
177 if ((text[0] !=
'!') && (text[0] !=
'.'))
181 if (text.length() < 2)
185 if (text[1] == text[0])
264 while (*text ==
' '||*text ==
'\t'||*text ==
'\b')
272 return strtok(text,
" ");
278 char* check = strtok(text,
"|");
282 char* cLinkType = strtok(
nullptr,
":");
286 if (strcmp(cLinkType, linkType) != 0)
288 strtok(
nullptr,
" ");
293 char* cKeys = strtok(
nullptr,
"|");
294 char* cKeysTail = strtok(
nullptr,
"");
296 char* cKey = strtok(cKeys,
":|");
298 *something1 = strtok(
nullptr,
":|");
300 strtok(cKeysTail,
"]");
301 strtok(
nullptr,
" ");
312 while (*text ==
' '||*text ==
'\t'||*text ==
'\b')
320 return strtok(text,
" ");
332 char* check = strtok(text,
"|");
336 tail = strtok(
nullptr,
"");
341 char* cLinkType = strtok(tail,
":");
345 for (
int i = 0; linkTypes[i]; ++i)
347 if (strcmp(cLinkType, linkTypes[i]) == 0)
349 char* cKeys = strtok(
nullptr,
"|");
350 char* cKeysTail = strtok(
nullptr,
"");
352 char* cKey = strtok(cKeys,
":|");
354 *something1 = strtok(
nullptr,
":|");
356 strtok(cKeysTail,
"]");
357 strtok(
nullptr,
" ");
364 strtok(
nullptr,
" ");
387 if (bounds.first != bounds.second)
388 return bounds.first->second;
399 for (
auto it = bounds.first; it != bounds.second; ++it)
401 creature = it->second;
402 if (it->second->IsAlive())
439 std::string name = idS;
444 return player->GetGUID().GetCounter();
477 std::string name = name_str;
507 *player_guid = pl ? pl->
GetGUID() : guid;
510 *player_name = pl || !guid.
IsEmpty() ? name :
"";
515 static char dummy[1] =
"";
527 *player_name = pl ? pl->
GetName() :
"";
531 if ((!player || !*player) && (!player_guid || !*player_guid) && (!player_name || player_name->empty()))
547 return strtok(args+1,
"\"");
566 if (*(args + 1) ==
'"')
574 return strtok(args + 1,
"\"");
612 return sObjectMgr->GetTrinityStringForDBCLocale(entry);
626 if (str[0] ==
'.' || str[0] ==
'!')
648 std::string name = cname;
667 if (!guid || !offline)
677 if (!guid || !offline)
687 return sWorld->GetDefaultDbcLocale();
699 if (str.length() < 5)
701 char opcode = str[0];
715 std::string_view cmd = str.substr(5);
748 memcpy(ack + 1,
echo, 4);
758 memcpy(ok + 1,
echo, 4);
767 memcpy(fail + 1,
echo, 4);
779 std::string msg =
"m";
781 std::string body(str);
782 if (escapeCharacters)
786 for (lastpos = 0, pos = body.find(
'\n', lastpos); pos != std::string::npos; lastpos = pos + 1, pos = body.find(
'\n', lastpos))
788 std::string line(msg);
789 line.append(body, lastpos, pos - lastpos);
792 msg.append(body, lastpos, pos - lastpos);
static char const *const guidKeys[]
#define STRING_VIEW_FMT_ARG(str)
@ LANG_YOURS_SECURITY_IS_LOW
bool normalizePlayerName(std::string &name)
void StringReplaceAll(std::string *str, std::string_view text, std::string_view replacement)
static uint32 GetSecurity(uint32 accountId, int32 realmId)
void Send(std::string const &msg)
void SendSysMessage(std::string_view, bool escapeCharacters) override
static std::string const PREFIX
bool ParseCommands(std::string_view str) override
char * extractKeyFromLink(char *text, char const *linkType, char **something1=nullptr)
Player * getSelectedPlayerOrSelf()
virtual bool HasPermission(uint32 permission) const
std::string playerLink(std::string const &name) const
char * extractQuotedArg(char *args)
void SendGlobalGMSysMessage(const char *str)
virtual LocaleConstant GetSessionDbLocaleIndex() const
Player * getSelectedPlayer()
WorldSession * GetSession()
void SendGlobalSysMessage(const char *str)
bool HasSentErrorMessage() const
virtual LocaleConstant GetSessionDbcLocale() const
virtual std::string GetNameLink() const
Creature * GetCreatureFromPlayerMapByDbGuid(ObjectGuid::LowType lowguid)
static std::string StringVPrintf(std::string_view messageFormat, fmt::printf_args messageFormatArgs)
bool HasLowerSecurity(Player *target, ObjectGuid guid, bool strong=false)
Creature * getSelectedCreature()
GameObject * GetObjectFromPlayerMapByDbGuid(ObjectGuid::LowType lowguid)
void SetSentErrorMessage(bool val)
Player * GetPlayer() const
void PSendSysMessage(char const *fmt, Args &&... args)
WorldObject * getSelectedObject()
virtual bool ParseCommands(std::string_view text)
bool GetPlayerGroupAndGUIDByName(const char *cname, Player *&player, Group *&group, ObjectGuid &guid, bool offline=false)
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
virtual bool needReportToTarget(Player *chr) const
bool extractPlayerTarget(char *args, Player **player, ObjectGuid *player_guid=nullptr, std::string *player_name=nullptr)
std::string extractPlayerNameFromLink(char *text)
bool _ParseCommands(std::string_view text)
GameObject * GetNearbyGameObject()
static char * LineFromMessage(char *&pos)
ObjectGuid::LowType extractLowGuidFromLink(char *text, HighGuid &guidHigh)
bool HasLowerSecurityAccount(WorldSession *target, uint32 account, bool strong=false)
virtual char const * GetTrinityString(uint32 entry) const
LocaleConstant GetSessionDbLocaleIndex() const override
LocaleConstant GetSessionDbcLocale() const override
void SendSysMessage(std::string_view, bool escapeCharacters) override
bool ParseCommands(std::string_view str) override
char const * GetTrinityString(uint32 entry) const override
bool needReportToTarget(Player *chr) const override
std::string GetNameLink() const override
GameObjectBySpawnIdContainer & GetGameObjectBySpawnIdStore()
CreatureBySpawnIdContainer & GetCreatureBySpawnIdStore()
LowType GetCounter() const
static ObjectGuid const Empty
static ObjectGuid GetGUID(Object const *o)
WorldSession * GetSession() const
bool IsVisibleGloballyFor(Player const *player) const
Unit * GetSelectedUnit() const
Group * GetGroup(Optional< uint8 > partyIndex)
ObjectGuid GetTarget() const
std::string const & GetName() const
void Initialize(ChatMsg chatType, Language language, WorldObject const *sender, WorldObject const *receiver, std::string_view message, uint32 achievementId=0, std::string_view channelName="", LocaleConstant locale=DEFAULT_LOCALE, std::string_view addonPrefix="")
WorldPacket const * Write() override
Player session in the World.
char const * GetTrinityString(uint32 entry) const
AccountTypes GetSecurity() const
LocaleConstant GetSessionDbLocaleIndex() const
LocaleConstant GetSessionDbcLocale() const
Player * GetPlayer() const
bool HasPermission(uint32 permissionId)
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
@ CONFIG_GM_LOWER_SECURITY
TC_GAME_API Player * FindPlayerByName(std::string_view name)
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Player * FindConnectedPlayer(ObjectGuid const &)
TC_GAME_API Creature * GetCreatureOrPetOrVehicle(WorldObject const &, ObjectGuid const &)
TC_GAME_API bool TryExecuteCommand(ChatHandler &handler, std::string_view cmd)
static constexpr char COMMAND_DELIMITER
TC_COMMON_API std::vector< std::string_view > Tokenize(std::string_view str, char sep, bool keepEmpty)
std::string StringFormat(FormatString< Args... > fmt, Args &&... args)
Default TC string format function.
@ RBAC_PERM_COMMANDS_NOTIFY_COMMAND_NOT_FOUND_ERROR
@ RBAC_PERM_CHECK_FOR_LOWER_SECURITY
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)