mirror of
https://github.com/dashr9230/SA-MP.git
synced 2026-10-10 03:33:04 +08:00
[saco] Implement/match CPhysical__ProcessEntityCollision_Hook
This commit is contained in:
+42
-1
@@ -1346,7 +1346,48 @@ NUDE CMonsterTruck__ProcessEntityCollision_Hook()
|
||||
|
||||
NUDE CPhysical__ProcessEntityCollision_Hook()
|
||||
{
|
||||
// TODO: CPhysical__ProcessEntityCollision_Hook
|
||||
__asm
|
||||
{
|
||||
mov dwCollisionThis, ecx
|
||||
mov edx, [esp]
|
||||
mov dwCollisionRetAddr, edx
|
||||
mov edx, [esp+4]
|
||||
mov dwCollisionEntity, edx
|
||||
pushad
|
||||
cmp pNetGame, 0
|
||||
jz process_collision
|
||||
mov eax, pNetGame
|
||||
movzx ecx, byte ptr [eax+0x232] // pNetGame->field_232
|
||||
test ecx, ecx
|
||||
jz process_collision
|
||||
cmp dwCollisionThis, 0
|
||||
jz process_collision
|
||||
cmp dwCollisionEntity, 0
|
||||
jz process_collision
|
||||
mov edx, dwCollisionEntity
|
||||
movzx eax, word ptr [edx+0x22] // entity.nModelIndex
|
||||
cmp eax, 400
|
||||
jl process_collision
|
||||
mov ecx, dwCollisionEntity
|
||||
movzx edx, word ptr [ecx+0x22]
|
||||
cmp edx, 611 // only vehicle models pass
|
||||
jg process_collision
|
||||
mov eax, dwCollisionThis
|
||||
cmp dword ptr [eax+0x460], 0 // pVehicle->pDriver
|
||||
jz process_collision
|
||||
mov ecx, dwCollisionEntity
|
||||
cmp dword ptr [ecx+0x460], 0
|
||||
jz process_collision
|
||||
popad
|
||||
|
||||
// both vehicles are being driven, so don't collide them
|
||||
mov eax, 0
|
||||
retn 8
|
||||
process_collision:
|
||||
popad
|
||||
mov edx, 0x546D00 // CPhysical::ProcessEntityCollision
|
||||
jmp edx
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user