From 7e11339956c4e51a9d3901e963de0b8d5562f9d8 Mon Sep 17 00:00:00 2001 From: laundmo Date: Sat, 5 Feb 2022 22:54:23 +0100 Subject: Allow for adding a client command notify callback --- .../mod/scripts/vscripts/_codecallbacks_common.gnut | 15 +++++++++++++++ .../mod/scripts/vscripts/_mapspawn.gnut | 11 ++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Northstar.CustomServers/mod/scripts/vscripts/_codecallbacks_common.gnut b/Northstar.CustomServers/mod/scripts/vscripts/_codecallbacks_common.gnut index b08fdcf1..d2621db3 100644 --- a/Northstar.CustomServers/mod/scripts/vscripts/_codecallbacks_common.gnut +++ b/Northstar.CustomServers/mod/scripts/vscripts/_codecallbacks_common.gnut @@ -35,6 +35,7 @@ global function AddCallback_OnUpdateDerivedPilotLoadout global function AddCallback_OnUpdateDerivedTitanLoadout global function AddCallback_OnUpdateDerivedPlayerTitanLoadout global function AddClientCommandCallback +global function AddClientCommandNotifyCallback global function AddPlayerDropScriptedItemsCallback global function AddCallback_OnPlayerInventoryChanged @@ -500,6 +501,20 @@ void function AddClientCommandCallback( string commandString, bool functionref( svGlobal.clientCommandCallbacks[ commandString ] <- callbackFunc } +void function AddClientCommandNotifyCallback( string commandString, void functionref( entity player, array args ) callbackFunc ) +{ + if ( !( commandString in svGlobal.notifyClientCommandCallbacks ) ) + { + svGlobal.notifyClientCommandCallbacks[ commandString ] <- [ callbackFunc ] + return + } + else + { + Assert( !svGlobal.notifyClientCommandCallbacks.contains( callbackFunc ), "Already added " + string( callbackFunc ) + " with AddClientCommandNotifyCallback" ) + svGlobal.notifyClientCommandCallbacks[ commandString ].append(callbackFunc) + } +} + void function AddPlayerDropScriptedItemsCallback( void functionref(entity player) callbackFunc ) { Assert( !( svGlobal.onPlayerDropsScriptedItemsCallbacks.contains( callbackFunc ) ), "Already added " + string( callbackFunc ) + " with AddPlayerDropScriptedItemsCallback" ) diff --git a/Northstar.CustomServers/mod/scripts/vscripts/_mapspawn.gnut b/Northstar.CustomServers/mod/scripts/vscripts/_mapspawn.gnut index 73e76910..1d16b9fa 100644 --- a/Northstar.CustomServers/mod/scripts/vscripts/_mapspawn.gnut +++ b/Northstar.CustomServers/mod/scripts/vscripts/_mapspawn.gnut @@ -94,6 +94,8 @@ global struct SvGlobals table >onEntityChangedTeamCallbacks tableargs )> clientCommandCallbacks + tableargs )> > notifyClientCommandCallbacks + array[ eGameState._count_ ] gameStateEnterCallbacks bool allowPointsOverLimit = false @@ -204,7 +206,14 @@ var function CodeCallback_ClientCommand( entity player, array args ) //Assert( commandString in svGlobal.clientCommandCallbacks ) if ( commandString in svGlobal.clientCommandCallbacks ) { - return svGlobal.clientCommandCallbacks[ commandString ]( player, args ) + var result = svGlobal.clientCommandCallbacks[ commandString ]( player, args ) + if ( commandString in svGlobal.notifyClientCommandCallbacks ) + { + foreach ( callbackfunc in svGlobal.notifyClientCommandCallbacks[ commandString ]){ + callbackfunc(player, args) + } + } + return result } else { -- cgit v1.2.3