diff --git a/core/ChatTriggers.cpp b/core/ChatTriggers.cpp index fbe99f07..3dc81c57 100644 --- a/core/ChatTriggers.cpp +++ b/core/ChatTriggers.cpp @@ -33,6 +33,7 @@ #include "ChatTriggers.h" #include "sm_stringutil.h" #include "ConCmdManager.h" +#include /* :HACKHACK: We can't SH_DECL here because ConCmdManager.cpp does */ extern bool __SourceHook_FHRemoveConCommandDispatch(void *, bool, class fastdelegate::FastDelegate0); diff --git a/core/ChatTriggers.h b/core/ChatTriggers.h index 297deb3c..6912801c 100644 --- a/core/ChatTriggers.h +++ b/core/ChatTriggers.h @@ -34,9 +34,7 @@ #include "sm_globals.h" #include "sourcemm_api.h" - -#define SM_REPLY_CONSOLE 0 -#define SM_REPLY_CHAT 1 +#include class ChatTriggers : public SMGlobalClass { diff --git a/core/HalfLife2.cpp b/core/HalfLife2.cpp index c1f7cf46..3deeb771 100644 --- a/core/HalfLife2.cpp +++ b/core/HalfLife2.cpp @@ -382,4 +382,3 @@ bool CHalfLife2::IsLANServer() return (sv_lan->GetInt() != 0); } - diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp index c74e7daa..bea79bc0 100644 --- a/core/PlayerManager.cpp +++ b/core/PlayerManager.cpp @@ -43,6 +43,7 @@ #include "TimerSys.h" #include "Translator.h" #include "Logger.h" +#include "ChatTriggers.h" PlayerManager g_Players; bool g_OnMapStarted = false; @@ -791,6 +792,16 @@ void PlayerManager::RecheckAnyAdmins() } } +unsigned int PlayerManager::GetReplyTo() +{ + return g_ChatTriggers.GetReplyTo(); +} + +unsigned int PlayerManager::SetReplyTo(unsigned int reply) +{ + return g_ChatTriggers.SetReplyTo(reply); +} + /******************* *** PLAYER CODE *** *******************/ diff --git a/core/PlayerManager.h b/core/PlayerManager.h index 61039d53..76e504f2 100644 --- a/core/PlayerManager.h +++ b/core/PlayerManager.h @@ -147,6 +147,8 @@ public: bool CheckSetAdminName(int index, CPlayer *pPlayer, AdminId id); const char *GetPassInfoVar(); void RecheckAnyAdmins(); + unsigned int GetReplyTo(); + unsigned int SetReplyTo(unsigned int reply); private: void OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax); private: diff --git a/public/IPlayerHelpers.h b/public/IPlayerHelpers.h index 0071d93d..7e33807d 100644 --- a/public/IPlayerHelpers.h +++ b/public/IPlayerHelpers.h @@ -41,11 +41,14 @@ #include #define SMINTERFACE_PLAYERMANAGER_NAME "IPlayerManager" -#define SMINTERFACE_PLAYERMANAGER_VERSION 5 +#define SMINTERFACE_PLAYERMANAGER_VERSION 6 struct edict_t; class IPlayerInfo; +#define SM_REPLY_CONSOLE 0 /**< Reply to console. */ +#define SM_REPLY_CHAT 1 /**< Reply to chat. */ + namespace SourceMod { /** @@ -305,6 +308,21 @@ namespace SourceMod * at least once, false otherwise. */ virtual bool IsServerActivated() =0; + + /** + * @brief Gets SourceMod's reply source. + * + * @return ReplyTo source. + */ + virtual unsigned int GetReplyTo() =0; + + /** + * @brief Sets SourceMod's reply source. + * + * @param reply Reply source. + * @return Old reply source. + */ + virtual unsigned int SetReplyTo(unsigned int reply) =0; }; }