Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Last active January 5, 2024 17:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save JuniorDjjr/9f15f2042e92c50194b3695c06d58bc9 to your computer and use it in GitHub Desktop.
Save JuniorDjjr/9f15f2042e92c50194b3695c06d58bc9 to your computer and use it in GitHub Desktop.
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleo
SCRIPT_START
{
LVAR_INT iPlayerId //In
LVAR_INT scplayer i iWeaponType iLastWeaponType pWeaponInfo bFireButtonOff iSave
LVAR_FLOAT fBackupStat69 fBackupStat70 f g
WAIT 0
WAIT 0
// force silenced be always loaded (so not required to edit default.ide)
REQUEST_ANIMATION SILENCED
LOAD_ALL_MODELS_NOW
GET_FLOAT_STAT 69 fBackupStat69
GET_FLOAT_STAT 70 fBackupStat70
GOSUB ChangeStats
// Make sure default weapon skill is not 2
READ_MEMORY 0x05E83D0 1 TRUE (i)
IF i = 2
WRITE_MEMORY 0x05E83D0 1 1 TRUE
ENDIF
STREAM_CUSTOM_SCRIPT_FROM_LABEL ScriptStart 1
GET_PLAYER_CHAR iPlayerId (scplayer)
SET_SCRIPT_EVENT_SAVE_CONFIRMATION ON OnSaveConfirmation iSave
ScriptStart:
WHILE TRUE
GOSUB Process
IF iPlayerId = 1
IF IS_2PLAYER_GAME_GOING_ON
GET_PLAYER_CHAR iPlayerId (scplayer)
ELSE
CONTINUE
ENDIF
ENDIF
GET_CURRENT_CHAR_WEAPON scplayer (iWeaponType)
IF iWeaponType > 1
IF IS_WEAPON_FIRE_TYPE iWeaponType WEAPONFIRE_INSTANT_HIT
GET_CURRENT_CHAR_WEAPONINFO scplayer pWeaponInfo
GET_WEAPONINFO_ANIMGROUP pWeaponInfo (i)
//PRINT_FORMATTED_NOW "%i" 1000 i
IF i = 13
OR i = 15
READ_STRUCT_OFFSET pWeaponInfo 0x50 4 (f)
READ_STRUCT_OFFSET pWeaponInfo 0x54 4 (g)
f -= g
//PRINT_FORMATTED_NOW "%f" 1000 f
IF f > 0.15
GOSUB Activate
ENDIF
ENDIF
IF i = 16
OR i = 17
OR i = 18
OR i = 19
OR i = 20
OR i = 11
OR i = 12
GOSUB Activate
ENDIF
IF i = 27
GOSUB Activate
ENDIF
ELSE
IF IS_WEAPON_FIRE_TYPE iWeaponType WEAPONFIRE_PROJECTILE
GOSUB Activate
ENDIF
ENDIF
ENDIF
ENDWHILE
Activate:
iLastWeaponType = iWeaponType
WHILE iLastWeaponType = iWeaponType
IF bFireButtonOff = TRUE
IF NOT IS_ANY_FIRE_BUTTON_PRESSED iPlayerId
SET_PLAYER_FIRE_BUTTON iPlayerId ON
bFireButtonOff = FALSE
ENDIF
ENDIF
GET_CHAR_WEAPON_STATE scplayer (i)
IF i = WEAPONSTATE_SHOOTING
OR IS_CHAR_SHOOTING scplayer
//PRINT_STRING_NOW "A" 1
SET_PLAYER_FIRE_BUTTON iPlayerId OFF
bFireButtonOff = TRUE
/*ELSE
PRINT_STRING_NOW "I" 1*/
ENDIF
GOSUB Process
IF iPlayerId = 1
IF NOT IS_2PLAYER_GAME_GOING_ON
BREAK
ENDIF
ENDIF
GET_CURRENT_CHAR_WEAPON scplayer (iWeaponType)
ENDWHILE
RETURN
ChangeStats:
SHOW_UPDATE_STATS OFF
SET_FLOAT_STAT 69 41.0
SET_FLOAT_STAT 70 501.0
SHOW_UPDATE_STATS ON
RETURN
Process:
WAIT 0
IF iSave = -1 //just saved
GOSUB ChangeStats
iSave = 0
ENDIF
RETURN
OnSaveConfirmation:
SHOW_UPDATE_STATS OFF
SET_FLOAT_STAT 69 fBackupStat69
SET_FLOAT_STAT 70 fBackupStat70
SHOW_UPDATE_STATS ON
iSave = -1
RETURN_SCRIPT_EVENT
}
SCRIPT_END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment