Last active
January 5, 2024 17:50
-
-
Save JuniorDjjr/adfd288278c16afb55df313ad8db5a56 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/f16-utilidades/t179-gta3script-while-true-return_true-e-return_false | |
SCRIPT_START | |
{ | |
LVAR_INT playerId scplayer i iWeaponType iAmmo bButtonDisabled[2] bLastFirePressed[2] bAmmoLastFrame[2] pPed pWeapon iState bReloadModKeep iTotalAmmo hAudio bNoWeaponDropScript | |
LVAR_FLOAT fVolume | |
IF NOT READ_INT_FROM_INI_FILE "CLEO/Reload Mod.ini" "Settings" "KeepNoAmmo" (bReloadModKeep) | |
bReloadModKeep = FALSE | |
ENDIF | |
IF NOT LOAD_3D_AUDIO_STREAM "CLEO/KeepNoAmmo/keepnoammo_click.wav" (hAudio) | |
hAudio = -1 | |
ENDIF | |
GET_SCRIPT_STRUCT_NAMED WEADROP i | |
IF i <= 0 | |
bNoWeaponDropScript = TRUE | |
ENDIF | |
WAIT 500 | |
bButtonDisabled[0] = TRUE | |
bButtonDisabled[1] = TRUE | |
WHILE TRUE | |
WAIT 0 | |
playerId = 0 | |
GOSUB Process | |
IF IS_2PLAYER_GAME_GOING_ON | |
playerId = 1 | |
GOSUB Process | |
ENDIF | |
ENDWHILE | |
Process: | |
GET_PLAYER_CHAR playerId scplayer | |
IF NOT IS_CHAR_DEAD scplayer | |
AND IS_PLAYER_CONTROL_ON playerId | |
AND NOT IS_CHAR_IN_ANY_CAR scplayer | |
IF bNoWeaponDropScript = TRUE | |
IF IS_BUTTON_PRESSED playerId 4 | |
AND IS_BUTTON_PRESSED playerId 10 | |
IF GOSUB ValidDropTimer | |
GET_CURRENT_CHAR_WEAPON scplayer iWeaponType | |
REMOVE_WEAPON_FROM_CHAR scplayer iWeaponType | |
RETURN | |
ENDIF | |
ELSE | |
GOSUB ResetDropTimer | |
ENDIF | |
ENDIF | |
IF CLEO_CALL IsCharHoldingFireGun 0 (scplayer) | |
GET_PED_POINTER scplayer (pPed) | |
i = pPed + 0x718 //m_nActiveWeaponSlot | |
READ_MEMORY i 1 FALSE (i) | |
IF NOT i = 0 | |
i *= 0x1C //sizeof CWeapon | |
i += pPed | |
pWeapon = i + 0x5A0 //CWeapon | |
IF bReloadModKeep = FALSE | |
iTotalAmmo = pWeapon + 0xC //m_nTotalAmmo | |
READ_MEMORY iTotalAmmo 4 FALSE (iTotalAmmo) | |
IF iTotalAmmo > 0 | |
bAmmoLastFrame[playerId] = TRUE | |
GOTO Process_Return | |
ENDIF | |
ELSE | |
// Get reload state | |
iState = pWeapon + 0x4 //m_nState | |
READ_MEMORY iState 4 FALSE (iState) | |
IF iState = 2 | |
GOTO Process_Return | |
ENDIF | |
ENDIF | |
iAmmo = pWeapon + 0x8 //m_nAmmoInClip | |
READ_MEMORY iAmmo 4 FALSE (iAmmo) | |
IF iAmmo = 0 | |
IF CLEO_CALL IsCharHoldingReloadableGun 0 scplayer | |
ELSE | |
iTotalAmmo = pWeapon + 0xC //m_nTotalAmmo | |
READ_MEMORY iTotalAmmo 4 FALSE (iTotalAmmo) | |
IF iTotalAmmo > 0 | |
GOTO Process_Return | |
ENDIF | |
ENDIF | |
IF bButtonDisabled[playerId] = FALSE | |
SET_PLAYER_FIRE_BUTTON playerId OFF | |
bButtonDisabled[playerId] = TRUE | |
ENDIF | |
IF GOSUB IsFiring | |
IF bAmmoLastFrame[playerId] = FALSE | |
IF bLastFirePressed[playerId] = FALSE | |
IF GOSUB IsAiming | |
IF hAudio >= 0 | |
SET_PLAY_3D_AUDIO_STREAM_AT_CHAR hAudio scplayer | |
READ_MEMORY 0xB5FCCC 4 FALSE (fVolume) | |
fVolume *= 0.8 | |
SET_AUDIO_STREAM_VOLUME hAudio fVolume | |
SET_AUDIO_STREAM_STATE hAudio 1 | |
//PRINT_STRING_NOW "CLICK!" 100 | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
bLastFirePressed[playerId] = TRUE | |
ELSE | |
bLastFirePressed[playerId] = FALSE | |
ENDIF | |
bAmmoLastFrame[playerId] = FALSE | |
RETURN // dont reenable button | |
ELSE | |
bAmmoLastFrame[playerId] = TRUE | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
Process_Return: | |
GOSUB ResetDropTimer | |
GOSUB ResetButtonDisabled | |
RETURN | |
ValidDropTimer: | |
IF playerId = 0 | |
IF timera > 1000 | |
RETURN_TRUE | |
RETURN | |
ENDIF | |
ELSE | |
IF timerb > 1000 | |
RETURN_TRUE | |
RETURN | |
ENDIF | |
ENDIF | |
RETURN_FALSE | |
RETURN | |
ResetDropTimer: | |
IF playerId = 0 | |
timera = 0 | |
ELSE | |
timerb = 0 | |
ENDIF | |
RETURN | |
ResetButtonDisabled: | |
IF bButtonDisabled[playerId] = TRUE | |
SET_PLAYER_FIRE_BUTTON playerId ON | |
bButtonDisabled[playerId] = FALSE | |
ENDIF | |
RETURN | |
IsFiring: | |
IF IS_BUTTON_PRESSED playerId 17 | |
RETURN_TRUE | |
RETURN | |
ENDIF | |
GET_CONTROLLER_MODE i | |
IF i = 1 | |
IS_BUTTON_PRESSED playerId 7 | |
RETURN | |
ELSE | |
IS_BUTTON_PRESSED playerId 4 | |
RETURN | |
ENDIF | |
LVAR_INT camMode | |
CONST_INT MODE_NONE 0 | |
CONST_INT MODE_TOPDOWN 1 | |
CONST_INT MODE_GTACLASSIC 2 | |
CONST_INT MODE_BEHINDCAR 3 | |
CONST_INT MODE_FOLLOWPED 4 | |
CONST_INT MODE_AIMING 5 | |
CONST_INT MODE_DEBUG 6 | |
CONST_INT MODE_SNIPER 7 | |
CONST_INT MODE_ROCKETLAUNCHER 8 | |
CONST_INT MODE_MODELVIEW 9 | |
CONST_INT MODE_BILL 10 | |
CONST_INT MODE_SYPHON 11 | |
CONST_INT MODE_CIRCLE 12 | |
CONST_INT MODE_CHEESYZOOM 13 | |
CONST_INT MODE_WHEELCAM 14 | |
CONST_INT MODE_FIXED 15 | |
CONST_INT MODE_1STPERSON 16 | |
CONST_INT MODE_FLYBY 17 | |
CONST_INT MODE_CAM_ON_A_STRING 18 | |
CONST_INT MODE_REACTION 19 | |
CONST_INT MODE_FOLLOW_PED_WITH_BIND 20 | |
CONST_INT MODE_CHRIS 21 | |
CONST_INT MODE_BEHINDBOAT 22 | |
CONST_INT MODE_PLAYER_FALLEN_WATER 23 | |
CONST_INT MODE_CAM_ON_TRAIN_ROOF 24 | |
CONST_INT MODE_CAM_RUNNING_SIDE_TRAIN 25 | |
CONST_INT MODE_BLOOD_ON_THE_TRACKS 26 | |
CONST_INT MODE_IM_THE_PASSENGER_WOOWOO 27 | |
CONST_INT MODE_SYPHON_CRIM_IN_FRONT 28 | |
CONST_INT MODE_PED_DEAD_BABY 29 | |
CONST_INT MODE_PILLOWS_PAPS 30 | |
CONST_INT MODE_LOOK_AT_CARS 31 | |
CONST_INT MODE_ARRESTCAM_ONE 32 | |
CONST_INT MODE_ARRESTCAM_TWO 33 | |
CONST_INT MODE_M16_1STPERSON 34 | |
CONST_INT MODE_SPECIAL_FIXED_FOR_SYPHON 35 | |
CONST_INT MODE_FIGHT_CAM 36 | |
CONST_INT MODE_TOP_DOWN_PED 37 | |
CONST_INT MODE_LIGHTHOUSE 38 | |
CONST_INT MODE_SNIPER_RUNABOUT 39 | |
CONST_INT MODE_ROCKETLAUNCHER_RUNABOUT 40 | |
CONST_INT MODE_1STPERSON_RUNABOUT 41 | |
CONST_INT MODE_M16_1STPERSON_RUNABOUT 42 | |
CONST_INT MODE_FIGHT_CAM_RUNABOUT 43 | |
CONST_INT MODE_EDITOR 44 | |
CONST_INT MODE_HELICANNON_1STPERSON 45 | |
CONST_INT MODE_CAMERA 46 | |
CONST_INT MODE_ATTACHCAM 47 | |
CONST_INT MODE_TWOPLAYER 48 | |
CONST_INT MODE_TWOPLAYER_IN_CAR_AND_SHOOTING 49 | |
CONST_INT MODE_TWOPLAYER_SEPARATE_CARS 50 | |
CONST_INT MODE_ROCKETLAUNCHER_HS 51 | |
CONST_INT MODE_ROCKETLAUNCHER_RUNABOUT_HS 52 | |
CONST_INT MODE_AIMWEAPON 53 | |
CONST_INT MODE_TWOPLAYER_SEPARATE_CARS_TOPDOWN 54 | |
CONST_INT MODE_AIMWEAPON_FROMCAR 55 | |
CONST_INT MODE_DW_HELI_CHASE 56 | |
CONST_INT MODE_DW_CAM_MAN 57 | |
CONST_INT MODE_DW_BIRDY 58 | |
CONST_INT MODE_DW_PLANE_SPOTTER 59 | |
CONST_INT MODE_DW_DOG_FIGHT 60 | |
CONST_INT MODE_DW_FISH 61 | |
CONST_INT MODE_DW_PLANECAM1 62 | |
CONST_INT MODE_DW_PLANECAM2 63 | |
CONST_INT MODE_DW_PLANECAM3 64 | |
CONST_INT MODE_AIMWEAPON_ATTACHED 65 | |
IsAiming: | |
IF IS_2PLAYER_GAME_GOING_ON | |
IF GOSUB IsAimingByButton | |
RETURN_TRUE | |
ENDIF | |
ENDIF | |
READ_MEMORY 0x00B6F1A8 2 FALSE (camMode) | |
IF camMode = MODE_AIMING | |
OR camMode = MODE_SNIPER | |
OR camMode = MODE_ROCKETLAUNCHER | |
OR camMode = MODE_CAMERA | |
OR camMode = MODE_ROCKETLAUNCHER_HS | |
OR camMode = MODE_AIMWEAPON | |
OR camMode = MODE_AIMWEAPON_ATTACHED | |
RETURN_TRUE | |
RETURN | |
ENDIF | |
RETURN_FALSE | |
RETURN | |
// Preferable for 2 players | |
IsAimingByButton: | |
GET_CONTROLLER_MODE i | |
IF i = 1 | |
IS_BUTTON_PRESSED playerId 5 | |
RETURN | |
ELSE | |
IS_BUTTON_PRESSED playerId 6 | |
RETURN | |
ENDIF | |
} | |
SCRIPT_END | |
{ | |
/* | |
Return true if char is holding any fire weapon - By Junior_Djjr | |
Use: IF CLEO_CALL IsCharHoldingFireGun 0 (hChar)() | |
*/ | |
LVAR_INT hChar // In | |
LVAR_INT iWeaponType pWeaponInfo iFireType | |
CONST_INT WEAPON_FIRE_MELEE 0 | |
CONST_INT WEAPON_FIRE_INSTANT_HIT 1 | |
CONST_INT WEAPON_FIRE_PROJECTILE 2 | |
CONST_INT WEAPON_FIRE_AREA_EFFECT 3 | |
CONST_INT WEAPON_FIRE_CAMERA 4 | |
CONST_INT WEAPON_FIRE_USE 5 | |
IsCharHoldingFireGun: | |
GET_CURRENT_CHAR_WEAPON hChar (iWeaponType) | |
// GetWeaponInfo (we can ignore skill (1) here) | |
CALL_FUNCTION_RETURN 0x743C60 2 2 (1 iWeaponType)(pWeaponInfo) | |
READ_MEMORY pWeaponInfo 4 FALSE (iFireType) | |
IF iFireType = WEAPON_FIRE_INSTANT_HIT | |
RETURN_TRUE | |
ELSE | |
RETURN_FALSE | |
ENDIF | |
CLEO_RETURN 0 () | |
} | |
{ | |
/* | |
Return true if char is holding any reloadable gun - By Junior_Djjr | |
Use: IF CLEO_CALL IsCharHoldingReloadableGun 0 (hChar)() | |
*/ | |
LVAR_INT hChar // In | |
LVAR_INT iWeaponType pWeaponInfo iFlags | |
IsCharHoldingReloadableGun: | |
GET_CURRENT_CHAR_WEAPON hChar (iWeaponType) | |
// GetWeaponInfo (we can ignore skill (1) here) | |
CALL_FUNCTION_RETURN 0x743C60 2 2 (1 iWeaponType)(pWeaponInfo) | |
pWeaponInfo += 0x18 | |
READ_MEMORY pWeaponInfo 4 FALSE (iFlags) | |
IF IS_LOCAL_VAR_BIT_SET_CONST iFlags 12 | |
RETURN_TRUE | |
ELSE | |
RETURN_FALSE | |
ENDIF | |
CLEO_RETURN 0 () | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment