Files
gtav-src/script/dev_ng/Code/scenarios_test/scenarios_test.sc
T
2025-09-29 00:52:08 +02:00

725 lines
23 KiB
Python
Executable File

#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
#IF IS_DEBUG_BUILD
USING "rage_builtins.sch"
USING "script_xml.sch"
USING "commands_ped.sch"
USING "commands_task.sch"
USING "commands_streaming.sch"
USING "commands_graphics.sch"
USING "commands_cutscene.sch"
USING "commands_debug.sch"
USING "test_tools.sch"
USING "commands_vehicle.sch"
USING "commands_camera.sch"
USING "commands_player.sch"
USING "script_DEBUG.sch"
USING "commands_script.sch"
USING "commands_entity.sch"
USING "commands_event.sch"
USING "commands_decorator.sch"
bool bSpawn = FALSE
bool bDelete = FALSE
bool bTriggerAction = FALSE
bool bClearAction = FALSE
bool bUseFocusPed = FALSE
bool bPreviousUseFocusPed = FALSE
bool bUseScenarioPed = TRUE
bool bPreviousUseScenarioPed = TRUE
INT iSelectedScenario1 = 0
INT iSelectedScenario2 = 0
INT iSelectedScenario3 = 0
INT iPreviousSelectedScenario1 = 0
INT iPreviousSelectedScenario2 = 0
INT iPreviousSelectedScenario3 = 0
INT iSelectedScenarioAction = 0
INT iDebugDrawEventCount = 0
FLOAT fEventHeading = 90.0
FLOAT fEventDistance = 2.0
VECTOR vDebugEventLocation
ENUM ScenarioEnum
CODE_HUMAN_IN_CAR_MUSIC,
CODE_HUMAN_IN_CAR_SMOKING,
CODE_HUMAN_VEHICLE_BROKEN_DOWN,
CODE_HUMAN_WANDER_CARRIER_BAGS,
CODE_HUMAN_WANDER_DRINKING,
CODE_HUMAN_WANDER_DRINKING_COFFEE,
CODE_HUMAN_WANDER_EATING_BAGEL,
CODE_HUMAN_WANDER_HANDBAG,
CODE_HUMAN_WANDER_IDLES,
CODE_HUMAN_WANDER_MOBILE,
CODE_HUMAN_WANDER_MUSIC_LISTEN,
CODE_HUMAN_WANDER_RING_BINDER,
CODE_HUMAN_WANDER_SHOPPING_BAGS,
CODE_HUMAN_WANDER_SMOKING,
PROP_HUMAN_ATM,
PROP_HUMAN_MUSCLE_CHIN_UPS,
PROP_HUMAN_SEAT_ARMCHAIR,
PROP_HUMAN_SEAT_BAR,
PROP_HUMAN_SEAT_BENCH,
PROP_HUMAN_SEAT_BENCH_BUM,
PROP_HUMAN_SEAT_BENCH_DRINK,
PROP_HUMAN_SEAT_CHAIR,
PROP_HUMAN_SEAT_COMPUTER,
PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS,
PROP_HUMAN_SEAT_RESTAURANT,
PROP_HUMAN_SEAT_STRIP_WATCH,
PROP_HUMAN_STRIP_POLE,
WORLD_HUMAN_BUM_SLUMPED,
WORLD_HUMAN_BUM_STANDING,
WORLD_HUMAN_CONST_DRILL,
WORLD_HUMAN_CLIPBOARD,
WORLD_HUMAN_DOCKWORKER_REPAIR,
WORLD_HUMAN_DRUG_DEALER,
WORLD_HUMAN_GARDENER_PLANT,
WORLD_HUMAN_GUARD_PATROL,
WORLD_HUMAN_GUARD_STAND,
WORLD_HUMAN_JOG_STANDING,
WORLD_HUMAN_LEANING,
WORLD_HUMAN_LEANING_FORWARDS,
WORLD_HUMAN_MAID_CLEAN,
WORLD_HUMAN_MIME_ARTIST,
WORLD_HUMAN_MUSCLE_FLEX,
WORLD_HUMAN_MUSCLE_FREE_WEIGHTS,
WORLD_HUMAN_PROSTITUTE,
WORLD_HUMAN_SEAT_KERB,
WORLD_HUMAN_SEAT_LEDGE,
WORLD_HUMAN_SEAT_STEPS,
WORLD_HUMAN_SEAT_WALL,
WORLD_HUMAN_SEAT_WALL_IPAD,
WORLD_HUMAN_SECURITY_SHINE_TORCH,
WORLD_HUMAN_SMOKING,
WORLD_HUMAN_STRIP_WATCH_STAND,
WORLD_HUMAN_SUPERHERO,
WORLD_HUMAN_TENNIS_PLAYER,
WORLD_HUMAN_TOURIST_MAP,
WORLD_HUMAN_TOURIST_MOBILE,
WORLD_HUMAN_WINDOW_SHOP_BROWSE,
WORLD_HUMAN_YOGA,
WORLD_VEHICLE_LIFEGUARD_TRUCK,
WORLD_VEHICLE_POLICE_CAR,
WORLD_HUMAN_PROTEST,
WORLD_HUMAN_STAND_FIRE,
CODE_HUMAN_WANDER_PURSE,
CODE_HUMAN_WANDER_TEXTING,
WORLD_COW_GRAZING,
WORLD_COYOTE_HOWL,
WORLD_COYOTE_WANDER,
WORLD_DEER_GRAZING,
WORLD_DOG_BARKING_RETRIEVER,
WORLD_DOG_BARKING_ROTTWEILER,
WORLD_GULL_FEEDING,
WORLD_GULL_STANDING,
WORLD_HEN_PECKING,
WORLD_HEN_STANDING,
WORLD_HORSE_GRAZING,
WORLD_HUMAN_BINOCULARS,
WORLD_HUMAN_BUM_FREEWAY,
WORLD_HUMAN_HIKER,
WORLD_HUMAN_JOG,
WORLD_HUMAN_POWER_WALKER,
WORLD_HUMAN_STAND_IMPATIENT,
WORLD_MOUNTAIN_LION_WANDER,
WORLD_PIGEON_FEEDING,
WORLD_PIGEON_STANDING,
WORLD_RATS_EATING,
WORLD_SHARK_SWIM,
WORLD_VEHICLE_BICYCLE_BMX,
WORLD_VEHICLE_BICYCLE_MOUNTAIN,
WORLD_VEHICLE_BICYCLE_ROAD,
WORLD_VEHICLE_SECURITY_CAR,
PROP_HUMAN_BUM_BIN,
CODE_HUMAN_COWER,
CODE_HUMAN_WANDER_BRIEFCASE,
CODE_HUMAN_WANDER_CLIPBOARD,
CODE_HUMAN_WANDER_COUPLES,
CODE_HUMAN_WANDER_EATING_DONUT,
CODE_HUMAN_WANDER_EATING_HOTDOG,
PROP_HUMAN_SEAT_NEWSPAPER,
PROP_HUMAN_SEAT_SUNLOUNGER,
WORLD_HUMAN_AA_COFFEE,
WORLD_HUMAN_AA_SMOKE,
WORLD_HUMAN_GARDENER_LEAF_BLOWER,
WORLD_HUMAN_HOSP_CLIPBOARD,
WORLD_HUMAN_JANITOR,
WORLD_HUMAN_QUEUE_IMPATIENT,
WORLD_HUMAN_SEAT_WALL_EATING,
WORLD_HUMAN_STANDING_WITH_SUITCASE,
WORLD_VEHICLE_POLICE_BIKE,
WORLD_VEHICLE_POLICE_NEXT_TO_CAR,
WORLD_VEHICLE_TRACTOR,
WORLD_VEHICLE_TRACTOR_BEACH,
PROP_HUMAN_SEAT_BUS_STOP_WAIT,
PROP_HUMAN_SEAT_BENCH_FOOD,
DRIVE,
PROP_HUMAN_MUSCLE_CHIN_UPS_PRISON,
PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS_ARMY,
PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS_PRISON,
WALK,
WORLD_VEHICLE_AMBULANCE,
WORLD_VEHICLE_DRIVE_PASSENGERS,
WORLD_VEHICLE_DRIVE_SOLO,
WORLD_VEHICLE_FIRE_TRUCK,
CODE_HUMAN_LEAN_AGAINST_CAR,
CODE_HUMAN_VEHICLE_MECHANIC,
CODE_HUMAN_IN_CAR_IDLE,
CODE_HUMAN_PARK_CAR,
PROP_HUMAN_SEAT_CHAIR_UPRIGHT,
PROP_HUMAN_SEAT_DECKCHAIR,
WORLD_FISH_FLEE,
WORLD_HUMAN_BUM_WASH,
WORLD_HUMAN_DOCKWORKER_REPAIR_LOW,
WORLD_HUMAN_DRUG_DEALER_HARD,
WORLD_HUMAN_GOLF_PLAYER,
WORLD_HUMAN_HANG_OUT_STREET,
WORLD_HUMAN_PICNIC,
WORLD_FISH_IDLE,
WORLD_HEN_FLEE,
WORLD_HUMAN_BUSKER,
WORLD_HUMAN_HIKER_STANDING,
WORLD_HUMAN_MUSICIAN,
WORLD_HUMAN_PAPARAZZI,
WORLD_HUMAN_STAR_MAP,
WORLD_RATS_FLEEING,
CODE_HUMAN_CROSS_ROAD_WAIT_LEFT,
CODE_HUMAN_CROSS_ROAD_WAIT_RIGHT,
CODE_HUMAN_JAYWALKER,
CODE_HUMAN_LOST_TOURIST_DRIVING,
CODE_HUMAN_POLICE_CROWD_CONTROL,
CODE_HUMAN_POLICE_INVESTIGATE,
PROP_HUMAN_BBQ,
WORLD_HUMAN_GUARD_STAND_ARMY,
WORLD_HUMAN_PARTYING,
WORLD_HUMAN_QUEUE_COOL,
WORLD_HUMAN_QUEUE_EXCITED,
WORLD_HUMAN_SEAT_LEDGE_EATING,
WORLD_HUMAN_STUPOR,
PROP_HUMAN_SEAT_SEWING,
WORLD_HUMAN_STAND_FISHING,
WORLD_HUMAN_STAND_MOBILE,
WORLD_HUMAN_HUMAN_STATUE,
WORLD_HUMAN_SUNBATHE,
WORLD_HUMAN_SUNBATHE_BACK,
WORLD_BOAR_GRAZING,
WORLD_VEHICLE_PARK,
WORLD_VEHICLE_PARK_PARALLEL,
NUM_SCENARIOS
ENDENUM
PROC SET_SCRIPT_CAN_START (string current_Script, int current_Script_Hash)
int iCurrent_Script
iCurrent_Script = GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(current_Script_Hash)
IF (iCurrent_Script = 0)
REQUEST_SCRIPT(current_Script)
WHILE NOT HAS_SCRIPT_LOADED(current_Script)
WAIT(0)
ENDWHILE
START_NEW_SCRIPT(current_Script, DEFAULT_STACK_SIZE)
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
DECOR_SET_BOOL(GET_PLAYER_PED(GET_PLAYER_INDEX()),"scenario_active",TRUE)
ENDIF
ENDIF
PRINTSTRING("Launching ")
PRINTSTRING(current_Script)
PRINTSTRING(" script")
PRINTNL()
ENDIF
//ENDIF
ENDPROC
PROC CREATE_SCENARIO_SCRIPT ( ScenarioEnum eScenario )
SWITCH eScenario
CASE WORLD_HUMAN_LEANING_FORWARDS
SET_SCRIPT_CAN_START ("scn_w_h_leaning_fwd", HASH("scn_w_h_leaning_fwd"))
BREAK
CASE WORLD_HUMAN_STAND_MOBILE
SET_SCRIPT_CAN_START ("scn_w_h_stand_mobile", HASH("scn_w_h_stand_mobile"))
BREAK
CASE PROP_HUMAN_SEAT_CHAIR
SET_SCRIPT_CAN_START ("scn_prop_h_seat_chair", HASH("scn_prop_h_seat_chair"))
BREAK
CASE PROP_HUMAN_SEAT_BAR
SET_SCRIPT_CAN_START ("scn_prop_h_seat_bar", HASH("scn_prop_h_seat_bar"))
BREAK
CASE PROP_HUMAN_SEAT_BENCH
SET_SCRIPT_CAN_START ("scn_prop_h_seat_bench", HASH("scn_prop_h_seat_bench"))
BREAK
ENDSWITCH
ENDPROC
FUNC PED_INDEX FIND_PED_WITH_DECORATOR(STRING s)
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
PED_INDEX pedArray[25]
INT cnt = GET_PED_NEARBY_PEDS(GET_PLAYER_PED(GET_PLAYER_INDEX()), pedArray)
IF (cnt > COUNT_OF(pedArray))
SCRIPT_ASSERT("[WARNING]:GET_PEDS_NEAR_PED - There are more in range than in the temp array")
ENDIF
INT i = 0
WHILE (i < cnt)
IF DOES_ENTITY_EXIST(pedArray[i])
IF DECOR_EXIST_ON(pedArray[i], s)
return pedArray[i]
ENDIF
ENDIF
i++
ENDWHILE
ENDIF
ENDIF
RETURN NULL
ENDFUNC
proc CREATE_SCENARIO_ACTION()
PED_INDEX pindex
IF bUseScenarioPed
pindex = FIND_PED_WITH_DECORATOR("scenario_test_ped")
ENDIF
IF bUseFocusPed
pindex = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_FOCUS_ENTITY_INDEX())
ENDIF
IF pindex <> NULL
IF NOT IS_PED_INJURED(pindex)
VECTOR eventDirection = GET_ENTITY_FORWARD_VECTOR(pindex)
VECTOR eventPosition = GET_ENTITY_COORDS(pindex)
eventDirection = ROTATE_VECTOR_ABOUT_Z(eventDirection, fEventHeading)
eventDirection *= fEventDistance
eventPosition += eventDirection
vDebugEventLocation = eventPosition
iDebugDrawEventCount = 100
IF iSelectedScenarioAction = 0
TRIGGER_PED_SCENARIO_PANICEXITTOFLEE(pindex, eventPosition)
ELIF iSelectedScenarioAction = 1
PED_INDEX pScenarioPedIndex = CREATE_PED(PEDTYPE_CIVMALE, S_M_M_DOCKWORK_01, eventPosition, 0)
DECOR_SET_BOOL(pScenarioPedIndex,"scenario_dummy_ped",TRUE)
TRIGGER_PED_SCENARIO_PANICEXITTOCOMBAT(pindex, pScenarioPedIndex)
ELIF iSelectedScenarioAction = 2
PED_INDEX pScenarioPedIndex = CREATE_PED(PEDTYPE_CIVMALE, S_M_M_DOCKWORK_01, eventPosition, 0)
DECOR_SET_BOOL(pScenarioPedIndex,"scenario_dummy_ped",TRUE)
TRIGGER_PED_SCENARIO_COWARDTHENRESUME(pindex, pScenarioPedIndex)
ELIF iSelectedScenarioAction = 3
TRIGGER_PED_SCENARIO_COWARDTHENEXIT(pindex, eventPosition)
ELIF iSelectedScenarioAction = 4
PED_INDEX pScenarioPedIndex = CREATE_PED(PEDTYPE_CIVMALE, S_M_M_DOCKWORK_01, eventPosition, 0)
DECOR_SET_BOOL(pScenarioPedIndex,"scenario_dummy_ped",TRUE)
TRIGGER_PED_SCENARIO_AGGROTHENEXIT(pindex, pScenarioPedIndex)
ELIF iSelectedScenarioAction = 5
PED_INDEX pScenarioPedIndex = CREATE_PED(PEDTYPE_CIVMALE, S_M_M_DOCKWORK_01, eventPosition, 0)
DECOR_SET_BOOL(pScenarioPedIndex,"scenario_dummy_ped",TRUE)
TRIGGER_PED_SCENARIO_SHOCKANIMATION(pindex, pScenarioPedIndex)
ELSE
TRIGGER_PED_SCENARIO_HEADLOOK(pindex, eventPosition)
ENDIF
ENDIF
ENDIF
ENDPROC
PROC CLEANUP_SCENARIO_ACTION ( )
PED_INDEX pindex = FIND_PED_WITH_DECORATOR("scenario_dummy_ped")
IF pindex <> NULL
IF DOES_ENTITY_EXIST(pindex)
DELETE_PED(pindex)
ENDIF
ENDIF
iDebugDrawEventCount = 0
ENDPROC
PROC CLEANUP_SCENARIO_SCRIPT ( )
IF DOES_ENTITY_EXIST(GET_PLAYER_PED(GET_PLAYER_INDEX()))
IF NOT IS_PED_INJURED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
DECOR_SET_BOOL(GET_PLAYER_PED(GET_PLAYER_INDEX()),"scenario_active",FALSE)
ENDIF
ENDIF
ENDPROC
PROC CLEANUP()
CLEANUP_SCENARIO_SCRIPT()
CLEANUP_SCENARIO_ACTION()
CLEAR_PRINTS()
CLEAR_HELP()
TERMINATE_THIS_THREAD ()
ENDPROC
PROC CREATE_WIDGETS()
START_WIDGET_GROUP ("scenarios_test")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO ("INVALID")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_IN_CAR_MUSIC")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_IN_CAR_SMOKING")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_VEHICLE_BROKEN_DOWN")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_CARRIER_BAGS")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_DRINKING")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_DRINKING_COFFEE")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_EATING_BAGEL")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_HANDBAG")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_IDLES")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_MOBILE")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_MUSIC_LISTEN")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_RING_BINDER")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_SHOPPING_BAGS")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_SMOKING")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_ATM")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_MUSCLE_CHIN_UPS")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_ARMCHAIR")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_BAR")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_BENCH")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_BENCH_BUM")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_BENCH_DRINK")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_CHAIR")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_COMPUTER")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_RESTAURANT")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_STRIP_WATCH")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_STRIP_POLE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_BUM_SLUMPED")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_BUM_STANDING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_CONST_DRILL")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_CLIPBOARD")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_DOCKWORKER_REPAIR")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_DRUG_DEALER")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_GARDENER_PLANT")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_GUARD_PATROL")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_GUARD_STAND")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_JOG_STANDING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_LEANING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_LEANING_FORWARDS")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_MAID_CLEAN")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_MIME_ARTIST")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_MUSCLE_FLEX")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_MUSCLE_FREE_WEIGHTS")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_PROSTITUTE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SEAT_KERB")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SEAT_LEDGE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SEAT_STEPS")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SEAT_WALL")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SEAT_WALL_IPAD")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SECURITY_SHINE_TORCH")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SMOKING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_STRIP_WATCH_STAND")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SUPERHERO")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_TENNIS_PLAYER")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_TOURIST_MAP")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_TOURIST_MOBILE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_WINDOW_SHOP_BROWSE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_YOGA")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_LIFEGUARD_TRUCK")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_POLICE_CAR")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_PROTEST")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_STAND_FIRE")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_PURSE")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_TEXTING")
ADD_TO_WIDGET_COMBO ("WORLD_COW_GRAZING")
ADD_TO_WIDGET_COMBO ("WORLD_COYOTE_HOWL")
ADD_TO_WIDGET_COMBO ("WORLD_COYOTE_WANDER")
ADD_TO_WIDGET_COMBO ("WORLD_DEER_GRAZING")
ADD_TO_WIDGET_COMBO ("WORLD_DOG_BARKING_RETRIEVER")
ADD_TO_WIDGET_COMBO ("WORLD_DOG_BARKING_ROTTWEILER")
ADD_TO_WIDGET_COMBO ("WORLD_GULL_FEEDING")
ADD_TO_WIDGET_COMBO ("WORLD_GULL_STANDING")
ADD_TO_WIDGET_COMBO ("WORLD_HEN_PECKING")
ADD_TO_WIDGET_COMBO ("WORLD_HEN_STANDING")
ADD_TO_WIDGET_COMBO ("WORLD_HORSE_GRAZING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_BINOCULARS")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_BUM_FREEWAY")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_HIKER")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_JOG")
STOP_WIDGET_COMBO("Scenario[1-79]", iSelectedScenario1)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO ("INVALID")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_POWER_WALKER")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_STAND_IMPATIENT")
ADD_TO_WIDGET_COMBO ("WORLD_MOUNTAIN_LION_WANDER")
ADD_TO_WIDGET_COMBO ("WORLD_PIGEON_FEEDING")
ADD_TO_WIDGET_COMBO ("WORLD_PIGEON_STANDING")
ADD_TO_WIDGET_COMBO ("WORLD_RATS_EATING")
ADD_TO_WIDGET_COMBO ("WORLD_SHARK_SWIM")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_BICYCLE_BMX")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_BICYCLE_MOUNTAIN")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_BICYCLE_ROAD")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_SECURITY_CAR")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_BUM_BIN")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_COWER")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_BRIEFCASE")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_CLIPBOARD")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_COUPLES")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_EATING_DONUT")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_WANDER_EATING_HOTDOG")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_NEWSPAPER")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_SUNLOUNGER")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_AA_COFFEE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_AA_SMOKE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_GARDENER_LEAF_BLOWER")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_HOSP_CLIPBOARD")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_JANITOR")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_QUEUE_IMPATIENT")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SEAT_WALL_EATING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_STANDING_WITH_SUITCASE")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_POLICE_BIKE")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_POLICE_NEXT_TO_CAR")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_TRACTOR")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_TRACTOR_BEACH")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_BUS_STOP_WAIT")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_BENCH_FOOD")
ADD_TO_WIDGET_COMBO ("DRIVE")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_MUSCLE_CHIN_UPS_PRISON")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_MSCLE_BNCH_PRSS_ARMY")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_MSCLE_BNCH_PRSS_PRISON")
ADD_TO_WIDGET_COMBO ("WALK")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_AMBULANCE")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_DRIVE_ PASSENGERS")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_DRIVE_ SOLO")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_FIRE_TRUCK")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_LEAN_AGAINST_CAR")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_VEHICLE_MECHANIC")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_IN_CAR_IDLE")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_PARK_CAR")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_CHAIR_UPRIGHT")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_DECKCHAIR")
ADD_TO_WIDGET_COMBO ("WORLD_FISH_FLEE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_BUM_WASH")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_DOCKWORKER_REPAIR_LOW")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_DRUG_DEALER_HARD")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_GOLF_PLAYER")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_HANG_OUT_STREET")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_PICNIC")
ADD_TO_WIDGET_COMBO ("WORLD_FISH_IDLE")
ADD_TO_WIDGET_COMBO ("WORLD_HEN_FLEE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_BUSKER")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_HIKER_STANDING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_MUSICIAN")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_PAPARAZZI")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_STAR_MAP")
ADD_TO_WIDGET_COMBO ("WORLD_RATS_FLEEING")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_CROSS_ROAD_WAIT_LEFT")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_CROSS_ROAD_WAIT_RIGHT")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_JAYWALKER")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_LOST_TOURIST_DRIVING")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_POLICE_CROWD_CONTROL")
ADD_TO_WIDGET_COMBO ("CODE_HUMAN_POLICE_INVESTIGATE")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_BBQ")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_GUARD_STAND_ARMY")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_PARTYING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_QUEUE_COOL")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_QUEUE_EXCITED")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SEAT_LEDGE_EATING")
STOP_WIDGET_COMBO("Scenario[80-158]", iSelectedScenario2)
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO ("INVALID")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_STUPOR")
ADD_TO_WIDGET_COMBO ("PROP_HUMAN_SEAT_SEWING")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_STAND_FISHING")
ADD_TO_WIDGET_COMBO ("CODE_H_SHKING_STAND_AND_WATCH")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_STAND_MOBILE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_HUMAN_STATUE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SUNBATHE")
ADD_TO_WIDGET_COMBO ("WORLD_HUMAN_SUNBATHE_BACK")
ADD_TO_WIDGET_COMBO ("WORLD_BOAR_GRAZING")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_PARK")
ADD_TO_WIDGET_COMBO ("WORLD_VEHICLE_PARK_PARALLEL")
STOP_WIDGET_COMBO("Scenario[159-count]", iSelectedScenario3)
ADD_WIDGET_BOOL ("Spawn", bSpawn)
ADD_WIDGET_BOOL ("Delete", bDelete)
START_WIDGET_GROUP ("Force Scenario Action")
START_NEW_WIDGET_COMBO()
ADD_TO_WIDGET_COMBO ("PanicExitToFlee")
ADD_TO_WIDGET_COMBO ("PanicExitToCombat")
ADD_TO_WIDGET_COMBO ("TriggerCowardThenResume")
ADD_TO_WIDGET_COMBO ("TriggerCowardThenExit")
ADD_TO_WIDGET_COMBO ("TriggerAggroThenExit")
ADD_TO_WIDGET_COMBO ("TriggerShockAnimation")
ADD_TO_WIDGET_COMBO ("TriggerHeadLook")
STOP_WIDGET_COMBO("Scenario Action", iSelectedScenarioAction)
ADD_WIDGET_FLOAT_SLIDER("Relative Heading", fEventHeading, -180.0, 180.0, 1)
ADD_WIDGET_FLOAT_SLIDER("Relative Distance", fEventDistance, 0.0, 100.0, 1)
ADD_WIDGET_BOOL ("UseFocusPed", bUseFocusPed)
ADD_WIDGET_BOOL ("UseScenarioPed", bUseScenarioPed)
ADD_WIDGET_BOOL ("Trigger", bTriggerAction)
ADD_WIDGET_BOOL ("Clear", bClearAction)
STOP_WIDGET_GROUP()
STOP_WIDGET_GROUP()
ENDPROC
PROC PROCESS_WIDGETS()
IF iSelectedScenario1 <> iPreviousSelectedScenario1
iPreviousSelectedScenario1 = iSelectedScenario1
iSelectedScenario2 = 0
iPreviousSelectedScenario2 = 0
iSelectedScenario3 = 0
iPreviousSelectedScenario3 = 0
ENDIF
IF iSelectedScenario2 <> iPreviousSelectedScenario2
iPreviousSelectedScenario2 = iSelectedScenario2
iSelectedScenario1 = 0
iPreviousSelectedScenario1 = 0
iSelectedScenario3 = 0
iPreviousSelectedScenario3 = 0
ENDIF
IF iSelectedScenario3 <> iPreviousSelectedScenario3
iPreviousSelectedScenario3 = iSelectedScenario3
iSelectedScenario1 = 0
iPreviousSelectedScenario1 = 0
iSelectedScenario2 = 0
iPreviousSelectedScenario2 = 0
ENDIF
IF bSpawn
INT iSelectedScenario
IF iSelectedScenario1 <> 0
iSelectedScenario = iSelectedScenario1 - 1
ELIF iSelectedScenario2 <> 0
iSelectedScenario = iSelectedScenario2 + 79 - 1
ELSE
iSelectedScenario = iSelectedScenario3 + 158 - 1
ENDIF
CLEANUP_SCENARIO_SCRIPT()
CREATE_SCENARIO_SCRIPT(INT_TO_ENUM(ScenarioEnum, iSelectedScenario))
bSpawn = FALSE
ENDIF
IF bDelete
CLEANUP_SCENARIO_ACTION()
CLEANUP_SCENARIO_SCRIPT()
bDelete = FALSE
ENDIF
IF bUseScenarioPed <> bPreviousUseScenarioPed
bPreviousUseScenarioPed = bUseScenarioPed
bUseFocusPed = FALSE
bPreviousUseFocusPed = FALSE
ENDIF
IF bUseFocusPed <> bPreviousUseFocusPed
bPreviousUseFocusPed = bUseFocusPed
bUseScenarioPed = FALSE
bPreviousUseScenarioPed = FALSE
ENDIF
IF bTriggerAction
bTriggerAction = FALSE
CLEANUP_SCENARIO_ACTION()
CREATE_SCENARIO_ACTION()
ENDIF
IF bClearAction
CLEANUP_SCENARIO_ACTION()
bClearAction = FALSE
ENDIF
ENDPROC
PROC PROCESS_DEBUG()
IF iDebugDrawEventCount > 0
iDebugDrawEventCount--
DRAW_DEBUG_SPHERE(vDebugEventLocation, 0.25, 255, 0, 0, 255)
ENDIF
ENDPROC
SCRIPT
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_SP_TO_MP)
CLEANUP()
ENDIF
SET_DEBUG_ACTIVE (TRUE)
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
DECOR_REGISTER_UNLOCK()
DECOR_REGISTER("scenario_test_ped", DECOR_TYPE_BOOL)
DECOR_REGISTER("scenario_active", DECOR_TYPE_BOOL)
DECOR_REGISTER("scenario_dummy_ped", DECOR_TYPE_BOOL)
DECOR_REGISTER_LOCK()
CREATE_WIDGETS()
WHILE TRUE
PROCESS_WIDGETS()
PROCESS_DEBUG()
WAIT(0)
ENDWHILE
CLEANUP()
ENDSCRIPT
#ENDIF // IS_DEBUG_BUILD