From 4f0518d9890da59fc66164fa19f7bce8f40ef31b Mon Sep 17 00:00:00 2001 From: ricardoofnl Date: Thu, 3 Sep 2026 00:44:07 +0700 Subject: [PATCH] [saco] Implement/match `ScrUnk6F`; the widescreen RPC calls `ScriptCommand` with opcode 0x02A3 directly --- saco/game/scripting.h | 2 ++ saco/net/scriptrpc.cpp | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/saco/game/scripting.h b/saco/game/scripting.h index 58c3b1c..53e2ec7 100644 --- a/saco/game/scripting.h +++ b/saco/game/scripting.h @@ -157,6 +157,8 @@ const SCRIPT_COMMAND play_wav = { 0x3D1, "i" }; const SCRIPT_COMMAND unload_wav = { 0x40D, "i" }; const SCRIPT_COMMAND set_wav_at_location = { 0x3D7, "ifff" }; +const SCRIPT_COMMAND set_widescreen = { 0x02A3, "i" }; + diff --git a/saco/net/scriptrpc.cpp b/saco/net/scriptrpc.cpp index 0cac9de..3a3acd0 100644 --- a/saco/net/scriptrpc.cpp +++ b/saco/net/scriptrpc.cpp @@ -5,6 +5,7 @@ using namespace RakNet; extern CNetGame* pNetGame; extern CGame * pGame; extern CAudioStream * pAudioStream; +extern CChatWindow * pChatWindow; //---------------------------------------------------- @@ -63,7 +64,20 @@ void ScrUnk58(RPCParameters *rpcParams) {} void ScrUnk59(RPCParameters *rpcParams) {} void ScrUnk5A(RPCParameters *rpcParams) {} void ScrUnk5B(RPCParameters *rpcParams) {} -void ScrUnk6F(RPCParameters *rpcParams) {} +void ScrUnk6F(RPCParameters *rpcParams) +{ + PCHAR Data = reinterpret_cast(rpcParams->input); + int iBitLength = rpcParams->numberOfBitsOfData; + PlayerID sender = rpcParams->sender; + + BYTE byteEnable; + + RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); + bsData.Read(byteEnable); + + pChatWindow->AddDebugMessage("Widescreen = %i", byteEnable); + ScriptCommand(&set_widescreen, byteEnable); +} void ScrUnk62(RPCParameters *rpcParams) {} void ScrUnk70(RPCParameters *rpcParams) {} void ScrSetSpawnInfo(RPCParameters *rpcParams) {}