Commit Graph

1562 Commits

Author SHA1 Message Date
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
ricardoofnl ed3d698e36 [saco] Implement/match FUNC_100B61D0; it forwards its argument to the GTA routine at 0x745C70 2026-09-03 02:32:59 +07:00
ricardoofnl d1ada09e0d [saco] Point CPlayerPed::SetSkin at UnFuck and util.h; drop the file-local prototypes 2026-09-03 02:32:59 +07:00
ricardoofnl c761f03055 [saco] Implement/match IsValidPedModel; the model bounds test is signed, and the vtable is 0x85BDC0 2026-09-03 02:32:59 +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 c478c7dbfe [saco] Match FUNC_100A5240; the team-damage test compares two bytes, not two ints 2026-09-03 02:32:56 +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