From 179a95088fd8589ca52d38c5a2d7067be4fdc570 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Wed, 11 Jan 2023 17:12:20 -0800 Subject: [PATCH] NSGameRules: Add overridable methods ImpulseCommand(NSClient, float) and PlayerRequestRespawn(NSClientPlayer). Game_Input, the game specific function every game had to implement will be deprecated to streamline the overall codebase. Migrate custom impulses into your gamerule overrides. This will make it much easier to separate cheat impulse from the multiplayer game too. --- src/server/NSGameRules.h | 8 ++++++++ src/server/NSGameRules.qc | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/server/NSGameRules.h b/src/server/NSGameRules.h index 3b5f444b..a7426ce5 100644 --- a/src/server/NSGameRules.h +++ b/src/server/NSGameRules.h @@ -46,6 +46,8 @@ public: virtual bool ConsoleCommand(NSClientPlayer,string); /** Overridable: Called when a client issues a client command. */ virtual bool ClientCommand(NSClient,string); + /** Overridable: Called when a client issues an impulse command. */ + virtual bool ImpulseCommand(NSClient, float); /* client */ /** Overridable: Called when a NSClientPlayer joins the server. */ @@ -66,6 +68,12 @@ public: virtual void PlayerPain(NSClientPlayer); /** Overridable: Called to check if a NSClientPlayer can attack. */ virtual bool PlayerCanAttack(NSClientPlayer); + + /** Overridable: called when a NSClientPlayer requests a respawn. + In a multiplayer game, it'll put you back into the game as a player. + In a singleplayer game, it might load the most recent save. + @return True/false depending on the respawn succeeded. */ + virtual bool PlayerRequestRespawn(NSClientPlayer); /* level transitions */ /** Overridable: Called to set up new level parms for any NSClientPlayer. */ diff --git a/src/server/NSGameRules.qc b/src/server/NSGameRules.qc index a7517d9e..cbc680ec 100644 --- a/src/server/NSGameRules.qc +++ b/src/server/NSGameRules.qc @@ -77,6 +77,11 @@ NSGameRules::ClientCommand(NSClient pl, string cmd) { return (false); } +bool +NSGameRules::ImpulseCommand(NSClient pl, float num) +{ + return (false); +} /* client */ void @@ -476,6 +481,12 @@ NSGameRules::PlayerCanAttack(NSClientPlayer bp) return true; } +bool +NSGameRules::PlayerRequestRespawn(NSClientPlayer bp) +{ + return false; +} + void NSGameRules::ChatMessageAll(NSClient cl, string strMessage) {