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
|
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
|
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
|
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
|
910e879b56
|
[saco] Match CTextDrawPool::FUNC_1001E830; the counter is declared above the guard, which flips the push order
|
2026-09-03 02:32:59 +07:00 |
|
ricardoofnl
|
42bd7d950f
|
[saco] Match CTextDrawPool::FUNC_1001E870 and FUNC_1001E8A0; both dispatch over live slots
|
2026-09-03 02:32:59 +07:00 |
|
ricardoofnl
|
5a8554d37c
|
[saco] Match CTextDrawPool::FUNC_1001E8D0; the delete-all loop strength-reduces to a pointer walk
|
2026-09-03 02:32:59 +07:00 |
|
ricardoofnl
|
eb8c6e50e8
|
[saco] Match CTextDrawPool::FUNC_1001E7F0; add CTextDraw so the slot delete emits its out-of-line dtor
|
2026-09-03 02:32:59 +07:00 |
|
ricardoofnl
|
403e0cb671
|
[saco] Split CVehiclePool::_gapBD14 into field_BD14/field_DC54/field_FB94/field_11AD4
|
2026-09-03 02:32:59 +07:00 |
|
ricardoofnl
|
9f962b6477
|
[saco] Match CDownloadManager::FUNC_1000C010 and its empty worker proc; _beginthread per slot
|
2026-09-03 02:32:59 +07:00 |
|
ricardoofnl
|
60c7d6ba09
|
[saco] Add net/downloader.cpp and match CDownloadManager::FUNC_1000C0C0; 6 slots of 0x230
|
2026-09-03 02:32:59 +07:00 |
|
ricardoofnl
|
2e0f46beb1
|
[saco] Implement CScoreBoard::FUNC_1006ED30; Show and six small helpers match, the refresh is 444/892 off
|
2026-09-03 02:32:59 +07:00 |
|
ricardoofnl
|
1cb6783ace
|
[saco] Match ExitVehicle; it only acts inside a 200-unit radius
|
2026-09-03 02:32:57 +07:00 |
|
ricardoofnl
|
5bf5327765
|
[saco] Match WorldPlayerDeath; CPlayerPool::GetAt inlines into the handler
|
2026-09-03 02:32:57 +07:00 |
|
ricardoofnl
|
8bb2a5c54d
|
[saco] Match CRemotePlayer::FUNC_10016330; the four guards are one && so the zero arm lands last
|
2026-09-03 02:26:57 +07:00 |
|
ricardoofnl
|
bad27c78d8
|
[saco] Match CRemotePlayer::FUNC_10014500; the marker clear stores the parameter, not a literal zero
|
2026-09-03 02:26:57 +07:00 |
|
ricardoofnl
|
eb8859c573
|
[saco] Implement/match ScrUnkA7; it stores a bool into CNetGame::field_232
|
2026-09-03 02:21:32 +07:00 |
|
ricardoofnl
|
ee4a28d11c
|
[saco] Implement/match ScrUnk23; it calls CPlayerPed::FUNC_100ADFB0 with the value it reads
|
2026-09-03 02:21:32 +07:00 |
|
ricardoofnl
|
8be3a23632
|
[saco] Match CRemotePlayer::FUNC_100160A0, the player-to-player distance; the sum is one expression so fsqrt needs no spill
|
2026-09-03 02:16:30 +07:00 |
|
ricardoofnl
|
d75977c1d4
|
[saco] Match CRemotePlayer::FUNC_10016120; it switches to field_1E1 when the state is 19 and tail-jumps
|
2026-09-03 02:16:30 +07:00 |
|
ricardoofnl
|
d9ea7eb7f6
|
[saco] Match CRemotePlayer::FUNC_100155E0; 0x100B5210 is __cdecl and field_1E1 is a CVehicle *
|
2026-09-03 02:16:30 +07:00 |
|
ricardoofnl
|
57a67d4cec
|
[saco] Implement/match ScrUnk5B; it sets a vehicle move or turn speed vector
|
2026-09-03 02:09:29 +07:00 |
|
ricardoofnl
|
dc4cb7f2bb
|
[saco] Implement/match ScrSetInterior; it calls CPlayerPed::SetInterior with bRefresh TRUE
|
2026-09-03 02:09:29 +07:00 |
|
ricardoofnl
|
9d5a65219b
|
[saco] Implement/match ScrUnk42; it is the set-armour RPC and calls CPlayerPed::SetArmour
|
2026-09-03 02:09:28 +07:00 |
|
ricardoofnl
|
db053b37df
|
[saco] Match CNetPlayer::SetPlayerName; 0x1001DF60 is not CPlayerPool::SetLocalPlayerName
|
2026-09-03 02:09:28 +07:00 |
|
ricardoofnl
|
89f12d3d55
|
[saco] Match FUNC_100A3B80; it maps a ped pointer to its actor id
|
2026-09-03 02:02:39 +07:00 |
|
ricardoofnl
|
37237dd629
|
[saco] Match ProcessControlRemotePed; the SEH handler kicks the player whose ped faulted
|
2026-09-03 02:02:39 +07:00 |
|
ricardoofnl
|
a1f08995ef
|
[saco] Add sub_10075330; the nametag pass was absent, 15 register bytes off an edi/ebp swap
|
2026-09-03 01:52:45 +07:00 |
|
ricardoofnl
|
e6bb260c3c
|
[saco] Match CVehiclePool::FUNC_1001EB90; the search compares a1 on the left, which fixes the cmp operand order
|
2026-09-03 01:34:00 +07:00 |
|
ricardoofnl
|
778990d4ad
|
[saco] Match FUNC_1001EBE0; the free __stdcall twin of FindGtaIDFromID that takes the pointer directly
|
2026-09-03 01:34:00 +07:00 |
|
ricardoofnl
|
7b2acc2d2b
|
[saco] Match CVehiclePool::FUNC_1001E9B0; it rescans field_3074 for the highest live slot into field_0
|
2026-09-03 01:34:00 +07:00 |
|
ricardoofnl
|
f0e80175eb
|
[saco] Match CVehiclePool::FindGtaIDFromID; it tail-jumps into GamePool_Vehicle_GetIndex
|
2026-09-03 01:34:00 +07:00 |
|