[saco] Implement/match ScrUnk45; its local-player arm inlines a new CLocalPlayer::SetTeam, whose COMDAT is the body at 0x10017C70

This commit is contained in:
ricardoofnl
2026-09-04 22:55:04 +07:00
parent 0fedc9c0bc
commit 63c79b1162
2 changed files with 24 additions and 1 deletions
+1
View File
@@ -113,6 +113,7 @@ public:
DWORD GetPlayerColorAsRGBA();
DWORD GetPlayerColorAsARGB();
BOOL IsSpectating() { return m_bIsSpectating; };
void SetTeam(BYTE byteTeam) { m_byteTeam = byteTeam; };
void ReturnToClassSelection() { m_bWantsAnotherClass = TRUE; };
+23 -1
View File
@@ -408,7 +408,29 @@ void ScrSetSpawnInfo(RPCParameters *rpcParams)
pPlayerPool->GetLocalPlayer()->sub_10003BE0(&SpawnInfo);
}
void ScrUnk45(RPCParameters *rpcParams) {}
void ScrUnk45(RPCParameters *rpcParams)
{
PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);
int iBitLength = rpcParams->numberOfBitsOfData;
PlayerID sender = rpcParams->sender;
PLAYERID playerId;
BYTE byteTeam;
RakNet::BitStream bsData(Data,(iBitLength/8)+1,false);
CPlayerPool *pPlayerPool = pNetGame->GetPlayerPool();
bsData.Read(playerId);
bsData.Read(byteTeam);
if(playerId == pPlayerPool->GetLocalPlayerID()) {
pPlayerPool->GetLocalPlayer()->SetTeam(byteTeam);
} else {
CRemotePlayer *pRemotePlayer = pPlayerPool->GetAt(playerId);
if(pRemotePlayer) pRemotePlayer->field_109 = byteTeam;
}
}
void ScrUnk99(RPCParameters *rpcParams)
{
PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input);