Skip to content

Instantly share code, notes, and snippets.

@JuniorDjjr
Created May 6, 2019 20:45
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/874671b522258af0e7a94c4e1891bcac to your computer and use it in GitHub Desktop.
Save JuniorDjjr/874671b522258af0e7a94c4e1891bcac to your computer and use it in GitHub Desktop.
// You need: https://forum.mixmods.com.br/f16-utilidades/t179-gta3script-while-true-return_true-e-return_false
SCRIPT_START
{
LVAR_INT scplayer char i j p iHealth medic task secPlayer victim medicPad victimPad medicPlayer
LVAR_FLOAT animTime
GET_PLAYER_CHAR 0 scplayer
WHILE TRUE
WAIT 0
GOSUB ForTwoPlayers
ENDWHILE
ForTwoPlayers:
IF IS_2PLAYER_GAME_GOING_ON
REQUEST_ANIMATION CRACK
REQUEST_ANIMATION BOMBER
WHILE NOT HAS_ANIMATION_LOADED CRACK
OR NOT HAS_ANIMATION_LOADED BOMBER
WAIT 0
ENDWHILE
WHILE IS_2PLAYER_GAME_GOING_ON
GET_PLAYER_CHAR 1 secPlayer
victim = -1
medic = -1
GET_CHAR_HEALTH secPlayer (iHealth)
IF iHealth < 40
AND iHealth > 0
victim = 1
medic = 0
ELSE
GET_CHAR_HEALTH scplayer (iHealth)
IF iHealth < 40
AND iHealth > 0
victim = 0
medic = 1
ENDIF
ENDIF
IF victim > -1
IF victim = 0
medic = secPlayer
victim = scplayer
victimPad = 0
medicPad = 1
medicPlayer = 0
ELSE
medic = scplayer
victim = secPlayer
victimPad = 1
medicPad = 0
medicPlayer = 1
ENDIF
IF NOT IS_CHAR_PLAYING_ANIM victim CRCKIDLE1
IF NOT IS_CHAR_PLAYING_ANIM medic CRCKIDLE1
TASK_PLAY_ANIM_NON_INTERRUPTABLE victim CRCKIDLE1 CRACK 4.0 1 0 0 0 -1
CLEO_CALL TogglePadControls 0 (victimPad 0)
ENDIF
ELSE
IF IS_BUTTON_PRESSED medicPad DPADUP
AND IS_PLAYER_CONTROL_ON medicPlayer
IF LOCATE_CHAR_ANY_MEANS_CHAR_3D medic victim 2.0 2.0 1.0 FALSE
OPEN_SEQUENCE_TASK task
TASK_TURN_CHAR_TO_FACE_CHAR -1 victim
TASK_PLAY_ANIM -1 BOM_Plant BOMBER 4.0 0 0 0 0 -1
CLOSE_SEQUENCE_TASK task
PERFORM_SEQUENCE_TASK medic task
timera = 0
WHILE TRUE
GET_CHAR_ANIM_CURRENT_TIME medic BOM_Plant (animTime)
IF animTime > 0.6
CLEAR_SEQUENCE_TASK task
CLEO_CALL TogglePadControls 0 (victimPad 1)
SET_CHAR_HEALTH victim 80
TASK_PLAY_ANIM_NON_INTERRUPTABLE victim GETUP PED 4.0 0 0 0 0 -1
BREAK
ENDIF
WAIT 0
IF timera > 3000
OR NOT DOES_CHAR_EXIST victim
CLEAR_SEQUENCE_TASK task
BREAK
ENDIF
ENDWHILE
ENDIF
ENDIF
ENDIF
ENDIF
WAIT 0
ENDWHILE
REMOVE_ANIMATION CRACK
REMOVE_ANIMATION BOMBER
ENDIF
RETURN
}
SCRIPT_END
{
LVAR_INT pad enable //In
LVAR_INT i j
TogglePadControls:
CALL_FUNCTION_RETURN 0x53FB70 1 1 (pad) (pad) // CPad *__cdecl CPad::GetPad(int number)
i = pad + 0x10E
READ_MEMORY i 2 FALSE j
IF enable = FALSE
SET_LOCAL_VAR_BIT_CONST j 0 // Disable
ELSE
CLEAR_LOCAL_VAR_BIT_CONST j 0 // Enable
ENDIF
WRITE_MEMORY i 2 j FALSE
CLEO_RETURN 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment