ricardoofnl
|
e39e76f106
|
[saco] Implement/match ScrUnk86; the oversize-textdraw warning is the fallthrough arm
|
2026-09-03 05:20:50 +07:00 |
|
ricardoofnl
|
1a2d8d76ad
|
[saco] Match SvrStats; it reads straight into the global RakServerStats
|
2026-09-03 05:09:24 +07:00 |
|
ricardoofnl
|
f1ca3e849c
|
[saco] Match RequestClass; the 46-byte SPAWN_INFO comes off the stream whole
|
2026-09-03 05:09:24 +07:00 |
|
ricardoofnl
|
67aa31d871
|
[saco] Match CNetGame::DisableMapIcon; it is out of line at 0x10008FB0
|
2026-09-03 05:09:24 +07:00 |
|
ricardoofnl
|
4c0934a638
|
Add the missing raknet/SocketDataEncryptor.h; net/netgame.cpp compiles again
|
2026-09-03 05:09:24 +07:00 |
|
ricardoofnl
|
653054feaf
|
[saco] Match SetRaceCheckpoint; the size read reuses the fX temp
|
2026-09-03 05:09:23 +07:00 |
|
ricardoofnl
|
811f4f61bf
|
[saco] Match SetCheckpoint; the single radius fills all three extent components
|
2026-09-03 05:09:23 +07:00 |
|
ricardoofnl
|
9f8466f0bb
|
[saco] Match Chat; local text goes to the chat window, remote text to the player
|
2026-09-03 05:09:23 +07:00 |
|
ricardoofnl
|
b62d35175c
|
[saco] Match ConnectionRejected; four reject reasons then a 500ms Disconnect
|
2026-09-03 05:09:23 +07:00 |
|
ricardoofnl
|
dee26ca679
|
[saco] Match ClientMessage; the 256-byte buffer forces the 8-byte stack realign
|
2026-09-03 05:09:23 +07:00 |
|
ricardoofnl
|
442c3fcf57
|
[saco] Add matching Checksum and LoadModelsThread; both were missing from the TU
|
2026-09-03 05:09:23 +07:00 |
|
ricardoofnl
|
c7d3f4eb33
|
Match CTextDrawPool::GetAt; two split guards hoist the zero arm ahead of the value arm
|
2026-09-03 05:02:48 +07:00 |
|
ricardoofnl
|
8b61418b8b
|
Declare CTextDrawPool::FUNC_1001E910 so ScrUnk86 can call it
|
2026-09-03 05:02:48 +07:00 |
|
ricardoofnl
|
aa4345eedb
|
[saco] Implement/match ScrUnkB0; it teleports an actor and reads the position into a VECTOR
|
2026-09-03 04:53:44 +07:00 |
|
ricardoofnl
|
33f11dd9d3
|
[saco] Implement/match ScrUnk87; it is the textdraw hide RPC and calls CTextDrawPool::FUNC_1001E7F0
|
2026-09-03 04:43:47 +07:00 |
|
ricardoofnl
|
c901c3f7e5
|
Write the ScrUnk4B attach-object body; frame is 4 bytes short of 0x1001C6A0
|
2026-09-03 04:38:21 +07:00 |
|
ricardoofnl
|
b25e6281da
|
Move CObject into net/objectpool.h and name field_44; the GTA handle the object RPCs pass
|
2026-09-03 04:24:35 +07:00 |
|
ricardoofnl
|
ae6110aa78
|
[saco] Implement/match ScrUnk56; it is the apply-animation RPC and sets the remote player flag at 0x1C1
|
2026-09-03 04:14:00 +07:00 |
|
ricardoofnl
|
554f00d613
|
Move the ScrUnk21 zero-init below the bitstream; frame size now matches, buffer still 1 byte off
|
2026-09-03 04:00:55 +07:00 |
|
ricardoofnl
|
7404343b7e
|
Write the ScrUnk21 shop-name body; the zero-init lands before the ctor instead of after
|
2026-09-03 03:54:48 +07:00 |
|
ricardoofnl
|
7922c71515
|
[saco] Turn sub_100A0210 into CGame::DeletePlayerPed; the call site loads ecx, so 0x100A0210 is the member
|
2026-09-03 03:46:05 +07:00 |
|
ricardoofnl
|
bf8a95cb42
|
[saco] Repoint the three aliased CGame setters at their real members; the aliases were declared but never defined
|
2026-09-03 03:46:05 +07:00 |
|
ricardoofnl
|
16b657842e
|
[saco] Match CRemotePlayer::FUNC_10014650; vehicle ids 2000-3000 index the object pool, offsets clamped to +/-100
|
2026-09-03 03:46:05 +07:00 |
|
ricardoofnl
|
cfa984713e
|
[saco] Point CPlayerPed at GetTaskTypeFromTask; my file-local GetTaskType alias had no definition
|
2026-09-03 03:46:05 +07:00 |
|
ricardoofnl
|
ddca4621ce
|
Write the ScrInitMenu body; still 4 float stack slots short of 0x1001C870
|
2026-09-03 03:36:50 +07:00 |
|
ricardoofnl
|
e2b4621acd
|
[saco] Implement/match ScrUnk0F; it calls CPlayerPed::TogglePlayerControllable
|
2026-09-03 03:36:50 +07:00 |
|
ricardoofnl
|
b23f356def
|
[saco] Match CRemotePlayer::FUNC_10014540; it re-creates the map marker when there is no ped
|
2026-09-03 03:28:53 +07:00 |
|
ricardoofnl
|
606b5d37f1
|
[saco] Match CNetPlayer::GetName; GetPlayerName reaches the name through it, not through .c_str() directly
|
2026-09-03 03:28:53 +07:00 |
|
ricardoofnl
|
dd5b9125e7
|
[saco] Match CRemotePlayer::FUNC_10017610; two separate NULL stores merge into the mid-function zero arm
|
2026-09-03 03:28:53 +07:00 |
|
ricardoofnl
|
e8708bf464
|
[saco] Implement/match CPlayerPed::FUNC_100AFFD0; it kills the ped via kill_actor after unwinding the jetpack
|
2026-09-03 03:28:53 +07:00 |
|
ricardoofnl
|
4ee8177703
|
[saco] Implement/match CPlayerPed::FUNC_100AD0F0; it calls 0x5393F0 on the ped and vehicle slots
|
2026-09-03 03:28:53 +07:00 |
|
ricardoofnl
|
989405a307
|
[saco] Implement/match ScrUnk16; it is the give-weapon RPC and calls CPlayerPed::GiveWeapon
|
2026-09-03 03:24:34 +07:00 |
|
ricardoofnl
|
3ed37ae8ee
|
[saco] Implement/match ScrUnk43; it is the armed-weapon RPC and calls CPlayerPed::SetArmedWeapon
|
2026-09-03 03:24:34 +07:00 |
|
ricardoofnl
|
aed6c4dd6f
|
Repoint the four aliased CPlayerPed calls at their real members; the aliases were declared but never defined
|
2026-09-03 03:18:52 +07:00 |
|
ricardoofnl
|
33bda17f1d
|
Match CNetGame::FUNC_10002E10; it is GetObjectPool's out-of-line copy, not a TODO
|
2026-09-03 03:07:25 +07:00 |
|
ricardoofnl
|
d1425c2c8e
|
Write the ScrUnk99 set-skin body; still one lazy push ebx short of 0x10019190
|
2026-09-03 03:04:22 +07:00 |
|
ricardoofnl
|
4edeb5b18c
|
[saco] Implement/match ScrShowMenu and ScrHideMenu; CNetGame::GetMenuPool is an inline, not an out-of-line call
|
2026-09-03 02:57:22 +07:00 |
|
ricardoofnl
|
79f96e1555
|
[saco] Implement/match ScrUnk91; it is the set-ammo RPC and calls CPlayerPed::SetWeaponAmmo
|
2026-09-03 02:57:22 +07:00 |
|
ricardoofnl
|
55d339a9e1
|
[saco] Match CRemotePlayer::FUNC_10001080; a header inline, one && over a DWORD pointer and a BYTE state
|
2026-09-03 02:51:44 +07:00 |
|
ricardoofnl
|
5160deda40
|
[saco] Implement/match ScrAddGangZone and ScrFlashGangZone; the gang zone pool is fetched after the bitstream
|
2026-09-03 02:46:59 +07:00 |
|
ricardoofnl
|
c44c11548d
|
[saco] Implement/match ScrRemoveGangZone and ScrStopFlashGangZone; both read the zone id inside the pool null check
|
2026-09-03 02:46:59 +07:00 |
|
ricardoofnl
|
f8d9e4dcf2
|
[saco] Implement/match ScrRemovePlayerFromVehicle; it calls CPlayerPed::ExitCurrentVehicle
|
2026-09-03 02:46:59 +07:00 |
|
ricardoofnl
|
0ee9dcba50
|
Remove the duplicate declarations and leftover stubs left by the merge
|
2026-09-03 02:40:51 +07:00 |
|
ricardoofnl
|
41411d3ddb
|
[saco] Add the six-argument CNewPlayerTags::Draw; still 4 register copies short of 0x1006CDA0
|
2026-09-03 02:34:40 +07:00 |
|
ricardoofnl
|
6a641db29a
|
[saco] Match the CUnkClass3 constructor; retail zeroes field_89 with a loop, not memset
|
2026-09-03 02:34:40 +07:00 |
|
ricardoofnl
|
802b8aded3
|
[saco] Implement/match CPlayerPed::FUNC_100AC5D0 and FUNC_100AC640; both read the enter/leave-car task type
|
2026-09-03 02:34:40 +07:00 |
|
ricardoofnl
|
fae75bbc87
|
[saco] Implement/match CPlayerPed::SetWeaponAmmo; it writes the slot ammo found by FindWeaponSlot
|
2026-09-03 02:34:40 +07:00 |
|
ricardoofnl
|
6cbbd15928
|
[saco] Implement CPlayerPed::Destroy and match ~CPlayerPed; the destructor body is just Destroy()
|
2026-09-03 02:34:40 +07:00 |
|
ricardoofnl
|
3e0b45b61e
|
[saco] Implement/match CPlayerPed::RemoveAllAttachedObjects and StopCarrying
|
2026-09-03 02:34:40 +07:00 |
|
ricardoofnl
|
e207d37fb4
|
[saco] Implement/match the CPlayerPed attached-object slot accessors; a live slot holds 1, not just nonzero
|
2026-09-03 02:34:40 +07:00 |
|