Last active
January 5, 2024 17:32
-
-
Save JuniorDjjr/9120055916eb2850d517296ad521fa43 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// by Junior_Djjr - MixMods.com.br | |
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleo | |
SCRIPT_START | |
{ | |
LVAR_INT scplayer hChar pEntity iWeaponType pColPoint i hObject iModel iNewModel hNewObject hFxSystem lObjects lDamObjects iListSize | |
LVAR_FLOAT x y z f | |
GET_PLAYER_CHAR 0 scplayer | |
SET_SCRIPT_EVENT_BULLET_IMPACT ON OnBulletImpact hChar pEntity iWeaponType pColPoint | |
//SET_SCRIPT_EVENT_OBJECT_DELETE ON OnObjectDelete hObject //didn't work on current CLEO+ version, I think it only works for scripted objects | |
CREATE_LIST DATATYPE_INT (lObjects) | |
CREATE_LIST DATATYPE_INT (lDamObjects) | |
WHILE TRUE | |
WAIT 0 | |
GET_LIST_SIZE lObjects (iListSize) | |
IF iListSize > 0 | |
i = 0 | |
WHILE i < iListSize | |
GET_LIST_VALUE_BY_INDEX lObjects i (hObject) | |
IF NOT DOES_OBJECT_EXIST hObject | |
GOSUB DeleteDamObjectFromObject | |
ELSE | |
GET_OBJECT_COORDINATES hObject x y z | |
IF NOT z = -50.0 //something is wrong | |
GOSUB DeleteDamObjectFromObject | |
ENDIF | |
ENDIF | |
++i | |
ENDWHILE | |
ENDIF | |
ENDWHILE | |
OnBulletImpact: | |
IF pEntity > 0 | |
GET_ENTITY_TYPE pEntity (i) | |
IF i = ENTITY_TYPE_OBJECT | |
GET_OBJECT_REF pEntity (hObject) | |
GET_OBJECT_MODEL hObject (iModel) | |
//PRINT_FORMATTED_NOW "%i" 1000 iModel | |
IF iModel = 955 //ext | |
OR iModel = 1775 //int | |
IF iModel = 955 //ext | |
iNewModel = 7393 //ext | |
ELSE | |
iNewModel = 7414 //int | |
ENDIF | |
GOSUB ChangeToNewModel | |
ENDIF | |
ENDIF | |
ENDIF | |
RETURN_SCRIPT_EVENT | |
ChangeToNewModel: | |
GET_OBJECT_COORDINATES hObject x y z | |
IF NOT z = -50.0 //not already removed | |
GET_OBJECT_COORDINATES hObject (x y z) | |
GET_OBJECT_HEADING hObject (f) | |
//DON'T DELETE THE ORIGINAL OBJECT! Keep it less intrusive | |
SET_OBJECT_COORDINATES hObject x y -50.0 | |
SET_OBJECT_VISIBLE hObject OFF | |
SET_OBJECT_COLLISION hObject OFF | |
REQUEST_MODEL iNewModel | |
LOAD_ALL_MODELS_NOW | |
CREATE_OBJECT_NO_SAVE iNewModel x y z FALSE FALSE (hNewObject) | |
SET_OBJECT_HEADING hNewObject f | |
MARK_MODEL_AS_NO_LONGER_NEEDED iNewModel | |
//CREATE_FX_SYSTEM "explosion_tiny" x y z 1 (hFxSystem) | |
//PLAY_AND_KILL_FX_SYSTEM hFxSystem | |
ADD_EXPLOSION x y z EXPLOSION_TINY | |
//INIT_EXTENDED_OBJECT_VARS hObject AUTO 1 | |
//SET_EXTENDED_OBJECT_VAR hObject AUTO 1 hNewObject | |
LIST_ADD lObjects hObject | |
LIST_ADD lDamObjects hNewObject | |
ENDIF | |
RETURN | |
/* | |
//didn't work on current CLEO+ version, I think it only works for scripted objects | |
OnObjectDelete: | |
IF GET_EXTENDED_OBJECT_VAR hObject AUTO 1 (hNewObject) | |
PRINT_STRING_NOW "deleted obj" 2000 | |
DELETE_OBJECT hNewObject | |
ENDIF | |
RETURN_SCRIPT_EVENT | |
*/ | |
DeleteDamObjectFromObject: | |
GET_LIST_VALUE_BY_INDEX lDamObjects i (hNewObject) | |
DELETE_OBJECT hNewObject | |
LIST_REMOVE_VALUE lObjects i | |
LIST_REMOVE_VALUE lDamObjects i | |
//PRINT_STRING_NOW "deleted obj" 2000 | |
RETURN | |
} | |
SCRIPT_END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment