├── main.sc ├── main ├── misc │ ├── Airports.sc │ ├── Attractors │ │ ├── BARGUY.sc │ │ ├── BROWSE.sc │ │ ├── COPLOOK.sc │ │ ├── COPSIT.sc │ │ ├── DANCER.sc │ │ ├── FBOOTHL.sc │ │ ├── FBOOTHR.sc │ │ ├── OTBSLP.sc │ │ ├── OTBTILL.sc │ │ ├── OTBWTCH.sc │ │ ├── PCHAIR.sc │ │ ├── PCUSTOM.sc │ │ ├── PEDCARD.sc │ │ ├── PEDROUL.sc │ │ ├── PEDSLOT.sc │ │ ├── PHOTO.sc │ │ ├── PRISONR.sc │ │ ├── SHOPPER.sc │ │ ├── STRIPM.sc │ │ ├── STRIPW.sc │ │ └── TICKET.sc │ ├── Dance.sc │ ├── Dealer.sc │ ├── FoodBrains.sc │ ├── GF_Date.sc │ ├── GF_Meeting.sc │ ├── GF_Sex.sc │ ├── Girls.sc │ ├── Int_Manager.sc │ ├── OTB_ambience.sc │ ├── Objects │ │ ├── arcade.sc │ │ ├── crane1.sc │ │ ├── crane2.sc │ │ ├── crane3.sc │ │ ├── food_vendor.sc │ │ ├── gates_script.sc │ │ ├── kpad_script.sc │ │ ├── otb_script.sc │ │ ├── petrol_pumps.sc │ │ ├── pool_script.sc │ │ ├── porta_cabin.sc │ │ ├── property_script.sc │ │ ├── slot_machine.sc │ │ └── vending_machine.sc │ ├── People │ │ ├── Bar_Staff.sc │ │ ├── Bouncer.sc │ │ ├── Customer_Panic.sc │ │ ├── Hotdog.sc │ │ ├── OTB_Staff.sc │ │ └── ShopKeeper.sc │ ├── Strip_ambience.sc │ ├── Zero_ambience.sc │ ├── ammu.sc │ ├── audio_controller.sc │ ├── audio_singleline.sc │ ├── bar_ambience.sc │ ├── barber.sc │ ├── beatdisplay.sc │ ├── burg_brains.sc │ ├── buypro.sc │ ├── camera.sc │ ├── cargen.sc │ ├── carmod1.sc │ ├── carpark1.sc │ ├── casino_ambience.sc │ ├── clothes.sc │ ├── collect.sc │ ├── debt.sc │ ├── debug.sc │ ├── designtools.sc │ ├── gymbench.sc │ ├── gymbike.sc │ ├── gymdumb.sc │ ├── gymtread.sc │ ├── hj.sc │ ├── home_brains.sc │ ├── initial.sc │ ├── initial2.sc │ ├── junkfud.sc │ ├── menuskeleton.sc │ ├── mobile.sc │ ├── planes.sc │ ├── pros_brains.sc │ ├── tattoo.sc │ ├── trains.sc │ └── wardrobe.sc ├── mutliplayer │ ├── bike_2p.sc │ ├── cars_2p.sc │ ├── heli_2p.sc │ ├── peds_2p.sc │ ├── r_barb.sc │ ├── r_coch.sc │ ├── r_kylie.sc │ ├── r_mich.sc │ ├── r_mily.sc │ ├── r_suzi.sc │ ├── ram_2p.sc │ ├── run_CO.sc │ ├── run_DE.sc │ ├── run_LS.sc │ ├── run_LV.sc │ └── run_SF.sc ├── oddjobs │ ├── location │ │ ├── Quarry.sc │ │ ├── RaceTour.sc │ │ ├── Sh_range.sc │ │ ├── bikesch.sc │ │ ├── blood.sc │ │ ├── boat.sc │ │ ├── grav.sc │ │ ├── gymLS.sc │ │ ├── gymLV.sc │ │ ├── gymSF.sc │ │ ├── impexp.sc │ │ ├── impound.sc │ │ ├── kickstart.sc │ │ ├── lowr_cont.sc │ │ ├── otb.sc │ │ ├── parachute.sc │ │ ├── player_parachute.sc │ │ ├── shtr.sc │ │ ├── truck.sc │ │ └── valet.sc │ ├── mini_games │ │ ├── basketb.sc │ │ ├── bball_chal.sc │ │ ├── bbthrow.sc │ │ ├── blackj.sc │ │ ├── dual.sc │ │ ├── lowr.sc │ │ ├── lowrider_game.sc │ │ ├── none.sc │ │ ├── pool.sc │ │ ├── roulette.sc │ │ ├── vidpok.sc │ │ └── wheelo.sc │ ├── parked_vehicle │ │ ├── courier.sc │ │ ├── mtbikerace.sc │ │ ├── stunt.sc │ │ └── triathalon.sc │ └── vehicle_R3 │ │ ├── ambulance.sc │ │ ├── burglary.sc │ │ ├── copcar.sc │ │ ├── firetruck.sc │ │ ├── freight.sc │ │ ├── pimp.sc │ │ └── taxiodd.sc └── story_missions │ ├── Badlands │ ├── bcesar2.sc │ ├── bcesar3.sc │ ├── bcesar4.sc │ ├── bcrash1.sc │ ├── cat1.sc │ ├── cat2.sc │ ├── cat3.sc │ ├── cat4.sc │ ├── cat_cuts.sc │ ├── catalina.sc │ ├── truth1.sc │ └── truth2.sc │ ├── Desert │ ├── desert1.sc │ ├── desert10.sc │ ├── desert2.sc │ ├── desert3.sc │ ├── desert4.sc │ ├── desert5.sc │ ├── desert6.sc │ ├── desert8.sc │ └── desert9.sc │ ├── LA1 │ ├── cesar1.sc │ ├── cesar2.sc │ ├── crash1.sc │ ├── crash3.sc │ ├── crash4.sc │ ├── intro.sc │ ├── intro1.sc │ ├── intro2.sc │ ├── la1fin1.sc │ ├── la1fin2.sc │ ├── ryder1.sc │ ├── ryder2.sc │ ├── ryder3.sc │ ├── smoke1.sc │ ├── smoke2.sc │ ├── smoke3.sc │ ├── smoke4.sc │ ├── strap1.sc │ ├── strap2.sc │ ├── strap3.sc │ ├── strap4.sc │ ├── sweet1.sc │ ├── sweet1b.sc │ ├── sweet2.sc │ ├── sweet3.sc │ ├── sweet4.sc │ ├── sweet5.sc │ ├── sweet6.sc │ └── sweet7.sc │ ├── LA2 │ ├── finaleA.sc │ ├── finaleB.sc │ ├── finaleC.sc │ ├── grove1.sc │ ├── grove2.sc │ ├── mansion1.sc │ ├── mansion2.sc │ ├── mansion3.sc │ ├── mansion5.sc │ ├── riot1.sc │ └── riot2.sc │ ├── San Fran │ ├── farlie1.sc │ ├── farlie2.sc │ ├── farlie3.sc │ ├── farlie4.sc │ ├── farlie5.sc │ ├── garage1.sc │ ├── garage2.sc │ ├── scrash1.sc │ ├── scrash2.sc │ ├── steal1.sc │ ├── steal2.sc │ ├── steal4.sc │ ├── steal5.sc │ ├── syn1.sc │ ├── syn2.sc │ ├── syn3.sc │ ├── syn4.sc │ ├── syn5.sc │ ├── syn6.sc │ ├── syn7.sc │ ├── wuzi1.sc │ ├── wuzi2.sc │ ├── wuzi4.sc │ ├── zero1.sc │ ├── zero2.sc │ ├── zero4.sc │ └── zero5.sc │ └── Vegas │ ├── casino1.sc │ ├── casino10.sc │ ├── casino2.sc │ ├── casino3.sc │ ├── casino4.sc │ ├── casino5.sc │ ├── casino6.sc │ ├── casino7_cut.sc │ ├── casino9.sc │ ├── doc2.sc │ ├── heist1.sc │ ├── heist2.sc │ ├── heist3.sc │ ├── heist4.sc │ ├── heist5.sc │ ├── heist9.sc │ ├── vcrash1.sc │ └── vcrash2.sc ├── patch ├── AudioEvents_PC.txt ├── AudioEvents_PS2.txt ├── AudioEvents_XBOX.txt ├── HID_Base.h ├── TouchInterface_SA.h ├── sc.patch ├── xdelta3.bat └── xdelta3.exe └── readme.md /main/misc/Airports.sc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sergeanur/UndefinifiedGrove/0cd6863b8c4f4f431da5187298c7e547bd300673/main/misc/Airports.sc -------------------------------------------------------------------------------- /main/misc/Attractors/BARGUY.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** BAR CUSTOMER BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | BARGUY_Brain: 9 | 10 | SCRIPT_NAME BARGUY 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // parameters arriving from caller 13 | LVAR_INT test_brain_flag iPedState iSubStateStatus iIsPlayingAnims // State Machine variables 14 | LVAR_FLOAT fTemp fX fY fZ 15 | LVAR_INT iTemp iIsCowering iDrinkModel 16 | 17 | test_brain_flag = 0 18 | 19 | IF test_brain_flag = 1 20 | //--- The ped running the sript 21 | CREATE_CHAR PEDTYPE_CIVMALE 0 0.0 0.0 0.0 this_ped 22 | ENDIF 23 | 24 | //--- Request animations & Models 25 | REQUEST_ANIMATION BAR 26 | WHILE NOT HAS_ANIMATION_LOADED BAR 27 | WAIT 0 28 | ENDWHILE 29 | 30 | //--- Init the vars 31 | iPedState = 1 // Counting from one makes each state more readable 32 | iSubStateStatus = 0 33 | iIsPlayingAnims = 0 34 | iIsCowering = 0 35 | 36 | //---MAIN LOOP--- 37 | BARGUY_Main_Loop: 38 | 39 | WAIT 0 40 | 41 | //--- A call to the debug subroutine if needed - otherwise comment 42 | // GOSUB BARGUY_Run_Debug 43 | 44 | //--- Do all the checks and then run the state machine 45 | IF NOT IS_CHAR_DEAD this_ped // Always check if he is dead or alive 46 | AND IS_PLAYER_PLAYING PLAYER1 47 | AND iTerminateAllAmbience = 0 48 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 49 | IF iSetCasinoPanic = 0 //--- If there are global flags to check add them here 50 | IF NOT HAS_CHAR_BEEN_DAMAGED_BY_CHAR this_ped scplayer 51 | GOSUB BARGUY_State_Machine 52 | ELSE 53 | iSetCasinoPanic = 1 54 | GOTO BARGUY_GlobalFlagIntercept 55 | ENDIF 56 | ELSE 57 | //---Somebody has set a global flag to true 58 | GOTO BARGUY_GlobalFlagIntercept 59 | ENDIF 60 | ELSE 61 | GOSUB BARGUY_CleanUpBrain 62 | ENDIF 63 | ELSE 64 | GOSUB BARGUY_CleanUpBrain 65 | ENDIF 66 | 67 | 68 | GOTO BARGUY_Main_Loop 69 | //---END OF MAIN LOOP--- 70 | 71 | /******************************************** 72 | STATE MACHINE 73 | ********************************************/ 74 | BARGUY_State_Machine: 75 | SWITCH iPedState 76 | CASE 1 //---STATE 1: 77 | GOSUB BARGUY_PedState1 78 | BREAK 79 | ENDSWITCH 80 | RETURN 81 | /******************************************** 82 | ORDER DRINK 83 | ********************************************/ 84 | BARGUY_PedState1: 85 | SWITCH iSubStateStatus 86 | 87 | CASE 0 88 | GET_SCRIPT_TASK_STATUS this_ped TASK_LOOK_ABOUT iTemp 89 | IF iTemp = FINISHED_TASK 90 | TASK_LOOK_ABOUT this_ped -2 91 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_BAR_CHAT iTemp 92 | ++iSubStateStatus 93 | ENDIF 94 | BREAK 95 | 96 | CASE 1 97 | //--- Using health as a unique ped flag I can alter remotely 98 | GET_CHAR_HEALTH this_ped iTemp 99 | IF iTemp = 99 100 | SET_CHAR_HEALTH this_ped 100 101 | TASK_PLAY_ANIM this_ped Barcustom_order BAR 4.0 FALSE FALSE FALSE FALSE 0 102 | ++iSubStateStatus 103 | ENDIF 104 | BREAK 105 | 106 | CASE 2 107 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 108 | IF iTemp = FINISHED_TASK 109 | TASK_PLAY_ANIM this_ped Barcustom_loop BAR 4.0 TRUE FALSE FALSE FALSE 600000 110 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_BAR_CHAT iTemp 111 | ++iSubStateStatus 112 | ENDIF 113 | BREAK 114 | 115 | CASE 3 116 | //--- Using health as a unique ped flag I can alter remotely 117 | GET_CHAR_HEALTH this_ped iTemp 118 | IF iTemp = 99 119 | TASK_PLAY_ANIM this_ped Barcustom_get BAR 4.0 FALSE FALSE FALSE FALSE 0 120 | ++iSubStateStatus 121 | ENDIF 122 | BREAK 123 | 124 | CASE 4 125 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 126 | IF iTemp = FINISHED_TASK 127 | GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS this_ped 0.0 0.1 1.0 fX fY fZ 128 | //CREATE_OBJECT DYN_GLASS fX fY fZ iDrinkModel 129 | //TASK_PICK_UP_OBJECT this_ped iDrinkModel 0.1 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE 130 | ++iSubStateStatus 131 | ENDIF 132 | BREAK 133 | 134 | CASE 5 135 | //--- DRINK 136 | IF IS_CHAR_MALE this_ped 137 | TASK_PLAY_ANIM this_ped dnk_stndM_loop BAR 4.0 TRUE FALSE FALSE FALSE 15000 138 | ELSE 139 | TASK_PLAY_ANIM this_ped dnk_stndF_loop BAR 4.0 TRUE FALSE FALSE FALSE 15000 140 | ENDIF 141 | ++iSubStateStatus 142 | BREAK 143 | 144 | CASE 6 145 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 146 | IF iTemp = FINISHED_TASK 147 | SET_CHAR_HEALTH this_ped 100 148 | IF $txtEntryExit = &BAR1 149 | iSubStateStatus = 0 // loop back, the guy is never allowed to walk about here 150 | ELSE 151 | GOSUB BARGUY_CleanUpBrain 152 | ENDIF 153 | ENDIF 154 | BREAK 155 | 156 | ENDSWITCH 157 | RETURN 158 | /******************************************* 159 | CLEAN UP BRAIN 160 | ********************************************/ 161 | BARGUY_CleanUpBrain: 162 | REMOVE_ANIMATION BAR 163 | //MARK_OBJECT_AS_NO_LONGER_NEEDED iDrinkModel 164 | IF NOT IS_CHAR_DEAD this_ped 165 | CLEAR_CHAR_TASKS_IMMEDIATELY this_ped 166 | ENDIF 167 | TERMINATE_THIS_SCRIPT 168 | 169 | RETURN 170 | /******************************************* 171 | GLOBAL FLAG INTERCEPT 172 | ********************************************/ 173 | BARGUY_GlobalFlagIntercept: 174 | 175 | WAIT 0 176 | 177 | //--- This case here replaces the main loop with an alternative behaviour 178 | IF NOT IS_CHAR_DEAD this_ped 179 | AND iTerminateAllAmbience = 0 180 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 181 | IF iIsCowering = FINISHED_TASK 182 | TASK_DUCK this_ped -2 183 | ENDIF 184 | ELSE 185 | GOSUB BARGUY_CleanUpBrain 186 | ENDIF 187 | 188 | GOTO BARGUY_GlobalFlagIntercept 189 | /******************************************* 190 | RUN DEBUG 191 | ********************************************/ 192 | BARGUY_Run_Debug: 193 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 194 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 195 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 196 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 197 | RETURN 198 | } 199 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/BROWSE.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | ************************************************ BROWSER BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | BROWSE_Brain: 9 | 10 | SCRIPT_NAME BROWSE 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsKilling // State Machine variables 14 | LVAR_FLOAT fAnim_Time // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION COP_AMBIENT 25 | WHILE NOT HAS_ANIMATION_LOADED COP_AMBIENT 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | BROWSE_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB BROWSE_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | AND IS_PLAYER_PLAYING PLAYER1 44 | AND iTerminateAllAmbience = 0 45 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 46 | IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR this_ped scplayer 47 | GOTO BROWSE_GlobalFlagIntercept 48 | ELSE 49 | GOSUB BROWSE_State_Machine 50 | ENDIF 51 | ELSE 52 | GOSUB BROWSE_CleanUpBrain 53 | ENDIF 54 | ELSE 55 | GOSUB BROWSE_CleanUpBrain 56 | ENDIF 57 | 58 | GOTO BROWSE_Main_Loop 59 | //---END OF MAIN LOOP--- 60 | 61 | /******************************************** 62 | STATE MACHINE 63 | ********************************************/ 64 | BROWSE_State_Machine: 65 | SWITCH iPedState 66 | CASE 1 //---STATE 1: 67 | GOSUB BROWSE_PedState1 68 | BREAK 69 | ENDSWITCH 70 | 71 | RETURN 72 | /******************************************** 73 | STATE 1 74 | ********************************************/ 75 | BROWSE_PedState1: 76 | SWITCH iSubStateStatus 77 | 78 | CASE 0 79 | //--- Start Watching 80 | TASK_PLAY_ANIM this_ped Copbrowse_in COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 81 | ++iSubStateStatus 82 | BREAK 83 | 84 | CASE 1 85 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 86 | IF iTemp = FINISHED_TASK 87 | //--- Determine after how many seconds he will move to the next state 88 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 89 | TASK_PLAY_ANIM this_ped Copbrowse_loop COP_AMBIENT 4.0 TRUE FALSE FALSE TRUE iTemp 90 | ++iSubStateStatus 91 | ENDIF 92 | BREAK 93 | 94 | CASE 2 95 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 96 | IF iTemp = FINISHED_TASK 97 | //--- Determine if he nods or shakes 98 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 99 | IF iTemp > 50 100 | TASK_PLAY_ANIM this_ped Copbrowse_nod COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 101 | ELSE 102 | TASK_PLAY_ANIM this_ped Copbrowse_shake COP_AMBIENT 4.0 TRUE FALSE FALSE FALSE 1000 103 | ENDIF 104 | ++iSubStateStatus 105 | ENDIF 106 | BREAK 107 | 108 | CASE 3 109 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 110 | IF iTemp = FINISHED_TASK 111 | //--- Determine after how many seconds he will move to the next state 112 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 113 | TASK_PLAY_ANIM this_ped Copbrowse_loop COP_AMBIENT 4.0 TRUE FALSE FALSE TRUE iTemp 114 | ++iSubStateStatus 115 | ENDIF 116 | BREAK 117 | 118 | CASE 4 119 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 120 | IF iTemp = FINISHED_TASK 121 | //--- Determine if he nods or shakes 122 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 123 | IF iTemp > 50 124 | TASK_PLAY_ANIM this_ped Copbrowse_nod COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 125 | ELSE 126 | TASK_PLAY_ANIM this_ped Copbrowse_shake COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 127 | ENDIF 128 | ++iSubStateStatus 129 | ENDIF 130 | BREAK 131 | 132 | CASE 5 133 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 134 | IF iTemp = FINISHED_TASK 135 | //--- Quit the loop 136 | TASK_PLAY_ANIM this_ped Copbrowse_out COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 137 | ++iSubStateStatus 138 | ENDIF 139 | BREAK 140 | 141 | CASE 6 142 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 143 | IF iTemp = FINISHED_TASK 144 | GOSUB BROWSE_CleanUpBrain 145 | ENDIF 146 | BREAK 147 | 148 | ENDSWITCH 149 | 150 | RETURN 151 | /******************************************* 152 | CLEAN UP BRAIN 153 | ********************************************/ 154 | BROWSE_CleanUpBrain: 155 | REMOVE_ANIMATION COP_AMBIENT 156 | TERMINATE_THIS_SCRIPT 157 | RETURN 158 | /******************************************* 159 | GLOBAL FLAG INTERCEPT 160 | ********************************************/ 161 | BROWSE_GlobalFlagIntercept: 162 | 163 | WAIT 0 164 | //--- This case here replaces the main loop with an alternative behaviour 165 | IF NOT IS_CHAR_DEAD this_ped 166 | AND iTerminateAllAmbience = 0 167 | GET_SCRIPT_TASK_STATUS this_ped TASK_KILL_CHAR_ON_FOOT iIsKilling 168 | IF iIsKilling = FINISHED_TASK 169 | TASK_KILL_CHAR_ON_FOOT this_ped scplayer 170 | ENDIF 171 | ELSE 172 | GOSUB BROWSE_CleanUpBrain 173 | ENDIF 174 | 175 | GOTO BROWSE_GlobalFlagIntercept 176 | /******************************************* 177 | RUN DEBUG 178 | ********************************************/ 179 | BROWSE_Run_Debug: 180 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 181 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 182 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 183 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 184 | RETURN 185 | } 186 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/COPLOOK.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | ************************************************ COP LOOKING BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | COPLOOK_Brain: 9 | 10 | SCRIPT_NAME COPLOOK 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsKilling // State Machine variables 14 | LVAR_FLOAT fAnim_Time // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION COP_AMBIENT 25 | WHILE NOT HAS_ANIMATION_LOADED COP_AMBIENT 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | COPLOOK_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB COPLOOK_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | AND IS_PLAYER_PLAYING PLAYER1 44 | AND iTerminateAllAmbience = 0 45 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 46 | IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR this_ped scplayer 47 | GOTO COPLOOK_GlobalFlagIntercept 48 | ELSE 49 | GOSUB COPLOOK_State_Machine 50 | ENDIF 51 | ELSE 52 | GOSUB COPLOOK_CleanUpBrain 53 | ENDIF 54 | ELSE 55 | GOSUB COPLOOK_CleanUpBrain 56 | ENDIF 57 | 58 | GOTO COPLOOK_Main_Loop 59 | //---END OF MAIN LOOP--- 60 | 61 | /******************************************** 62 | STATE MACHINE 63 | ********************************************/ 64 | COPLOOK_State_Machine: 65 | SWITCH iPedState 66 | CASE 1 //---STATE 1: 67 | GOSUB COPLOOK_PedState1 68 | BREAK 69 | ENDSWITCH 70 | 71 | RETURN 72 | /******************************************** 73 | STATE 1 74 | ********************************************/ 75 | COPLOOK_PedState1: 76 | SWITCH iSubStateStatus 77 | 78 | CASE 0 79 | //--- Start Watching 80 | TASK_PLAY_ANIM this_ped Coplook_in COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 81 | ++iSubStateStatus 82 | BREAK 83 | 84 | CASE 1 85 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 86 | IF iTemp = FINISHED_TASK 87 | //--- Determine after how many seconds he will move to the next state 88 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 89 | TASK_PLAY_ANIM this_ped Coplook_loop COP_AMBIENT 4.0 TRUE FALSE FALSE TRUE iTemp 90 | ++iSubStateStatus 91 | ENDIF 92 | BREAK 93 | 94 | CASE 2 95 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 96 | IF iTemp = FINISHED_TASK 97 | //--- Determine if nods or shakes 98 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 99 | IF iTemp > 50 100 | TASK_PLAY_ANIM this_ped Coplook_nod COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 101 | ELSE 102 | TASK_PLAY_ANIM this_ped Coplook_shake COP_AMBIENT 4.0 TRUE FALSE FALSE FALSE 1000 103 | ENDIF 104 | ++iSubStateStatus 105 | ENDIF 106 | BREAK 107 | 108 | CASE 3 109 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 110 | IF iTemp = FINISHED_TASK 111 | //--- Determine after how many seconds he will move to the next state 112 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 113 | TASK_PLAY_ANIM this_ped Coplook_loop COP_AMBIENT 4.0 TRUE FALSE FALSE TRUE iTemp 114 | ++iSubStateStatus 115 | ENDIF 116 | BREAK 117 | 118 | CASE 4 119 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 120 | IF iTemp = FINISHED_TASK 121 | //--- Determine if he thinks or watches 122 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 123 | IF iTemp > 50 124 | TASK_PLAY_ANIM this_ped Coplook_think COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 125 | ELSE 126 | TASK_PLAY_ANIM this_ped Coplook_watch COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 127 | ENDIF 128 | ++iSubStateStatus 129 | ENDIF 130 | BREAK 131 | 132 | CASE 5 133 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 134 | IF iTemp = FINISHED_TASK 135 | //--- Determine after how many seconds he will move to the next state 136 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 137 | TASK_PLAY_ANIM this_ped Coplook_loop COP_AMBIENT 4.0 TRUE FALSE FALSE TRUE iTemp 138 | ++iSubStateStatus 139 | ENDIF 140 | BREAK 141 | 142 | CASE 6 143 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 144 | IF iTemp = FINISHED_TASK 145 | //--- Quit the loop 146 | TASK_PLAY_ANIM this_ped Coplook_out COP_AMBIENT 4.0 FALSE FALSE FALSE FALSE -1 147 | ++iSubStateStatus 148 | ENDIF 149 | BREAK 150 | 151 | CASE 7 152 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 153 | IF iTemp = FINISHED_TASK 154 | GOSUB COPLOOK_CleanUpBrain 155 | ENDIF 156 | BREAK 157 | 158 | ENDSWITCH 159 | 160 | RETURN 161 | /******************************************* 162 | CLEAN UP BRAIN 163 | ********************************************/ 164 | COPLOOK_CleanUpBrain: 165 | REMOVE_ANIMATION COP_AMBIENT 166 | TERMINATE_THIS_SCRIPT 167 | RETURN 168 | /******************************************* 169 | GLOBAL FLAG INTERCEPT 170 | ********************************************/ 171 | COPLOOK_GlobalFlagIntercept: 172 | 173 | WAIT 0 174 | //--- This case here replaces the main loop with an alternative behaviour 175 | IF NOT IS_CHAR_DEAD this_ped 176 | AND iTerminateAllAmbience = 0 177 | GET_SCRIPT_TASK_STATUS this_ped TASK_KILL_CHAR_ON_FOOT iIsKilling 178 | IF iIsKilling = FINISHED_TASK 179 | TASK_KILL_CHAR_ON_FOOT this_ped scplayer 180 | ENDIF 181 | ELSE 182 | GOSUB COPLOOK_CleanUpBrain 183 | ENDIF 184 | 185 | GOTO COPLOOK_GlobalFlagIntercept 186 | /******************************************* 187 | RUN DEBUG 188 | ********************************************/ 189 | COPLOOK_Run_Debug: 190 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 191 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 192 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 193 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 194 | RETURN 195 | } 196 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/DANCER.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | 3 | CONST_INT DANCER_MINIGAME_NOTHING 0 4 | CONST_INT DANCER_MINIGAME_STARTED 1 5 | 6 | /********************************************************************************************************************************************* 7 | ************************************************ ********************************************************************** 8 | ************************************************ DANCER BRAIN ********************************************************************** 9 | ************************************************ ********************************************************************** 10 | **********************************************************************************************************************************************/ 11 | { 12 | DANCER_Brain: 13 | 14 | SCRIPT_NAME DANCER 15 | 16 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 17 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering // State Machine variables 18 | LVAR_FLOAT fAnim_Time // Other variables 19 | LVAR_INT iDanceTime iDanceMoves iDanceMinigameStatus 20 | 21 | iTemp = 0 22 | 23 | IF iTemp = 1 24 | //--- The ped running the sript 25 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 26 | ENDIF 27 | 28 | //--- Request animations & Models 29 | REQUEST_ANIMATION DANCING 30 | WHILE NOT HAS_ANIMATION_LOADED DANCING 31 | WAIT 0 32 | ENDWHILE 33 | 34 | IF NOT IS_CHAR_DEAD this_ped 35 | GET_CHAR_MODEL this_ped iTemp 36 | IF iTemp < 10 37 | iDanceTime = iTemp * 1500 38 | ELSE 39 | IF iTemp < 100 40 | iDanceTime = iTemp * 150 41 | ELSE 42 | iDanceTime = iTemp * 15 43 | ENDIF 44 | ENDIF 45 | iPedState = iTemp / 2 46 | iPedState *= 2 47 | IF iTemp = iPedState // check if number is odd or even 48 | IF IS_CHAR_MALE this_ped 49 | iDanceMoves = 1 50 | ELSE 51 | iDanceMoves = 2 52 | ENDIF 53 | ELSE 54 | iDanceMoves = 3 55 | ENDIF 56 | ENDIF 57 | 58 | //--- Init the vars 59 | iPedState = 1 // Counting from one makes each state more readable 60 | iSubStateStatus = 0 61 | 62 | //---MAIN LOOP--- 63 | DANCER_Main_Loop: 64 | 65 | WAIT 0 66 | 67 | //--- A call to the debug subroutine if needed - otherwise comment 68 | // GOSUB DANCER_Run_Debug 69 | 70 | //--- Do all the checks and then run the state machine 71 | IF NOT IS_CHAR_DEAD this_ped 72 | AND iTerminateAllAmbience = 0 73 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 74 | IF iSetBarPanic = 0 //--- If there are global flags to check add them here 75 | GOSUB DANCER_State_Machine 76 | ELSE 77 | //---Somebody has set a global flag to true 78 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 79 | GOTO DANCER_GlobalFlagIntercept 80 | ENDIF 81 | ELSE 82 | GOSUB DANCER_CleanUpBrain 83 | ENDIF 84 | ELSE 85 | GOSUB DANCER_CleanUpBrain 86 | ENDIF 87 | 88 | GOTO DANCER_Main_Loop 89 | //---END OF MAIN LOOP--- 90 | 91 | /******************************************** 92 | STATE MACHINE 93 | ********************************************/ 94 | DANCER_State_Machine: 95 | SWITCH iPedState 96 | CASE 1 //---STATE 1: 97 | GOSUB DANCER_CheckForComment 98 | GOSUB DANCER_PedState1 99 | BREAK 100 | ENDSWITCH 101 | 102 | RETURN 103 | /******************************************** 104 | STATE 1 105 | ********************************************/ 106 | DANCER_PedState1: 107 | SWITCH iSubStateStatus 108 | 109 | CASE 0 110 | //--- Start 111 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 112 | IF iTemp = FINISHED_TASK 113 | IF iDanceMoves =1 114 | TASK_PLAY_ANIM this_ped dnce_M_c DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 115 | ELSE 116 | IF iDanceMoves = 2 117 | TASK_PLAY_ANIM this_ped dnce_M_b DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 118 | ELSE 119 | TASK_PLAY_ANIM this_ped dnce_M_a DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 120 | ENDIF 121 | ENDIF 122 | ++iSubStateStatus 123 | ENDIF 124 | BREAK 125 | 126 | CASE 1 127 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 128 | IF iTemp = FINISHED_TASK 129 | IF iDanceMoves =1 130 | TASK_PLAY_ANIM this_ped dnce_M_d DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 131 | ELSE 132 | IF iDanceMoves = 2 133 | TASK_PLAY_ANIM this_ped dnce_M_c DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 134 | ELSE 135 | TASK_PLAY_ANIM this_ped dnce_M_b DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 136 | ENDIF 137 | ENDIF 138 | ++iSubStateStatus 139 | ENDIF 140 | BREAK 141 | 142 | CASE 2 143 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 144 | IF iTemp = FINISHED_TASK 145 | IF iDanceMoves =1 146 | TASK_PLAY_ANIM this_ped dnce_M_a DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 147 | ELSE 148 | IF iDanceMoves = 2 149 | TASK_PLAY_ANIM this_ped dnce_M_d DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 150 | ELSE 151 | TASK_PLAY_ANIM this_ped dnce_M_c DANCING 4.0 TRUE FALSE FALSE TRUE iDanceTime 152 | ENDIF 153 | ENDIF 154 | iSubStateStatus = 0 155 | ENDIF 156 | BREAK 157 | ENDSWITCH 158 | 159 | RETURN 160 | /******************************************** 161 | CHECK FOR COMMENTS 162 | ********************************************/ 163 | DANCER_CheckForComment: 164 | IF IS_BIT_SET iDanceReport DANCE_MINIGAME_RUNNING 165 | iDanceMinigameStatus = DANCER_MINIGAME_STARTED 166 | ELSE 167 | IF iDanceMinigameStatus = DANCER_MINIGAME_STARTED 168 | IF iDanceScore > GF_DANCE_SCORE_REQUIRED 169 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_DANCE_IMPR_HIGH iTemp 170 | iDanceMinigameStatus = DANCER_MINIGAME_NOTHING 171 | ELSE 172 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_DANCE_IMPR_NOT iTemp 173 | iDanceMinigameStatus = DANCER_MINIGAME_NOTHING 174 | ENDIF 175 | ENDIF 176 | ENDIF 177 | RETURN 178 | /******************************************* 179 | CLEAN UP BRAIN 180 | ********************************************/ 181 | DANCER_CleanUpBrain: 182 | REMOVE_ANIMATION DANCING 183 | IF NOT IS_CHAR_DEAD this_ped 184 | TASK_USE_CLOSEST_MAP_ATTRACTOR this_ped 100.0 0 0.0 0.0 0.0 DANCER 185 | ENDIF 186 | TERMINATE_THIS_SCRIPT 187 | RETURN 188 | /******************************************* 189 | GLOBAL FLAG INTERCEPT 190 | ********************************************/ 191 | DANCER_GlobalFlagIntercept: 192 | 193 | WAIT 0 194 | //--- This case here replaces the main loop with an alternative behaviour 195 | IF NOT IS_CHAR_DEAD this_ped 196 | AND iTerminateAllAmbience = 0 197 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 198 | IF iIsCowering = FINISHED_TASK 199 | TASK_DUCK this_ped -2 200 | ENDIF 201 | ELSE 202 | GOSUB DANCER_CleanUpBrain 203 | ENDIF 204 | 205 | GOTO DANCER_GlobalFlagIntercept 206 | /******************************************* 207 | RUN DEBUG 208 | ********************************************/ 209 | DANCER_Run_Debug: 210 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 211 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 212 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 213 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 214 | RETURN 215 | } 216 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/OTBSLP.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** OTB BET SLIP BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | OTBSLP_Brain: 9 | 10 | SCRIPT_NAME OTBSLP 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering // State Machine variables 14 | LVAR_FLOAT fAnim_Time // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION OTB 25 | WHILE NOT HAS_ANIMATION_LOADED OTB 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | OTBSLP_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB OTBSLP_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | AND iTerminateAllAmbience = 0 44 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 45 | IF iSetOTBPanic = 0 //--- If there are global flags to check add them here 46 | GOSUB OTBSLP_State_Machine 47 | ELSE 48 | //---Somebody has set a global flag to true 49 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 50 | GOTO OTBSLP_GlobalFlagIntercept 51 | ENDIF 52 | ELSE 53 | GOSUB OTBSLP_CleanUpBrain 54 | ENDIF 55 | ELSE 56 | GOSUB OTBSLP_CleanUpBrain 57 | ENDIF 58 | 59 | GOTO OTBSLP_Main_Loop 60 | //---END OF MAIN LOOP--- 61 | 62 | /******************************************** 63 | STATE MACHINE 64 | ********************************************/ 65 | OTBSLP_State_Machine: 66 | SWITCH iPedState 67 | CASE 1 //---STATE 1: 68 | GOSUB OTBSLP_PedState1 69 | BREAK 70 | ENDSWITCH 71 | 72 | RETURN 73 | /******************************************** 74 | STATE 1 75 | ********************************************/ 76 | OTBSLP_PedState1: 77 | SWITCH iSubStateStatus 78 | 79 | CASE 0 80 | //--- Start Watching 81 | TASK_PLAY_ANIM this_ped betslp_in OTB 4.0 FALSE FALSE FALSE FALSE -1 82 | ++iSubStateStatus 83 | BREAK 84 | 85 | CASE 1 86 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 87 | IF iTemp = FINISHED_TASK 88 | //--- Determine after how many seconds he will move to the next state 89 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 90 | TASK_PLAY_ANIM this_ped betslp_loop OTB 4.0 TRUE FALSE FALSE TRUE iTemp 91 | ++iSubStateStatus 92 | ENDIF 93 | BREAK 94 | 95 | CASE 2 96 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 97 | IF iTemp = FINISHED_TASK 98 | //--- Determine if he incites or not 99 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 100 | IF iTemp > 50 101 | TASK_PLAY_ANIM this_ped betslp_lkabt OTB 16.0 FALSE FALSE FALSE FALSE -1 102 | ELSE 103 | TASK_PLAY_ANIM this_ped betslp_tnk OTB 16.0 FALSE FALSE FALSE FALSE -1 104 | ENDIF 105 | ++iSubStateStatus 106 | ENDIF 107 | BREAK 108 | 109 | CASE 3 110 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 111 | IF iTemp = FINISHED_TASK 112 | //--- Determine after how many seconds he will move to the next state 113 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 114 | TASK_PLAY_ANIM this_ped betslp_loop OTB 4.0 TRUE FALSE FALSE TRUE iTemp 115 | ++iSubStateStatus 116 | ENDIF 117 | BREAK 118 | 119 | CASE 4 120 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 121 | IF iTemp = FINISHED_TASK 122 | //--- Quit the loop 123 | TASK_PLAY_ANIM this_ped betslp_out OTB 4.0 FALSE FALSE FALSE FALSE -1 124 | ++iSubStateStatus 125 | ENDIF 126 | BREAK 127 | 128 | CASE 5 129 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 130 | IF iTemp = FINISHED_TASK 131 | GOSUB OTBSLP_CleanUpBrain 132 | ENDIF 133 | BREAK 134 | 135 | ENDSWITCH 136 | 137 | RETURN 138 | /******************************************* 139 | CLEAN UP BRAIN 140 | ********************************************/ 141 | OTBSLP_CleanUpBrain: 142 | REMOVE_ANIMATION OTB 143 | TERMINATE_THIS_SCRIPT 144 | RETURN 145 | /******************************************* 146 | GLOBAL FLAG INTERCEPT 147 | ********************************************/ 148 | OTBSLP_GlobalFlagIntercept: 149 | 150 | WAIT 0 151 | 152 | //--- This case here replaces the main loop with an alternative behaviour 153 | IF NOT IS_CHAR_DEAD this_ped 154 | AND iTerminateAllAmbience = 0 155 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 156 | IF iIsCowering = FINISHED_TASK 157 | TASK_DUCK this_ped -2 158 | ENDIF 159 | ELSE 160 | GOSUB OTBSLP_CleanUpBrain 161 | ENDIF 162 | 163 | GOTO OTBSLP_GlobalFlagIntercept 164 | /******************************************* 165 | RUN DEBUG 166 | ********************************************/ 167 | OTBSLP_Run_Debug: 168 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 169 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 170 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 171 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 172 | RETURN 173 | } 174 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/OTBTILL.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** OTB TILL BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | OTBTILL_Brain: 9 | 10 | SCRIPT_NAME OTBTILL 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // parameters arriving from caller 13 | LVAR_INT test_brain_flag iPedState iSubStateStatus iIsPlayingAnims // State Machine variables 14 | LVAR_FLOAT fAnim_Time fX fY fZ 15 | LVAR_INT iTemp iIsCowering iFoodModel 16 | 17 | test_brain_flag = 0 18 | 19 | IF test_brain_flag = 1 20 | //--- The ped running the sript 21 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 22 | ENDIF 23 | 24 | //--- Request animations & Models 25 | REQUEST_ANIMATION INT_SHOP 26 | WHILE NOT HAS_ANIMATION_LOADED INT_SHOP 27 | WAIT 0 28 | ENDWHILE 29 | 30 | //--- Init the vars 31 | iPedState = 1 // Counting from one makes each state more readable 32 | iSubStateStatus = 0 33 | iIsPlayingAnims = 0 34 | iIsCowering = 0 35 | 36 | //---MAIN LOOP--- 37 | OTBTILL_Main_Loop: 38 | 39 | WAIT 0 40 | 41 | //--- A call to the debug subroutine if needed - otherwise comment 42 | // GOSUB OTBTILL_Run_Debug 43 | 44 | //--- Do all the checks and then run the state machine 45 | IF NOT IS_CHAR_DEAD this_ped // Always check if he is dead or alive 46 | AND iTerminateAllAmbience = 0 47 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 48 | IF iSetOTBPanic = 0 //--- If there are global flags to check add them here 49 | GOSUB OTBTILL_State_Machine 50 | ELSE 51 | //---Somebody has set a global flag to true 52 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 53 | GOTO OTBTILL_GlobalFlagIntercept 54 | ENDIF 55 | ELSE 56 | GOSUB OTBTILL_CleanUpBrain 57 | ENDIF 58 | ELSE 59 | GOSUB OTBTILL_CleanUpBrain 60 | ENDIF 61 | 62 | GOTO OTBTILL_Main_Loop 63 | //---END OF MAIN LOOP--- 64 | 65 | /******************************************** 66 | STATE MACHINE 67 | ********************************************/ 68 | OTBTILL_State_Machine: 69 | SWITCH iPedState 70 | CASE 1 //---STATE 1: 71 | GOSUB OTBTILL_PedState1 72 | BREAK 73 | ENDSWITCH 74 | RETURN 75 | /******************************************** 76 | ORDER 77 | ********************************************/ 78 | OTBTILL_PedState1: 79 | SWITCH iSubStateStatus 80 | 81 | CASE 0 82 | iIsPlayingAnims = 1 83 | TASK_PLAY_ANIM this_ped IDLE_chat PED 4.0 TRUE FALSE FALSE FALSE 5000 84 | ++iSubStateStatus 85 | BREAK 86 | 87 | CASE 1 88 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 89 | IF iTemp = FINISHED_TASK 90 | TASK_PLAY_ANIM this_ped shop_pay INT_SHOP 1000.0 FALSE FALSE FALSE FALSE 0 91 | ++iSubStateStatus 92 | ENDIF 93 | BREAK 94 | 95 | CASE 2 96 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 97 | IF iTemp = FINISHED_TASK 98 | GOSUB OTBTILL_CleanUpBrain 99 | ENDIF 100 | BREAK 101 | ENDSWITCH 102 | RETURN 103 | /******************************************* 104 | CLEAN UP BRAIN 105 | ********************************************/ 106 | OTBTILL_CleanUpBrain: 107 | REMOVE_ANIMATION INT_SHOP 108 | //--- This command will also terminate this brain script 109 | IF NOT IS_CHAR_DEAD this_ped 110 | TASK_USE_CLOSEST_MAP_ATTRACTOR this_ped 50.0 0 0.0 0.0 0.0 OTBWTCH 111 | ENDIF 112 | TERMINATE_THIS_SCRIPT 113 | 114 | RETURN 115 | /******************************************* 116 | GLOBAL FLAG INTERCEPT 117 | ********************************************/ 118 | OTBTILL_GlobalFlagIntercept: 119 | 120 | WAIT 0 121 | 122 | //--- This case here replaces the main loop with an alternative behaviour 123 | IF NOT IS_CHAR_DEAD this_ped 124 | AND iTerminateAllAmbience = 0 125 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 126 | IF iIsCowering = FINISHED_TASK 127 | TASK_DUCK this_ped -2 128 | ENDIF 129 | ELSE 130 | GOSUB OTBTILL_CleanUpBrain 131 | ENDIF 132 | 133 | GOTO OTBTILL_GlobalFlagIntercept 134 | /******************************************* 135 | RUN DEBUG 136 | ********************************************/ 137 | OTBTILL_Run_Debug: 138 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 139 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 140 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 141 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 142 | RETURN 143 | } 144 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/OTBWTCH.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** OTB WATCHER BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | OTBWTCH_Brain: 9 | 10 | SCRIPT_NAME OTBWTCH 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering // State Machine variables 14 | LVAR_FLOAT fAnim_Time // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION OTB 25 | WHILE NOT HAS_ANIMATION_LOADED OTB 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | OTBWTCH_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB OTBWTCH_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | AND iTerminateAllAmbience = 0 44 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 45 | IF iSetOTBPanic = 0 //--- If there are global flags to check add them here 46 | GOSUB OTBWTCH_State_Machine 47 | ELSE 48 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 49 | GOTO OTBWTCH_GlobalFlagIntercept 50 | ENDIF 51 | ELSE 52 | GOSUB OTBWTCH_CleanUpBrain 53 | ENDIF 54 | ELSE 55 | GOSUB OTBWTCH_CleanUpBrain 56 | ENDIF 57 | 58 | GOTO OTBWTCH_Main_Loop 59 | //---END OF MAIN LOOP--- 60 | 61 | /******************************************** 62 | STATE MACHINE 63 | ********************************************/ 64 | OTBWTCH_State_Machine: 65 | SWITCH iPedState 66 | CASE 1 //---STATE 1: 67 | GOSUB OTBWTCH_PedState1 68 | BREAK 69 | ENDSWITCH 70 | 71 | RETURN 72 | /******************************************** 73 | STATE 1 74 | ********************************************/ 75 | OTBWTCH_PedState1: 76 | SWITCH iSubStateStatus 77 | 78 | CASE 0 79 | //--- Start Watching 80 | TASK_PLAY_ANIM this_ped wtchrace_in OTB 4.0 FALSE FALSE FALSE FALSE -1 81 | ++iSubStateStatus 82 | BREAK 83 | 84 | CASE 1 85 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 86 | IF iTemp = FINISHED_TASK 87 | //--- Determine after how many seconds he will move to the next state 88 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 89 | TASK_PLAY_ANIM this_ped wtchrace_loop OTB 4.0 TRUE FALSE FALSE TRUE iTemp 90 | ++iSubStateStatus 91 | ENDIF 92 | BREAK 93 | 94 | CASE 2 95 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 96 | IF iTemp = FINISHED_TASK 97 | //--- Determine if he incites or not 98 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 99 | IF iTemp > 50 100 | TASK_PLAY_ANIM this_ped wtchrace_cmon OTB 4.0 FALSE FALSE FALSE FALSE -1 101 | ELSE 102 | TASK_PLAY_ANIM this_ped wtchrace_loop OTB 4.0 TRUE FALSE FALSE FALSE 1000 103 | ENDIF 104 | ++iSubStateStatus 105 | ENDIF 106 | BREAK 107 | 108 | CASE 3 109 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 110 | IF iTemp = FINISHED_TASK 111 | //--- Determine after how many seconds he will move to the next state 112 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 113 | TASK_PLAY_ANIM this_ped wtchrace_loop OTB 4.0 TRUE FALSE FALSE TRUE iTemp 114 | ++iSubStateStatus 115 | ENDIF 116 | BREAK 117 | 118 | CASE 4 119 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 120 | IF iTemp = FINISHED_TASK 121 | //--- Determine if he wins or not 122 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 123 | IF iTemp > 50 124 | TASK_PLAY_ANIM this_ped wtchrace_win OTB 4.0 FALSE FALSE FALSE FALSE -1 125 | ELSE 126 | TASK_PLAY_ANIM this_ped wtchrace_lose OTB 4.0 FALSE FALSE FALSE FALSE -1 127 | ENDIF 128 | ++iSubStateStatus 129 | ENDIF 130 | BREAK 131 | 132 | CASE 5 133 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 134 | IF iTemp = FINISHED_TASK 135 | //--- Quit the loop 136 | TASK_PLAY_ANIM this_ped wtchrace_out OTB 4.0 FALSE FALSE FALSE FALSE -1 137 | ++iSubStateStatus 138 | ENDIF 139 | BREAK 140 | 141 | CASE 6 142 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 143 | IF iTemp = FINISHED_TASK 144 | GOSUB OTBWTCH_CleanUpBrain 145 | ENDIF 146 | BREAK 147 | 148 | ENDSWITCH 149 | 150 | RETURN 151 | /******************************************* 152 | CLEAN UP BRAIN 153 | ********************************************/ 154 | OTBWTCH_CleanUpBrain: 155 | REMOVE_ANIMATION OTB 156 | IF NOT IS_CHAR_DEAD this_ped 157 | TASK_USE_CLOSEST_MAP_ATTRACTOR this_ped 100.0 0 0.0 0.0 0.0 OTBSLP 158 | ENDIF 159 | TERMINATE_THIS_SCRIPT 160 | RETURN 161 | /******************************************* 162 | GLOBAL FLAG INTERCEPT 163 | ********************************************/ 164 | OTBWTCH_GlobalFlagIntercept: 165 | 166 | WAIT 0 167 | //--- This case here replaces the main loop with an alternative behaviour 168 | IF NOT IS_CHAR_DEAD this_ped 169 | AND iTerminateAllAmbience = 0 170 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 171 | IF iIsCowering = FINISHED_TASK 172 | TASK_DUCK this_ped -2 173 | ENDIF 174 | ELSE 175 | GOSUB OTBWTCH_CleanUpBrain 176 | ENDIF 177 | 178 | GOTO OTBWTCH_GlobalFlagIntercept 179 | /******************************************* 180 | RUN DEBUG 181 | ********************************************/ 182 | OTBWTCH_Run_Debug: 183 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 184 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 185 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 186 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 187 | RETURN 188 | } 189 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/PCUSTOM.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** PIZZA CUSTOMER BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | Pcustom_Brain: 9 | 10 | SCRIPT_NAME PCUSTOM 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // parameters arriving from caller 13 | LVAR_INT test_brain_flag iPedState iSubStateStatus iIsPlayingAnims // State Machine variables 14 | LVAR_FLOAT fAnim_Time fX fY fZ 15 | LVAR_INT iTemp iIsCowering iFoodModel 16 | 17 | test_brain_flag = 0 18 | 19 | IF test_brain_flag = 1 20 | //--- The ped running the sript 21 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 22 | ENDIF 23 | 24 | //--- Request animations & Models 25 | REQUEST_ANIMATION INT_SHOP 26 | WHILE NOT HAS_ANIMATION_LOADED INT_SHOP 27 | WAIT 0 28 | ENDWHILE 29 | 30 | //--- Init the vars 31 | iPedState = 1 // Counting from one makes each state more readable 32 | iSubStateStatus = 0 33 | iIsPlayingAnims = 0 34 | iIsCowering = 0 35 | 36 | //---MAIN LOOP--- 37 | Pcustom_Main_Loop: 38 | 39 | WAIT 0 40 | 41 | //--- A call to the debug subroutine if needed - otherwise comment 42 | // GOSUB Pcustom_Run_Debug 43 | 44 | //--- Do all the checks and then run the state machine 45 | IF NOT IS_CHAR_DEAD this_ped // Always check if he is dead or alive 46 | AND iTerminateAllAmbience = 0 47 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 48 | IF iSetPizzaPanic = 0 //--- If there are global flags to check add them here 49 | GOSUB Pcustom_State_Machine 50 | ELSE 51 | //---Somebody has set a global flag to true 52 | GOTO Pcustom_GlobalFlagIntercept 53 | ENDIF 54 | ELSE 55 | GOSUB Pcustom_CleanUpBrain 56 | ENDIF 57 | ELSE 58 | GOSUB Pcustom_CleanUpBrain 59 | ENDIF 60 | 61 | GOTO Pcustom_Main_Loop 62 | //---END OF MAIN LOOP--- 63 | 64 | /******************************************** 65 | STATE MACHINE 66 | ********************************************/ 67 | Pcustom_State_Machine: 68 | SWITCH iPedState 69 | CASE 1 //---STATE 1: 70 | GOSUB Pcustom_PedState1 71 | BREAK 72 | ENDSWITCH 73 | RETURN 74 | /******************************************** 75 | ORDER FOOD 76 | ********************************************/ 77 | Pcustom_PedState1: 78 | SWITCH iSubStateStatus 79 | 80 | CASE 0 81 | iIsPlayingAnims = 1 82 | TASK_PLAY_ANIM this_ped IDLE_chat PED 4.0 TRUE FALSE FALSE FALSE 5000 83 | ++iSubStateStatus 84 | BREAK 85 | 86 | CASE 1 87 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 88 | IF iTemp = FINISHED_TASK 89 | TASK_PLAY_ANIM this_ped shop_pay INT_SHOP 1000.0 FALSE FALSE FALSE FALSE 0 90 | ++iSubStateStatus 91 | ENDIF 92 | BREAK 93 | 94 | CASE 2 95 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 96 | IF iTemp = FINISHED_TASK 97 | GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS this_ped 0.0 0.1 1.0 fX fY fZ 98 | IF $shop_name = &FDPIZA 99 | CREATE_OBJECT CJ_PIZZA_2 fX fY fZ iFoodModel 100 | ELSE 101 | CREATE_OBJECT CJ_BURG_2 fX fY fZ iFoodModel 102 | ENDIF 103 | TASK_PICK_UP_OBJECT this_ped ifoodModel 0.0 0.0 0.0 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL FALSE 104 | ++iSubStateStatus 105 | ENDIF 106 | BREAK 107 | 108 | CASE 3 109 | GOSUB Pcustom_CleanUpBrain 110 | BREAK 111 | ENDSWITCH 112 | RETURN 113 | /******************************************* 114 | CLEAN UP BRAIN 115 | ********************************************/ 116 | Pcustom_CleanUpBrain: 117 | REMOVE_ANIMATION INT_SHOP 118 | MARK_OBJECT_AS_NO_LONGER_NEEDED ifoodModel 119 | IF NOT IS_CHAR_DEAD this_ped 120 | CLEAR_CHAR_TASKS_IMMEDIATELY this_ped 121 | //--- This command will also terminate this brain script 122 | TASK_USE_CLOSEST_MAP_ATTRACTOR this_ped 20.0 0 0.0 0.0 0.0 PCHAIR 123 | ENDIF 124 | TERMINATE_THIS_SCRIPT 125 | 126 | RETURN 127 | /******************************************* 128 | GLOBAL FLAG INTERCEPT 129 | ********************************************/ 130 | Pcustom_GlobalFlagIntercept: 131 | 132 | WAIT 0 133 | 134 | //--- This case here replaces the main loop with an alternative behaviour 135 | IF NOT IS_STRING_EMPTY $shop_name 136 | AND iTerminateAllAmbience = 0 137 | IF NOT IS_CHAR_DEAD this_ped 138 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 139 | IF iIsCowering = FINISHED_TASK 140 | TASK_DUCK this_ped -2 141 | ENDIF 142 | ENDIF 143 | ELSE 144 | GOSUB Pcustom_CleanUpBrain 145 | ENDIF 146 | 147 | GOTO Pcustom_GlobalFlagIntercept 148 | /******************************************* 149 | RUN DEBUG 150 | ********************************************/ 151 | Pcustom_Run_Debug: 152 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 153 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 154 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 155 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 156 | RETURN 157 | } 158 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/PEDCARD.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** CARD TABLE BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | PEDCARD_Brain: 9 | 10 | SCRIPT_NAME PEDCARD 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering // State Machine variables 14 | LVAR_FLOAT fAnim_Time // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION CASINO 25 | WHILE NOT HAS_ANIMATION_LOADED CASINO 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | PEDCARD_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB PEDCARD_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | AND iTerminateAllAmbience = 0 44 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 45 | IF iSetCasinoPanic = 0 //--- If there are global flags to check add them here 46 | GOSUB PEDCARD_State_Machine 47 | ELSE 48 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 49 | GOTO PEDCARD_GlobalFlagIntercept 50 | ENDIF 51 | ELSE 52 | GOSUB PEDCARD_CleanUpBrain 53 | ENDIF 54 | ELSE 55 | GOSUB PEDCARD_CleanUpBrain 56 | ENDIF 57 | 58 | 59 | GOTO PEDCARD_Main_Loop 60 | //---END OF MAIN LOOP--- 61 | 62 | /******************************************** 63 | STATE MACHINE 64 | ********************************************/ 65 | PEDCARD_State_Machine: 66 | SWITCH iPedState 67 | CASE 1 //---STATE 1: 68 | GOSUB PEDCARD_PedState1 69 | BREAK 70 | ENDSWITCH 71 | 72 | RETURN 73 | /******************************************** 74 | STATE 1 75 | ********************************************/ 76 | PEDCARD_PedState1: 77 | SWITCH iSubStateStatus 78 | 79 | CASE 0 80 | //--- Start 81 | TASK_PLAY_ANIM this_ped cards_in CASINO 4.0 FALSE FALSE FALSE FALSE -1 82 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_BJ_HIT iTemp 83 | ++iSubStateStatus 84 | BREAK 85 | 86 | CASE 1 87 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 88 | IF iTemp = FINISHED_TASK 89 | //--- Pick cards 90 | TASK_PLAY_ANIM this_ped cards_pick_01 CASINO 4.0 FALSE FALSE FALSE FALSE -1 91 | ++iSubStateStatus 92 | ENDIF 93 | BREAK 94 | 95 | CASE 2 96 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 97 | IF iTemp = FINISHED_TASK 98 | //--- Determine after how many seconds he will move to the next state 99 | GENERATE_RANDOM_INT_IN_RANGE 8000 15000 iTemp 100 | TASK_PLAY_ANIM this_ped cards_loop CASINO 4.0 TRUE FALSE FALSE TRUE iTemp 101 | ++iSubStateStatus 102 | ENDIF 103 | BREAK 104 | 105 | CASE 3 106 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 107 | IF iTemp = FINISHED_TASK 108 | //--- Determine if he raises or picks 109 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 110 | IF iTemp > 50 111 | TASK_PLAY_ANIM this_ped cards_raise CASINO 4.0 FALSE FALSE FALSE FALSE -1 112 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_BJ_DOUBLE iTemp 113 | ELSE 114 | TASK_PLAY_ANIM this_ped cards_pick_02 CASINO 4.0 FALSE FALSE FALSE FALSE -1 115 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_BJ_HIT iTemp 116 | ENDIF 117 | ++iSubStateStatus 118 | ENDIF 119 | BREAK 120 | 121 | CASE 4 122 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 123 | IF iTemp = FINISHED_TASK 124 | //--- Determine after how many seconds he will move to the next state 125 | GENERATE_RANDOM_INT_IN_RANGE 1500 5000 iTemp 126 | TASK_PLAY_ANIM this_ped cards_loop CASINO 4.0 TRUE FALSE FALSE TRUE iTemp 127 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_BJ_STAY iTemp 128 | ++iSubStateStatus 129 | ENDIF 130 | BREAK 131 | 132 | CASE 5 133 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 134 | IF iTemp = FINISHED_TASK 135 | //--- Determine if he wins or loses 136 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 137 | IF iTemp > 50 138 | TASK_PLAY_ANIM this_ped cards_win CASINO 4.0 FALSE FALSE FALSE FALSE -1 139 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_BJ_WIN iTemp 140 | ELSE 141 | TASK_PLAY_ANIM this_ped cards_lose CASINO 4.0 FALSE FALSE FALSE FALSE -1 142 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_BJ_LOSE iTemp 143 | ENDIF 144 | ++iSubStateStatus 145 | ENDIF 146 | BREAK 147 | 148 | CASE 6 149 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 150 | IF iTemp = FINISHED_TASK 151 | //--- Determine if he plays again or not 152 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 153 | IF iTemp > 50 154 | iSubStateStatus = 1 155 | ELSE 156 | TASK_PLAY_ANIM this_ped cards_out CASINO 4.0 FALSE FALSE FALSE FALSE -1 157 | ++iSubStateStatus 158 | ENDIF 159 | ENDIF 160 | BREAK 161 | 162 | CASE 7 163 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 164 | IF iTemp = FINISHED_TASK 165 | GOSUB PEDCARD_CleanUpBrain 166 | ENDIF 167 | BREAK 168 | 169 | ENDSWITCH 170 | 171 | RETURN 172 | /******************************************* 173 | CLEAN UP BRAIN 174 | ********************************************/ 175 | PEDCARD_CleanUpBrain: 176 | REMOVE_ANIMATION CASINO 177 | TERMINATE_THIS_SCRIPT 178 | RETURN 179 | /******************************************* 180 | GLOBAL FLAG INTERCEPT 181 | ********************************************/ 182 | PEDCARD_GlobalFlagIntercept: 183 | 184 | WAIT 0 185 | //--- This case here replaces the main loop with an alternative behaviour 186 | IF NOT IS_CHAR_DEAD this_ped 187 | AND iTerminateAllAmbience = 0 188 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 189 | IF iIsCowering = FINISHED_TASK 190 | TASK_DUCK this_ped -2 191 | ENDIF 192 | ELSE 193 | GOSUB PEDCARD_CleanUpBrain 194 | ENDIF 195 | 196 | GOTO PEDCARD_GlobalFlagIntercept 197 | /******************************************* 198 | RUN DEBUG 199 | ********************************************/ 200 | PEDCARD_Run_Debug: 201 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 202 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 203 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 204 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 205 | RETURN 206 | } 207 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/PEDROUL.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** ROULETTE BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | PEDROUL_Brain: 9 | 10 | SCRIPT_NAME PEDROUL 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering // State Machine variables 14 | LVAR_FLOAT fAnim_Time // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION CASINO 25 | WHILE NOT HAS_ANIMATION_LOADED CASINO 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | PEDROUL_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB PEDROUL_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | AND iTerminateAllAmbience = 0 44 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 45 | IF iSetCasinoPanic = 0 //--- If there are global flags to check add them here 46 | GOSUB PEDROUL_State_Machine 47 | ELSE 48 | //---Somebody has set a global flag to true 49 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 50 | GOTO PEDROUL_GlobalFlagIntercept 51 | ENDIF 52 | ELSE 53 | GOSUB PEDROUL_CleanUpBrain 54 | ENDIF 55 | ELSE 56 | GOSUB PEDROUL_CleanUpBrain 57 | ENDIF 58 | 59 | GOTO PEDROUL_Main_Loop 60 | //---END OF MAIN LOOP--- 61 | 62 | /******************************************** 63 | STATE MACHINE 64 | ********************************************/ 65 | PEDROUL_State_Machine: 66 | SWITCH iPedState 67 | CASE 1 //---STATE 1: 68 | GOSUB PEDROUL_PedState1 69 | BREAK 70 | ENDSWITCH 71 | 72 | RETURN 73 | /******************************************** 74 | STATE 1 75 | ********************************************/ 76 | PEDROUL_PedState1: 77 | SWITCH iSubStateStatus 78 | 79 | CASE 0 80 | //--- Start 81 | TASK_PLAY_ANIM this_ped roulette_in CASINO 4.0 FALSE FALSE FALSE FALSE -1 82 | ++iSubStateStatus 83 | BREAK 84 | 85 | CASE 1 86 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 87 | IF iTemp = FINISHED_TASK 88 | //--- Place bet 89 | TASK_PLAY_ANIM this_ped roulette_bet CASINO 4.0 FALSE FALSE FALSE FALSE -1 90 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_ROUL_CHAT iTemp 91 | ++iSubStateStatus 92 | ENDIF 93 | BREAK 94 | 95 | CASE 2 96 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 97 | IF iTemp = FINISHED_TASK 98 | //--- Determine after how many seconds he will move to the next state 99 | GENERATE_RANDOM_INT_IN_RANGE 8000 15000 iTemp 100 | TASK_PLAY_ANIM this_ped roulette_loop CASINO 4.0 TRUE FALSE FALSE TRUE iTemp 101 | ++iSubStateStatus 102 | ENDIF 103 | BREAK 104 | 105 | CASE 3 106 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 107 | IF iTemp = FINISHED_TASK 108 | //--- Determine if he wins or loses 109 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 110 | IF iTemp > 50 111 | TASK_PLAY_ANIM this_ped roulette_win CASINO 4.0 FALSE FALSE FALSE FALSE -1 112 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_CASINO_WIN iTemp 113 | ELSE 114 | TASK_PLAY_ANIM this_ped roulette_lose CASINO 4.0 FALSE FALSE FALSE FALSE -1 115 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_CASINO_LOSE iTemp 116 | ENDIF 117 | ++iSubStateStatus 118 | ENDIF 119 | BREAK 120 | 121 | CASE 4 122 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 123 | IF iTemp = FINISHED_TASK 124 | //--- Determine if he plays again or not 125 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 126 | IF iTemp > 50 127 | iSubStateStatus = 1 128 | ELSE 129 | TASK_PLAY_ANIM this_ped roulette_out CASINO 4.0 FALSE FALSE FALSE FALSE -1 130 | ++iSubStateStatus 131 | ENDIF 132 | ENDIF 133 | BREAK 134 | 135 | CASE 5 136 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 137 | IF iTemp = FINISHED_TASK 138 | GOSUB PEDROUL_CleanUpBrain 139 | ENDIF 140 | BREAK 141 | 142 | ENDSWITCH 143 | 144 | RETURN 145 | /******************************************* 146 | CLEAN UP BRAIN 147 | ********************************************/ 148 | PEDROUL_CleanUpBrain: 149 | REMOVE_ANIMATION CASINO 150 | TERMINATE_THIS_SCRIPT 151 | RETURN 152 | /******************************************* 153 | GLOBAL FLAG INTERCEPT 154 | ********************************************/ 155 | PEDROUL_GlobalFlagIntercept: 156 | 157 | WAIT 0 158 | //--- This case here replaces the main loop with an alternative behaviour 159 | IF NOT IS_CHAR_DEAD this_ped 160 | AND iTerminateAllAmbience = 0 161 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 162 | IF iIsCowering = FINISHED_TASK 163 | TASK_DUCK this_ped -2 164 | ENDIF 165 | ELSE 166 | GOSUB PEDROUL_CleanUpBrain 167 | ENDIF 168 | 169 | GOTO PEDROUL_GlobalFlagIntercept 170 | /******************************************* 171 | RUN DEBUG 172 | ********************************************/ 173 | PEDROUL_Run_Debug: 174 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 175 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 176 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 177 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 178 | RETURN 179 | } 180 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/PEDSLOT.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** FRUIT MACHINE BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | PEDSLOT_Brain: 9 | 10 | SCRIPT_NAME PEDSLOT 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering // State Machine variables 14 | LVAR_FLOAT fAnim_Time // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION CASINO 25 | WHILE NOT HAS_ANIMATION_LOADED CASINO 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | PEDSLOT_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB PEDSLOT_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | AND iTerminateAllAmbience = 0 44 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 45 | IF iSetCasinoPanic = 0 //--- If there are global flags to check add them here 46 | GOSUB PEDSLOT_State_Machine 47 | ELSE 48 | //---Somebody has set a global flag to true 49 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 50 | GOTO PEDSLOT_GlobalFlagIntercept 51 | ENDIF 52 | ELSE 53 | GOSUB PEDSLOT_CleanUpBrain 54 | ENDIF 55 | ELSE 56 | GOSUB PEDSLOT_CleanUpBrain 57 | ENDIF 58 | 59 | GOTO PEDSLOT_Main_Loop 60 | //---END OF MAIN LOOP--- 61 | 62 | /******************************************** 63 | STATE MACHINE 64 | ********************************************/ 65 | PEDSLOT_State_Machine: 66 | SWITCH iPedState 67 | CASE 1 //---STATE 1: 68 | GOSUB PEDSLOT_PedState1 69 | BREAK 70 | ENDSWITCH 71 | 72 | RETURN 73 | /******************************************** 74 | STATE 1 75 | ********************************************/ 76 | PEDSLOT_PedState1: 77 | SWITCH iSubStateStatus 78 | 79 | CASE 0 80 | //--- Start 81 | TASK_PLAY_ANIM this_ped slot_in CASINO 4.0 FALSE FALSE FALSE FALSE -1 82 | ++iSubStateStatus 83 | BREAK 84 | 85 | CASE 1 86 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 87 | IF iTemp = FINISHED_TASK 88 | //--- first bet 89 | TASK_PLAY_ANIM this_ped slot_bet_01 CASINO 4.0 FALSE FALSE FALSE FALSE iTemp 90 | ++iSubStateStatus 91 | ENDIF 92 | BREAK 93 | 94 | CASE 2 95 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 96 | IF iTemp = FINISHED_TASK 97 | //--- Determine for how long he waits 98 | GENERATE_RANDOM_INT_IN_RANGE 1500 5000 iTemp 99 | TASK_PLAY_ANIM this_ped slot_wait CASINO 4.0 TRUE FALSE FALSE TRUE iTemp 100 | ++iSubStateStatus 101 | ENDIF 102 | BREAK 103 | 104 | CASE 3 105 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 106 | IF iTemp = FINISHED_TASK 107 | //--- Determine if he places another bet 108 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 109 | IF iTemp > 50 110 | TASK_PLAY_ANIM this_ped slot_bet_02 CASINO 4.0 FALSE FALSE FALSE FALSE -1 111 | ELSE 112 | TASK_PLAY_ANIM this_ped slot_wait CASINO 4.0 FALSE FALSE FALSE FALSE -1 113 | ENDIF 114 | ++iSubStateStatus 115 | ENDIF 116 | BREAK 117 | 118 | CASE 4 119 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 120 | IF iTemp = FINISHED_TASK 121 | //--- Determine if he wins or not 122 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 123 | IF iTemp > 50 124 | TASK_PLAY_ANIM this_ped slot_win_out CASINO 4.0 FALSE FALSE FALSE FALSE -1 125 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_GAMB_SLOT_WIN iTemp 126 | ELSE 127 | TASK_PLAY_ANIM this_ped slot_lose_out CASINO 4.0 FALSE FALSE FALSE FALSE -1 128 | ENDIF 129 | ++iSubStateStatus 130 | ENDIF 131 | BREAK 132 | 133 | CASE 5 134 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 135 | IF iTemp = FINISHED_TASK 136 | //--- Determine if he plays again or not 137 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 138 | IF iTemp > 50 139 | iSubStateStatus = 0 140 | ELSE 141 | GOSUB PEDSLOT_CleanUpBrain 142 | ENDIF 143 | ENDIF 144 | BREAK 145 | 146 | ENDSWITCH 147 | 148 | RETURN 149 | /******************************************* 150 | CLEAN UP BRAIN 151 | ********************************************/ 152 | PEDSLOT_CleanUpBrain: 153 | REMOVE_ANIMATION CASINO 154 | TERMINATE_THIS_SCRIPT 155 | RETURN 156 | /******************************************* 157 | GLOBAL FLAG INTERCEPT 158 | ********************************************/ 159 | PEDSLOT_GlobalFlagIntercept: 160 | 161 | WAIT 0 162 | //--- This case here replaces the main loop with an alternative behaviour 163 | IF NOT IS_CHAR_DEAD this_ped 164 | AND iTerminateAllAmbience = 0 165 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 166 | IF iIsCowering = FINISHED_TASK 167 | TASK_DUCK this_ped -2 168 | ENDIF 169 | ELSE 170 | GOSUB PEDSLOT_CleanUpBrain 171 | ENDIF 172 | 173 | GOTO PEDSLOT_GlobalFlagIntercept 174 | /******************************************* 175 | RUN DEBUG 176 | ********************************************/ 177 | PEDSLOT_Run_Debug: 178 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 179 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 180 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 181 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 182 | RETURN 183 | } 184 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/PRISONR.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** PRISONER BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | PRISONR_Brain: 9 | 10 | SCRIPT_NAME PRISONR 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // parameters arriving from caller 13 | LVAR_INT test_brain_flag iPedState iSubStateStatus // State Machine variables 14 | LVAR_FLOAT fAnim_Time fX fY fZ 15 | LVAR_INT iTemp iIsCowering iOther_Prisoner iCiggy iFXSystemID 16 | 17 | test_brain_flag = 0 18 | 19 | IF test_brain_flag = 1 20 | //--- The ped running the sript 21 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 22 | ENDIF 23 | 24 | IF NOT IS_CHAR_DEAD this_ped 25 | GET_PED_TYPE this_ped iTemp 26 | IF iTemp = PEDTYPE_COP 27 | DELETE_CHAR this_ped 28 | TERMINATE_THIS_SCRIPT 29 | ENDIF 30 | ENDIF 31 | 32 | //--- Request animations & Models 33 | REQUEST_ANIMATION GANGS 34 | REQUEST_MODEL CIGAR 35 | WHILE NOT HAS_ANIMATION_LOADED GANGS 36 | WAIT 0 37 | ENDWHILE 38 | WHILE NOT HAS_MODEL_LOADED CIGAR 39 | WAIT 0 40 | ENDWHILE 41 | 42 | IF NOT IS_CHAR_DEAD this_ped 43 | GET_CHAR_COORDINATES this_ped fX fY fZ 44 | CREATE_OBJECT CIGAR fX fY fZ iCiggy 45 | TASK_PICK_UP_OBJECT this_ped iCiggy 0.0 0.1 -0.02 PED_HANDR HOLD_ORIENTATE_BONE_FULL NULL NULL -1 46 | ENDIF 47 | 48 | //--- Init the vars 49 | iPedState = 1 // Counting from one makes each state more readable 50 | iSubStateStatus = 0 51 | iIsCowering = 0 52 | 53 | //---MAIN LOOP--- 54 | PRISONR_Main_Loop: 55 | 56 | WAIT 0 57 | 58 | //--- A call to the debug subroutine if needed - otherwise comment 59 | // GOSUB PRISONR_Run_Debug 60 | 61 | //--- Do all the checks and then run the state machine 62 | IF NOT IS_CHAR_DEAD this_ped // Always check if he is dead or alive 63 | AND IS_PLAYER_PLAYING PLAYER1 64 | AND iTerminateAllAmbience = 0 65 | IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR this_ped scplayer 66 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 67 | GOTO PRISONR_GlobalFlagIntercept 68 | ELSE 69 | GOSUB PRISONR_State_Machine 70 | ENDIF 71 | ELSE 72 | GOSUB PRISONR_CleanUpBrain 73 | ENDIF 74 | 75 | GOTO PRISONR_Main_Loop 76 | //---END OF MAIN LOOP--- 77 | 78 | /******************************************** 79 | STATE MACHINE 80 | ********************************************/ 81 | PRISONR_State_Machine: 82 | SWITCH iPedState 83 | CASE 1 //---STATE 1: 84 | GOSUB PRISONR_PedState1 85 | BREAK 86 | ENDSWITCH 87 | RETURN 88 | /******************************************** 89 | ORDER 90 | ********************************************/ 91 | PRISONR_PedState1: 92 | SWITCH iSubStateStatus 93 | 94 | CASE 0 95 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 96 | IF iTemp >= 80 97 | GET_CHAR_COORDINATES this_ped fX fY fZ 98 | GET_RANDOM_CHAR_IN_SPHERE fX fY fZ 2.0 TRUE TRUE TRUE iOther_Prisoner 99 | IF NOT IS_CHAR_DEAD iOther_Prisoner 100 | AND NOT iOther_Prisoner = this_ped 101 | TASK_KILL_CHAR_ON_FOOT this_ped iOther_Prisoner 102 | iSubStateStatus = 2 103 | BREAK 104 | ELSE 105 | TASK_PLAY_ANIM this_ped smkcig_prtl GANGS 1.0 FALSE FALSE FALSE FALSE 0 106 | CREATE_FX_SYSTEM_ON_CHAR EXHALE this_ped 0.0 0.0 0.0 TRUE iFXSystemID 107 | ATTACH_FX_SYSTEM_TO_CHAR_BONE iFXSystemID this_ped BONE_HEAD 108 | iSubStateStatus = 3 109 | BREAK 110 | ENDIF 111 | ELSE 112 | IF iTemp >= 30 113 | TASK_PLAY_ANIM this_ped IDLE_chat PED 1.0 TRUE FALSE FALSE FALSE 5000 114 | SET_CHAR_SAY_CONTEXT this_ped CONTEXT_GLOBAL_CHAT iTemp 115 | iSubStateStatus = 1 116 | BREAK 117 | ELSE 118 | TASK_PLAY_ANIM this_ped smkcig_prtl GANGS 1.0 FALSE FALSE FALSE FALSE 0 119 | CREATE_FX_SYSTEM_ON_CHAR EXHALE this_ped 0.0 0.0 0.0 TRUE iFXSystemID 120 | ATTACH_FX_SYSTEM_TO_CHAR_BONE iFXSystemID this_ped BONE_HEAD 121 | iSubStateStatus = 3 122 | BREAK 123 | ENDIF 124 | ENDIF 125 | BREAK 126 | 127 | CASE 1 128 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 129 | IF iTemp = FINISHED_TASK 130 | iSubStateStatus = 0 131 | ENDIF 132 | BREAK 133 | 134 | CASE 2 135 | GET_SCRIPT_TASK_STATUS this_ped TASK_KILL_CHAR_ON_FOOT iTemp 136 | IF iTemp = FINISHED_TASK 137 | iSubStateStatus = 0 138 | ENDIF 139 | BREAK 140 | 141 | CASE 3 142 | IF IS_CHAR_PLAYING_ANIM this_ped smkcig_prtl 143 | GET_CHAR_ANIM_CURRENT_TIME this_ped smkcig_prtl fx 144 | IF fx >= 0.5 145 | AND fx < 1.0 146 | PLAY_FX_SYSTEM iFXSystemID 147 | ++iSubStateStatus 148 | ENDIF 149 | ELSE 150 | iSubStateStatus = 0 151 | KILL_FX_SYSTEM iFXSystemID 152 | ENDIF 153 | BREAK 154 | 155 | CASE 4 156 | IF IS_CHAR_PLAYING_ANIM this_ped smkcig_prtl 157 | GET_CHAR_ANIM_CURRENT_TIME this_ped smkcig_prtl fx 158 | IF fx >= 1.0 159 | KILL_FX_SYSTEM iFXSystemID 160 | iSubStateStatus = 0 161 | ENDIF 162 | ELSE 163 | iSubStateStatus = 0 164 | KILL_FX_SYSTEM iFXSystemID 165 | ENDIF 166 | BREAK 167 | 168 | ENDSWITCH 169 | RETURN 170 | /******************************************* 171 | CLEAN UP BRAIN 172 | ********************************************/ 173 | PRISONR_CleanUpBrain: 174 | REMOVE_ANIMATION GANGS 175 | MARK_MODEL_AS_NO_LONGER_NEEDED CIGAR 176 | DELETE_OBJECT iCiggy 177 | KILL_FX_SYSTEM iFXSystemID 178 | TERMINATE_THIS_SCRIPT 179 | RETURN 180 | /******************************************* 181 | GLOBAL FLAG INTERCEPT 182 | ********************************************/ 183 | PRISONR_GlobalFlagIntercept: 184 | 185 | WAIT 0 186 | 187 | //--- This case here replaces the main loop with an alternative behaviour 188 | IF NOT IS_CHAR_DEAD this_ped 189 | AND iTerminateAllAmbience = 0 190 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 191 | IF iIsCowering = FINISHED_TASK 192 | TASK_DUCK this_ped -2 193 | ENDIF 194 | ELSE 195 | GOSUB PRISONR_CleanUpBrain 196 | ENDIF 197 | 198 | GOTO PRISONR_GlobalFlagIntercept 199 | /******************************************* 200 | RUN DEBUG 201 | ********************************************/ 202 | PRISONR_Run_Debug: 203 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 204 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 205 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 206 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 207 | RETURN 208 | } 209 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/SHOPPER.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | ************************************************ SHOPPER BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | SHOPPER_Brain: 9 | 10 | SCRIPT_NAME SHOPPER 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering iRand // State Machine variables 14 | LVAR_FLOAT fX fY fZ // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION INT_SHOP 25 | WHILE NOT HAS_ANIMATION_LOADED INT_SHOP 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | SHOPPER_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB SHOPPER_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | AND IS_PLAYER_PLAYING PLAYER1 44 | AND iTerminateAllAmbience = 0 45 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 46 | IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR this_ped scplayer 47 | OR IS_CHAR_SHOOTING scplayer 48 | iSetClothesPanic = 1 49 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 50 | GOTO SHOPPER_GlobalFlagIntercept 51 | ELSE 52 | IF iSetClothesPanic = 1 53 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 54 | GOTO SHOPPER_GlobalFlagIntercept 55 | ELSE 56 | GOSUB SHOPPER_State_Machine 57 | ENDIF 58 | ENDIF 59 | ELSE 60 | GOSUB SHOPPER_CleanUpBrain 61 | ENDIF 62 | ELSE 63 | GOSUB SHOPPER_CleanUpBrain 64 | ENDIF 65 | 66 | GOTO SHOPPER_Main_Loop 67 | //---END OF MAIN LOOP--- 68 | 69 | /******************************************** 70 | STATE MACHINE 71 | ********************************************/ 72 | SHOPPER_State_Machine: 73 | SWITCH iPedState 74 | CASE 1 //---STATE 1: 75 | GOSUB SHOPPER_PedState1 76 | BREAK 77 | ENDSWITCH 78 | 79 | RETURN 80 | /******************************************** 81 | STATE 1 82 | ********************************************/ 83 | SHOPPER_PedState1: 84 | SWITCH iSubStateStatus 85 | 86 | CASE 0 87 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 88 | IF iTemp = FINISHED_TASK 89 | TASK_PLAY_ANIM this_ped shop_in INT_SHOP 4.0 FALSE FALSE FALSE FALSE -1 90 | ++iSubStateStatus 91 | ENDIF 92 | BREAK 93 | 94 | CASE 1 95 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 96 | IF iTemp = FINISHED_TASK 97 | //--- Determine after how many seconds he will move to the next state 98 | iTemp = this_ped 99 | IF iTemp > 10000 100 | iTemp /= 10000 101 | ENDIF 102 | IF iTemp < 1000 103 | iTemp += 2000 104 | ENDIF 105 | //--- Determine after how many seconds he will move to the next state 106 | TASK_PLAY_ANIM this_ped shop_loop INT_SHOP 4.0 TRUE FALSE FALSE TRUE iTemp 107 | ++iSubStateStatus 108 | ENDIF 109 | BREAK 110 | 111 | CASE 2 112 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 113 | IF iTemp = FINISHED_TASK 114 | //--- Determine if he picks A or B 115 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 116 | IF iTemp > 50 117 | TASK_PLAY_ANIM this_ped shop_lookA INT_SHOP 4.0 FALSE FALSE FALSE FALSE -1 118 | ELSE 119 | TASK_PLAY_ANIM this_ped shop_lookB INT_SHOP 4.0 FALSE FALSE FALSE FALSE -1 120 | ENDIF 121 | ++iSubStateStatus 122 | ENDIF 123 | BREAK 124 | 125 | CASE 3 126 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 127 | IF iTemp = FINISHED_TASK 128 | //--- Determine if he looks again or leaves 129 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 130 | IF iTemp > 50 131 | TASK_PLAY_ANIM this_ped shop_out INT_SHOP 4.0 FALSE FALSE FALSE FALSE -1 132 | ++iSubStateStatus 133 | ELSE 134 | GENERATE_RANDOM_INT_IN_RANGE 3000 6000 iTemp 135 | TASK_PLAY_ANIM this_ped shop_loop INT_SHOP 4.0 TRUE FALSE FALSE TRUE iTemp 136 | iSubStateStatus = 1 137 | ENDIF 138 | ENDIF 139 | BREAK 140 | 141 | CASE 4 142 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 143 | IF iTemp = FINISHED_TASK 144 | GOSUB SHOPPER_CleanUpBrain 145 | ENDIF 146 | BREAK 147 | 148 | ENDSWITCH 149 | 150 | RETURN 151 | /******************************************* 152 | CLEAN UP BRAIN 153 | ********************************************/ 154 | SHOPPER_CleanUpBrain: 155 | REMOVE_ANIMATION INT_SHOP 156 | TERMINATE_THIS_SCRIPT 157 | RETURN 158 | /******************************************* 159 | GLOBAL FLAG INTERCEPT 160 | ********************************************/ 161 | SHOPPER_GlobalFlagIntercept: 162 | 163 | WAIT 0 164 | 165 | //--- This case here replaces the main loop with an alternative behaviour 166 | IF NOT IS_CHAR_DEAD this_ped 167 | AND iTerminateAllAmbience = 0 168 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 169 | IF iIsCowering = FINISHED_TASK 170 | TASK_DUCK this_ped -2 171 | ENDIF 172 | ELSE 173 | GOSUB SHOPPER_CleanUpBrain 174 | ENDIF 175 | 176 | GOTO SHOPPER_GlobalFlagIntercept 177 | /******************************************* 178 | RUN DEBUG 179 | ********************************************/ 180 | SHOPPER_Run_Debug: 181 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 182 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 183 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 184 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 185 | RETURN 186 | } 187 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/STRIPM.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** STRIP WATCHER BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | STRIPM_Brain: 9 | 10 | SCRIPT_NAME STRIPM 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering // State Machine variables 14 | LVAR_FLOAT fAnim_Time fX fY fZ 15 | LVAR_INT iStripper iTempMoney 16 | 17 | iTemp = 0 18 | 19 | IF iTemp = 1 20 | //--- The ped running the sript 21 | CREATE_CHAR PEDTYPE_CIVMALE 0 0.0 0.0 0.0 this_ped 22 | ENDIF 23 | 24 | //--- Request animations & Models 25 | REQUEST_ANIMATION STRIP 26 | WHILE NOT HAS_ANIMATION_LOADED STRIP 27 | WAIT 0 28 | ENDWHILE 29 | 30 | //--- Init the vars 31 | iPedState = 1 // Counting from one makes each state more readable 32 | iSubStateStatus = 0 33 | 34 | //---MAIN LOOP--- 35 | STRIPM_Main_Loop: 36 | 37 | WAIT 0 38 | 39 | //--- A call to the debug subroutine if needed - otherwise comment 40 | // GOSUB STRIPM_Run_Debug 41 | 42 | //--- Do all the checks and then run the state machine 43 | IF NOT IS_CHAR_DEAD this_ped 44 | AND iTerminateAllAmbience = 0 45 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 46 | IF iSetSTRIPPanic = 0 //--- If there are global flags to check add them here 47 | GET_CHAR_COORDINATES this_ped fX fY fZ 48 | GET_USER_OF_CLOSEST_MAP_ATTRACTOR fX fY fZ 15.0 0 STRIPW iStripper 49 | IF NOT IS_CHAR_DEAD iStripper 50 | GOSUB STRIPM_State_Machine 51 | ELSE 52 | GOSUB STRIPM_CleanUpBrain 53 | ENDIF 54 | ELSE 55 | //---Somebody has set a global flag to true 56 | SET_CHAR_DECISION_MAKER this_ped iGlobalPedPanicDM 57 | GOTO STRIPM_GlobalFlagIntercept 58 | ENDIF 59 | ELSE 60 | GOSUB STRIPM_CleanUpBrain 61 | ENDIF 62 | ELSE 63 | GOSUB STRIPM_CleanUpBrain 64 | ENDIF 65 | 66 | GOTO STRIPM_Main_Loop 67 | //---END OF MAIN LOOP--- 68 | 69 | /******************************************** 70 | STATE MACHINE 71 | ********************************************/ 72 | STRIPM_State_Machine: 73 | SWITCH iPedState 74 | CASE 1 //---STATE 1: 75 | GOSUB STRIPM_PedState1 76 | BREAK 77 | ENDSWITCH 78 | 79 | RETURN 80 | /******************************************** 81 | STATE 1 82 | ********************************************/ 83 | STRIPM_PedState1: 84 | SWITCH iSubStateStatus 85 | 86 | CASE 0 87 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 88 | IF iTemp = FINISHED_TASK 89 | //--- Determine after how many seconds he will move to the next state 90 | iTemp = this_ped 91 | IF iTemp > 10000 92 | iTemp /= 10000 93 | ENDIF 94 | IF iTemp < 1000 95 | iTemp += 2000 96 | ENDIF 97 | TASK_PLAY_ANIM this_ped PUN_LOOP STRIP 4.0 TRUE FALSE FALSE TRUE iTemp 98 | ++iSubStateStatus 99 | ENDIF 100 | BREAK 101 | 102 | CASE 1 103 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 104 | IF iTemp = FINISHED_TASK 105 | TASK_PLAY_ANIM this_ped PUN_HOLLER STRIP 4.0 FALSE FALSE FALSE FALSE -1 106 | ++iSubStateStatus 107 | ENDIF 108 | BREAK 109 | 110 | CASE 2 111 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 112 | IF iTemp = FINISHED_TASK 113 | //--- Determine after how many seconds he will move to the next state 114 | GENERATE_RANDOM_INT_IN_RANGE 2000 5000 iTemp 115 | TASK_PLAY_ANIM this_ped PUN_LOOP STRIP 4.0 TRUE FALSE FALSE TRUE iTemp 116 | ++iSubStateStatus 117 | ENDIF 118 | BREAK 119 | 120 | CASE 3 121 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 122 | IF iTemp = FINISHED_TASK 123 | //--- Determine if he throws money or not 124 | GENERATE_RANDOM_INT_IN_RANGE 0 100 iTemp 125 | IF iTemp >= 50 126 | TASK_PLAY_ANIM this_ped PUN_CASH STRIP 4.0 FALSE FALSE FALSE FALSE -1 127 | GET_CHAR_COORDINATES this_ped fX fY fZ 128 | GET_USER_OF_CLOSEST_MAP_ATTRACTOR fX fY fZ 15.0 0 STRIPW iStripper 129 | IF NOT IS_CHAR_DEAD iStripper 130 | GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS iStripper 0.3 0.5 -0.5 fX fY fZ 131 | CREATE_MONEY_PICKUP fX fY fZ 100 FALSE iTempMoney 132 | ENDIF 133 | ELSE 134 | TASK_PLAY_ANIM this_ped PUN_HOLLER STRIP 4.0 FALSE FALSE FALSE FALSE -1 135 | ENDIF 136 | ++iSubStateStatus 137 | ENDIF 138 | BREAK 139 | 140 | CASE 4 141 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 142 | IF iTemp = FINISHED_TASK 143 | iSubStateStatus = 0 144 | ENDIF 145 | BREAK 146 | 147 | ENDSWITCH 148 | 149 | RETURN 150 | /******************************************* 151 | CLEAN UP BRAIN 152 | ********************************************/ 153 | STRIPM_CleanUpBrain: 154 | REMOVE_ANIMATION STRIP 155 | TERMINATE_THIS_SCRIPT 156 | RETURN 157 | /******************************************* 158 | GLOBAL FLAG INTERCEPT 159 | ********************************************/ 160 | STRIPM_GlobalFlagIntercept: 161 | 162 | WAIT 0 163 | //--- This case here replaces the main loop with an alternative behaviour 164 | IF NOT IS_CHAR_DEAD this_ped 165 | AND iTerminateAllAmbience = 0 166 | GET_SCRIPT_TASK_STATUS this_ped TASK_DUCK iIsCowering 167 | IF iIsCowering = FINISHED_TASK 168 | TASK_DUCK this_ped -2 169 | ENDIF 170 | ELSE 171 | GOSUB STRIPM_CleanUpBrain 172 | ENDIF 173 | 174 | GOTO STRIPM_GlobalFlagIntercept 175 | /******************************************* 176 | RUN DEBUG 177 | ********************************************/ 178 | STRIPM_Run_Debug: 179 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 180 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 181 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 182 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 183 | RETURN 184 | } 185 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Attractors/TICKET.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** TICKET MACHINE BRAIN ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | TICKET_Brain: 9 | 10 | SCRIPT_NAME TICKET 11 | 12 | LVAR_INT this_ped iSpawnedAtAttractor // Parameters arriving from caller 13 | LVAR_INT iTemp iPedState iSubStateStatus iIsCowering // State Machine variables 14 | LVAR_FLOAT fAnim_Time // Other variables 15 | 16 | iTemp = 0 17 | 18 | IF iTemp = 1 19 | //--- The ped running the sript 20 | CREATE_CHAR PEDTYPE_CIVFEMALE 0 0.0 0.0 0.0 this_ped 21 | ENDIF 22 | 23 | //--- Request animations & Models 24 | REQUEST_ANIMATION CASINO 25 | WHILE NOT HAS_ANIMATION_LOADED CASINO 26 | WAIT 0 27 | ENDWHILE 28 | 29 | //--- Init the vars 30 | iPedState = 1 // Counting from one makes each state more readable 31 | iSubStateStatus = 0 32 | 33 | //---MAIN LOOP--- 34 | TICKET_Main_Loop: 35 | 36 | WAIT 0 37 | 38 | //--- A call to the debug subroutine if needed - otherwise comment 39 | // GOSUB TICKET_Run_Debug 40 | 41 | //--- Do all the checks and then run the state machine 42 | IF NOT IS_CHAR_DEAD this_ped 43 | IF IS_CHAR_USING_MAP_ATTRACTOR this_ped 44 | GOSUB TICKET_State_Machine 45 | ELSE 46 | GOSUB TICKET_CleanUpBrain 47 | ENDIF 48 | ELSE 49 | GOSUB TICKET_CleanUpBrain 50 | ENDIF 51 | 52 | GOTO TICKET_Main_Loop 53 | //---END OF MAIN LOOP--- 54 | 55 | /******************************************** 56 | STATE MACHINE 57 | ********************************************/ 58 | TICKET_State_Machine: 59 | SWITCH iPedState 60 | CASE 1 //---STATE 1: 61 | GOSUB TICKET_PedState1 62 | BREAK 63 | ENDSWITCH 64 | 65 | RETURN 66 | /******************************************** 67 | STATE 1 68 | ********************************************/ 69 | TICKET_PedState1: 70 | SWITCH iSubStateStatus 71 | 72 | CASE 0 73 | //--- Start 74 | TASK_PLAY_ANIM this_ped slot_in CASINO 4.0 FALSE FALSE FALSE FALSE -1 75 | ++iSubStateStatus 76 | BREAK 77 | 78 | CASE 1 79 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 80 | IF iTemp = FINISHED_TASK 81 | //--- some button pressing anim 82 | TASK_PLAY_ANIM this_ped slot_bet_01 CASINO 4.0 FALSE FALSE FALSE FALSE iTemp 83 | ++iSubStateStatus 84 | ENDIF 85 | BREAK 86 | 87 | CASE 2 88 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 89 | IF iTemp = FINISHED_TASK 90 | //--- Determine for how long he waits 91 | GENERATE_RANDOM_INT_IN_RANGE 5000 10000 iTemp 92 | TASK_PLAY_ANIM this_ped slot_wait CASINO 4.0 TRUE FALSE FALSE TRUE iTemp 93 | ++iSubStateStatus 94 | ENDIF 95 | BREAK 96 | 97 | CASE 3 98 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 99 | IF iTemp = FINISHED_TASK 100 | //--- some more button pressing anim 101 | TASK_PLAY_ANIM this_ped slot_bet_02 CASINO 4.0 FALSE FALSE FALSE FALSE -1 102 | ++iSubStateStatus 103 | ENDIF 104 | BREAK 105 | 106 | CASE 4 107 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 108 | IF iTemp = FINISHED_TASK 109 | //--- Leave the machine 110 | TASK_PLAY_ANIM this_ped slot_lose_out CASINO 4.0 FALSE FALSE FALSE FALSE -1 111 | ++iSubStateStatus 112 | ENDIF 113 | BREAK 114 | 115 | CASE 5 116 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 117 | IF iTemp = FINISHED_TASK 118 | //--- Determine for how long he waits 119 | GENERATE_RANDOM_INT_IN_RANGE 4000 8000 iTemp 120 | TASK_PLAY_ANIM this_ped slot_wait CASINO 4.0 TRUE FALSE FALSE TRUE iTemp 121 | ++iSubStateStatus 122 | ENDIF 123 | BREAK 124 | 125 | CASE 6 126 | GET_SCRIPT_TASK_STATUS this_ped TASK_PLAY_ANIM iTemp 127 | IF iTemp = FINISHED_TASK 128 | //--- Get on the train if possible 129 | GOSUB TICKET_CleanUpBrain 130 | ENDIF 131 | BREAK 132 | 133 | ENDSWITCH 134 | 135 | RETURN 136 | /******************************************* 137 | CLEAN UP BRAIN 138 | ********************************************/ 139 | TICKET_CleanUpBrain: 140 | REMOVE_ANIMATION CASINO 141 | TERMINATE_THIS_SCRIPT 142 | RETURN 143 | /******************************************* 144 | RUN DEBUG 145 | ********************************************/ 146 | TICKET_Run_Debug: 147 | WRITE_DEBUG_WITH_INT PEDSTATE iPedState 148 | WRITE_DEBUG_WITH_INT SUBSTATESTATUS iSubStateStatus 149 | WRITE_DEBUG_WITH_INT LOOP_TIMER TIMERB 150 | WRITE_DEBUG_WITH_INT SCRIPT_TIMER TIMERA 151 | RETURN 152 | } 153 | MISSION_END -------------------------------------------------------------------------------- /main/misc/FoodBrains.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | 3 | CONST_INT SHOP_PIZZA 0 4 | CONST_INT SHOP_CHICKEN 1 5 | CONST_INT SHOP_BURGER 2 6 | /********************************************************************************************************************************************* 7 | ************************************************ ********************************************************************** 8 | *********************************************** PIZZA SHOP ********************************************************************** 9 | ************************************************ ********************************************************************** 10 | **********************************************************************************************************************************************/ 11 | { 12 | Pizza_Shop: 13 | SCRIPT_NAME PSHOP 14 | 15 | //--- VARS DECLARATION 16 | LVAR_INT iShopType // Parameter: 0 for Pizza, 1 for Burger and 2 for Chicken 17 | LVAR_INT iTemp iRand //Misc counters and stuff 18 | LVAR_FLOAT fX fY fZ fUse fForwad 19 | LVAR_INT iIdle_Keeper_Task //TASKS 20 | LVAR_INT iTill_Attractor // Local Attractors specific to this shop 21 | LVAR_INT iShopKeeper iSkeeper_model //PEDS 22 | 23 | //--- THE GLOBAL PANIC FLAG MUST BE SET TO ZERO WHEN ENTERING A SHOP 24 | iSetPizzaPanic = 0 25 | 26 | /*******************************SHOP SETUP*******************************/ 27 | 28 | 29 | SWITCH iShopType 30 | CASE SHOP_PIZZA 31 | fX = 377.3 32 | fY = -117.182 33 | fZ = 1000.637 34 | fUse = 180.0 35 | fForwad = 360.0 36 | iSkeeper_model = WMYPIZZ 37 | 38 | REQUEST_MODEL iSkeeper_model 39 | REQUEST_MODEL PIZZAHIGH 40 | REQUEST_MODEL CJ_PIZZA_2 41 | 42 | WHILE NOT HAS_MODEL_LOADED iSkeeper_model 43 | WAIT 0 44 | ENDWHILE 45 | WHILE NOT HAS_MODEL_LOADED PIZZAHIGH 46 | WAIT 0 47 | ENDWHILE 48 | WHILE NOT HAS_MODEL_LOADED CJ_PIZZA_2 49 | WAIT 0 50 | ENDWHILE 51 | 52 | BREAK 53 | 54 | CASE SHOP_CHICKEN 55 | fX = 371.5365 56 | fY = -4.4935 57 | fZ = 1000.8589 58 | fUse = 180.0 59 | fForwad = 360.0 60 | iSkeeper_model = WMYBELL 61 | 62 | REQUEST_MODEL iSkeeper_model 63 | REQUEST_MODEL BURGERHIGH 64 | REQUEST_MODEL CJ_BURG_2 65 | WHILE NOT HAS_MODEL_LOADED iSkeeper_model 66 | WAIT 0 67 | ENDWHILE 68 | WHILE NOT HAS_MODEL_LOADED BURGERHIGH 69 | WAIT 0 70 | ENDWHILE 71 | WHILE NOT HAS_MODEL_LOADED CJ_BURG_2 72 | WAIT 0 73 | ENDWHILE 74 | 75 | BREAK 76 | 77 | CASE SHOP_BURGER 78 | fX = 378.4146 79 | fY = -65.8567 80 | fZ = 1000.5078 81 | fUse = 180.0 82 | fForwad = 360.0 83 | iSkeeper_model = WFYBURG 84 | 85 | REQUEST_MODEL iSkeeper_model 86 | REQUEST_MODEL BURGERHIGH 87 | REQUEST_MODEL CJ_BURG_2 88 | WHILE NOT HAS_MODEL_LOADED iSkeeper_model 89 | WAIT 0 90 | ENDWHILE 91 | WHILE NOT HAS_MODEL_LOADED BURGERHIGH 92 | WAIT 0 93 | ENDWHILE 94 | WHILE NOT HAS_MODEL_LOADED CJ_BURG_2 95 | WAIT 0 96 | ENDWHILE 97 | BREAK 98 | 99 | ENDSWITCH 100 | 101 | //--- The Shopkeeper's IDLE 102 | OPEN_SEQUENCE_TASK iIdle_Keeper_Task 103 | TASK_STAY_IN_SAME_PLACE -1 TRUE 104 | TASK_STAND_STILL -1 -2 105 | CLOSE_SEQUENCE_TASK iIdle_Keeper_Task 106 | 107 | //--- Create shopkeeper's attractor -117.2905 108 | ADD_ATTRACTOR fX fY fZ fUse fForwad iIdle_Keeper_Task iTill_Attractor 109 | 110 | //--- Create the shopkeeper 111 | CREATE_CHAR_AT_ATTRACTOR PEDTYPE_CIVMALE iSkeeper_model iTill_Attractor TASK_STAND_STILL iShopKeeper //Shopkeeper PED 112 | START_NEW_STREAMED_SCRIPT ShopKeeper.sc iShopKeeper iTill_Attractor 113 | STREAM_SCRIPT ShopKeeper.sc // this fudge is to mark the script as still needed 114 | 115 | /*******************************MAIN LOOP*******************************/ 116 | Pizza_Shop_Loop: 117 | 118 | IF IS_PLAYER_PLAYING PLAYER1 119 | 120 | GET_CHAR_AREA_VISIBLE scplayer iAreaCode 121 | IF iAreaCode = 0 122 | OR iTerminateAllAmbience = 1 123 | GOSUB Pizza_Cleanup 124 | ENDIF 125 | 126 | IF IS_CHAR_SHOOTING scplayer 127 | iSetPizzaPanic = 1 128 | ENDIF 129 | 130 | IF NOT IS_CHAR_DEAD iShopKeeper 131 | IF IS_PLAYER_TARGETTING_CHAR player1 iShopKeeper 132 | //AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_ANYMELEE removed for consistency with Willie 133 | iSetPizzaPanic = 1 //Set the global panic flag 134 | ELSE 135 | IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR iShopKeeper scplayer 136 | iSetPizzaPanic = 1 //Set the global panic flag 137 | ENDIF 138 | ENDIF 139 | ENDIF 140 | 141 | IF iSetPizzaPanic = 1 // Public: Can be set by a mission 142 | //--- Get all peds without a brain and give them a tiny script to cower 143 | GET_CHAR_COORDINATES scplayer fX fY fZ 144 | GET_RANDOM_CHAR_IN_SPHERE_NO_BRAIN fX fY fZ 20.0 iTemp 145 | IF iTemp > -1 146 | iRand += 1 147 | START_NEW_STREAMED_SCRIPT Customer_Panic.sc iTemp iRand //Pass ped and random action 148 | STREAM_SCRIPT Customer_Panic.sc // this fudge is to mark the script as still needed 149 | ENDIF 150 | ENDIF 151 | 152 | ENDIF 153 | 154 | WAIT 0 155 | 156 | GOTO Pizza_Shop_Loop 157 | /**************************END OF MAIN LOOP****************************************/ 158 | 159 | 160 | 161 | /*******************************PIZZA CLEANUP*******************************/ 162 | Pizza_Cleanup: 163 | 164 | iSetPizzaPanic = 0 165 | 166 | //--- Clean up the peds 167 | MARK_CHAR_AS_NO_LONGER_NEEDED iShopKeeper 168 | MARK_MODEL_AS_NO_LONGER_NEEDED WMYPIZZ 169 | MARK_MODEL_AS_NO_LONGER_NEEDED WMYBELL 170 | MARK_MODEL_AS_NO_LONGER_NEEDED WFYBURG 171 | MARK_MODEL_AS_NO_LONGER_NEEDED PIZZAHIGH 172 | MARK_MODEL_AS_NO_LONGER_NEEDED BURGERHIGH 173 | MARK_MODEL_AS_NO_LONGER_NEEDED CJ_PIZZA_2 174 | MARK_MODEL_AS_NO_LONGER_NEEDED CJ_BURG_2 175 | DELETE_CHAR iShopKeeper 176 | 177 | //--- Clean up the attractors 178 | CLEAR_ATTRACTOR iTill_Attractor //The till 179 | 180 | //--- Clear the sequences 181 | CLEAR_SEQUENCE_TASK iIdle_Keeper_Task 182 | 183 | TERMINATE_THIS_SCRIPT 184 | } 185 | MISSION_END -------------------------------------------------------------------------------- /main/misc/OTB_ambience.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | /********************************************************************************************************************************************* 3 | ************************************************ ********************************************************************** 4 | *********************************************** OTB SHOP ********************************************************************** 5 | ************************************************ ********************************************************************** 6 | **********************************************************************************************************************************************/ 7 | { 8 | OTB_Shop: 9 | SCRIPT_NAME OTBSHP 10 | 11 | //--- VARS DECLARATION 12 | LVAR_INT iTemp iRand //Misc stuff 13 | LVAR_INT iIdle_Keeper_Task //TASKS 14 | LVAR_INT iTill_Attractor[4] // Local Attractors specific to this shop 15 | LVAR_INT iShopKeeper[4] //PEDS 16 | LVAR_FLOAT fX fY fZ 17 | 18 | //--- THE GLOBAL PANIC FLAG MUST BE SET TO ZERO WHEN ENTERING A SHOP & NOT ON A MISSION 19 | IF flag_player_on_mission = 0 20 | iSetOTBPanic = 0 21 | ENDIF 22 | iRand = 1 // this is better set to 1 23 | 24 | /*******************************SHOP SETUP*******************************/ 25 | //--- Requests and loads 26 | REQUEST_MODEL VBFYCRP 27 | REQUEST_MODEL VWFYCRP 28 | WHILE NOT HAS_MODEL_LOADED VWFYCRP 29 | WAIT 0 30 | ENDWHILE 31 | WHILE NOT HAS_MODEL_LOADED VBFYCRP 32 | WAIT 0 33 | ENDWHILE 34 | 35 | //--- The Shopkeeper's IDLE 36 | OPEN_SEQUENCE_TASK iIdle_Keeper_Task 37 | TASK_STAY_IN_SAME_PLACE -1 TRUE 38 | TASK_STAND_STILL -1 -2 39 | CLOSE_SEQUENCE_TASK iIdle_Keeper_Task 40 | 41 | //--- Create shopkeeper's attractors 42 | 43 | ADD_ATTRACTOR 820.3698 -0.3935 1003.1797 270.0 90.0 iIdle_Keeper_Task iTill_Attractor[0] 44 | ADD_ATTRACTOR 820.1330 4.2015 1003.1797 270.0 90.0 iIdle_Keeper_Task iTill_Attractor[1] 45 | ADD_ATTRACTOR 820.3185 6.4021 1003.1797 270.0 90.0 iIdle_Keeper_Task iTill_Attractor[2] 46 | ADD_ATTRACTOR 820.0 2.0 1003.0 270.0 90.0 iIdle_Keeper_Task iTill_Attractor[3] 47 | 48 | //--- Create the shopkeeper 49 | CREATE_CHAR_AT_ATTRACTOR PEDTYPE_CIVFEMALE VWFYCRP iTill_Attractor[0] TASK_STAND_STILL iShopKeeper[0] //Shopkeeper PED 50 | CREATE_CHAR_AT_ATTRACTOR PEDTYPE_CIVFEMALE VBFYCRP iTill_Attractor[1] TASK_STAND_STILL iShopKeeper[1] 51 | CREATE_CHAR_AT_ATTRACTOR PEDTYPE_CIVFEMALE VWFYCRP iTill_Attractor[2] TASK_STAND_STILL iShopKeeper[2] 52 | CREATE_CHAR_AT_ATTRACTOR PEDTYPE_CIVFEMALE VBFYCRP iTill_Attractor[3] TASK_STAND_STILL iShopKeeper[3] 53 | 54 | START_NEW_STREAMED_SCRIPT OTB_Staff.sc iShopKeeper[0] iTill_Attractor[0] 55 | START_NEW_STREAMED_SCRIPT OTB_Staff.sc iShopKeeper[1] iTill_Attractor[1] 56 | START_NEW_STREAMED_SCRIPT OTB_Staff.sc iShopKeeper[2] iTill_Attractor[2] 57 | START_NEW_STREAMED_SCRIPT OTB_Staff.sc iShopKeeper[3] iTill_Attractor[3] 58 | STREAM_SCRIPT OTB_Staff.sc // this fudge is to mark the script as still needed 59 | 60 | /*******************************MAIN LOOP*******************************/ 61 | OTB_Shop_Loop: 62 | 63 | IF IS_PLAYER_PLAYING PLAYER1 64 | GET_CHAR_AREA_VISIBLE scplayer iAreaCode 65 | IF iAreaCode = 0 66 | OR iTerminateAllAmbience = 1 67 | GOTO OTB_Shop_Cleanup 68 | ENDIF 69 | 70 | IF IS_CHAR_SHOOTING scplayer 71 | OR IS_WANTED_LEVEL_GREATER PLAYER1 iWantedOnEntry 72 | iSetOTBPanic = 1 73 | ENDIF 74 | 75 | REPEAT 4 iTemp 76 | IF NOT IS_CHAR_DEAD iShopKeeper[iTemp] 77 | IF IS_PLAYER_TARGETTING_CHAR player1 iShopKeeper[iTemp] 78 | AND NOT IS_CURRENT_CHAR_WEAPON scplayer WEAPONTYPE_ANYMELEE 79 | iSetOTBPanic = 1 //Set the global panic flag 80 | ELSE 81 | IF HAS_CHAR_BEEN_DAMAGED_BY_CHAR iShopKeeper[iTemp] scplayer 82 | iSetOTBPanic = 1 //Set the global panic flag 83 | ENDIF 84 | ENDIF 85 | ENDIF 86 | ENDREPEAT 87 | 88 | IF iSetOTBPanic = 1 // Public: Can be set by a mission 89 | //--- Get all peds without a brain and give them a tiny script to cower 90 | 91 | GET_RANDOM_CHAR_IN_SPHERE_NO_BRAIN fX fY fZ 20.0 iTemp 92 | IF iTemp > -1 93 | iRand += 1 94 | START_NEW_STREAMED_SCRIPT Customer_Panic.sc iTemp iRand //Pass ped and random action 95 | STREAM_SCRIPT Customer_Panic.sc // this fudge is to mark the script as still needed 96 | ENDIF 97 | 98 | ENDIF 99 | ENDIF 100 | 101 | WAIT 0 102 | 103 | GOTO OTB_Shop_Loop 104 | /**************************END OF MAIN LOOP****************************************/ 105 | 106 | 107 | 108 | /*******************************OTB CLEANUP*******************************/ 109 | OTB_Shop_Cleanup: 110 | //--- Clean up the peds 111 | REPEAT 4 iTemp 112 | MARK_CHAR_AS_NO_LONGER_NEEDED iShopKeeper[iTemp] 113 | DELETE_CHAR iShopKeeper[iTemp] 114 | //--- Clean up the attractors 115 | CLEAR_ATTRACTOR iTill_Attractor[iTemp] //The till 116 | ENDREPEAT 117 | 118 | MARK_MODEL_AS_NO_LONGER_NEEDED VWFYCRP 119 | MARK_MODEL_AS_NO_LONGER_NEEDED VBFYCRP 120 | 121 | //--- Clear the sequences 122 | CLEAR_SEQUENCE_TASK iIdle_Keeper_Task 123 | 124 | TERMINATE_THIS_SCRIPT 125 | } 126 | MISSION_END -------------------------------------------------------------------------------- /main/misc/Objects/arcade.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | 3 | {/////////////////////////////////////////////////////////////////////////////// 4 | arcade_script: //////////////////////////////////////////////////////////////// 5 | //////////////////////////////////////////////////////////////////////////////// 6 | SCRIPT_NAME ARCADE 7 | 8 | LVAR_INT arcade_cabinet 9 | LVAR_INT arcade_help 10 | 11 | arcade_help = 0 12 | IF arcade_help = -1 13 | CREATE_OBJECT CJ_COIN_OP_2 0.0 0.0 0.0 arcade_cabinet 14 | 15 | // dual.sc CJ_COIN_OP_2 // DUALITY 16 | // none.sc CJ_COIN_OP_3 17 | // none.sc SWANK_CONSOLE // URANUS 18 | // grav.sc CJ_COIN_OP_1 // BEE GAME 19 | // grav.sc SNESISH 20 | // shtr.sc CJ_COIN_OP // SPACE MONKEY 21 | // shtr.sc LOW_CONSOLE 22 | ENDIF 23 | 24 | arcade_script_loop: 25 | 26 | WAIT 0 27 | 28 | IF DOES_OBJECT_EXIST arcade_cabinet 29 | if IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE arcade_cabinet 30 | IF IS_PLAYER_PLAYING player1 31 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS arcade_cabinet 0.0 -1.0 1.0 x y z 32 | IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 0.6 0.6 1.0 FALSE 33 | 34 | IF IS_BUTTON_PRESSED PAD1 TRIANGLE 35 | 36 | IF arcade_help = 1 37 | CLEAR_HELP 38 | arcade_help = 0 39 | IF flag_player_on_mission = 0 40 | IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS 41 | IF CAN_PLAYER_START_MISSION player1 42 | SET_PLAYER_CONTROL player1 OFF 43 | SET_EVERYONE_IGNORE_PLAYER player1 TRUE 44 | DO_FADE 500 FADE_OUT 45 | WHILE GET_FADING_STATUS 46 | WAIT 0 47 | ENDWHILE 48 | if DOES_OBJECT_HAVE_THIS_MODEL arcade_cabinet CJ_COIN_OP_2 49 | load_and_launch_mission_if_poss = DUAL_SC 50 | else 51 | if DOES_OBJECT_HAVE_THIS_MODEL arcade_cabinet CJ_COIN_OP_3 52 | or DOES_OBJECT_HAVE_THIS_MODEL arcade_cabinet SWANK_CONSOLE 53 | load_and_launch_mission_if_poss = NONE_SC 54 | else 55 | if DOES_OBJECT_HAVE_THIS_MODEL arcade_cabinet CJ_COIN_OP_1 56 | or DOES_OBJECT_HAVE_THIS_MODEL arcade_cabinet SNESISH 57 | load_and_launch_mission_if_poss = GRAV_SC 58 | else 59 | if DOES_OBJECT_HAVE_THIS_MODEL arcade_cabinet CJ_COIN_OP 60 | or DOES_OBJECT_HAVE_THIS_MODEL arcade_cabinet LOW_CONSOLE 61 | load_and_launch_mission_if_poss = SHTR_SC 62 | endif 63 | endif 64 | endif 65 | endif 66 | WAIT 0 67 | WAIT 0 68 | WAIT 0 69 | if is_player_playing player1 70 | IF flag_player_on_mission = 0 71 | SET_PLAYER_CONTROL player1 ON 72 | ENDIF 73 | endif 74 | endif 75 | ELSE 76 | if is_player_control_on player1 77 | PRINT_NOW BUSY 3000 1 78 | endif 79 | ENDIF 80 | ELSE 81 | if is_player_control_on player1 82 | PRINT_NOW BUSY 3000 1 83 | endif 84 | ENDIF 85 | ENDIF 86 | ELSE 87 | IF arcade_help = 0 88 | PRINT_HELP_FOREVER DUAL_A 89 | arcade_help = 1 90 | ENDIF 91 | ENDIF 92 | ELSE 93 | IF arcade_help = 1 94 | CLEAR_HELP 95 | arcade_help = 0 96 | ENDIF 97 | ENDIF 98 | else 99 | IF arcade_help = 1 100 | CLEAR_HELP 101 | arcade_help = 0 102 | ENDIF 103 | ENDIF 104 | ELSE 105 | IF arcade_help = 1 106 | CLEAR_HELP 107 | arcade_help = 0 108 | ENDIF 109 | TERMINATE_THIS_SCRIPT 110 | ENDIF 111 | ELSE 112 | IF arcade_help = 1 113 | CLEAR_HELP 114 | arcade_help = 0 115 | ENDIF 116 | TERMINATE_THIS_SCRIPT 117 | ENDIF 118 | 119 | GOTO arcade_script_loop 120 | } 121 | 122 | MISSION_END 123 | -------------------------------------------------------------------------------- /main/misc/Objects/crane3.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | 3 | {/////////////////////////////////////////////////////////////////////////////// 4 | crane3_script:////////////// QUARRY SITE CRANE ///////////////////////////////// 5 | //////////////////////////////////////////////////////////////////////////////// 6 | SCRIPT_NAME CRANE3 7 | 8 | // parameters 9 | LVAR_INT base 10 | LVAR_INT base_stand 11 | LVAR_INT arm 12 | 13 | LVAR_INT flag 14 | 15 | LVAR_FLOAT base_stand_h 16 | LVAR_FLOAT trigger_x trigger_y trigger_z 17 | LVAR_FLOAT temp_float 18 | 19 | LVAR_FLOAT c3_campos_x c3_campos_y c3_campos_z 20 | LVAR_FLOAT c3_camlook_x c3_camlook_y c3_camlook_z 21 | 22 | LVAR_INT crane3_sound_flag 23 | LVAR_INT crane3_sound_flag2 24 | 25 | 26 | flag = 0 27 | IF flag = 1 28 | CREATE_OBJECT_NO_OFFSET WOODENBOX 0.0 0.0 0.0 base 29 | CREATE_OBJECT_NO_OFFSET WOODENBOX 0.0 0.0 0.0 base_stand 30 | CREATE_OBJECT_NO_OFFSET WOODENBOX 0.0 0.0 0.0 arm 31 | CREATE_OBJECT_NO_OFFSET WOODENBOX 0.0 0.0 0.0 flag 32 | ENDIF 33 | 34 | crane_help3 = 0 35 | 36 | crane3_script_loop: 37 | 38 | WAIT 0 39 | 40 | IF DOES_OBJECT_EXIST base 41 | IF IS_PLAYER_PLAYING player1 42 | IF disable_all_cranes = 0 43 | 44 | IF LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer base 100.0 100.0 FALSE 45 | 46 | // WAIT TO SEE IF PLAYER GETS INTO CRANE ++++++++ 47 | IF flag = 0 48 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS base 3.0899 2.9792 0.0081 trigger_x trigger_y trigger_z 49 | flag++ 50 | ENDIF 51 | 52 | IF flag = 1 53 | 54 | IF LOCATE_CHAR_ON_FOOT_3D scplayer trigger_x trigger_y trigger_z 1.2 1.2 1.5 TRUE 55 | IF IS_CHAR_ON_FOOT scplayer 56 | // display help 57 | IF crane_help3 = 0 58 | PRINT_HELP_FOREVER CR_2 59 | crane_help3 = 1 60 | ENDIF 61 | 62 | IF IS_BUTTON_PRESSED PAD1 TRIANGLE 63 | flag++ 64 | ENDIF 65 | ENDIF 66 | ELSE 67 | IF NOT crane_help3 = 0 68 | CLEAR_HELP 69 | crane_help3 = 0 70 | ENDIF 71 | ENDIF 72 | ENDIF 73 | 74 | // TRANSFER PLAYER INTO CRANE ++++++++++++++++++++ 75 | IF flag = 2 76 | 77 | IF DOES_OBJECT_EXIST base 78 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT base SOUND_CRANE_ENTER 79 | ENDIF 80 | 81 | SET_PLAYER_CONTROL player1 OFF 82 | SET_MINIGAME_IN_PROGRESS TRUE 83 | 84 | DO_FADE 500 FADE_OUT 85 | WHILE GET_FADING_STATUS 86 | WAIT 0 87 | ENDWHILE 88 | PLAYER_ENTERED_QUARRY_CRANE 89 | 90 | DISPLAY_NON_MINIGAME_HELP_MESSAGES TRUE 91 | 92 | // get current component details 93 | GET_OBJECT_HEADING base_stand base_stand_h 94 | 95 | IF DOES_OBJECT_EXIST base 96 | IF IS_PLAYER_PLAYING player1 97 | ENDIF 98 | ENDIF 99 | 100 | // set player position 101 | IF IS_PLAYER_PLAYING player1 102 | FREEZE_CHAR_POSITION scplayer TRUE 103 | SET_CHAR_COORDINATES scplayer 713.5652 906.2935 -18.0674 104 | SET_CHAR_VISIBLE scplayer FALSE 105 | SET_PLAYER_CONTROL player1 ON 106 | SET_CHAR_COLLISION scplayer OFF 107 | SET_CHAR_PROOFS scplayer TRUE TRUE TRUE TRUE TRUE 108 | crane3_sound_flag = 0 109 | ENDIF 110 | 111 | // display help 112 | PRINT_HELP_FOREVER QUAR_1 113 | 114 | GOSUB update_crane_camera1 115 | 116 | SET_EVERYONE_IGNORE_PLAYER player1 OFF 117 | 118 | DO_FADE 500 FADE_IN 119 | WHILE GET_FADING_STATUS 120 | WAIT 0 121 | ENDWHILE 122 | flag++ 123 | ENDIF 124 | 125 | // CONTROL CRANE ++++++++++++++++++++++++++++++ 126 | IF flag = 3 127 | IF IS_PLAYER_PLAYING player1 128 | 129 | // update camera ------ 130 | GOSUB update_crane_camera1 131 | 132 | // rotate base_stand ------- 133 | IF IS_BUTTON_PRESSED PAD1 LEFTSTICKX 134 | GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY 135 | temp_float =# LStickX 136 | temp_float /= 500.0 137 | base_stand_h -=@ temp_float 138 | 139 | IF NOT crane3_sound_flag = 1 140 | IF DOES_OBJECT_EXIST base 141 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT base SOUND_CRANE_MOVE_START 142 | crane3_sound_flag = 1 143 | ENDIF 144 | ENDIF 145 | ELSE 146 | IF NOT crane3_sound_flag = 0 147 | IF DOES_OBJECT_EXIST base 148 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT base SOUND_CRANE_MOVE_STOP 149 | crane3_sound_flag = 0 150 | ENDIF 151 | ENDIF 152 | ENDIF 153 | // raise / lower arm ------- 154 | IF IS_BUTTON_PRESSED PAD1 LEFTSTICKY 155 | GET_POSITION_OF_ANALOGUE_STICKS PAD1 LStickX LStickY RStickX RStickY 156 | temp_float =# LStickY 157 | temp_float /= 1000.0 158 | temp_float *= 1.5 159 | arm_rotate_y -=@ temp_float 160 | WHILE arm_rotate_y < 0.0 161 | arm_rotate_y += 360.0 162 | ENDWHILE 163 | WHILE arm_rotate_y > 360.0 164 | arm_rotate_y += -360.0 165 | ENDWHILE 166 | IF arm_rotate_y > 70.0 167 | arm_rotate_y = 70.0 168 | ENDIF 169 | IF arm_rotate_y < 10.0 170 | arm_rotate_y = 10.0 171 | ENDIF 172 | 173 | IF NOT crane3_sound_flag2 = 1 174 | IF DOES_OBJECT_EXIST base 175 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT arm SOUND_CRANE_MOVE_START 176 | crane3_sound_flag2 = 1 177 | ENDIF 178 | ENDIF 179 | ELSE 180 | IF NOT crane3_sound_flag2 = 0 181 | IF DOES_OBJECT_EXIST base 182 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT arm SOUND_CRANE_MOVE_STOP 183 | crane3_sound_flag2 = 0 184 | ENDIF 185 | ENDIF 186 | ENDIF 187 | 188 | IF DOES_OBJECT_EXIST base_stand 189 | SET_OBJECT_HEADING base_stand base_stand_h 190 | SET_CHAR_HEADING scplayer base_stand_h 191 | ENDIF 192 | // arm 193 | IF DOES_OBJECT_EXIST arm 194 | IF DOES_OBJECT_EXIST base_stand 195 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS base_stand 0.0 0.0 1.0206 x y z 196 | SET_OBJECT_COORDINATES_AND_VELOCITY arm x y z 197 | SET_OBJECT_ROTATION arm 0.0 arm_rotate_y base_stand_h 198 | ENDIF 199 | ENDIF 200 | // exit crane --------- 201 | IF IS_BUTTON_PRESSED PAD1 TRIANGLE 202 | flag++ 203 | ENDIF 204 | ENDIF 205 | ENDIF 206 | 207 | // TRANSFER PLAYER OUT OF CRANE +++++++++++++++++ 208 | IF flag = 4 209 | IF IS_PLAYER_PLAYING player1 210 | CLEAR_HELP 211 | IF DOES_OBJECT_EXIST base 212 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT base SOUND_CRANE_EXIT 213 | ENDIF 214 | PLAYER_LEFT_CRANE 215 | SET_MINIGAME_IN_PROGRESS FALSE 216 | FREEZE_CHAR_POSITION scplayer FALSE 217 | SET_CHAR_VISIBLE scplayer TRUE 218 | SET_CHAR_COLLISION scplayer TRUE 219 | SET_CHAR_PROOFS scplayer FALSE FALSE FALSE FALSE FALSE 220 | SET_PLAYER_CONTROL player1 ON 221 | SET_CHAR_COORDINATES scplayer 706.2595 918.6275 -19.6407 222 | SET_CHAR_HEADING scplayer 127.1840 223 | RESTORE_CAMERA_JUMPCUT 224 | flag = 0 225 | ENDIF 226 | ENDIF 227 | ELSE 228 | flag = 0 229 | TERMINATE_THIS_SCRIPT 230 | ENDIF 231 | ENDIF 232 | ENDIF 233 | ELSE 234 | flag = 0 235 | TERMINATE_THIS_SCRIPT 236 | ENDIF 237 | 238 | GOTO crane3_script_loop 239 | 240 | 241 | 242 | update_crane_camera1: 243 | 244 | // camera position 1 245 | IF DOES_OBJECT_EXIST base_stand 246 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS base_stand -9.0 -6.8 6.0 c3_campos_x c3_campos_y c3_campos_z 247 | ENDIF 248 | 249 | IF DOES_OBJECT_EXIST arm 250 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS arm 0.0 0.0 59.0 x y z 251 | GET_ROPE_HEIGHT_FOR_OBJECT arm temp_float 252 | temp_float += -1.0 253 | temp_float *= -1.0 254 | temp_float *= 72.0 255 | z -= temp_float 256 | c3_camlook_x = x 257 | c3_camlook_y = y 258 | c3_camlook_z = z 259 | ENDIF 260 | 261 | SET_FIXED_CAMERA_POSITION c3_campos_x c3_campos_y c3_campos_z 0.0 0.0 0.0 262 | POINT_CAMERA_AT_POINT c3_camlook_x c3_camlook_y c3_camlook_z JUMP_CUT 263 | 264 | RETURN 265 | 266 | 267 | } 268 | 269 | 270 | MISSION_END 271 | -------------------------------------------------------------------------------- /main/misc/Objects/food_vendor.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | 3 | {/////////////////////////////////////////////////////////////////////////////// 4 | food_vendor://////////////////////////////////////////////////////////////////// 5 | //////////////////////////////////////////////////////////////////////////////// 6 | SCRIPT_NAME FODVEND 7 | 8 | LVAR_INT food_stand 9 | LVAR_INT flag vendor timer 10 | flag = 0 11 | IF flag = 1 12 | CREATE_OBJECT_NO_OFFSET icescart_prop 0.0 0.0 0.0 food_stand 13 | //CREATE_OBJECT_NO_OFFSET chillidogcart 0.0 0.0 0.0 food_stand 14 | //CREATE_OBJECT_NO_OFFSET noodlecart_prop 0.0 0.0 0.0 food_stand 15 | //CREATE_OBJECT_NO_OFFSET CJ_JUICE_CAN x y z drinks_can 16 | ENDIF 17 | 18 | 19 | food_vendor_loop: 20 | 21 | WAIT 0 22 | 23 | GET_GAME_TIMER game_timer 24 | 25 | IF DOES_OBJECT_EXIST food_stand 26 | if IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE food_stand 27 | IF IS_PLAYER_PLAYING player1 28 | if not HAS_OBJECT_BEEN_UPROOTED food_stand 29 | IF flag = 0 30 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS food_stand -1.0 0.0 -1.0 x y z 31 | x_temp = x - 0.5 32 | y_temp = y - 0.5 33 | z_temp = z 34 | temp_float_1 = x + 0.5 35 | temp_float_2 = y + 0.5 36 | temp_float_3 = z + 2.0 37 | if not IS_AREA_OCCUPIED x_temp y_temp z_temp temp_float_1 temp_float_2 temp_float_3 false false true false false 38 | if not IS_point_on_screen x y z 1.0 39 | request_model BMOCHIL 40 | if has_model_loaded BMOCHIL 41 | create_char pedtype_civmale BMOCHIL x y z vendor 42 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS food_stand 1.0 0.0 0.0 x_temp y_temp z_temp 43 | x_temp -= x 44 | y_temp -= y 45 | GET_HEADING_FROM_VECTOR_2D x_temp y_temp heading 46 | set_char_heading vendor heading 47 | ++ flag 48 | endif 49 | endif 50 | else 51 | mark_model_as_no_longer_needed BMOCHIL 52 | TERMINATE_THIS_SCRIPT 53 | endif 54 | ENDIF 55 | IF flag = 1 56 | IF LOCATE_CHAR_ON_FOOT_OBJECT_2D scplayer food_stand 8.0 8.0 0 57 | REQUEST_ANIMATION VENDING 58 | IF HAS_ANIMATION_LOADED VENDING 59 | IF IS_SCORE_GREATER player1 0 60 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS food_stand 1.0 0.0 0.0 x y z 61 | //GET_LEVEL_DESIGN_COORDS_FOR_OBJECT food_stand 1 x y z 62 | IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 0.6 0.6 1.0 TRUE 63 | GET_CHAR_HEALTH scplayer temp_integer_1 64 | temp_integer_1 += 50 65 | SET_CHAR_HEALTH scplayer temp_integer_1 66 | 67 | // LVAR_INT drinks_can 68 | // CREATE_OBJECT_NO_OFFSET CJ_BURG_1 x y z drinks_can //KB_BEER 69 | // GET_MODEL_DIMENSIONS CJ_BURG_1 x y z x y z 70 | // y /= 2.0 71 | // y += 0.027 72 | // TASK_PICK_UP_OBJECT scplayer drinks_can 0.062 y 0.0 PED_HANDL HOLD_ORIENTATE_BONE_FULL vend_eat1_P VENDING FALSE//VEND_DRINK2_P 73 | //set_object_visible drinks_can false 74 | //delete_object drinks_can 75 | TASK_PLAY_ANIM_SECONDARY scplayer vend_eat1_P VENDING 4.0 false false false false -1 76 | INCREMENT_INT_STAT CALORIES 10 77 | timer = game_timer + 3000 78 | add_score player1 -1 79 | ++ flag 80 | endif 81 | endif 82 | endif 83 | endif 84 | ENDIF 85 | IF flag = 2 86 | if timer < game_timer 87 | // delete_object drinks_can 88 | timer = game_timer + 27000 89 | ++ flag 90 | endif 91 | ENDIF 92 | IF flag = 3 93 | if timer < game_timer 94 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS food_stand 1.0 0.0 0.0 x y z 95 | IF not LOCATE_CHAR_ON_FOOT_3D scplayer x y z 0.6 0.6 1.0 false 96 | flag = 1 97 | ENDIF 98 | endif 99 | ENDIF 100 | else 101 | IF flag > 0 102 | mark_char_as_no_longer_needed vendor 103 | IF IS_PLAYER_PLAYING player1 104 | if not is_char_dead vendor 105 | task_kill_char_on_foot_timed vendor scplayer 10000 106 | endif 107 | endif 108 | // mark_object_as_no_longer_needed drinks_can 109 | remove_animation VENDING 110 | flag = 0 111 | endif 112 | mark_model_as_no_longer_needed BMOCHIL 113 | TERMINATE_THIS_SCRIPT 114 | endif 115 | ELSE 116 | IF flag > 0 117 | mark_char_as_no_longer_needed vendor 118 | // mark_object_as_no_longer_needed drinks_can 119 | remove_animation VENDING 120 | flag = 0 121 | ENDIF 122 | mark_model_as_no_longer_needed BMOCHIL 123 | ENDIF 124 | ELSE 125 | IF flag > 0 126 | mark_char_as_no_longer_needed vendor 127 | // mark_object_as_no_longer_needed drinks_can 128 | remove_animation VENDING 129 | flag = 0 130 | ENDIF 131 | mark_model_as_no_longer_needed BMOCHIL 132 | TERMINATE_THIS_SCRIPT 133 | ENDIF 134 | ELSE 135 | IF flag > 0 136 | mark_char_as_no_longer_needed vendor 137 | // mark_object_as_no_longer_needed drinks_can 138 | remove_animation VENDING 139 | flag = 0 140 | ENDIF 141 | mark_model_as_no_longer_needed BMOCHIL 142 | TERMINATE_THIS_SCRIPT 143 | ENDIF//DOES_OBJECT_EXIST 144 | 145 | GOTO food_vendor_loop 146 | } 147 | 148 | MISSION_END 149 | -------------------------------------------------------------------------------- /main/misc/Objects/gates_script.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | 3 | {/////////////////////////////////////////////////////////////////////////////// 4 | gates_script:////////////////////////////////////////////////////////////////// 5 | //////////////////////////////////////////////////////////////////////////////// 6 | SCRIPT_NAME GATEOS 7 | 8 | LVAR_INT gate 9 | LVAR_INT flag 10 | LVAR_FLOAT gate_targetX gate_targetY gate_targetZ 11 | LVAR_FLOAT gate_oldX gate_oldY gate_oldZ 12 | LVAR_INT gate_slide_sound 13 | 14 | flag = 0 15 | IF flag = 1 16 | CREATE_OBJECT_NO_OFFSET gate_autoL 0.0 0.0 0.0 gate 17 | CREATE_OBJECT_NO_OFFSET gate_autoR 0.0 0.0 0.0 gate 18 | ENDIF 19 | 20 | gate_loop: 21 | 22 | WAIT 0 23 | 24 | GET_GAME_TIMER game_timer 25 | 26 | IF DOES_OBJECT_EXIST gate 27 | if IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE gate 28 | IF flag = 0 29 | IF IS_PLAYER_PLAYING player1 30 | lvar_int gate_model 31 | GET_OBJECT_MODEL gate gate_model 32 | if HAS_MODEL_LOADED gate_model 33 | IF LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer gate 12.0 12.0 FALSE 34 | IF IS_CHAR_IN_MODEL scplayer BARRACKS 35 | OR IS_CHAR_IN_MODEL scplayer PATRIOT 36 | OR IS_CHAR_IN_MODEL scplayer RHINO 37 | //OR IS_CHAR_IN_MODEL scplayer MESA 38 | GET_LEVEL_DESIGN_COORDS_FOR_OBJECT gate 5 temp_float_1 temp_float_2 temp_float_3 39 | GET_LEVEL_DESIGN_COORDS_FOR_OBJECT gate 6 x_temp y_temp z_temp 40 | GET_LEVEL_DESIGN_COORDS_FOR_OBJECT gate 7 x y z 41 | GET_DISTANCE_BETWEEN_COORDS_2D x_temp y_temp x y z 42 | z *= -1.0 43 | IF IS_CHAR_IN_ANGLED_AREA_3D scplayer temp_float_1 temp_float_2 temp_float_3 x_temp y_temp z_temp z FALSE 44 | flag = 1 45 | ENDIF 46 | ENDIF 47 | GET_LEVEL_DESIGN_COORDS_FOR_OBJECT gate 1 temp_float_1 temp_float_2 temp_float_3 48 | GET_LEVEL_DESIGN_COORDS_FOR_OBJECT gate 2 x_temp y_temp z_temp 49 | GET_LEVEL_DESIGN_COORDS_FOR_OBJECT gate 3 x y z 50 | GET_DISTANCE_BETWEEN_COORDS_2D x_temp y_temp x y z 51 | IF IS_CHAR_IN_ANGLED_AREA_3D scplayer temp_float_1 temp_float_2 temp_float_3 x_temp y_temp z_temp z FALSE 52 | flag = 1 53 | ENDIF 54 | ENDIF 55 | IF open_gate_now_flag = 1 56 | flag = 1 57 | ENDIF 58 | ENDIF 59 | ENDIF 60 | ENDIF 61 | 62 | IF flag = 1 63 | GET_OBJECT_MODEL gate gate_model 64 | if HAS_MODEL_LOADED gate_model 65 | GET_LEVEL_DESIGN_COORDS_FOR_OBJECT gate 0 gate_targetX gate_targetY gate_targetZ 66 | GET_OBJECT_COORDINATES gate gate_oldX gate_oldY gate_oldZ 67 | 68 | // IF gate_sound_in_use = 0 69 | //GET_OBJECT_COORDINATES gate x y z 70 | //ADD_CONTINUOUS_SOUND x y z SOUND_GARAGE_DOOR_SLIDING_LOOP gate_slide_sound 71 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate SOUND_MESH_GATE_OPEN_START 72 | // gate_sound_in_use = 1 73 | // ENDIF 74 | ++ flag 75 | ENDIF 76 | ENDIF 77 | 78 | IF flag = 2 79 | // IF gate_sound_in_use = 1 80 | // REMOVE_SOUND gate_slide_sound 81 | // gate_sound_in_use = 0 82 | // ENDIF 83 | IF SLIDE_OBJECT gate gate_targetX gate_targetY gate_targetZ 0.1 0.1 0.1 TRUE 84 | IF LOCATE_OBJECT_3D gate gate_targetX gate_targetY gate_targetZ 0.1 0.1 0.1 FALSE 85 | SET_OBJECT_COORDINATES gate gate_targetX gate_targetY gate_targetZ 86 | //ADD_ONE_OFF_SOUND gate_targetX gate_targetY gate_targetZ SOUND_GARAGE_DOOR_CLUNK 87 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate SOUND_MESH_GATE_OPEN_STOP 88 | ++ open_gate_now_flag 89 | ++ flag 90 | ENDIF 91 | ENDIF 92 | ENDIF 93 | 94 | IF flag = 3 95 | if gate_stay_open = 0 96 | ++ flag 97 | endif 98 | ENDIF 99 | 100 | IF flag = 4 101 | IF IS_PLAYER_PLAYING player1 102 | IF NOT LOCATE_CHAR_ANY_MEANS_OBJECT_2D scplayer gate 20.0 20.0 FALSE 103 | // IF gate_sound_in_use = 0 104 | //GET_OBJECT_COORDINATES gate x y z 105 | //ADD_CONTINUOUS_SOUND x y z SOUND_GARAGE_DOOR_SLIDING_LOOP gate_slide_sound 106 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate SOUND_MESH_GATE_OPEN_START 107 | // gate_sound_in_use = 1 108 | // ENDIF 109 | ++ flag 110 | ENDIF 111 | ENDIF 112 | ENDIF 113 | 114 | IF flag = 5 115 | // IF gate_sound_in_use = 1 116 | // REMOVE_SOUND gate_slide_sound 117 | // gate_sound_in_use = 0 118 | // ENDIF 119 | IF SLIDE_OBJECT gate gate_oldX gate_oldY gate_oldZ 0.1 0.1 0.1 TRUE 120 | IF LOCATE_OBJECT_3D gate gate_oldX gate_oldY gate_oldZ 0.1 0.1 0.1 FALSE 121 | SET_OBJECT_COORDINATES gate gate_oldX gate_oldY gate_oldZ 122 | //ADD_ONE_OFF_SOUND gate_oldX gate_oldY gate_oldZ SOUND_GARAGE_DOOR_CLUNK 123 | REPORT_MISSION_AUDIO_EVENT_AT_OBJECT gate SOUND_MESH_GATE_OPEN_STOP 124 | flag = 0 125 | ENDIF 126 | ENDIF 127 | ENDIF 128 | ELSE 129 | TERMINATE_THIS_SCRIPT 130 | ENDIF 131 | ELSE 132 | TERMINATE_THIS_SCRIPT 133 | ENDIF 134 | 135 | GOTO gate_loop 136 | } 137 | 138 | MISSION_END 139 | -------------------------------------------------------------------------------- /main/misc/Objects/otb_script.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | 3 | {/////////////////////////////////////////////////////////////////////////////// 4 | otb_script: //////////////////////////////////////////////////////////////// 5 | //////////////////////////////////////////////////////////////////////////////// 6 | SCRIPT_NAME OTB_MSC 7 | 8 | LVAR_INT otb_object 9 | LVAR_INT otb_help 10 | 11 | otb_help = 0 12 | IF otb_help = -1 13 | CREATE_OBJECT OTB_machine 0.0 0.0 0.0 otb_object 14 | ENDIF 15 | 16 | otb_script_loop: 17 | 18 | WAIT 0 19 | 20 | IF DOES_OBJECT_EXIST otb_object 21 | if IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE otb_object 22 | IF IS_PLAYER_PLAYING player1 23 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS otb_object -1.0 0.0 0.0 x y z 24 | IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 0.6 0.6 1.0 FALSE 25 | 26 | IF IS_BUTTON_PRESSED PAD1 TRIANGLE 27 | IF otb_help = 1 28 | CLEAR_HELP 29 | otb_help = 0 30 | IF flag_player_on_mission = 0 31 | IF NOT IS_BIT_SET iDateReport DATE_IN_PROGRESS 32 | IF CAN_PLAYER_START_MISSION player1 33 | SET_PLAYER_CONTROL player1 OFF 34 | SET_EVERYONE_IGNORE_PLAYER player1 TRUE 35 | DO_FADE 500 FADE_OUT 36 | WHILE GET_FADING_STATUS 37 | WAIT 0 38 | ENDWHILE 39 | load_and_launch_mission_if_poss = OTB_SCRIPT 40 | WAIT 0 41 | WAIT 0 42 | WAIT 0 43 | if is_player_playing player1 44 | IF flag_player_on_mission = 0 45 | SET_PLAYER_CONTROL player1 ON 46 | ENDIF 47 | GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS otb_object -2.0 0.0 -1.0 x y z 48 | SET_CHAR_COORDINATES scplayer x y z 49 | endif 50 | endif 51 | ELSE 52 | PRINT_NOW BUSY 3000 1 53 | ENDIF 54 | ELSE 55 | PRINT_NOW BUSY 3000 1 56 | ENDIF 57 | ENDIF 58 | ELSE 59 | IF otb_help = 0 60 | PRINT_HELP_FOREVER OTB_A 61 | otb_help = 1 62 | ENDIF 63 | ENDIF 64 | ELSE 65 | IF otb_help = 1 66 | CLEAR_HELP 67 | otb_help = 0 68 | ENDIF 69 | ENDIF 70 | ELSE 71 | IF otb_help = 1 72 | CLEAR_HELP 73 | otb_help = 0 74 | ENDIF 75 | ENDIF 76 | ELSE 77 | IF otb_help = 1 78 | CLEAR_HELP 79 | otb_help = 0 80 | ENDIF 81 | terminate_this_script 82 | ENDIF 83 | ELSE 84 | IF otb_help = 1 85 | CLEAR_HELP 86 | otb_help = 0 87 | ENDIF 88 | terminate_this_script 89 | ENDIF 90 | 91 | GOTO otb_script_loop 92 | } 93 | 94 | MISSION_END 95 | -------------------------------------------------------------------------------- /main/misc/Objects/petrol_pumps.sc: -------------------------------------------------------------------------------- 1 | MISSION_START 2 | 3 | {/////////////////////////////////////////////////////////////////////////////// 4 | petrol_pumps://///////////////////////////////////////////////////////////////// 5 | //////////////////////////////////////////////////////////////////////////////// 6 | SCRIPT_NAME petrolp 7 | 8 | LVAR_INT petrol_pump 9 | LVAR_INT flag 10 | flag = 0 11 | IF flag = 1 12 | CREATE_OBJECT_NO_OFFSET PETROLPUMP 0.0 0.0 0.0 petrol_pump 13 | //PETROLPUMPNEW 14 | //WASHGASPUMP 15 | ENDIF 16 | 17 | petrol_pump_script_loop: 18 | 19 | WAIT 0 20 | 21 | GET_GAME_TIMER game_timer 22 | IF DOES_OBJECT_EXIST petrol_pump 23 | IF IS_PLAYER_PLAYING player1 24 | IF LOCATE_CHAR_ON_FOOT_OBJECT_2D scplayer petrol_pump 5.0 5.0 0 25 | IF flag = 0 26 | GET_OBJECT_COORDINATES petrol_pump x y z 27 | LVAR_INT dummy_model_loader 28 | CREATE_OBJECT_NO_OFFSET MOLOTOV x y z dummy_model_loader 29 | ++ flag 30 | ENDIF 31 | IF flag = 1 32 | IF HAS_MODEL_LOADED MOLOTOV 33 | //GET_OFFSET_FROM_OBJECT_IN_WORLD_COORDS petrol_pump 0.0 -1.0 0.0 x y z 34 | //IF LOCATE_CHAR_ON_FOOT_3D scplayer x y z 0.6 0.6 1.0 0 35 | IF LOCATE_CHAR_ON_FOOT_OBJECT_2D scplayer petrol_pump 1.2 1.2 0 36 | PRINT_HELP_FOREVER LABEL //PRESS