Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Created March 30, 2022 09:17
Show Gist options
  • Save JuniorDjjr/915be607c534b9821d38c51eb0faaf3a to your computer and use it in GitHub Desktop.
Save JuniorDjjr/915be607c534b9821d38c51eb0faaf3a to your computer and use it in GitHub Desktop.
// by Junior_Djr - MixMods.com.br
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleoplus
SCRIPT_START
{
LVAR_INT i j k hObject hChar pEntity iWeaponType pColPoint pProjectileInfoArray pProjectileInfoObjects iProjectileInfoTotal pObject pProjectileInfo lDeleteObjects bExplodedThisFrame
LVAR_FLOAT x y z
WAIT 700
READ_MEMORY 0x737B49 4 TRUE (pProjectileInfoObjects)
READ_MEMORY 0x737B42 4 TRUE (iProjectileInfoTotal)
READ_MEMORY 0x737B50 4 TRUE (pProjectileInfoArray)
pProjectileInfoArray -= 0x4
CREATE_LIST DATATYPE_INT (lDeleteObjects)
GET_LABEL_POINTER TempColPoint (pColPoint)
SET_SCRIPT_EVENT_BULLET_IMPACT ON OnBulletImpact hChar pEntity iWeaponType pColPoint
WHILE TRUE
WAIT 0
IF bExplodedThisFrame = TRUE
GET_LIST_SIZE lDeleteObjects (j)
i = 0
WHILE i < j
GET_LIST_VALUE_BY_INDEX lDeleteObjects i (hObject)
IF DOES_OBJECT_EXIST hObject
GET_OBJECT_POINTER hObject (pObject)
//char __cdecl CProjectileInfo::RemoveIfThisIsAProjectile(CObject *object)
CALL_FUNCTION_RETURN 0x739A40 1 1 (pObject)(k)
ENDIF
++i
ENDWHILE
RESET_LIST lDeleteObjects
bExplodedThisFrame = FALSE
ENDIF
ENDWHILE
OnBulletImpact:
GET_COLPOINT_COORDINATES pColPoint x y z
i = 0
WHILE i < iProjectileInfoTotal
READ_STRUCT_PARAM pProjectileInfoObjects i pObject
IF pObject > 0x0
GET_OBJECT_REF pObject hObject
IF DOES_OBJECT_HAVE_THIS_MODEL hObject 363
IF LOCATE_OBJECT_DISTANCE_TO_COORDINATES hObject x y z 0.5
CLEO_CALL ExplodeThisProjectile 0 (hObject lDeleteObjects)
bExplodedThisFrame = TRUE
ENDIF
ENDIF
ENDIF
++i
ENDWHILE
RETURN_SCRIPT_EVENT
}
SCRIPT_END
{
LVAR_INT hObject lDeleteObjects //In
LVAR_INT i j hObjectInList
LVAR_FLOAT x y z
ExplodeThisProjectile:
// Ignored if already in list
GET_LIST_SIZE lDeleteObjects (j)
i = 0
WHILE i < j
GET_LIST_VALUE_BY_INDEX lDeleteObjects i (hObjectInList)
IF hObjectInList = hObject
CLEO_RETURN 0 ()
ENDIF
++i
ENDWHILE
LIST_ADD lDeleteObjects hObject
GET_OBJECT_COORDINATES hObject x y z
ADD_EXPLOSION x y z EXPLOSION_GRENADE
i = 0
WHILE GET_ANY_OBJECT_NO_SAVE_RECURSIVE i (i hObject)
IF DOES_OBJECT_HAVE_THIS_MODEL hObject 363
IF LOCATE_OBJECT_DISTANCE_TO_COORDINATES hObject x y z 5.0
CLEO_CALL ExplodeThisProjectile 0 (hObject lDeleteObjects)
ENDIF
ENDIF
ENDWHILE
CLEO_RETURN 0 ()
}
TempColPoint:
DUMP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ENDDUMP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment