From 12544bb75e5d6e34663f47fbc725d58f047a9c14 Mon Sep 17 00:00:00 2001 From: RD42 <42702181+dashr9230@users.noreply.github.com> Date: Thu, 4 Jan 2024 23:40:00 +0800 Subject: [PATCH] [server] Implement RegisterRPCs and UnRegisterRPCs --- raknet/NetworkTypes.h | 21 ++++++++ raknet/SAMPRPC.h | 34 ++++++++++++ server/main.h | 2 + server/netrpc.cpp | 118 ++++++++++++++++++++++++++++++++++++++++++ server/netrpc.h | 12 +++++ server/server.vcproj | 51 ++++++++++++++++++ 6 files changed, 238 insertions(+) create mode 100644 raknet/SAMPRPC.h create mode 100644 server/netrpc.cpp create mode 100644 server/netrpc.h diff --git a/raknet/NetworkTypes.h b/raknet/NetworkTypes.h index c5ae444..9a9b8e9 100644 --- a/raknet/NetworkTypes.h +++ b/raknet/NetworkTypes.h @@ -18,4 +18,25 @@ struct RPCParameters char _gap0; // TODO: RPCParameters }; +/// \def REGISTER_STATIC_RPC +/// \ingroup RAKNET_RPC +/// Register a C function as a Remote procedure. +/// \param[in] networkObject Your instance of RakPeer, RakServer, or RakClient +/// \param[in] functionName The name of the C function to call +/// \attention 12/01/05 REGISTER_AS_REMOTE_PROCEDURE_CALL renamed to REGISTER_STATIC_RPC. Delete the old name sometime in the future +//#pragma deprecated(REGISTER_AS_REMOTE_PROCEDURE_CALL) +//#define REGISTER_AS_REMOTE_PROCEDURE_CALL(networkObject, functionName) REGISTER_STATIC_RPC(networkObject, functionName) +#define REGISTER_STATIC_RPC(networkObject, functionName) (networkObject)->RegisterAsRemoteProcedureCall((RPC_##functionName),(functionName)) + +/// \def UNREGISTER_STATIC_RPC +/// \ingroup RAKNET_RPC +/// Unregisters a remote procedure call +/// RPC member Functions MUST be marked __cdecl! See the ObjectMemberRPC example. +/// \param[in] networkObject The object that manages the function +/// \param[in] functionName The function name +// 12/01/05 UNREGISTER_AS_REMOTE_PROCEDURE_CALL Renamed to UNREGISTER_STATIC_RPC. Delete the old name sometime in the future +//#pragma deprecated(UNREGISTER_AS_REMOTE_PROCEDURE_CALL) +//#define UNREGISTER_AS_REMOTE_PROCEDURE_CALL(networkObject,functionName) UNREGISTER_STATIC_RPC(networkObject,functionName) +#define UNREGISTER_STATIC_RPC(networkObject,functionName) (networkObject)->UnregisterAsRemoteProcedureCall((RPC_##functionName)) + #endif diff --git a/raknet/SAMPRPC.h b/raknet/SAMPRPC.h new file mode 100644 index 0000000..9e4dfc5 --- /dev/null +++ b/raknet/SAMPRPC.h @@ -0,0 +1,34 @@ +// TODO: Implement SAMPRPC.h + +#define RPC_Unk73 "\x73" +#define RPC_Unk66 "\x66" +#define RPC_Unk76 "\x76" +#define RPC_Unk60 "\x60" +#define RPC_Unk1F "\x1F" +#define RPC_Unk77 "\x77" +#define RPC_Unk88 "\x88" +#define RPC_Unk61 "\x61" +#define RPC_Unk83 "\x83" +#define RPC_Unk84 "\x84" +#define RPC_Unk8C "\x8C" +#define RPC_Unk3E "\x3E" +#define RPC_Unk17 "\x17" +#define RPC_Unk19 "\x19" +#define RPC_Unk36 "\x36" +#define RPC_Unk65 "\x65" +#define RPC_Unk80 "\x80" +#define RPC_Unk81 "\x81" +#define RPC_Unk34 "\x34" +#define RPC_Unk35 "\x35" +#define RPC_Unk6A "\x6A" +#define RPC_Unk1A "\x1A" +#define RPC_Unk9A "\x9A" +#define RPC_Unk32 "\x32" +#define RPC_Unk9B "\x9B" +#define RPC_Unk74 "\x74" +#define RPC_Unk75 "\x75" +#define RPC_Unk1B "\x1B" +#define RPC_Unk53 "\x53" +#define RPC_Unk67 "\x67" +#define RPC_UnkA8 "\xA8" +#define RPC_UnkB1 "\xB1" diff --git a/server/main.h b/server/main.h index 2f79e53..a75d51f 100644 --- a/server/main.h +++ b/server/main.h @@ -59,6 +59,7 @@ // Raknet #include "../raknet/RakServer.h" #include "../raknet/RakNetworkFactory.h" +#include "../raknet/SAMPRPC.h" #include "../raknet/GetTime.h" // amx @@ -75,6 +76,7 @@ typedef unsigned short VEHICLEID; #include "scrtimers.h" #include "gamemodes.h" #include "filterscripts.h" +#include "netrpc.h" #include "playerpool.h" #include "vehiclepool.h" #include "pickuppool.h" diff --git a/server/netrpc.cpp b/server/netrpc.cpp new file mode 100644 index 0000000..680a12b --- /dev/null +++ b/server/netrpc.cpp @@ -0,0 +1,118 @@ + +#include "main.h" + +RakServerInterface *pRak=0; + +void Unk66(RPCParameters *rpcParams) {} // TODO: Unk66 +void Unk76(RPCParameters *rpcParams) {} // TODO: Unk76 +void Unk60(RPCParameters *rpcParams) {} // TODO: Unk60 +void Unk1F(RPCParameters *rpcParams) {} // TODO: Unk1F +void Unk77(RPCParameters *rpcParams) {} // TODO: Unk77 +void Unk88(RPCParameters *rpcParams) {} // TODO: Unk88 +void Unk61(RPCParameters *rpcParams) {} // TODO: Unk61 +void Unk83(RPCParameters *rpcParams) {} // TODO: Unk83 +void Unk84(RPCParameters *rpcParams) {} // TODO: Unk84 +void Unk8C(RPCParameters *rpcParams) {} // TODO: Unk8C +void Unk3E(RPCParameters *rpcParams) {} // TODO: Unk3E +void Unk17(RPCParameters *rpcParams) {} // TODO: Unk17 +void Unk19(RPCParameters *rpcParams) {} // TODO: Unk19 +void Unk36(RPCParameters *rpcParams) {} // TODO: Unk36 +void Unk65(RPCParameters *rpcParams) {} // TODO: Unk65 +void Unk80(RPCParameters *rpcParams) {} // TODO: Unk80 +void Unk81(RPCParameters *rpcParams) {} // TODO: Unk81 +void Unk34(RPCParameters *rpcParams) {} // TODO: Unk34 +void Unk35(RPCParameters *rpcParams) {} // TODO: Unk35 +void Unk6A(RPCParameters *rpcParams) {} // TODO: Unk6A +void Unk1A(RPCParameters *rpcParams) {} // TODO: Unk1A +void Unk9A(RPCParameters *rpcParams) {} // TODO: Unk9A +void Unk32(RPCParameters *rpcParams) {} // TODO: Unk32 +void Unk9B(RPCParameters *rpcParams) {} // TODO: Unk9B +void Unk74(RPCParameters *rpcParams) {} // TODO: Unk74 +void Unk75(RPCParameters *rpcParams) {} // TODO: Unk75 +void Unk1B(RPCParameters *rpcParams) {} // TODO: Unk1B +void Unk53(RPCParameters *rpcParams) {} // TODO: Unk53 +void Unk67(RPCParameters *rpcParams) {} // TODO: Unk67 +void UnkA8(RPCParameters *rpcParams) {} // TODO: UnkA8 +void Unk73(RPCParameters *rpcParams) {} // TODO: Unk73 +void UnkB1(RPCParameters *rpcParams) {} // TODO: UnkB1 + +//---------------------------------------------------- + +void RegisterRPCs(RakServerInterface * pRakServer) +{ + pRak = pRakServer; + + REGISTER_STATIC_RPC(pRakServer, Unk66); + REGISTER_STATIC_RPC(pRakServer, Unk76); + REGISTER_STATIC_RPC(pRakServer, Unk60); + REGISTER_STATIC_RPC(pRakServer, Unk1F); + REGISTER_STATIC_RPC(pRakServer, Unk77); + REGISTER_STATIC_RPC(pRakServer, Unk88); + REGISTER_STATIC_RPC(pRakServer, Unk61); + REGISTER_STATIC_RPC(pRakServer, Unk83); + REGISTER_STATIC_RPC(pRakServer, Unk84); + REGISTER_STATIC_RPC(pRakServer, Unk8C); + REGISTER_STATIC_RPC(pRakServer, Unk3E); + REGISTER_STATIC_RPC(pRakServer, Unk17); + REGISTER_STATIC_RPC(pRakServer, Unk19); + REGISTER_STATIC_RPC(pRakServer, Unk36); + REGISTER_STATIC_RPC(pRakServer, Unk65); + REGISTER_STATIC_RPC(pRakServer, Unk80); + REGISTER_STATIC_RPC(pRakServer, Unk81); + REGISTER_STATIC_RPC(pRakServer, Unk34); + REGISTER_STATIC_RPC(pRakServer, Unk35); + REGISTER_STATIC_RPC(pRakServer, Unk6A); + REGISTER_STATIC_RPC(pRakServer, Unk1A); + REGISTER_STATIC_RPC(pRakServer, Unk9A); + REGISTER_STATIC_RPC(pRakServer, Unk32); + REGISTER_STATIC_RPC(pRakServer, Unk9B); + REGISTER_STATIC_RPC(pRakServer, Unk74); + REGISTER_STATIC_RPC(pRakServer, Unk75); + REGISTER_STATIC_RPC(pRakServer, Unk1B); + REGISTER_STATIC_RPC(pRakServer, Unk53); + REGISTER_STATIC_RPC(pRakServer, Unk67); + REGISTER_STATIC_RPC(pRakServer, UnkA8); + REGISTER_STATIC_RPC(pRakServer, Unk73); + REGISTER_STATIC_RPC(pRakServer, UnkB1); +} + +//---------------------------------------------------- + +void UnRegisterRPCs(RakServerInterface * pRakServer) +{ + UNREGISTER_STATIC_RPC(pRakServer, Unk73); + UNREGISTER_STATIC_RPC(pRakServer, Unk66); + UNREGISTER_STATIC_RPC(pRakServer, Unk76); + UNREGISTER_STATIC_RPC(pRakServer, Unk60); + UNREGISTER_STATIC_RPC(pRakServer, Unk1F); + UNREGISTER_STATIC_RPC(pRakServer, Unk77); + UNREGISTER_STATIC_RPC(pRakServer, Unk88); + UNREGISTER_STATIC_RPC(pRakServer, Unk61); + UNREGISTER_STATIC_RPC(pRakServer, Unk83); + UNREGISTER_STATIC_RPC(pRakServer, Unk84); + UNREGISTER_STATIC_RPC(pRakServer, Unk8C); + UNREGISTER_STATIC_RPC(pRakServer, Unk3E); + UNREGISTER_STATIC_RPC(pRakServer, Unk17); + UNREGISTER_STATIC_RPC(pRakServer, Unk19); + UNREGISTER_STATIC_RPC(pRakServer, Unk36); + UNREGISTER_STATIC_RPC(pRakServer, Unk65); + UNREGISTER_STATIC_RPC(pRakServer, Unk80); + UNREGISTER_STATIC_RPC(pRakServer, Unk81); + UNREGISTER_STATIC_RPC(pRakServer, Unk34); + UNREGISTER_STATIC_RPC(pRakServer, Unk35); + UNREGISTER_STATIC_RPC(pRakServer, Unk6A); + UNREGISTER_STATIC_RPC(pRakServer, Unk1A); + UNREGISTER_STATIC_RPC(pRakServer, Unk9A); + UNREGISTER_STATIC_RPC(pRakServer, Unk32); + UNREGISTER_STATIC_RPC(pRakServer, Unk9B); + UNREGISTER_STATIC_RPC(pRakServer, Unk74); + UNREGISTER_STATIC_RPC(pRakServer, Unk75); + UNREGISTER_STATIC_RPC(pRakServer, Unk1B); + UNREGISTER_STATIC_RPC(pRakServer, Unk53); + UNREGISTER_STATIC_RPC(pRakServer, Unk67); + UNREGISTER_STATIC_RPC(pRakServer, UnkA8); + + pRak = 0; +} + +//---------------------------------------------------- diff --git a/server/netrpc.h b/server/netrpc.h new file mode 100644 index 0000000..8b78030 --- /dev/null +++ b/server/netrpc.h @@ -0,0 +1,12 @@ + +#ifndef SAMPSRV_NETRPC_H +#define SAMPSRV_NETRPC_H + +//---------------------------------------------------- + +void RegisterRPCs(RakServerInterface *); +void UnRegisterRPCs(RakServerInterface *); + +//---------------------------------------------------- + +#endif diff --git a/server/server.vcproj b/server/server.vcproj index 0a023cf..152891b 100644 --- a/server/server.vcproj +++ b/server/server.vcproj @@ -129,6 +129,30 @@ + + + + + + + + + + + + + + + + @@ -153,6 +177,27 @@ + + + + + + + + + + + + + + @@ -220,6 +265,12 @@ + + + +