Last active
January 5, 2024 17:26
-
-
Save JuniorDjjr/93457d0647a7ca01393838be130ddc65 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-cleoplus | |
SCRIPT_START | |
{ | |
LVAR_INT scplayer iModelIgTrolley iModelIgTrolleyLid hIgTrolley hIgTrolleyLid hMenu iWeaponList bEmmetAvailable i j iSelected iLastSelected iMaxAmmo iClipAmmo iWeaponType pWeaponInfo hChar iProgress bShowingHelp iAmmoMult | |
LVAR_FLOAT fOpenProgress fOpenEased fLidAngle f | |
WAIT 0 | |
WAIT 0 | |
GET_PLAYER_CHAR 0 (scplayer) | |
IF NOT GET_MODEL_BY_NAME "igtrolley" (iModelIgTrolley) | |
PRINT_STRING_NOW "Emmet But Useful: ~r~Model 'igtrolley' isn't installed." 5000 | |
TERMINATE_THIS_CUSTOM_SCRIPT | |
ENDIF | |
IF NOT GET_MODEL_BY_NAME "igtrolley_lid" (iModelIgTrolleyLid) | |
PRINT_STRING_NOW "Emmet But Useful: ~r~Model 'igtrolley_lid' isn't installed." 5000 | |
TERMINATE_THIS_CUSTOM_SCRIPT | |
ENDIF | |
//REQUEST_MODEL iModelIgTrolley | |
//REQUEST_MODEL iModelIgTrolleyLid | |
//LOAD_ALL_MODELS_NOW | |
//SET_CHAR_COORDINATES scplayer 2442.9462 -1966.2584 13.2 | |
WHILE TRUE | |
WAIT 0 | |
IF LOCATE_CHAR_DISTANCE_TO_COORDINATES scplayer 2440.2 -1966.0 13.1 100.0 | |
AND NOT IS_ON_CUTSCENE | |
GOSUB CreateObjectIfNeeded | |
IF bEmmetAvailable = TRUE | |
IF NOT IS_CHAR_IN_ANY_CAR scplayer | |
IF LOCATE_CHAR_DISTANCE_TO_COORDINATES scplayer 2440.2 -1966.0 13.1 1.7 | |
AND NOT IS_CHAR_DEAD scplayer | |
AND IS_PLAYER_CONTROL_ON 0 | |
AND NOT IS_CHAR_ENTERING_ANY_CAR scplayer | |
SET_PLAYER_ENTER_CAR_BUTTON 0 OFF | |
PRINT_HELP_FOREVER EMBTU01 | |
bShowingHelp = TRUE | |
IF IS_BUTTON_JUST_PRESSED PAD1 15 | |
IF GOSUB IsOkToOpen | |
GOSUB Start | |
ELSE | |
PRINT_NOW EMBTU05 4000 1 | |
ENDIF | |
ENDIF | |
ELSE | |
IF bShowingHelp = TRUE | |
SET_PLAYER_ENTER_CAR_BUTTON 0 ON | |
CLEAR_HELP | |
bShowingHelp = FALSE | |
ENDIF | |
ENDIF | |
ENDIF | |
ELSE | |
GOSUB CheckEmmetAvailable | |
ENDIF | |
ELSE | |
GOSUB DeleteObjectIfNeeded | |
ENDIF | |
ENDWHILE | |
DeleteObjectIfNeeded: | |
IF NOT hIgTrolley = 0 | |
AND DOES_OBJECT_EXIST hIgTrolley | |
DELETE_OBJECT hIgTrolley | |
hIgTrolley = 0 | |
ENDIF | |
IF NOT hIgTrolleyLid = 0 | |
AND DOES_OBJECT_EXIST hIgTrolleyLid | |
DELETE_OBJECT hIgTrolleyLid | |
hIgTrolleyLid = 0 | |
ENDIF | |
RETURN | |
CreateObjectIfNeeded: | |
IF NOT DOES_OBJECT_EXIST hIgTrolley | |
CREATE_OBJECT_NO_SAVE iModelIgTrolley 2440.2 -1966.0 13.1 FALSE FALSE (hIgTrolley) | |
SET_OBJECT_HEADING hIgTrolley 90.0 | |
ENDIF | |
IF NOT DOES_OBJECT_EXIST hIgTrolleyLid | |
CREATE_OBJECT_NO_SAVE iModelIgTrolleyLid 0.0 0.0 0.0 FALSE FALSE (hIgTrolleyLid) | |
GOSUB AttachLid | |
ENDIF | |
RETURN | |
IsOkToOpen: | |
IF IS_WANTED_LEVEL_GREATER 0 1 | |
RETURN_FALSE | |
RETURN | |
ENDIF | |
iProgress = 0 | |
WHILE GET_ANY_CHAR_NO_SAVE_RECURSIVE iProgress (iProgress hChar) | |
IF NOT hChar = scplayer | |
AND NOT IS_CHAR_DEAD hChar | |
IF HAS_CHAR_SPOTTED_CHAR_IN_FRONT hChar scplayer | |
GET_CHAR_STAT_ID scplayer i | |
IF i = PEDSTAT_GANG2 //families | |
ELSE | |
GET_PED_TYPE hChar i | |
IF i <= 1 //is player | |
ELSE | |
GET_PLAYER_GROUP 0 i | |
IF IS_GROUP_MEMBER hChar i | |
ELSE | |
RETURN_FALSE | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDWHILE | |
RETURN_TRUE | |
RETURN | |
CheckEmmetAvailable: | |
CLEO_CALL ReadGlobalVar 0 (452)(i) //Sweet_Total_Passed_Missions | |
//PRINT_FORMATTED_NOW "sweet %i" 5000 i | |
IF i > 20 // something is wrong, may not be original storyline | |
GOSUB DeleteObjectIfNeeded | |
TERMINATE_THIS_CUSTOM_SCRIPT | |
ENDIF | |
IF i >= 4 | |
bEmmetAvailable = TRUE | |
CLEO_CALL ReadGlobalVar 0 (32)(i) //Pickup_Emmets_Colt45 | |
IF DOES_PICKUP_EXIST i | |
REMOVE_PICKUP i | |
ENDIF | |
ENDIF | |
RETURN | |
Start: | |
CLEAR_HELP | |
CLEAR_PRINTS | |
REQUEST_ANIMATION EMBTU | |
LOAD_ALL_MODELS_NOW | |
SET_PLAYER_CONTROL_PAD PAD1 OFF | |
SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED | |
CLEO_CALL SlideCharTo 0 (scplayer 2441.002 -1965.9785 13.5469 90.0 0.05)() | |
IF NOT IS_CHAR_DEAD scplayer | |
TASK_LOOK_AT_OBJECT scplayer hIgTrolley 9999999 | |
TASK_PLAY_ANIM scplayer "EMBTU_open" "EMBTU" 2.0 FALSE FALSE FALSE FALSE -1 | |
fOpenProgress = 0.0 | |
WHILE fOpenProgress < 0.5 | |
WAIT 0 | |
IF IS_CHAR_DEAD scplayer | |
BREAK | |
ENDIF | |
GOSUB SetAnimProgress | |
fOpenProgress += 0.02 | |
ENDWHILE | |
IF NOT IS_CHAR_DEAD scplayer | |
GOSUB MenuLoop | |
IF NOT IS_CHAR_DEAD scplayer | |
AND IS_PLAYER_PLAYING 0 | |
WHILE fOpenProgress < 1.0 | |
WAIT 0 | |
IF IS_CHAR_DEAD scplayer | |
BREAK | |
ENDIF | |
GOSUB SetAnimProgress | |
fOpenProgress += 0.02 | |
ENDWHILE | |
fOpenProgress = 1.0 | |
GOSUB SetAnimProgress | |
ENDIF | |
ENDIF | |
ENDIF | |
IF NOT IS_CHAR_DEAD scplayer | |
CLEAR_CHAR_SECONDARY_TASKS scplayer | |
ENDIF | |
SET_PLAYER_CONTROL_PAD PAD1 ON | |
REMOVE_ANIMATION EMBTU | |
CLEAR_PRINTS | |
RETURN | |
MenuLoop: | |
CLEO_CALL ReadGlobalVar 0 (452)(i) //Sweet_Total_Passed_Missions | |
//PRINT_FORMATTED_NOW "sweet %i" 5000 i | |
IF i >= 9 | |
iWeaponList = 4 | |
ELSE | |
CLEO_CALL ReadGlobalVar 0 (453)(iWeaponList) //Ryder_Total_Passed_Missions | |
//PRINT_FORMATTED_NOW "ryder %i" 5000 iWeaponList | |
CLAMP_INT iWeaponList 0 3 (iWeaponList) | |
ENDIF | |
iLastSelected = -1 | |
//PRINT_FORMATTED_NOW "%i" 1000 iWeaponList | |
//08D4=9,create_menu %1g% position %2d% %3d% width %4d% columns %5h% interactive %6h% background %7h% alignment %8h% store_to %9d% | |
CREATE_MENU EMBTU02 (20.0 150.0) (125.0) 1 (ON ON 1) (hMenu) | |
//08DB=15,set_menu_column %1d% col %2h% title_to %3g% items_to %4g% %5g% %6g% %7g% %8g% %9g% %10g% %11g% %12g% %13g% %14g% %15g% | |
SWITCH iWeaponList | |
CASE 2 | |
SET_MENU_COLUMN hMenu 0 EMBTU03 (WEAP5 WEAP22 WEAP32 DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY) //Weapon | |
BREAK | |
CASE 3 | |
SET_MENU_COLUMN hMenu 0 EMBTU03 (WEAP5 WEAP22 WEAP32 WEAP29 DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY) //Weapon | |
BREAK | |
CASE 4 | |
SET_MENU_COLUMN hMenu 0 EMBTU03 (WEAP5 WEAP22 WEAP32 WEAP29 WEAP30 DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY) //Weapon | |
BREAK | |
DEFAULT | |
SET_MENU_COLUMN hMenu 0 EMBTU03 (WEAP5 WEAP22 DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY DUMMY) //Weapon | |
BREAK | |
ENDSWITCH | |
WHILE TRUE | |
WAIT 0 | |
IF IS_CHAR_DEAD scplayer | |
OR NOT IS_PLAYER_PLAYING 0 | |
OR NOT LOCATE_CHAR_DISTANCE_TO_COORDINATES scplayer 2440.2 -1966.0 13.1 2.0 | |
OR IS_BUTTON_JUST_PRESSED PAD1 TRIANGLE | |
BREAK | |
ENDIF | |
GET_MENU_ITEM_SELECTED hMenu (iSelected) | |
IF NOT iLastSelected = iSelected | |
CLEAR_THIS_PRINT EMBTU04 | |
CLEAR_THIS_PRINT EMBTU06 | |
iLastSelected = iSelected | |
ENDIF | |
GOSUB ShowWeaponWillReplace | |
IF IS_SELECT_MENU_JUST_PRESSED | |
GOSUB GiveWeapon | |
ENDIF | |
GOSUB SetAnimProgress | |
ENDWHILE | |
DELETE_MENU hMenu | |
RETURN | |
ShowWeaponWillReplace: | |
SWITCH iSelected | |
CASE 0 | |
j = WEAPONTYPE_BASEBALLBAT | |
BREAK | |
CASE 1 | |
j = WEAPONTYPE_PISTOL | |
BREAK | |
CASE 2 | |
j = WEAPONTYPE_TEC9 | |
BREAK | |
CASE 3 | |
j = WEAPONTYPE_MP5 | |
BREAK | |
CASE 4 | |
j = WEAPONTYPE_AK47 | |
BREAK | |
ENDSWITCH | |
GET_WEAPONINFO j 1 pWeaponInfo | |
GET_WEAPONINFO_SLOT pWeaponInfo (i) | |
i += 1 | |
GET_CHAR_WEAPON_IN_SLOT scplayer i iWeaponType i i | |
IF NOT iWeaponType = j | |
AND NOT iWeaponType = 0 | |
AND NOT j = 0 | |
PRINT EMBTU06 100 1 | |
ENDIF | |
RETURN | |
GiveWeapon: | |
iAmmoMult = iWeaponList | |
CLAMP_INT iAmmoMult 1 3 (iAmmoMult) | |
SWITCH iSelected | |
CASE 0 | |
REQUEST_MODEL BAT | |
LOAD_ALL_MODELS_NOW | |
GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_BASEBALLBAT 1 | |
BREAK | |
CASE 1 | |
GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_PISTOL (i) | |
GET_WEAPONINFO WEAPONTYPE_PISTOL 1 pWeaponInfo | |
GET_WEAPONINFO_TOTAL_CLIP pWeaponInfo iClipAmmo | |
iMaxAmmo = iClipAmmo * iAmmoMult | |
IF i >= iMaxAmmo | |
PRINT_NOW EMBTU04 5000 1 | |
BREAK | |
ENDIF | |
CLEAR_THIS_PRINT EMBTU04 | |
REQUEST_MODEL COLT45 | |
LOAD_ALL_MODELS_NOW | |
REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_PISTOL | |
GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_PISTOL iMaxAmmo | |
MARK_MODEL_AS_NO_LONGER_NEEDED COLT45 | |
BREAK | |
CASE 2 | |
GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_TEC9 (i) | |
GET_WEAPONINFO WEAPONTYPE_TEC9 1 pWeaponInfo | |
GET_WEAPONINFO_TOTAL_CLIP pWeaponInfo iClipAmmo | |
iMaxAmmo = iClipAmmo * iAmmoMult | |
IF i >= iMaxAmmo | |
PRINT_NOW EMBTU04 5000 1 | |
BREAK | |
ENDIF | |
CLEAR_THIS_PRINT EMBTU04 | |
REQUEST_MODEL TEC9 | |
LOAD_ALL_MODELS_NOW | |
GET_WEAPONINFO_SLOT pWeaponInfo (i) | |
i += 1 | |
GET_CHAR_WEAPON_IN_SLOT scplayer i iWeaponType i i | |
REMOVE_WEAPON_FROM_CHAR scplayer iWeaponType | |
GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_TEC9 iMaxAmmo | |
MARK_MODEL_AS_NO_LONGER_NEEDED TEC9 | |
BREAK | |
CASE 3 | |
GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_MP5 (i) | |
GET_WEAPONINFO WEAPONTYPE_MP5 1 pWeaponInfo | |
GET_WEAPONINFO_TOTAL_CLIP pWeaponInfo iClipAmmo | |
iMaxAmmo = iClipAmmo * iAmmoMult | |
IF i >= iMaxAmmo | |
PRINT_NOW EMBTU04 5000 1 | |
BREAK | |
ENDIF | |
CLEAR_THIS_PRINT EMBTU04 | |
REQUEST_MODEL MP5LNG | |
LOAD_ALL_MODELS_NOW | |
GET_WEAPONINFO_SLOT pWeaponInfo (i) | |
i += 1 | |
GET_CHAR_WEAPON_IN_SLOT scplayer i iWeaponType i i | |
REMOVE_WEAPON_FROM_CHAR scplayer iWeaponType | |
GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_MP5 iMaxAmmo | |
MARK_MODEL_AS_NO_LONGER_NEEDED MP5LNG | |
BREAK | |
CASE 4 | |
GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_AK47 (i) | |
GET_WEAPONINFO WEAPONTYPE_AK47 1 pWeaponInfo | |
GET_WEAPONINFO_TOTAL_CLIP pWeaponInfo iClipAmmo | |
iMaxAmmo = iClipAmmo * iAmmoMult | |
IF i >= iMaxAmmo | |
PRINT_NOW EMBTU04 5000 1 | |
BREAK | |
ENDIF | |
CLEAR_THIS_PRINT EMBTU04 | |
REQUEST_MODEL AK47 | |
LOAD_ALL_MODELS_NOW | |
REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_AK47 | |
GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_AK47 iMaxAmmo | |
MARK_MODEL_AS_NO_LONGER_NEEDED AK47 | |
BREAK | |
ENDSWITCH | |
SET_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_UNARMED | |
RETURN | |
SetAnimProgress: | |
EASE fOpenProgress EASE_MODE_CUBIC EASE_WAY_INOUT (fOpenEased) | |
SET_CHAR_ANIM_PLAYING_FLAG scplayer "EMBTU_open" ON | |
SET_CHAR_ANIM_CURRENT_TIME scplayer "EMBTU_open" fOpenEased | |
IF fOpenEased > 0.5 | |
f = fOpenEased - 0.5 | |
f *= 2.0 | |
fOpenEased -= f | |
ENDIF | |
fLidAngle = fOpenEased * -80.0 | |
GOSUB AttachLid | |
RETURN | |
AttachLid: | |
ATTACH_OBJECT_TO_OBJECT hIgTrolleyLid hIgTrolley 0.0 0.5 0.479 fLidAngle 0.0 0.0 | |
RETURN | |
} | |
SCRIPT_END | |
{ | |
LVAR_INT var //In | |
LVAR_INT value scriptSpace finalOffset | |
ReadGlobalVar: | |
READ_MEMORY 0x00468D5E 4 1 (scriptSpace) | |
finalOffset = var * 4 | |
finalOffset += scriptSpace | |
READ_MEMORY finalOffset 4 FALSE (value) | |
CLEO_RETURN 0 (value) | |
} | |
{ | |
//CLEO_CALL SlideCharTo 0 (scplayer 2441.002 -1965.9785 13.5469 90.0 0.05)() | |
LVAR_INT hChar //In | |
LVAR_FLOAT xDest yDest zDest aDest fMoveSpeed //In | |
LVAR_FLOAT x y z x2 y2 z2 f fEased | |
LVAR_INT i | |
SlideCharTo: | |
GET_CHAR_COORDINATES hChar x y z | |
TASK_ACHIEVE_HEADING hChar aDest | |
WHILE f < 1.0 | |
WAIT 0 | |
IF IS_CHAR_DEAD hChar | |
BREAK | |
ENDIF | |
EASE f EASE_MODE_CUBIC EASE_WAY_INOUT (fEased) | |
LERP x xDest fEased (x2) | |
LERP y yDest fEased (y2) | |
LERP z zDest fEased (z2) | |
SET_CHAR_COORDINATES_SIMPLE hChar x2 y2 z2 | |
f +=@ fMoveSpeed | |
ENDWHILE | |
f = 0.0 | |
WHILE NOT IS_CHAR_DEAD hChar | |
GET_SCRIPT_TASK_STATUS hChar 0x5d4 i // TASK_ACHIEVE_HEADING | |
IF i = 7 // finished | |
OR f > 1.0 | |
BREAK | |
ENDIF | |
f +=@ 0.005 // this is just a time counter to avoid soft lock | |
WAIT 0 | |
ENDWHILE | |
CLEO_RETURN 0 () | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment