Files
2025-09-29 00:52:08 +02:00

314 lines
8.1 KiB
Scheme
Executable File

///////////////////////////////////////////////////////////////////////////////
///////////////////////////New Test For Les//////////////////////////////
///////////////////////////////////////////////////////////////////////////
// Includes -----------------------------------------------//
USING "commands_misc.sch"
USING "commands_ped.sch"
USING "commands_vehicle.sch"
USING "commands_object.sch"
USING "commands_hud.sch"
USING "commands_player.sch"
USING "commands_task.sch"
USING "commands_script.sch"
USING "commands_streaming.sch"
USING "commands_pad.sch"
USING "commands_debug.sch"
USING "commands_path.sch"
USING "types.sch"
USING "commands_camera.sch"
USING "commands_brains.sch"
USING "brains.sch"
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_interiors.sch"
USING "script_player.sch"
USING "Minigame_private.sch"
USING "LineActivation.sch"
STRUCT BENCHASSETS
STRING sAnimFolder
STRING sHandcuffAnimFolder
MODEL_NAMES mnChairModel
MODEL_NAMES mnGuardModel
MODEL_NAMES mnDoorModel
ENDSTRUCT
STRUCT ANIMSTRINGS
STRING sAnimNameToSitDown
STRING sAnimNameSittingLoop
STRING sAnimNameGetUp
STRING sHandcuffGuard
STRING sHandcuffPlayer
ENDSTRUCT
ENUM EUpdate
EUpdate_Start = 0,
EUpdate_Listen,
EUpdate_RunEvent,
EUpdate_RunEvent2,
EUpdate_RunEvent3,
EUpdate_Cleanup
ENDENUM
ENUM ANIMSTATES
ANIMSTATES_PLAY_INTRO = 0,
ANIMSTATES_WAIT_INTRO,
ANIMSTATES_PLAY_LOOP,
ANIMSTATES_WAIT_LOOP,
ANIMSTATES_PLAY_EXIT,
ANIMSTATES_WAIT_EXIT
ENDENUM
ANIMSTATES RunSitting_Stages = ANIMSTATES_PLAY_INTRO
ANIMSTATES RunHandcuff_Stages = ANIMSTATES_PLAY_INTRO
SEQUENCE_INDEX iSeqTask
FUNC BOOL LeftStickPulled()
INT LeftX
INT LeftY
INT RightX
INT RightY
GET_POSITION_OF_ANALOGUE_STICKS(PAD1, LeftX, LeftY, RightX, RightY)
IF LeftX > 60 OR LeftX < -60
OR LeftY > 60 OR LeftY < -60
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
//FUNC BOOL RunAnims(OBJECT_INDEX aChair, STRING AnimFolder, STRING AnimSitDown, STRING AnimLoop, STRING AnimGetup)
FUNC BOOL RunAnims(OBJECT_INDEX aChair)
SWITCH RunSitting_Stages
CASE ANIMSTATES_PLAY_INTRO
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
RunSitting_Stages = ANIMSTATES_WAIT_INTRO
BREAK
CASE ANIMSTATES_WAIT_INTRO
TASK_SIT_DOWN_ON_OBJECT(PLAYER_PED_ID(), aChair, -1, SF_LOOPANIM)
RunSitting_Stages = ANIMSTATES_WAIT_EXIT
BREAK
CASE ANIMSTATES_WAIT_EXIT
IF IS_BUTTON_JUST_PRESSED(PAD1, TRIANGLE) OR LeftStickPulled()
CLEAR_PED_TASKS(PLAYER_PED_ID())
RunSitting_Stages = ANIMSTATES_PLAY_INTRO
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL RunHandcuffAnimsLES(PED_INDEX aPed, STRING HandcuffFolder, STRING PlayerAnim, STRING GuardAnim)
////// VECTOR animScenePosition = << 324.858, -977.465, 28.283 >>
// VECTOR animScenePosition = <<-1044.9077, -2914.9951, 12.8198>>
////// VECTOR animSceneRotation = << 0.000, 0.000, 180.000 >>
// VECTOR animSceneRotation = << 0.000, 0.000, 0.000 >>
VECTOR animScenePosition = <<154.5272, -976.1486, 29.0919>>
VECTOR animSceneRotation = << 0.000, 0.000, 0.000 >>
VECTOR SittingPos
FLOAT SittingHeading
IF NOT IS_ENTITY_DEAD(aPed)
SittingPos = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(aPed, <<0, 1, 0>>)
SittingHeading = GET_ENTITY_HEADING(aPed)
SittingHeading -= 180
ENDIF
IF NOT IS_PED_INJURED(aPed)
animScenePosition = GET_ENTITY_COORDS(aPed)
GET_GROUND_Z_FOR_3D_COORD(animScenePosition, animScenePosition.z)
animSceneRotation = <<0,0,GET_ENTITY_HEADING(aPed)-180>>
SWITCH RunHandcuff_Stages
CASE ANIMSTATES_PLAY_INTRO
CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID())
CLEAR_PED_TASKS_IMMEDIATELY(aPed)
/*SET_ENTITY_COORDS*/ SET_PED_COORDS_KEEP_VEHICLE(aPed, animScenePosition)
// SET_ENTITY_HEADING(aPed, animSceneRotation-180)
RunHandcuff_Stages = ANIMSTATES_WAIT_INTRO
BREAK
CASE ANIMSTATES_WAIT_INTRO
// TASK_PLAY_ANIM_ADVANCED (aPed, HandcuffFolder, GuardAnim, animScenePosition, animSceneRotation, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXTRACT_INITIAL_OFFSET)
// TASK_PLAY_ANIM_ADVANCED (PLAYER_PED_ID(), HandcuffFolder, PlayerAnim, animScenePosition, animSceneRotation, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXTRACT_INITIAL_OFFSET )
OPEN_SEQUENCE_TASK(iSeqTask)
TASK_PED_SLIDE_TO_COORD(NULL, SittingPos, SittingHeading, 0.5)
// TASK_PED_SLIDE_TO_COORD_AND_PLAY_ANIM(NULL, SittingPos, SittingHeading, 2.0, AnimSitDown, AnimFolder,8.0, FALSE, FALSE, FALSE, FALSE,-1 )
TASK_ACHIEVE_HEADING(NULL,SittingHeading)
CLOSE_SEQUENCE_TASK(iSeqTask)
TASK_PERFORM_SEQUENCE(PLAYER_PED_ID(), iSeqTask)
CLEAR_SEQUENCE_TASK(iSeqTask)
RunHandcuff_Stages = ANIMSTATES_PLAY_LOOP
BREAK
CASE ANIMSTATES_PLAY_LOOP
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_PERFORM_SEQUENCE) = FINISHED_TASK
CLEAR_PED_TASKS_IMMEDIATELY(aPed)
// TASK_PLAY_ANIM(aPed, HandcuffFolder, GuardAnim, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS)
// TASK_PLAY_ANIM(PLAYER_PED_ID(), HandcuffFolder, PlayerAnim, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS)
TASK_PLAY_ANIM_ADVANCED (aPed, HandcuffFolder, GuardAnim, animScenePosition, animSceneRotation, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXTRACT_INITIAL_OFFSET)
TASK_PLAY_ANIM_ADVANCED (PLAYER_PED_ID(), HandcuffFolder, PlayerAnim, animScenePosition, animSceneRotation, INSTANT_BLEND_IN, INSTANT_BLEND_OUT, -1, AF_OVERRIDE_PHYSICS | AF_EXTRACT_INITIAL_OFFSET )
RunHandcuff_Stages = ANIMSTATES_WAIT_EXIT
ENDIF
BREAK
CASE ANIMSTATES_WAIT_LOOP
RunHandcuff_Stages = ANIMSTATES_WAIT_EXIT
BREAK
CASE ANIMSTATES_WAIT_EXIT
IF GET_SCRIPT_TASK_STATUS(PLAYER_PED_ID(), SCRIPT_TASK_PLAY_ANIM) = FINISHED_TASK
RunHandcuff_Stages = ANIMSTATES_PLAY_INTRO
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL UPDATE_EVENT_LES(EUpdate &curState,OBJECT_INDEX ChairObj,PED_INDEX aPed, BENCHASSETS Asset, ANIMSTRINGS AnimNames)
SWITCH curState
CASE EUpdate_Start
curState = EUpdate_Listen
BREAK
CASE EUpdate_Listen
IF IS_PLAYER_ACTIVATING_OBJECT(ChairObj)
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
curState = EUpdate_RunEvent
ENDIF
IF IS_PLAYER_ACTIVATING_PED(aPed)
SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, SPC_LEAVE_CAMERA_CONTROL_ON)
curState = EUpdate_RunEvent2
ENDIF
BREAK
CASE EUpdate_RunEvent
// IF RunAnims(ChairObj, Asset.sAnimFolder , AnimNames.sAnimNameToSitDown, AnimNames.sAnimNameSittingLoop, AnimNames.sAnimNameGetUp)
IF RunAnims(ChairObj)
curState = EUpdate_Cleanup
ENDIF
BREAK
CASE EUpdate_RunEvent2
IF RunHandcuffAnimsLES(aPed, Asset.sHandcuffAnimFolder, AnimNames.sHandcuffPlayer, AnimNames.sHandcuffGuard)
curState = EUpdate_Cleanup
ENDIF
BREAK
CASE EUpdate_RunEvent3
curState = EUpdate_Cleanup
BREAK
CASE EUpdate_Cleanup
SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
curState = EUpdate_Listen
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL LoadUnloadAllAssets(BOOL Load, BENCHASSETS Asset)
IF load = TRUE
REQUEST_MODEL(Asset.mnChairModel)
REQUEST_MODEL(Asset.mnGuardModel)
REQUEST_ANIM_DICT(Asset.sAnimFolder)
REQUEST_ANIM_DICT(Asset.sHandcuffAnimFolder)
IF HAS_MODEL_LOADED(Asset.mnChairModel)
IF HAS_MODEL_LOADED(Asset.mnGuardModel)
IF HAS_ANIM_DICT_LOADED(Asset.sAnimFolder)
IF HAS_ANIM_DICT_LOADED(Asset.sHandcuffAnimFolder)
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
REMOVE_ANIM_DICT(Asset.sAnimFolder)
REMOVE_ANIM_DICT(Asset.sHandcuffAnimFolder)
SET_MODEL_AS_NO_LONGER_NEEDED(Asset.mnChairModel)
SET_MODEL_AS_NO_LONGER_NEEDED(Asset.mnGuardModel)
ENDIF
RETURN FALSE
ENDFUNC