18#ifndef TRINITYCORE_CHAT_H
19#define TRINITYCORE_CHAT_H
23#include <fmt/printf.h>
41 bool IsConsole()
const {
return (m_session ==
nullptr); }
52 static char* LineFromMessage(
char*& pos);
55 virtual char const* GetTrinityString(
uint32 entry)
const;
56 virtual void SendSysMessage(std::string_view str,
bool escapeCharacters =
false);
58 void SendSysMessage(
uint32 entry);
59 void SendSysMessage(std::string_view messageFormat, fmt::printf_args messageFormatArgs)
noexcept;
61 template<
typename... Args>
64 this->SendSysMessage(
fmt, fmt::make_printf_args(args...));
67 template<
typename... Args>
70 this->PSendSysMessage(GetTrinityString(entry), std::forward<Args>(args)...);
73 template<
typename... Args>
76 return StringVPrintf(
fmt, fmt::make_printf_args(args...));
79 template<
typename... Args>
82 return PGetParseString(GetTrinityString(entry), std::forward<Args>(args)...);
85 static std::string StringVPrintf(std::string_view messageFormat, fmt::printf_args messageFormatArgs)
noexcept;
87 bool _ParseCommands(std::string_view text);
88 virtual bool ParseCommands(std::string_view text);
90 void SendGlobalSysMessage(
const char *str);
94 virtual bool HasPermission(
uint32 permission)
const;
95 virtual std::string GetNameLink()
const;
96 virtual bool needReportToTarget(
Player* chr)
const;
100 bool HasLowerSecurity(
Player* target,
ObjectGuid guid,
bool strong =
false);
101 bool HasLowerSecurityAccount(
WorldSession* target,
uint32 account,
bool strong =
false);
103 void SendGlobalGMSysMessage(
const char *str);
104 Player* getSelectedPlayer();
106 Unit* getSelectedUnit();
109 Player* getSelectedPlayerOrSelf();
111 char* extractKeyFromLink(
char* text,
char const* linkType,
char** something1 =
nullptr);
112 char* extractKeyFromLink(
char* text,
char const*
const* linkTypes,
int* found_idx,
char** something1 =
nullptr);
113 char* extractQuotedArg(
char* args);
115 bool GetPlayerGroupAndGUIDByName(
const char* cname,
Player*& player,
Group*& group,
ObjectGuid& guid,
bool offline =
false);
116 std::string extractPlayerNameFromLink(
char* text);
118 bool extractPlayerTarget(
char* args,
Player** player,
ObjectGuid* player_guid =
nullptr, std::string* player_name =
nullptr);
120 std::string playerLink(std::string
const& name)
const;
121 std::string GetNameLink(
Player* chr)
const;
129 explicit ChatHandler() : m_session(nullptr), sentErrorMessage(false) { }
141 using Print = void(
void*, std::string_view);
142 explicit CliHandler(
void* callbackArg,
Print* zprint) : m_callbackArg(callbackArg), m_print(zprint) { }
145 char const* GetTrinityString(
uint32 entry)
const override;
147 void SendSysMessage(std::string_view,
bool escapeCharacters)
override;
148 bool ParseCommands(std::string_view str)
override;
149 std::string GetNameLink()
const override;
150 bool needReportToTarget(
Player* chr)
const override;
165 bool ParseCommands(std::string_view str)
override;
166 void SendSysMessage(std::string_view,
bool escapeCharacters)
override;
171 void Send(std::string
const& msg);
176 char const* echo =
nullptr;
178 bool humanReadable =
false;
static std::string const PREFIX
bool IsHumanReadable() const override
ChatHandler & operator=(ChatHandler const &)=delete
virtual bool IsHumanReadable() const
ChatHandler(ChatHandler const &)=delete
ChatHandler & operator=(ChatHandler &&)=delete
WorldSession * GetSession()
bool HasSentErrorMessage() const
ChatHandler(WorldSession *session)
virtual ~ChatHandler()=default
std::string PGetParseString(uint32 entry, Args &&... args) const noexcept
static std::string PGetParseString(std::string_view fmt, Args &&... args) noexcept
void SetSentErrorMessage(bool val)
void PSendSysMessage(char const *fmt, Args &&... args)
WorldSession const * GetSession() const
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
void PSendSysMessage(uint32 entry, Args &&... args)
ChatHandler(ChatHandler &&)=delete
CliHandler(void *callbackArg, Print *zprint)
void(void *, std::string_view) Print
bool HasPermission(uint32) const override
Player session in the World.