From 7404343b7e0dcdaa234aadf37118d5ad176a840a Mon Sep 17 00:00:00 2001 From: ricardoofnl Date: Thu, 3 Sep 2026 03:53:07 +0700 Subject: [PATCH] Write the `ScrUnk21` shop-name body; the zero-init lands before the ctor instead of after --- saco/net/scriptrpc.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/saco/net/scriptrpc.cpp b/saco/net/scriptrpc.cpp index c6afa9b..a152188 100644 --- a/saco/net/scriptrpc.cpp +++ b/saco/net/scriptrpc.cpp @@ -371,7 +371,30 @@ void ScrUnk42(RPCParameters *rpcParams) pLocalPlayer->GetPlayerPed()->SetArmour(fArmour); } void ScrUnk37(RPCParameters *rpcParams) {} -void ScrUnk21(RPCParameters *rpcParams) {} +void ScrUnk21(RPCParameters *rpcParams) +{ + PCHAR Data = reinterpret_cast(rpcParams->input); + int iBitLength = rpcParams->numberOfBitsOfData; + PlayerID sender = rpcParams->sender; + + char szName[33] = {0}; + int iLen; + + RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); + bsData.Read(szName, 32); + + CPlayerPed *pPlayerPed = pGame->FindPlayerPed(); + if(pPlayerPed) { + iLen = strlen(szName); + if(iLen) { + pPlayerPed->SetShopName(szName); + pPlayerPed->LoadShoppingDataSubsection(szName); + } else { + pPlayerPed->SetShopName(NULL); + pPlayerPed->LoadShoppingDataSubsection(""); + } + } +} void ScrUnk23(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input);