ricardoofnl
|
0d9a1c9f3c
|
[saco] Implement/match ScrUnk5A; FUNC_100ABDD0 and FUNC_100ABDF0 take ecx, so both are CPlayerPed methods and the xor feeds the setter
|
2026-09-05 10:07:58 +07:00 |
|
ricardoofnl
|
c735f2f750
|
[saco] Implement/match ScrUnkAE, ScrUnkAF, ScrUnkB2, ScrUnkA0, ScrUnk39, ScrUnk7E and ScrUnk7F; the actor lookup lands in ecx because it is the this of a thiscall, not an allocator choice
|
2026-09-05 09:58:02 +07:00 |
|
ricardoofnl
|
1d0b3fac63
|
[saco] Implement/match ScrUnkA1; it forwards the two bytes straight to CVehiclePool::FUNC_1001EB30
|
2026-09-05 09:43:46 +07:00 |
|
ricardoofnl
|
39edc13d51
|
[saco] Match ScrUnk30 and CDownloadList::FUNC_10017D10; the guarded three-field update is an inline member, so the handler and its out-of-line COMDAT fall together
|
2026-09-05 09:43:46 +07:00 |
|
ricardoofnl
|
2f9da6d14b
|
[saco] Implement/match ScrUnk7C, ScrUnk58, ScrUnk41, ScrUnkA9 and ScrUnk7A; CLocalPlayer::sub_100030F0 takes a byte, so the caller pushes the slot dword with no movzx
|
2026-09-05 09:24:47 +07:00 |
|
ricardoofnl
|
be7d816e20
|
[saco] Implement/match ScrUnk62, ScrUnk11, ScrUnk93 and ScrUnk10; caching m_pGameAudio in a local is what loads this before the argument pushes
|
2026-09-05 09:24:47 +07:00 |
|
ricardoofnl
|
85d533a5af
|
[saco] Match CRemotePlayer::FUNC_10017C80; the dead out-of-line COMDAT comes back once ScrUnk50 calls the inline setter instead of assigning field_4 directly
|
2026-09-05 09:24:47 +07:00 |
|
ricardoofnl
|
efad9a4425
|
[saco] Implement/match ScrUnk52; the wire bool picks between InterpolatePosition and InterpolateLookAt, and both endpoints are VECTORs passed by pointer
|
2026-09-05 09:24:47 +07:00 |
|
ricardoofnl
|
313c7ee291
|
[saco] Implement/match ScrUnk29; it is PlayAudioStream on the object at 0x1026EB8C, and the position is a VECTOR with the radius slotted below it
|
2026-09-05 08:45:38 +07:00 |
|
ricardoofnl
|
40f011845e
|
[saco] Implement/match ScrUnk57; a single goto exit gives the one shared epilogue while keeping push esi delayed, which neither early returns nor nesting produced
|
2026-09-05 08:24:05 +07:00 |
|
ricardoofnl
|
810a3cffbd
|
[saco] Implement/match ScrUnk71; CPlayerPool::GetAt will not inline here, so the ternary has to be spelled out, and the attach test is negated
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
d8bc0efab5
|
[saco] Implement/match ScrUnk94; two GetAt lookups on different ids keep both slot tests, and the trailer is the this of the pair of calls
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
b18ac60ce5
|
[saco] Implement/match ScrUnk70; it forwards to CGame::PlayCrimeReport with the position passed by pointer
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
26cbdd6983
|
[saco] Implement/match ScrUnk38; it is CNetGame::SetMapIcon, and the contiguous ascending X/Y/Z slots mean a VECTOR rather than three floats
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
f904873daf
|
[saco] Implement/match ScrUnk7B; zeroing the 33-byte buffer with memset gives eight aligned dwords plus a trailing byte, an = {0} initializer does not
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
787d1811fd
|
[saco] Implement/match ScrUnk2D; the read order lands X in the second float slot, not the first
|
2026-09-05 08:11:28 +07:00 |
|
ricardoofnl
|
8fa52f694e
|
[saco] Implement/match ScrUnk2B, ScrUnk2E and ScrUnk2F; CObjectPool::FUNC_10012850 takes a 16-bit object id, so the caller pushes the slot dword with no movzx
|
2026-09-05 07:36:48 +07:00 |
|
ricardoofnl
|
f685a0bcd9
|
[saco] Implement/match ScrPutPlayerInVehicle, ScrUnk9F and ScrUnk50; repeating GetVehiclePool() instead of caching it in a local is what keeps the second slot-state test
|
2026-09-05 07:36:48 +07:00 |
|
ricardoofnl
|
13029ebe53
|
[saco] Implement/match ScrDisplayGameText and ScrUnk69; the inline memset of a stack buffer is what forces the 8-byte aligned frame
|
2026-09-05 07:36:47 +07:00 |
|
ricardoofnl
|
6eede0e150
|
[saco] Implement/match ScrSetPlayerPos and ScrUnk0D; the ground-Z fixup is FindGroundZForCoord plus a 1.5f float literal
|
2026-09-05 07:36:47 +07:00 |
|
ricardoofnl
|
2a481d8ff8
|
[saco] Match CMenuPool::GetSlotState; ScrInitMenu reaches the slot array through it, not by direct indexing
|
2026-09-05 07:36:47 +07:00 |
|
ricardoofnl
|
63c79b1162
|
[saco] Implement/match ScrUnk45; its local-player arm inlines a new CLocalPlayer::SetTeam, whose COMDAT is the body at 0x10017C70
|
2026-09-05 07:36:47 +07:00 |
|
ricardoofnl
|
12d85813ee
|
[saco] Implement/match ScrUnk85; it calls CGame::SetWantedLevel behind an early return
|
2026-09-04 19:32:01 +07:00 |
|
ricardoofnl
|
1de918acd0
|
[saco] Implement/match ScrSetSpawnInfo; the player pool is fetched after the bitstream
|
2026-09-04 19:32:01 +07:00 |
|
ricardoofnl
|
3983f6e174
|
[saco] Implement/match ScrUnk90; it calls CNetGame::DisableMapIcon
|
2026-09-03 05:20:50 +07:00 |
|
ricardoofnl
|
e39e76f106
|
[saco] Implement/match ScrUnk86; the oversize-textdraw warning is the fallthrough arm
|
2026-09-03 05:20:50 +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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
7bf0968104
|
[saco] Implement/match ScrUnk4F; it passes a float as the fifth arg of a command declared "fffii"
|
2026-09-03 00:52:29 +07:00 |
|
ricardoofnl
|
4f0518d989
|
[saco] Implement/match ScrUnk6F; the widescreen RPC calls ScriptCommand with opcode 0x02A3 directly
|
2026-09-03 00:52:29 +07:00 |
|
ricardoofnl
|
94a7579d7c
|
[saco] Implement/match ScrUnk40; it reads a PLAYERID and discards it
|
2026-09-03 00:52:29 +07:00 |
|