From 6a971b921211baf60bc6cb98fc7e84125bb32e3c Mon Sep 17 00:00:00 2001 From: Sergei Marochkin Date: Fri, 11 Nov 2016 15:34:39 +0300 Subject: [PATCH] Add OnClientCheckResponse calling for gamemodes --- src/CCallbackManager.cpp | 17 +++++++++++++++++ src/CCallbackManager.h | 1 + src/RPCs.cpp | 18 ++++++++++++++++++ src/RPCs.h | 1 + 4 files changed, 37 insertions(+) diff --git a/src/CCallbackManager.cpp b/src/CCallbackManager.cpp index 4737076..dd3e6d7 100644 --- a/src/CCallbackManager.cpp +++ b/src/CCallbackManager.cpp @@ -329,3 +329,20 @@ void CCallbackManager::OnPlayerClientGameInit(WORD playerid, bool* usecjwalk, bo } } } + +void CCallbackManager::OnClientCheckResponse(WORD playerid, BYTE type, DWORD arg, BYTE response) +{ + int idx = -1; + cell ret = 1; + for (std::vector::const_iterator iter = m_vecAMX.begin(); iter != m_vecAMX.end(); ++iter) { + if (!amx_FindPublic(*iter, "OnClientCheckResponse", &idx)) { + amx_Push(*iter, static_cast(response)); + amx_Push(*iter, static_cast(arg)); + amx_Push(*iter, static_cast(type)); + amx_Push(*iter, static_cast(playerid)); + + amx_Exec(*iter, &ret, idx); + if (ret) break; + } + } +} \ No newline at end of file diff --git a/src/CCallbackManager.h b/src/CCallbackManager.h index 9797090..6f83595 100644 --- a/src/CCallbackManager.h +++ b/src/CCallbackManager.h @@ -28,6 +28,7 @@ class CCallbackManager static void OnVehicleSpawn(WORD vehicleid); static void OnPlayerPickedUpPickup(WORD playerid, WORD pickupid); static void OnPlayerPickedUpPlayerPickup(WORD playerid, WORD pickupid); + static void OnClientCheckResponse(WORD playerid, WORD pickupid); static std::vector m_vecAMX; diff --git a/src/RPCs.cpp b/src/RPCs.cpp index 727261d..f50d739 100644 --- a/src/RPCs.cpp +++ b/src/RPCs.cpp @@ -29,6 +29,7 @@ int RPC_ScrApplyAnimation = 0x56; int RPC_ClientMessage = 0x5D; int RPC_ScrDisplayGameText = 0x49; int RPC_Chat = 0x65; +int RPC_ClientCheck = 103; int RPC_UpdateScoresPingsIPs = 0x9B; int RPC_PickedUpPickup = 0x83; @@ -212,6 +213,20 @@ void PickedUpPickup(RPCParameters* rpcParams) #endif } +void ClientCheck(RPCParameters* rpcParams) +{ + WORD playerid = static_cast(pRakServer->GetIndexFromPlayerID(rpcParams->sender)); + DWORD arg; + BYTE type, response; + + RakNet::BitStream bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false); + bsData.Read(type); + bsData.Read(arg); + bsData.Read(response); + + CCallbackManager::OnClientCheckResponse(playerid, type, arg, response); +} + void InitRPCs() { pRakServer->UnregisterAsRemoteProcedureCall(&RPC_UpdateScoresPingsIPs); @@ -225,4 +240,7 @@ void InitRPCs() pRakServer->UnregisterAsRemoteProcedureCall(&RPC_PickedUpPickup); pRakServer->RegisterAsRemoteProcedureCall(&RPC_PickedUpPickup, PickedUpPickup); + + pRakServer->UnregisterAsRemoteProcedureCall(&RPC_ClientCheck); + pRakServer->RegisterAsRemoteProcedureCall(&RPC_ClientCheck, ClientCheck); } diff --git a/src/RPCs.h b/src/RPCs.h index ea32b88..0cbe91c 100644 --- a/src/RPCs.h +++ b/src/RPCs.h @@ -57,6 +57,7 @@ extern int RPC_ScrApplyAnimation; extern int RPC_ClientMessage; extern int RPC_ScrDisplayGameText; extern int RPC_Chat; +extern int RPC_ClientCheck; extern int RPC_UpdateScoresPingsIPs; extern int RPC_PickedUpPickup;