228 lines
5.8 KiB
Python
Executable File
228 lines
5.8 KiB
Python
Executable File
// Chris McMahon
|
|
|
|
// 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"
|
|
|
|
|
|
// Variables ----------------------------------------------//
|
|
ENUM ambStageFlag
|
|
ambCanRun,
|
|
ambSpecial,
|
|
ambRunning,
|
|
ambEnd
|
|
ENDENUM
|
|
ambStageFlag ambStage = ambCanRun
|
|
|
|
PED_INDEX pedPoleDancer
|
|
VECTOR vPoleDancer
|
|
FLOAT fPoleDancer
|
|
STRING sDance = "Poledance_01"
|
|
|
|
MODEL_NAMES modelStripper = A_F_Y_BEACH_01
|
|
|
|
STRING sAnimDict = "MISSSTRIP_CLUB"
|
|
BOOL bAnimTimeSet = FALSE
|
|
|
|
// Functions ----------------------------------------------//
|
|
FUNC BOOL assetsAreLoaded()
|
|
// Do some loading in here...
|
|
REQUEST_MODEL(modelStripper)
|
|
REQUEST_ANIM_DICT(sAnimDict)
|
|
|
|
|
|
IF HAS_MODEL_LOADED (modelStripper)
|
|
AND HAS_ANIM_DICT_LOADED(sAnimDict)
|
|
RETURN TRUE
|
|
ELSE
|
|
REQUEST_MODEL(modelStripper)
|
|
REQUEST_ANIM_DICT(sAnimDict)
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
//FUNC BOOL isCharInMainRoom(PED_INDEX ped)
|
|
// INT i_key
|
|
// GET_KEY_FOR_ENTITY_IN_ROOM(ped, i_key)
|
|
// SWITCH currentClub
|
|
// CASE clubClamPalace
|
|
// IF i_key=GET_HASH_KEY("clammainroom")
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
// BREAK
|
|
// CASE clubBadabings
|
|
// IF i_key=GET_HASH_KEY("Bada_room1")
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
// BREAK
|
|
// ENDSWITCH
|
|
// RETURN FALSE
|
|
//ENDFUNC
|
|
|
|
|
|
//FUNC BOOL isCharInAnyRoom(PED_INDEX ped)
|
|
// INT i_key
|
|
// IF NOT IS_CHAR_DEAD(ped)
|
|
// GET_KEY_FOR_CHAR_IN_ROOM(ped, i_key)
|
|
// SWITCH currentClub
|
|
// CASE clubClamPalace
|
|
// IF i_key=GET_HASH_KEY("clampalbkrm") // 3 rooms in the interior
|
|
// OR i_key=GET_HASH_KEY("clammainroom")
|
|
// OR i_key=GET_HASH_KEY("clamfronrm")
|
|
// OR i_key=GET_HASH_KEY("clamchangeroom")
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
// BREAK
|
|
// CASE clubBadabings
|
|
// IF i_key=GET_HASH_KEY("Bada_room2") // 3 rooms in the interior
|
|
// OR i_key=GET_HASH_KEY("Bada_room1")
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
// BREAK
|
|
// CASE clubLostClubhouse
|
|
// IF i_key=GET_HASH_KEY("E1_Lost_grndfront") // 3 rooms in the interior
|
|
// OR i_key=GET_HASH_KEY("E1_Lost_grndbar")
|
|
// OR i_key=GET_HASH_KEY("E1_Lost_grndsave")
|
|
// RETURN TRUE
|
|
// ENDIF
|
|
// BREAK
|
|
// ENDSWITCH
|
|
// ENDIF
|
|
// RETURN FALSE
|
|
//ENDFUNC
|
|
|
|
PROC createPoleDancer()
|
|
IF IS_ENTITY_DEAD(pedPoledancer)
|
|
pedPoleDancer = CREATE_PED(PEDTYPE_CIVFEMALE, modelStripper, <<vPoledancer.x, vPoledancer.y, vPoledancer.z>>, fPoleDancer)
|
|
SET_PED_RANDOM_COMPONENT_VARIATION(pedPoleDancer)
|
|
SET_PED_CAN_BE_TARGETTED(pedPoleDancer, FALSE)
|
|
//RETAIN_ENTITY_IN_INTERIOR(pedPoleDancer, GET_INTERIOR_AT_COORDS(vPoledancer))
|
|
//SET_ROOM_FOR_PED_BY_KEY(pedPoleDancer, GET_ROOM_KEY_FROM_ENTITY(poleObject))
|
|
SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedPoleDancer, TRUE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC runPoledancer()
|
|
IF NOT IS_PED_INJURED(pedPoleDancer)
|
|
IF GET_SCRIPT_TASK_STATUS(pedPoleDancer, SCRIPT_TASK_PLAY_ANIM) = FINISHED_TASK
|
|
TASK_PLAY_ANIM(pedPoleDancer, sAnimDict, sDance)
|
|
ELSE
|
|
IF HAS_ENTITY_ANIM_FINISHED(pedPoleDancer, sAnimDict, sDance)
|
|
TASK_PLAY_ANIM(pedPoleDancer, sAnimDict, sDance)
|
|
ELSE
|
|
IF NOT bAnimTimeSet
|
|
IF IS_ENTITY_PLAYING_ANIM(pedPoleDancer, sAnimDict, sDance)
|
|
SET_ENTITY_ANIM_CURRENT_TIME(pedPoleDancer, sAnimDict, sDance, GET_RANDOM_FLOAT_IN_RANGE())
|
|
bAnimTimeSet = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL isPlayerCausingRuckus()
|
|
VECTOR ruckusLoc = <<2,2,0.5>>
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
IF NOT IS_PED_INJURED(pedPoleDancer)
|
|
IF IS_ENTITY_AT_ENTITY(PLAYER_PED_ID(), pedPoleDancer, ruckusLoc)
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY(pedPoleDancer, PLAYER_PED_ID())
|
|
RETURN TRUE
|
|
ENDIF
|
|
IF IS_ENTITY_TOUCHING_ENTITY(PLAYER_PED_ID(), pedPoleDancer)
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF IS_PED_SHOOTING(PLAYER_PED_ID())
|
|
RETURN TRUE
|
|
ENDIF
|
|
ENDIF
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
// Clean Up
|
|
PROC missionCleanup()
|
|
IF NOT IS_ENTITY_DEAD(pedPoleDancer)
|
|
IF NOT IS_ENTITY_ON_SCREEN(pedPoleDancer)
|
|
DELETE_PED(pedPoleDancer)
|
|
ELSE
|
|
SET_PED_KEEP_TASK(pedPoleDancer, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
// Mission Script -----------------------------------------//
|
|
SCRIPT(OBJECT_INDEX oPole)
|
|
|
|
//SWAP_NEAREST_BUILDING_MODEL(-1716.52, 362.84, 27.48, 75.0, NJ03ac3200, LostBurnt01)
|
|
|
|
IF DOES_ENTITY_EXIST(oPole)
|
|
FREEZE_ENTITY_POSITION(oPole, TRUE)
|
|
vPoleDancer = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(oPole, <<0.0, 0.0, 0.0>>)
|
|
fPoleDancer = GET_ENTITY_HEADING(oPole)
|
|
SET_ENTITY_COLLISION(oPole, FALSE)
|
|
ENDIF
|
|
|
|
// Mission Loop -------------------------------------------//
|
|
WHILE TRUE
|
|
WAIT(0)
|
|
IF DOES_ENTITY_EXIST(oPole)
|
|
IF IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE(oPole)
|
|
SWITCH ambStage
|
|
CASE ambCanRun
|
|
IF assetsAreLoaded()
|
|
createPoleDancer()
|
|
ambStage = (ambRunning)
|
|
ENDIF
|
|
BREAK
|
|
CASE ambRunning
|
|
runPoledancer()
|
|
IF isPlayerCausingRuckus()
|
|
SET_ENTITY_COLLISION(oPole, TRUE)
|
|
ambStage = ambEnd
|
|
ENDIF
|
|
BREAK
|
|
CASE ambEnd
|
|
IF NOT IS_PED_INJURED(pedPoleDancer)
|
|
TASK_COWER(pedPoleDancer)
|
|
SET_ALL_RANDOM_PEDS_FLEE(PLAYER_ID(), TRUE)
|
|
SET_PED_KEEP_TASK (pedPoleDancer, TRUE)
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
// Need check for fleeing char deletion/multiple char creation.
|
|
missionCleanup()
|
|
ENDIF
|
|
ELSE
|
|
missionCleanup()
|
|
ENDIF
|
|
ENDWHILE
|
|
|
|
|
|
ENDSCRIPT
|
|
|