From a9f1f78a024d4aefe58e54339241d0ad30ce70da Mon Sep 17 00:00:00 2001 From: ricardoofnl Date: Fri, 4 Sep 2026 22:09:23 +0700 Subject: [PATCH] [saco] Match `CLocalPlayer::RequestClass` and `SendStatsUpdate`; the stats packet is `ID_STATS_UPDATE` over `Send`, not an RPC --- saco/game/game.h | 2 ++ saco/net/localplayer.cpp | 25 +++++++++++++++++++++++++ saco/net/localplayer.h | 2 ++ 3 files changed, 29 insertions(+) diff --git a/saco/game/game.h b/saco/game/game.h index 957f270..aec0788 100644 --- a/saco/game/game.h +++ b/saco/game/game.h @@ -154,6 +154,8 @@ public: void sub_100A1C10(); void sub_100A1DB0(int a1); + int FUNC_100A0F90(); // .text:100A0F90 + void LoadScene(char* szScene); int GetMemoryUsedForStreaming(); int GetMemoryAvailableForStreaming(); diff --git a/saco/net/localplayer.cpp b/saco/net/localplayer.cpp index 1a5ba24..3373fda 100644 --- a/saco/net/localplayer.cpp +++ b/saco/net/localplayer.cpp @@ -160,3 +160,28 @@ void CLocalPlayer::FUNC_10006AC0(WORD a1, float a2, int a3, int a4) bsSend.Write(a4); pNetGame->GetRakClient()->RPC(RPC_ActorDamage, &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, 0, FALSE); } + +//---------------------------------------------------- + +void CLocalPlayer::RequestClass(int iClass) +{ + RakNet::BitStream bsSend; + + bsSend.Write(iClass); + pNetGame->GetRakClient()->RPC(RPC_RequestClass, &bsSend, HIGH_PRIORITY, RELIABLE, 0, FALSE); +} + +//---------------------------------------------------- + +void CLocalPlayer::SendStatsUpdate() +{ + RakNet::BitStream bsSend; + + int iMoney = pGame->FUNC_100A0F90(); + int iDrunkLevel = m_pPlayerPed->sub_100ADFA0(); + + bsSend.Write((BYTE)ID_STATS_UPDATE); + bsSend.Write(iMoney); + bsSend.Write(iDrunkLevel); + pNetGame->GetRakClient()->Send(&bsSend, HIGH_PRIORITY, UNRELIABLE, 0); +} diff --git a/saco/net/localplayer.h b/saco/net/localplayer.h index ccaffb5..481ca8a 100644 --- a/saco/net/localplayer.h +++ b/saco/net/localplayer.h @@ -118,6 +118,8 @@ public: BOOL IsInRCMode() { return m_bInRCMode; }; + void RequestClass(int iClass); // .text:100058D0 + void SendStatsUpdate(); // .text:10005D00 void FUNC_10005BF0(WORD a1); // .text:10005BF0 void FUNC_10003570(); // .text:10003570