From 5710a35388e7ec139075662d5bcb9f7dbe31c047 Mon Sep 17 00:00:00 2001 From: Zach Kanzler <theY4Kman@gmail.com> Date: Mon, 24 Aug 2009 09:05:54 +1200 Subject: [PATCH] Added Kick, Ban and IsInKickQueue to public extension API (bug 3907, r=dvander) --- core/PlayerManager.h | 2 +- public/IGameHelpers.h | 16 ++++++++++++++-- public/IPlayerHelpers.h | 27 +++++++++++++++++++++++++-- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/core/PlayerManager.h b/core/PlayerManager.h index 3b7a9662..52931cd8 100644 --- a/core/PlayerManager.h +++ b/core/PlayerManager.h @@ -79,6 +79,7 @@ public: void SetAdminId(AdminId id, bool temporary); AdminId GetAdminId(); void Kick(const char *str); + bool IsInKickQueue(); IPlayerInfo *GetPlayerInfo(); unsigned int GetLanguageId(); int GetUserId(); @@ -87,7 +88,6 @@ public: unsigned int GetSerial(); public: void DoBasicAdminChecks(); - bool IsInKickQueue(); void MarkAsBeingKicked(); int GetLifeState(); private: diff --git a/public/IGameHelpers.h b/public/IGameHelpers.h index 19d59871..87cced0e 100644 --- a/public/IGameHelpers.h +++ b/public/IGameHelpers.h @@ -40,7 +40,7 @@ */ #define SMINTERFACE_GAMEHELPERS_NAME "IGameHelpers" -#define SMINTERFACE_GAMEHELPERS_VERSION 4 +#define SMINTERFACE_GAMEHELPERS_VERSION 5 class CBaseEntity; class CBaseHandle; @@ -249,7 +249,19 @@ namespace SourceMod * * @return g_EntList pointer. */ - virtual void *GetGlobalEntityList() =0; + virtual void *GetGlobalEntityList() =0; + + /** + * @brief Adds a client to the kick queue, where they will be kicked + * next game frame. + * + * The user ID is used to ensure the correct player is kicked. + * + * @param client The index of the client to kick. + * @param userid The user ID of the client to kick. + * @param msg The kick message to show to the player. + */ + virtual void AddDelayedKick(int client, int userid, const char *msg) =0; }; } diff --git a/public/IPlayerHelpers.h b/public/IPlayerHelpers.h index 27b80e7a..fd14ef00 100644 --- a/public/IPlayerHelpers.h +++ b/public/IPlayerHelpers.h @@ -41,7 +41,7 @@ #include <IAdminSystem.h> #define SMINTERFACE_PLAYERMANAGER_NAME "IPlayerManager" -#define SMINTERFACE_PLAYERMANAGER_VERSION 10 +#define SMINTERFACE_PLAYERMANAGER_VERSION 11 struct edict_t; class IPlayerInfo; @@ -196,7 +196,30 @@ namespace SourceMod * * @return True if authorized, false otherwise. */ - virtual bool IsAuthorized() =0; + virtual bool IsAuthorized() =0; + + /** + * @brief Kicks the client with a message + * + * @param message The message shown to the client when kicked + */ + virtual void Kick(const char *message) =0; + + /** + * @brief Returns whether the client is marked as being in the kick + * queue. The client doesn't necessarily have to be in the actual kick + * queue for this function to return true. + * + * @return True if in the kick queue, false otherwise. + */ + virtual bool IsInKickQueue() =0; + + /** + * @brief Marks the client as being in the kick queue. They are not + * actually added to the kick queue. Use IGameHelpers::AddDelayedKick() + * to actually add them to the queue. + */ + virtual void MarkAsBeingKicked() =0; }; /**