Last active
January 5, 2024 17:24
-
-
Save JuniorDjjr/aa4c54b811686bbbc7d90e84977cbd2a to your computer and use it in GitHub Desktop.
This file contains 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 i j pPlayer bUsingChainsawLastFrame bGotChainsawLastFrame pWeaponInfo iSlot iChainsawAmmo hObject iModel bFoundObjectLastFrame bFoundObjectNow bShowAmmoOnScreen | |
LVAR_FLOAT fChainsawAmmo x y z | |
GET_PLAYER_CHAR 0 (scplayer) | |
GET_PED_POINTER scplayer (pPlayer) | |
IF NOT READ_INT_FROM_INI_FILE "CLEO\Chainsaw Ammo Fuel.ini" "Settings" "ShowAmmoOnScreen" (bShowAmmoOnScreen) | |
bShowAmmoOnScreen = FALSE | |
ENDIF | |
WHILE TRUE | |
WAIT 0 | |
IF HAS_CHAR_GOT_WEAPON scplayer WEAPONTYPE_CHAINSAW | |
IF bGotChainsawLastFrame = FALSE | |
bGotChainsawLastFrame = TRUE | |
GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_CHAINSAW (iChainsawAmmo) | |
IF iChainsawAmmo <= 1 | |
fChainsawAmmo = 999.0 | |
GOSUB UpdateChainsawAmmo | |
ELSE | |
fChainsawAmmo =# iChainsawAmmo | |
GOSUB UpdateChainsawAmmo | |
ENDIF | |
ENDIF | |
ELSE | |
IF bGotChainsawLastFrame = TRUE | |
bGotChainsawLastFrame = FALSE | |
iChainsawAmmo = 0 | |
fChainsawAmmo = 0.0 | |
ENDIF | |
ENDIF | |
IF IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_CHAINSAW | |
GET_AMMO_IN_CHAR_WEAPON scplayer WEAPONTYPE_CHAINSAW (iChainsawAmmo) | |
IF iChainsawAmmo > 999 | |
OR iChainsawAmmo <= 0 | |
fChainsawAmmo =# iChainsawAmmo | |
GOSUB UpdateChainsawAmmo | |
ENDIF | |
GOSUB ShowAmmoOnScreen | |
IF bUsingChainsawLastFrame = FALSE | |
bUsingChainsawLastFrame = TRUE | |
WRITE_MEMORY 0x5895EA 1 0 TRUE // "nSlot <= 0" to show melee ammo | |
ENDIF | |
IF IS_CHAR_FIGHTING scplayer | |
IF IS_CHAR_PLAYING_ANIM scplayer "CSAW_1" | |
OR IS_CHAR_PLAYING_ANIM scplayer "CSAW_2" | |
OR IS_CHAR_PLAYING_ANIM scplayer "CSAW_3" | |
OR IS_CHAR_PLAYING_ANIM scplayer "CSAW_G" | |
OR IS_CHAR_PLAYING_ANIM scplayer "csaw_part" | |
fChainsawAmmo -=@ 0.3 | |
GOSUB UpdateChainsawAmmo | |
ENDIF | |
ELSE | |
GET_CHAR_MOVE_STATE scplayer (i) | |
IF i = MOVE_STATE_IDLE | |
GOSUB CheckGasNear | |
ELSE | |
bFoundObjectLastFrame = FALSE | |
ENDIF | |
ENDIF | |
ELSE | |
IF bUsingChainsawLastFrame = TRUE | |
bUsingChainsawLastFrame = FALSE | |
WRITE_MEMORY 0x5895EA 1 1 TRUE // "nSlot <= 1" to show melee ammo | |
ENDIF | |
ENDIF | |
ENDWHILE | |
ShowAmmoOnScreen: | |
IF bShowAmmoOnScreen = TRUE | |
SET_TEXT_EDGE 1 0 0 0 255 | |
SET_TEXT_FONT FONT_SUBTITLES | |
SET_TEXT_WRAPX 640.0 | |
SET_TEXT_RIGHT_JUSTIFY TRUE | |
GET_FIXED_XY_ASPECT_RATIO 0.35 1.1 (x y) | |
SET_TEXT_SCALE x y | |
DISPLAY_TEXT_WITH_NUMBER 630.0 300.0 CHAMFM3 iChainsawAmmo | |
USE_TEXT_COMMANDS 0 | |
ENDIF | |
RETURN | |
CheckGasNear: | |
bFoundObjectNow = FALSE | |
GET_CHAR_COORDINATES scplayer x y z | |
i = 0 | |
WHILE GET_ANY_OBJECT_NO_SAVE_RECURSIVE i (i hObject) | |
IF LOCATE_OBJECT_DISTANCE_TO_COORDINATES hObject x y z 2.0 | |
GET_OBJECT_MODEL hObject (iModel) | |
IF iModel = 3465 | |
OR iModel = 1686 | |
OR iModel = 1676 | |
OR iModel = 1244 | |
OR iModel = 1650 | |
bFoundObjectNow = TRUE | |
IF fChainsawAmmo < 999.0 | |
AND IS_SCORE_GREATER 0 99 | |
IF bFoundObjectLastFrame = FALSE | |
AND timera > 5000 | |
IF NOT iModel = 1650 // petrolcanm, not gas station, just make infinite free fuel | |
PRINT_HELP CHAMFM1 | |
ELSE | |
PRINT_HELP CHAMFM2 | |
ENDIF | |
bFoundObjectLastFrame = TRUE | |
timera = 0 | |
ENDIF | |
IF IS_BUTTON_JUST_PRESSED PAD1 4 //~k~~PED_ANSWER_PHONE~/ ~k~~PED_FIREWEAPON_ALT~ | |
IF NOT iModel = 1650 | |
CHANGE_PLAYER_MONEY 0 CHANGE_MONEY_REMOVE 100 | |
ENDIF | |
fChainsawAmmo = 999.0 | |
GOSUB UpdateChainsawAmmo | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDWHILE | |
bFoundObjectLastFrame = bFoundObjectNow | |
RETURN | |
UpdateChainsawAmmo: | |
CLAMP_FLOAT fChainsawAmmo 0.0 999.0 (fChainsawAmmo) | |
iChainsawAmmo =# fChainsawAmmo | |
IF iChainsawAmmo <= 0 | |
iChainsawAmmo = 0 | |
REMOVE_WEAPON_FROM_CHAR scplayer WEAPONTYPE_CHAINSAW | |
RETURN | |
ENDIF | |
SET_CHAR_AMMO scplayer WEAPONTYPE_CHAINSAW iChainsawAmmo | |
//ADD_AMMO_TO_CHAR scplayer WEAPONTYPE_CHAINSAW iChainsawAmmo | |
/*GET_CURRENT_CHAR_WEAPONINFO scplayer pWeaponInfo | |
READ_STRUCT_OFFSET pWeaponInfo 0x14 4 (iSlot) | |
iSlot *= 0x1C // size of CWeapon | |
i = 0x5A0 + iSlot // start of CWeapon array | |
i += 0xC // m_nTotalAmmo | |
//READ_STRUCT_OFFSET pPlayer i 4 (j) | |
//PRINT_FORMATTED_NOW "%i" 1000 j | |
WRITE_STRUCT_OFFSET pPlayer i 4 100*/ | |
RETURN | |
} | |
SCRIPT_END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment