From dfaa2c1515665c9a4927fa3a0e6045421e0c135a Mon Sep 17 00:00:00 2001 From: BobTheBob <32057864+BobTheBob9@users.noreply.github.com> Date: Fri, 11 Mar 2022 03:30:24 +0000 Subject: script api for server=>client stringcmds --- Northstar.CustomServers/mod.json | 7 +++ .../sh_server_to_client_stringcommands.gnut | 52 ++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 Northstar.CustomServers/mod/scripts/vscripts/sh_server_to_client_stringcommands.gnut diff --git a/Northstar.CustomServers/mod.json b/Northstar.CustomServers/mod.json index 00dd06bc..172bff11 100644 --- a/Northstar.CustomServers/mod.json +++ b/Northstar.CustomServers/mod.json @@ -91,6 +91,13 @@ "Path": "sh_remote_functions_mp_custom.gnut", "RunOn": "(CLIENT || SERVER) && MP" }, + { + "Path": "sh_server_to_client_stringcommands.gnut", + "RunOn": "CLIENT || SERVER", + "ClientCallback": { + "After": "ServerToClientStringCommands_Init" + } + }, { "Path": "gamemodes/_gamemode_fra.nut", "RunOn": "SERVER && MP", diff --git a/Northstar.CustomServers/mod/scripts/vscripts/sh_server_to_client_stringcommands.gnut b/Northstar.CustomServers/mod/scripts/vscripts/sh_server_to_client_stringcommands.gnut new file mode 100644 index 00000000..a51e528f --- /dev/null +++ b/Northstar.CustomServers/mod/scripts/vscripts/sh_server_to_client_stringcommands.gnut @@ -0,0 +1,52 @@ +#if CLIENT +global function ServerToClientStringCommands_Init + +global function AddServerToClientStringCommandCallback +global function NSClientCodeCallback_RecievedServerToClientStringCommand +#endif + +#if SERVER +global function ServerToClientStringCommand +#endif + +#if CLIENT +struct { + table< string, array< void functionref( array args ) > > callbacks +} file + +void function ServerToClientStringCommands_Init() +{ + getroottable().rawset( "NSClientCodeCallback_RecievedServerToClientStringCommand", NSClientCodeCallback_RecievedServerToClientStringCommand ) +} + +void function AddServerToClientStringCommandCallback( string command, void functionref( array args ) callback ) +{ + if ( !( command in file.callbacks ) ) + file.callbacks[ command ] <- [] + + file.callbacks[ command ].append( callback ) +} + +void function NSClientCodeCallback_RecievedServerToClientStringCommand( string cmd ) +{ + array args = split( cmd, " " ) + if ( args.len() == 0 ) + return + + string callbackName = args[ 0 ] + args.remove( 0 ) + + if ( callbackName in file.callbacks ) + { + foreach ( void functionref( array args ) callback in file.callbacks[ callbackName ] ) + callback( args ) + } +} +#endif + +#if SERVER +void function ServerToClientStringCommand( entity player, string command ) +{ + ClientCommand( player, "ns_script_servertoclientstringcommand " + command ) +} +#endif \ No newline at end of file -- cgit v1.2.3