USING "globals.sch" USING "commands_camera.sch" USING "cutscene_public.sch" USING "shop_private.sch" USING "clearmissionarea.sch" CONST_INT PROPERTY_CUTSCENE_HELP_TEXT_TIME 10000 // property cutscene stuff // fill the attributes for a particular shot PROC FILL_PROPERTY_CUTSCENE_SHOT_ATTRIBUTES(PROPERTY_ENUM thisProperty, INT iThisShot, VECTOR &vPos1, VECTOR &vRot1, FLOAT &fFOV1, VECTOR &vPos2, VECTOR &vRot2, FLOAT &fFOV2, INT &iInterpTime, INT &iShotTime, CAMERA_GRAPH_TYPE &graphTypePos, CAMERA_GRAPH_TYPE &graphTypeRot) SWITCH thisProperty CASE PROPERTY_ARMS_TRAFFICKING SWITCH iThisShot CASE 0 vPos1 = <<2144.5, 4817.2, 41.8>> vRot1 = <<4.0, 0.0, 159.1>> fFOV1 = 29.9 vPos2 = <<2144.1, 4817.3, 41.8>> vRot2 = <<4.0, 0.0, 159.1>> fFOV2 = 29.9 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<2135.2, 4797.0, 41.0>> vRot1 = <<2.6, 0.0, 147.5>> fFOV1 = 33.6 vPos2 = <<2135.2, 4797.0, 41.0>> vRot2 = <<2.6, 0.0, 177.3>> fFOV2 = 33.6 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_DECEL graphTypeRot = GRAPH_TYPE_DECEL BREAK CASE 2 vPos1 = <<2152.577393,4804.002441,41.511604>> vRot1 = <<1.338220,-0.000025,146.946411>> fFOV1 = 33.599998 vPos2 = <<2152.608643,4803.963867,41.369118>> vRot2 = <<0.192390,-0.000025,147.109833>> fFOV2 = 33.599998 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_DECEL graphTypeRot = GRAPH_TYPE_DECEL BREAK ENDSWITCH BREAK CASE PROPERTY_WEED_SHOP SWITCH iThisShot CASE 0 vPos1 = <<-1179.0, -1573.6, 5.0>> vRot1 = <<26.9, 0.0, -85.8>> fFOV1 = 40.0 vPos2 = <<-1179.0, -1573.6, 5.0>> vRot2 = <<3.6, 0.0, -85.8>> fFOV2 = 40.0 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_SIN_ACCEL_DECEL BREAK CASE 1 IF GET_TIMEOFDAY_HOUR(GET_CURRENT_TIMEOFDAY()) >= 9 AND GET_TIMEOFDAY_HOUR(GET_CURRENT_TIMEOFDAY()) <= 17 vPos1 = <<-1173.6, -1574.1, 4.8>> vRot1 = <<0.3, 0.0, -31.2>> fFOV1 = 40.0 vPos2 = <<-1173.3, -1574.2, 4.8>> vRot2 = <<0.3, 0.0, -34.5>> fFOV2 = 40.0 ELSE vPos1 = <<-1178.843872,-1594.691162,4.659654>> vRot1 = <<6.171611,-0.059865,-15.387971>> fFOV1 = 34.478004 vPos2 = <<-1178.221191,-1595.112427,4.628079>> vRot2 = <<4.898221,-0.059865,-14.482724>> fFOV2 = 34.478004 ENDIF iInterpTime = 13000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_CAR_SCRAP_YARD SWITCH iThisShot CASE 0 vPos1 = <<1570.198975,-2208.991455,79.814644>> vRot1 = <<2.059314,-0.000000,33.527603>> fFOV1 = 39.708244 vPos2 = <<1569.858398,-2199.821777,88.119286>> vRot2 = <<-1.668163,0.000000,36.773270>> fFOV2 = 39.708244 iInterpTime = 21000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<1542.112427,-2104.840088,77.538567>> vRot1 = <<-2.293454,-0.000000,144.152466>> fFOV1 = 35.918034 vPos2 = <<1540.704102,-2105.141113,77.495590>> vRot2 = <<-1.205724,-0.000000,140.675766>> fFOV2 = 35.918034 iInterpTime = 14000 iShotTime = 14000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_CAR_MOD_SHOP SWITCH iThisShot CASE 0 vPos1 = <<1197.061646,2679.448242,39.215000>> vRot1 = <<2.096360,-0.060617,152.333420>> fFOV1 = 37.221195 vPos2 = <<1195.604004,2676.083984,39.334801>> vRot2 = <<0.201093,-0.060612,152.868561>> fFOV2 = 37.221195 iInterpTime = 10500 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<1180.356201,2645.067871,38.195461>> vRot1 = <<-0.360282,-0.060618,139.270355>> fFOV1 = 42.900002 vPos2 = <<1178.990601,2643.862305,38.184780>> vRot2 = <<-0.360282,-0.060608,145.807434>> fFOV2 = 42.900002 iInterpTime = 14000 iShotTime = 14000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_TAXI_LOT SWITCH iThisShot CASE 0 vPos1 = <<912.141357,-144.136719,76.251495>> vRot1 = <<18.068947,0.000000,148.570648>> fFOV1 = 53.540928 vPos2 = <<911.683411,-144.886230,76.538055>> vRot2 = <<15.969147,-0.000000,148.570648>> fFOV2 = 53.540928 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<922.432251,-181.601715,74.519295>> vRot1 = <<6.678218,-0.000000,71.903885>> fFOV1 = 39.810390 vPos2 = <<920.133362,-185.072647,74.615295>> vRot2 = <<4.337803,-0.000000,63.855148>> fFOV2 = 39.810390 iInterpTime = 14000 iShotTime = 14000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_SONAR_COLLECTIONS SWITCH iThisShot CASE 0 vPos1 = <<-1591.725464,5229.636719,4.933816>> vRot1 = <<3.142932,-0.000000,165.001678>> fFOV1 = 37.912991 vPos2 = <<-1592.929932,5229.475098,4.959430>> vRot2 = <<1.375998,0.000000,166.243240>> fFOV2 = 37.912991 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<-1606.4, 5269.9, 4.6>> vRot1 = <<2.9, -0.1, -179.2>> fFOV1 = 37.234703 vPos2 = <<-1606.0, 5270.0, 4.5>> vRot2 = <<-4.4, -0.1, -162.1>> fFOV2 = 37.234703 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 2 vPos1 = <<-1596.6, 5261.2, -1.6>> vRot1 = <<9.6, 0.0, 174.2>> fFOV1 = 37.234703 vPos2 = <<-1596.4, 5260.7, -1.5>> vRot2 = <<7.6, 0.0, 173.4>> fFOV2 = 37.234703 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_TOWING_IMPOUND SWITCH iThisShot CASE 0 vPos1 = <<421.997894,-1621.681519,29.605589>> vRot1 = <<1.747380,0.000000,101.346832>> fFOV1 = 39.307011 vPos2 = <<420.266968,-1620.496216,29.645708>> vRot2 = <<2.741723,-0.000000,113.306282>> fFOV2 = 39.307011 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<403.211823,-1639.405396,29.650751>> vRot1 = <<0.698972,-0.000000,1.880809>> fFOV1 = 39.307011 vPos2 = <<404.081116,-1640.545166,29.636583>> vRot2 = <<-1.204437,0.000000,-0.188429>> fFOV2 = 39.307011 iInterpTime = 13000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_GOLF_CLUB SWITCH iThisShot CASE 0 vPos1 = <<-1418.670288,50.412415,55.505150>> vRot1 = <<7.033136,-0.000000,-82.497063>> fFOV1 = 50.000000 vPos2 = <<-1417.523560,50.625343,58.794369>> vRot2 = <<1.384808,0.000000,-83.450989>> fFOV2 = 50.000000 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<-1232.220337,-22.753672,47.196873>> vRot1 = <<5.359231,0.000000,52.316067>> fFOV1 = 34.850487 vPos2 = <<-1229.331787,-18.982531,47.196873>> vRot2 = <<5.359230,-0.000000,54.884293>> fFOV2 = 34.850487 iInterpTime = 14000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_CINEMA_VINEWOOD SWITCH iThisShot CASE 0 vPos1 = <<306.066071,176.824387,111.389626>> vRot1 = <<17.968395,-0.000000,-95.278229>> fFOV1 = 39.890751 vPos2 = <<306.959229,176.741852,108.623825>> vRot2 = <<-3.555486,0.000000,-95.278229>> fFOV2 = 39.890751 iInterpTime = 14000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<320.558563,155.137115,105.050873>> vRot1 = <<5.145550,0.000000,-33.844719>> fFOV1 = 41.696613 vPos2 = <<328.566895,151.884552,105.055260>> vRot2 = <<4.726644,-0.000000,-16.290794>> fFOV2 = 41.696613 iInterpTime = 13000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_CINEMA_DOWNTOWN SWITCH iThisShot CASE 0 vPos1 = <<403.889832,-712.528320,31.692900>> vRot1 = <<25.835075,-0.000000,86.990822>> fFOV1 = 40.421535 vPos2 = <<405.258209,-712.600281,30.672750>> vRot2 = <<24.829134,-0.000000,86.990822>> fFOV2 = 40.421535 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<414.815552,-713.632935,31.105515>> vRot1 = <<6.276255,-0.000000,85.791985>> fFOV1 = 44.031376 vPos2 = <<415.728271,-713.057190,28.831530>> vRot2 = <<10.793771,0.000000,88.521378>> fFOV2 = 44.031376 iInterpTime = 13000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_CINEMA_MORNINGWOOD SWITCH iThisShot CASE 0 vPos1 = <<-1446.829712,-193.720184,58.585129>> vRot1 = <<-18.563808,0.000000,-117.764885>> fFOV1 = 39.885876 vPos2 = <<-1446.694336,-192.533386,53.519138>> vRot2 = <<-1.523578,0.000000,-122.914864>> fFOV2 = 39.885876 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<-1412.542969,-184.394852,48.729229>> vRot1 = <<9.945754,0.000000,159.508240>> fFOV1 = 49.939129 vPos2 = <<-1421.978149,-182.704178,48.748867>> vRot2 = <<10.848495,-0.000000,-178.034286>> fFOV2 = 49.939129 iInterpTime = 19000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_BAR_TEQUILALA SWITCH iThisShot CASE 0 vPos1 = <<-545.350708,268.765656,83.180801>> vRot1 = <<23.855200,0.000001,39.411045>> fFOV1 = 42.142265 vPos2 = <<-546.027954,269.589935,83.652527>> vRot2 = <<26.712852,0.000001,39.545361>> fFOV2 = 42.142265 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<-548.033875,255.821228,85.222984>> vRot1 = <<2.389024,0.141337,18.236391>> fFOV1 = 39.610790 vPos2 = <<-554.224243,256.029083,85.303734>> vRot2 = <<0.926027,0.141327,19.639772>> fFOV2 = 39.610790 iInterpTime = 19000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_BAR_PITCHERS SWITCH iThisShot CASE 0 vPos1 = <<225.968124,352.725769,116.247543>> vRot1 = <<-22.597023,-0.000000,-169.908859>> fFOV1 = 37.964249 vPos2 = <<226.568726,350.289001,115.200737>> vRot2 = <<-24.037203,0.000000,-175.112030>> fFOV2 = 37.964249 iInterpTime = 10500 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<240.016800,358.654602,106.072250>> vRot1 = <<7.502857,0.122835,145.494705>> fFOV1 = 35.193241 vPos2 = <<235.551483,361.130280,106.086258>> vRot2 = <<8.327662,0.122835,152.588959>> fFOV2 = 35.193241 iInterpTime = 13000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_BAR_HEN_HOUSE SWITCH iThisShot CASE 0 vPos1 = <<-296.940277,6247.855957,31.770643>> vRot1 = <<17.162809,-0.042345,10.145087>> fFOV1 = 43.425690 vPos2 = <<-296.933044,6248.470703,31.970430>> vRot2 = <<20.943153,-0.042345,11.089791>> fFOV2 = 43.425690 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<-306.024353,6241.386230,32.556404>> vRot1 = <<8.206894,-0.000000,-11.017441>> fFOV1 = 39.445808 vPos2 = <<-307.031464,6242.524902,32.680546>> vRot2 = <<6.869367,-0.000000,9.408159>> fFOV2 = 39.445808 iInterpTime = 13000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK CASE PROPERTY_BAR_HOOKIES SWITCH iThisShot CASE 0 vPos1 = <<-2200.738281,4302.428223,48.159374>> vRot1 = <<22.893482,-0.000001,-139.617188>> fFOV1 = 42.401520 vPos2 = <<-2200.343994,4301.967285,48.955284>> vRot2 = <<22.488050,0.000000,-138.379135>> fFOV2 = 42.401520 iInterpTime = 7000 iShotTime = 7000 graphTypePos = GRAPH_TYPE_ACCEL graphTypeRot = GRAPH_TYPE_LINEAR BREAK CASE 1 vPos1 = <<-2197.727295,4295.050781,49.726013>> vRot1 = <<-1.363194,-0.000000,-164.522430>> fFOV1 = 42.401520 vPos2 = <<-2199.888184,4290.552246,49.644714>> vRot2 = <<-1.342801,0.000000,-154.377151>> fFOV2 = 42.401520 iInterpTime = 13000 iShotTime = 13000 graphTypePos = GRAPH_TYPE_LINEAR graphTypeRot = GRAPH_TYPE_LINEAR BREAK ENDSWITCH BREAK ENDSWITCH ENDPROC // get help for property cutscene FUNC STRING GET_HELP_FOR_PROPERTY_CUTSCENE(PROPERTY_ENUM thisProperty, INT iThisHelp) SWITCH thisProperty CASE PROPERTY_ARMS_TRAFFICKING SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_TRAF" BREAK CASE 1 RETURN "PROPR_HELP_TRAF2" BREAK CASE 2 RETURN "PROPR_HELP_TRAF3" BREAK ENDSWITCH BREAK CASE PROPERTY_WEED_SHOP SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_WEED" BREAK CASE 1 RETURN "PROPR_HELP_WEED2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_CAR_SCRAP_YARD SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_CSCR" BREAK CASE 1 RETURN "PROPR_HELP_CSCR2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_CAR_MOD_SHOP SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_CMSH" BREAK CASE 1 RETURN "PROPR_HELP_CMSH2" BREAK CASE 2 RETURN "PROPR_HELP_CMSH3" BREAK ENDSWITCH BREAK CASE PROPERTY_TAXI_LOT SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_TAXI" BREAK CASE 1 RETURN "PROPR_HELP_TAXI2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_SONAR_COLLECTIONS SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_SOCO" BREAK CASE 1 RETURN "PROPR_HELP_SOCO2" BREAK CASE 2 RETURN "PROPR_HELP_SOCO3" BREAK ENDSWITCH BREAK CASE PROPERTY_TOWING_IMPOUND SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_TOWI" BREAK CASE 1 RETURN "PROPR_HELP_TOWI2" BREAK CASE 2 RETURN "PROPR_HELP_TOWI3" BREAK ENDSWITCH BREAK CASE PROPERTY_GOLF_CLUB SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_GOLF" BREAK CASE 1 RETURN "PROPR_HELP_GOLF2" BREAK ENDSWITCH BREAK CASE PROPERTY_CINEMA_VINEWOOD SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_CINV" BREAK CASE 1 RETURN "PROPR_HELP_CINV2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_CINEMA_DOWNTOWN SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_CIND" BREAK CASE 1 RETURN "PROPR_HELP_CIND2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_CINEMA_MORNINGWOOD SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_CINM" BREAK CASE 1 RETURN "PROPR_HELP_CINM2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_BAR_TEQUILALA SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_BARTE" BREAK CASE 1 RETURN "PROPR_HELP_BARTE2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_BAR_PITCHERS SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_BARPI" BREAK CASE 1 RETURN "PROPR_HELP_BARPI2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_BAR_HEN_HOUSE SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_BARHE" BREAK CASE 1 RETURN "PROPR_HELP_BARHE2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK CASE PROPERTY_BAR_HOOKIES SWITCH iThisHelp CASE 0 RETURN "PROPR_HELP_BARHO" BREAK CASE 1 RETURN "PROPR_HELP_BARHO2" BREAK CASE 2 RETURN "PROPR_HELP_MANH" BREAK ENDSWITCH BREAK ENDSWITCH RETURN "error" ENDFUNC // number shots for property cutscene FUNC INT GET_NUMBER_PROPERTY_CUTSCENE_SHOTS(PROPERTY_ENUM thisProperty) SWITCH thisProperty CASE PROPERTY_ARMS_TRAFFICKING CASE PROPERTY_SONAR_COLLECTIONS RETURN 3 BREAK CASE PROPERTY_WEED_SHOP CASE PROPERTY_CAR_SCRAP_YARD CASE PROPERTY_CAR_MOD_SHOP CASE PROPERTY_TAXI_LOT CASE PROPERTY_TOWING_IMPOUND CASE PROPERTY_GOLF_CLUB CASE PROPERTY_CINEMA_VINEWOOD CASE PROPERTY_CINEMA_DOWNTOWN CASE PROPERTY_CINEMA_MORNINGWOOD CASE PROPERTY_BAR_TEQUILALA CASE PROPERTY_BAR_PITCHERS CASE PROPERTY_BAR_HEN_HOUSE CASE PROPERTY_BAR_HOOKIES RETURN 2 BREAK ENDSWITCH RETURN 1 ENDFUNC // number texts for property cutscene FUNC INT GET_NUMBER_PROPERTY_CUTSCENE_HELP_TEXTS(PROPERTY_ENUM thisProperty) SWITCH thisProperty CASE PROPERTY_ARMS_TRAFFICKING CASE PROPERTY_WEED_SHOP CASE PROPERTY_CAR_SCRAP_YARD CASE PROPERTY_CAR_MOD_SHOP CASE PROPERTY_TAXI_LOT CASE PROPERTY_SONAR_COLLECTIONS CASE PROPERTY_TOWING_IMPOUND CASE PROPERTY_CINEMA_VINEWOOD CASE PROPERTY_CINEMA_DOWNTOWN CASE PROPERTY_CINEMA_MORNINGWOOD CASE PROPERTY_BAR_TEQUILALA CASE PROPERTY_BAR_PITCHERS CASE PROPERTY_BAR_HEN_HOUSE CASE PROPERTY_BAR_HOOKIES RETURN 3 BREAK CASE PROPERTY_GOLF_CLUB RETURN 2 BREAK ENDSWITCH RETURN 1 ENDFUNC FUNC INT GET_TIME_FOR_PROPERTY_CUTSCENE_HELP(PROPERTY_ENUM thisProperty, INT iHelp) SWITCH thisProperty CASE PROPERTY_BAR_HOOKIES CASE PROPERTY_BAR_TEQUILALA CASE PROPERTY_BAR_PITCHERS CASE PROPERTY_BAR_HEN_HOUSE CASE PROPERTY_CINEMA_VINEWOOD CASE PROPERTY_CINEMA_DOWNTOWN CASE PROPERTY_CINEMA_MORNINGWOOD CASE PROPERTY_WEED_SHOP CASE PROPERTY_TOWING_IMPOUND SWITCH iHelp CASE 0 RETURN 7000 BREAK CASE 1 RETURN 6000 BREAK CASE 2 RETURN 7000 BREAK ENDSWITCH BREAK CASE PROPERTY_TAXI_LOT CASE PROPERTY_CAR_MOD_SHOP CASE PROPERTY_CAR_SCRAP_YARD CASE PROPERTY_ARMS_TRAFFICKING CASE PROPERTY_SONAR_COLLECTIONS SWITCH iHelp CASE 0 RETURN 7000 BREAK CASE 1 RETURN 7000 BREAK CASE 2 RETURN 7000 BREAK ENDSWITCH BREAK CASE PROPERTY_GOLF_CLUB RETURN 7000 BREAK ENDSWITCH RETURN PROPERTY_CUTSCENE_HELP_TEXT_TIME ENDFUNC // get the sound to play for a property purchase FUNC STRING GET_PROPERTY_PURCHASE_SOUND_AS_STRING(PROPERTY_ENUM thisProperty) SWITCH thisProperty CASE PROPERTY_CINEMA_VINEWOOD CASE PROPERTY_CINEMA_DOWNTOWN CASE PROPERTY_CINEMA_MORNINGWOOD CASE PROPERTY_GOLF_CLUB CASE PROPERTY_BAR_TEQUILALA RETURN "PROPERTY_PURCHASE_LARGE" BREAK CASE PROPERTY_TOWING_IMPOUND CASE PROPERTY_TAXI_LOT CASE PROPERTY_ARMS_TRAFFICKING CASE PROPERTY_CAR_SCRAP_YARD CASE PROPERTY_BAR_HEN_HOUSE RETURN "PROPERTY_PURCHASE_SMALL" BREAK DEFAULT RETURN "PROPERTY_PURCHASE_MEDIUM" BREAK ENDSWITCH RETURN "PROPERTY_PURCHASE_MEDIUM" ENDFUNC // do a property cutscene cam PROC DO_PROPERTY_CUTSCENE_CAM(PROPERTY_ENUM thisProperty, INT &iShot) VECTOR vCamPos1 VECTOR vCamRot1 FLOAT fCamFOV1 VECTOR vCamPos2 VECTOR vCamRot2 FLOAT fCamFOV2 INT iInterpTime INT iShotTime CAMERA_GRAPH_TYPE graphTypePos CAMERA_GRAPH_TYPE graphTypeRot FILL_PROPERTY_CUTSCENE_SHOT_ATTRIBUTES(thisProperty, iShot, vCamPos1, vCamRot1, fCamFOV1, vCamPos2, vCamRot2, fCamFOV2, iInterpTime, iShotTime, graphTypePos, graphTypeRot) IF DOES_CAM_EXIST(g_PropertySystemData.camIndex1) DESTROY_CAM(g_PropertySystemData.camIndex1) ENDIF g_PropertySystemData.camIndex1 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) IF DOES_CAM_EXIST(g_PropertySystemData.camIndex2) DESTROY_CAM(g_PropertySystemData.camIndex2) ENDIF g_PropertySystemData.camIndex2 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE) SET_CAM_COORD(g_PropertySystemData.camIndex1, vCamPos1) SET_CAM_ROT(g_PropertySystemData.camIndex1, vCamRot1) SET_CAM_FOV(g_PropertySystemData.camIndex1, fCamFOV1) SET_CAM_COORD(g_PropertySystemData.camIndex2, vCamPos2) SET_CAM_ROT(g_PropertySystemData.camIndex2, vCamRot2) SET_CAM_FOV(g_PropertySystemData.camIndex2, fCamFOV2) SET_CAM_ACTIVE_WITH_INTERP(g_PropertySystemData.camIndex2, g_PropertySystemData.camIndex1, iInterpTime, graphTypePos, graphTypeRot) RENDER_SCRIPT_CAMS(TRUE, FALSE) SHAKE_CAM(g_PropertySystemData.camIndex1, "HAND_SHAKE", 0.25) g_PropertySystemData.iNextCutsceneShotTime = GET_GAME_TIMER() + iShotTime iShot++ ENDPROC // do the help for a property cutscene PROC DO_PROPERTY_CUTSCENE_HELP(PROPERTY_ENUM thisProperty, INT &iHelp) IF HAS_ADDITIONAL_TEXT_LOADED(MINIGAME_TEXT_SLOT) IF GET_GAME_TIMER() >= g_PropertySystemData.iCutsceneStartTime + 10 PRINT_HELP(GET_HELP_FOR_PROPERTY_CUTSCENE(thisProperty, iHelp), GET_TIME_FOR_PROPERTY_CUTSCENE_HELP(thisProperty, iHelp)) iHelp++ ENDIF ENDIF ENDPROC // get the for sale sign model FUNC MODEL_NAMES GET_PROPERTY_FOR_SALE_SIGN_MODEL() RETURN Prop_forSale_DYN_01//PROP_FORSALE_SIGN_FS ENDFUNC // release for sale sign model PROC RELEASE_PROPERTY_FOR_SALE_SIGN_MODEL() IF g_PropertySystemData.createForSaleSignState >= CREATE_FOR_SALE_SIGN_STATE_LOADING_MODEL SET_MODEL_AS_NO_LONGER_NEEDED(GET_PROPERTY_FOR_SALE_SIGN_MODEL()) ENDIF g_PropertySystemData.createForSaleSignState = CREATE_FOR_SALE_SIGN_STATE_NOT_STARTED ENDPROC // delete the sign and reset to start state PROC RESET_FOR_SALE_SIGN_CREATE_STATE(BOOL bDelete, BOOL bGrab = FALSE) INT i REPEAT NUMBER_PROPERTY_FOR_SALE_SIGNS i IF DOES_ENTITY_EXIST(g_PropertySystemData.signObject[i]) IF bGrab SET_ENTITY_AS_MISSION_ENTITY(g_PropertySystemData.signObject[i], TRUE, TRUE) ENDIF IF bDelete DELETE_OBJECT(g_PropertySystemData.signObject[i]) ELSE SET_OBJECT_AS_NO_LONGER_NEEDED(g_PropertySystemData.signObject[i]) ENDIF ENDIF ENDREPEAT REPEAT COUNT_OF(PROPERTY_ENUM) i CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iPropertyBit[i], PROPERTY_UNSAVED_BIT_CREATED_FOR_SALE_SIGN) ENDREPEAT RELEASE_PROPERTY_FOR_SALE_SIGN_MODEL() ENDPROC // get the code id to run when a property has been purchased FUNC CC_CodeID GET_PROPERTY_PURCHASE_CODE_ID_TO_RUN(PROPERTY_ENUM thisProperty, BOOL bPreCutscene) SWITCH thisProperty CASE PROPERTY_ARMS_TRAFFICKING IF NOT bPreCutscene RETURN CID_ACTIVATE_MINIGAME_TRAFFICKING ENDIF BREAK CASE PROPERTY_SONAR_COLLECTIONS IF bPreCutscene RETURN CID_UNLOCK_SUBMERSIBLE ENDIF BREAK CASE PROPERTY_TOWING_IMPOUND IF bPreCutscene RETURN CID_ACTIVATE_MINIGAME_TOWING ENDIF BREAK ENDSWITCH RETURN CID_BLANK ENDFUNC // run a code ID on property purchase PROC RUN_PROPERTY_PURCHASE_CODE_ID(PROPERTY_ENUM thisProperty, BOOL bPreCutscene) CC_CodeID doCodeID = GET_PROPERTY_PURCHASE_CODE_ID_TO_RUN(thisProperty, bPreCutscene) IF doCodeID <> CID_BLANK EXECUTE_CODE_ID(doCodeID, 0) ENDIF ENDPROC // get the bank account to pay a property from FUNC BANK_ACCOUNT_ACTION_SOURCE_BAAC GET_BANK_ACCOUNT_SOURCE_FOR_PROPERTY(PROPERTY_ENUM thisProperty) SWITCH thisProperty CASE PROPERTY_TOWING_IMPOUND RETURN BAAC_PROP_TOWING BREAK CASE PROPERTY_TAXI_LOT RETURN BAAC_PROP_TAXI BREAK CASE PROPERTY_ARMS_TRAFFICKING RETURN BAAC_PROP_ARMS BREAK CASE PROPERTY_SONAR_COLLECTIONS RETURN BAAC_PROP_SONAR BREAK CASE PROPERTY_CAR_MOD_SHOP RETURN BAAC_PROP_CARMOD BREAK CASE PROPERTY_CINEMA_VINEWOOD RETURN BAAC_PROP_VCINEMA BREAK CASE PROPERTY_CINEMA_DOWNTOWN RETURN BAAC_PROP_DCINEMA BREAK CASE PROPERTY_CINEMA_MORNINGWOOD RETURN BAAC_PROP_MCINEMA BREAK CASE PROPERTY_GOLF_CLUB RETURN BAAC_PROP_GOLF BREAK CASE PROPERTY_CAR_SCRAP_YARD RETURN BAAC_PROP_CSCRAP BREAK CASE PROPERTY_WEED_SHOP RETURN BAAC_PROP_SMOKE BREAK CASE PROPERTY_BAR_TEQUILALA RETURN BAAC_PROP_BAR_TEQUILA BREAK CASE PROPERTY_BAR_PITCHERS RETURN BAAC_PROP_BAR_PITCHERS BREAK CASE PROPERTY_BAR_HEN_HOUSE RETURN BAAC_PROP_BAR_HEN BREAK CASE PROPERTY_BAR_HOOKIES RETURN BAAC_PROP_BAR_HOOKIES BREAK CASE PROPERTY_STRIP_CLUB RETURN BAAC_STRIP_CLUB BREAK ENDSWITCH RETURN BAAC_DEFAULT_DEBUG ENDFUNC // get the purchase price of a property FUNC INT GET_PROPERTY_PURCHASE_PRICE(PROPERTY_ENUM thisProperty) INT iPrice = 0 SWITCH thisProperty CASE PROPERTY_ARMS_TRAFFICKING iPrice = 150000 BREAK CASE PROPERTY_CAR_SCRAP_YARD iPrice = 275000 BREAK CASE PROPERTY_WEED_SHOP iPrice = 204000 BREAK CASE PROPERTY_TAXI_LOT iPrice = 200000 BREAK CASE PROPERTY_CAR_MOD_SHOP iPrice = 349000 BREAK CASE PROPERTY_SONAR_COLLECTIONS iPrice = 250000 BREAK CASE PROPERTY_TOWING_IMPOUND iPrice = 150000 BREAK CASE PROPERTY_GOLF_CLUB iPrice = 150000000 BREAK CASE PROPERTY_CINEMA_VINEWOOD iPrice = 10000000 BREAK CASE PROPERTY_CINEMA_DOWNTOWN iPrice = 20000000 BREAK CASE PROPERTY_CINEMA_MORNINGWOOD iPrice = 30000000 BREAK CASE PROPERTY_BAR_TEQUILALA iPrice = 2000000 BREAK CASE PROPERTY_BAR_PITCHERS iPrice = 750000 BREAK CASE PROPERTY_BAR_HEN_HOUSE iPrice = 80000 BREAK CASE PROPERTY_BAR_HOOKIES iPrice = 600000 BREAK ENDSWITCH RETURN iPrice ENDFUNC // end the property purchase cutscene PROC END_PROPERTY_CUTSCENE(PROPERTY_ENUM thisProperty) IF DOES_CAM_EXIST(g_PropertySystemData.camIndex1) DESTROY_CAM(g_PropertySystemData.camIndex1) ENDIF IF DOES_CAM_EXIST(g_PropertySystemData.camIndex2) DESTROY_CAM(g_PropertySystemData.camIndex2) ENDIF SET_SCRIPTS_SAFE_FOR_CUTSCENE(FALSE) g_bCurrentlyBuyingProperty = FALSE // Prevent Chop running off when showing the buying property cutscene DISABLE_CELLPHONE(FALSE) SET_PLAYER_CONTROL(PLAYER_ID(), TRUE) CLEAR_HELP() CLEAR_PRINTS() DISPLAY_RADAR(TRUE) DISPLAY_HUD(TRUE) RENDER_SCRIPT_CAMS(FALSE,FALSE) SET_ENTITY_VISIBLE(PLAYER_PED_ID(), TRUE) IF thisProperty = PROPERTY_ARMS_TRAFFICKING SET_ENTITY_HEADING(PLAYER_PED_ID(), 25) ENDIF SET_GAMEPLAY_CAM_RELATIVE_HEADING() SET_GAMEPLAY_CAM_RELATIVE_PITCH() IF DOES_ENTITY_EXIST(g_PropertySystemData.veh[0]) IF thisProperty = PROPERTY_ARMS_TRAFFICKING DELETE_VEHICLE(g_PropertySystemData.veh[0]) ELSE SET_VEHICLE_AS_NO_LONGER_NEEDED(g_PropertySystemData.veh[0]) ENDIF ENDIF IF DOES_ENTITY_EXIST(g_PropertySystemData.veh[1]) DELETE_VEHICLE(g_PropertySystemData.veh[1]) ENDIF RUN_PROPERTY_PURCHASE_CODE_ID(thisProperty, FALSE) PAUSE_FLOW_HELP_QUEUE(FALSE) SET_WANTED_LEVEL_MULTIPLIER(1.0) SET_MAX_WANTED_LEVEL(5) RELEASE_NAMED_SCRIPT_AUDIO_BANK("HUD_PROPERTY") NEW_LOAD_SCENE_STOP() IF STREAMVOL_IS_VALID(g_PropertySystemData.streamVolume) STREAMVOL_DELETE(g_PropertySystemData.streamVolume) ENDIF IF IS_VALID_INTERIOR(g_PropertySystemData.interior) IF IS_INTERIOR_READY(g_PropertySystemData.interior) UNPIN_INTERIOR(g_PropertySystemData.interior) ENDIF ENDIF CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_RUN_CUTSCENE) CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP) DEBIT_BANK_ACCOUNT(GET_CURRENT_PLAYER_PED_ENUM(), GET_BANK_ACCOUNT_SOURCE_FOR_PROPERTY(thisProperty), GET_PROPERTY_PURCHASE_PRICE(thisProperty)) MAKE_AUTOSAVE_REQUEST() SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DISPLAY_PURCHASED) g_PropertySystemData.iManagementEventEndTime = GET_GAME_TIMER() + 1500 IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME) ENDIF ENDPROC PROC REMOVE_CONTROL_AND_HUD_FOR_PROPERTY_CUTSCENE() SET_PLAYER_CONTROL(PLAYER_ID(), FALSE) DISPLAY_RADAR(FALSE) DISPLAY_HUD(FALSE) ENDPROC // reset the streaming for mocap cutscene PROC RESET_PROPERTY_ASSET_STREAMING(BOOL bRemoveCutscene = TRUE) IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS) IF bRemoveCutscene REMOVE_CUTSCENE() SET_SRL_FORCE_PRESTREAM(SRL_PRESTREAM_DEFAULT) ENDIF SET_MODEL_AS_NO_LONGER_NEEDED(CUBAN800) SET_MODEL_AS_NO_LONGER_NEEDED(DUNE) CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS) ENDIF IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TOWING_ASSETS) SET_MODEL_AS_NO_LONGER_NEEDED(TOWTRUCK) CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TOWING_ASSETS) ENDIF IF IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_GOLF_CLUB_ASSETS) IF STREAMVOL_IS_VALID(g_PropertySystemData.streamVolume) STREAMVOL_DELETE(g_PropertySystemData.streamVolume) ENDIF CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_GOLF_CLUB_ASSETS) ENDIF ENDPROC FUNC VECTOR GET_PROPERTY_CUTSCENE_REPOSTION_COORDS(PROPERTY_ENUM thisProperty) SWITCH thisProperty CASE PROPERTY_WEED_SHOP RETURN <<-1173.98413, -1573.37109, 3.37083>> BREAK CASE PROPERTY_TOWING_IMPOUND RETURN <<410.72632, -1624.37292, 28.29278>> BREAK CASE PROPERTY_TAXI_LOT RETURN <<901.96375, -178.59615, 72.95532>> BREAK CASE PROPERTY_SONAR_COLLECTIONS RETURN <<-1585.41406, 5194.89355, 3.00912>> BREAK CASE PROPERTY_CAR_MOD_SHOP RETURN <<1177.81934, 2648.62061, 36.79923>> BREAK CASE PROPERTY_CINEMA_VINEWOOD RETURN <<337.51617, 171.56021, 102.22147>> BREAK CASE PROPERTY_CINEMA_DOWNTOWN RETURN <<397.02444, -710.33325, 28.28472>> BREAK CASE PROPERTY_CINEMA_MORNINGWOOD RETURN <<-1424.19141, -198.89491, 46.30384>> BREAK CASE PROPERTY_GOLF_CLUB RETURN <<-1341.13599, -16.49592, 50.81433>> BREAK CASE PROPERTY_CAR_SCRAP_YARD RETURN <<1525.31177, -2112.94409, 75.64257>> BREAK CASE PROPERTY_BAR_TEQUILALA RETURN <<-564.87378, 271.80304, 82.02014>> BREAK CASE PROPERTY_BAR_PITCHERS RETURN <<226.23177, 341.22311, 104.54834>> BREAK CASE PROPERTY_BAR_HEN_HOUSE RETURN <<-298.25507, 6254.39600, 30.48323>> BREAK CASE PROPERTY_BAR_HOOKIES RETURN <<-2199.22046, 4296.41455, 47.52314>> BREAK ENDSWITCH RETURN GET_ENTITY_COORDS(PLAYER_PED_ID()) ENDFUNC FUNC FLOAT GET_PROPERTY_CUTSCENE_REPOSTION_HEADING(PROPERTY_ENUM thisProperty) SWITCH thisProperty CASE PROPERTY_WEED_SHOP RETURN 122.4 BREAK CASE PROPERTY_TOWING_IMPOUND RETURN -133.2 BREAK CASE PROPERTY_TAXI_LOT RETURN -125.3 BREAK CASE PROPERTY_SONAR_COLLECTIONS RETURN -63.9 BREAK CASE PROPERTY_CAR_MOD_SHOP RETURN -48.2 BREAK CASE PROPERTY_CINEMA_VINEWOOD RETURN 162.1 BREAK CASE PROPERTY_CINEMA_DOWNTOWN RETURN -88.8 BREAK CASE PROPERTY_CINEMA_MORNINGWOOD RETURN 1.5 BREAK CASE PROPERTY_GOLF_CLUB RETURN -165.8 BREAK CASE PROPERTY_CAR_SCRAP_YARD RETURN -92.2 BREAK CASE PROPERTY_BAR_TEQUILALA RETURN 174.7 BREAK CASE PROPERTY_BAR_PITCHERS RETURN -19.7 BREAK CASE PROPERTY_BAR_HEN_HOUSE RETURN -138.7 BREAK CASE PROPERTY_BAR_HOOKIES RETURN 72.4 BREAK ENDSWITCH RETURN GET_ENTITY_HEADING(PLAYER_PED_ID()) ENDFUNC FUNC VECTOR CONVERT_ROTATION2_TO_DIRECTION_VECTOR(VECTOR vRot) RETURN <<-SIN(vRot.z) * COS(vRot.x), COS(vRot.z) * COS(vRot.x), SIN(vRot.x)>> ENDFUNC // do the purchase cutscene for a property PROC RUN_PROPERTY_CUTSCENE(PROPERTY_ENUM thisProperty) RESET_SHOP_HELP_DELAY() IF thisProperty = PROPERTY_TOWING_IMPOUND IF IS_VEHICLE_DRIVEABLE(g_PropertySystemData.veh[0]) SET_FORCE_HD_VEHICLE(g_PropertySystemData.veh[0], TRUE) ENDIF ENDIF IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SETUP_CUTSCENE) DISABLE_CELLPHONE(TRUE) CLEAR_HELP() CLEAR_PRINTS() g_bCurrentlyBuyingProperty = TRUE // Prevent Chop running off when showing the buying property cutscene SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE) PAUSE_FLOW_HELP_QUEUE(TRUE) SET_WANTED_LEVEL_MULTIPLIER(0.0) SET_MAX_WANTED_LEVEL(0) SET_PLAYER_WANTED_LEVEL(PLAYER_ID(), 0) SET_PLAYER_WANTED_LEVEL_NOW(PLAYER_ID()) IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS) REMOVE_CONTROL_AND_HUD_FOR_PROPERTY_CUTSCENE() ENDIF g_PropertySystemData.iCutsceneShot = 0 g_PropertySystemData.iCutsceneHelp = 0 g_PropertySystemData.bDone1stPersonFlash = FALSE g_PropertySystemData.iCutsceneStartTime = GET_GAME_TIMER() IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_REQUESTED_TRAFFICKING_ASSETS) SET_ENTITY_VISIBLE(PLAYER_PED_ID(), FALSE) CLEAR_AREA_OF_PEDS(GET_PROPERTY_CUTSCENE_REPOSTION_COORDS(thisProperty), 2.0) CLEAR_AREA_OF_PROJECTILES(GET_ENTITY_COORDS(PLAYER_PED_ID()), 100) STOP_FIRE_IN_RANGE(GET_ENTITY_COORDS(PLAYER_PED_ID()), 100) REMOVE_PARTICLE_FX_IN_RANGE(GET_ENTITY_COORDS(PLAYER_PED_ID()), 20) IF thisProperty = PROPERTY_TOWING_IMPOUND RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<404.38449, -1635.44800, 28.29194>>, <<397.61618, -1630.03479, 33.43343>>, 4.5, <<404.29468, -1629.50781, 28.29194>>, -127.8, TRUE, FALSE, TRUE) g_PropertySystemData.veh[0] = CREATE_VEHICLE(TOWTRUCK, << 401.6467, -1633.3079, 29.25 >>, -128.47) SET_VEHICLE_COLOUR_COMBINATION(g_PropertySystemData.veh[0], 0) SET_VEHICLE_ON_GROUND_PROPERLY(g_PropertySystemData.veh[0]) SET_VEHICLE_AS_NO_LONGER_NEEDED(g_PropertySystemData.veh[0]) ENDIF CLEAR_PED_TASKS_IMMEDIATELY(PLAYER_PED_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(), GET_PROPERTY_CUTSCENE_REPOSTION_COORDS(thisProperty)) SET_ENTITY_HEADING(PLAYER_PED_ID(), GET_PROPERTY_CUTSCENE_REPOSTION_HEADING(thisProperty)) DO_PROPERTY_CUTSCENE_CAM(thisProperty, g_PropertySystemData.iCutsceneShot) DO_PROPERTY_CUTSCENE_HELP(thisProperty, g_PropertySystemData.iCutsceneHelp) RESET_PROPERTY_ASSET_STREAMING() CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP) IF thisProperty = PROPERTY_GOLF_CLUB g_PropertySystemData.streamVolume = STREAMVOL_CREATE_FRUSTUM(<<-1232.220337,-22.753672,47.196873>>, CONVERT_ROTATION2_TO_DIRECTION_VECTOR(<<5.359231,0.000000,52.316067>>), 100, FLAG_MAPDATA) ELIF thisProperty = PROPERTY_CAR_MOD_SHOP //g_PropertySystemData.streamVolume = STREAMVOL_CREATE_FRUSTUM(<<1180.356201,2645.067871,38.195461>>, CONVERT_ROTATION2_TO_DIRECTION_VECTOR(<<-0.360282,-0.060618,139.270355>>), 30, FLAG_MAPDATA) NEW_LOAD_SCENE_START_SPHERE((<<1175.7, 2639.3, 38.1>>), 20.0) g_PropertySystemData.interior = GET_INTERIOR_AT_COORDS(<<1175.7, 2639.3, 38.1>>) PIN_INTERIOR_IN_MEMORY(g_PropertySystemData.interior) ENDIF ELSE REGISTER_ENTITY_FOR_CUTSCENE(PLAYER_PED_ID(), "Trevor", CU_ANIMATE_EXISTING_SCRIPT_ENTITY) REGISTER_ENTITY_FOR_CUTSCENE(g_PropertySystemData.ped, "Oscar", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, CSB_OSCAR) START_CUTSCENE(CUTSCENE_SUPPRESS_FP_TRANSITION_FLASH) SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP) CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CLEARED_FOR_MOCAP) ENDIF CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DONE_PURCHASE_SOUND) REQUEST_ADDITIONAL_TEXT("PROPR", MINIGAME_TEXT_SLOT) SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_SETUP_CUTSCENE) ENDIF // play sound IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DONE_PURCHASE_SOUND) IF REQUEST_SCRIPT_AUDIO_BANK("HUD_PROPERTY") PLAY_SOUND_FRONTEND(-1, GET_PROPERTY_PURCHASE_SOUND_AS_STRING(thisProperty), "HUD_PROPERTY_SOUNDSET") SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_DONE_PURCHASE_SOUND) ENDIF ENDIF IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP) IF NOT IS_HELP_MESSAGE_BEING_DISPLAYED() IF g_PropertySystemData.iCutsceneHelp < GET_NUMBER_PROPERTY_CUTSCENE_HELP_TEXTS(thisProperty) DO_PROPERTY_CUTSCENE_HELP(thisProperty, g_PropertySystemData.iCutsceneHelp) ENDIF ENDIF IF IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED() AND GET_GAME_TIMER() >= g_PropertySystemData.iCutsceneStartTime + 1000 DO_SCREEN_FADE_OUT(DEFAULT_FADE_TIME) WHILE NOT IS_SCREEN_FADED_OUT() WAIT(0) ENDWHILE END_PROPERTY_CUTSCENE(thisProperty) ELSE IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("mission_repeat_controller")) > 0 END_PROPERTY_CUTSCENE(thisProperty) ELSE IF NOT g_PropertySystemData.bDone1stPersonFlash IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON IF GET_GAME_TIMER() >= g_PropertySystemData.iNextCutsceneShotTime - 300 IF g_PropertySystemData.iCutsceneShot >= GET_NUMBER_PROPERTY_CUTSCENE_SHOTS(thisProperty) ANIMPOSTFX_PLAY("CamPushInNeutral", 0, FALSE) PLAY_SOUND_FRONTEND(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET") g_PropertySystemData.bDone1stPersonFlash = TRUE ENDIF ENDIF ENDIF ENDIF IF GET_GAME_TIMER() >= g_PropertySystemData.iNextCutsceneShotTime IF g_PropertySystemData.iCutsceneShot < GET_NUMBER_PROPERTY_CUTSCENE_SHOTS(thisProperty) DO_PROPERTY_CUTSCENE_CAM(thisProperty, g_PropertySystemData.iCutsceneShot) NEW_LOAD_SCENE_STOP() IF STREAMVOL_IS_VALID(g_PropertySystemData.streamVolume) STREAMVOL_DELETE(g_PropertySystemData.streamVolume) ENDIF ELSE END_PROPERTY_CUTSCENE(thisProperty) ENDIF ENDIF ENDIF ENDIF ELSE IF NOT IS_BITMASK_AS_ENUM_SET(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CLEARED_FOR_MOCAP) IF IS_CUTSCENE_PLAYING() IF thisProperty = PROPERTY_ARMS_TRAFFICKING VEHICLE_INDEX lastVehicle = GET_PLAYERS_LAST_VEHICLE() IF IS_VEHICLE_DRIVEABLE(lastVehicle) IF GET_ENTITY_MODEL(lastVehicle) <> CUBAN800 RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<2139.966, 4771.064, 40.040>>, <<2127.725, 4795.483, 44.119>>, 25, <<2148.30200, 4808.09229, 40.19440>>, 116.6, TRUE, FALSE, TRUE) RESOLVE_VEHICLES_INSIDE_ANGLED_AREA(<<2153.35938, 4795.98877, 40.18427>>, <<2147.13135, 4800.27588, 44.07146>>, 5, <<2148.30200, 4808.09229, 40.19440>>, 116.6, TRUE, FALSE, TRUE) ENDIF ENDIF CLEAR_AREA_OF_VEHICLES(<<2136.1331, 4780.5635, 39.9702>>, 8.0) CLEAR_AREA_OF_PROJECTILES(<<2136.1331, 4780.5635, 39.9702>>, 100) STOP_FIRE_IN_RANGE(<<2136.1331, 4780.5635, 39.9702>>, 100) REMOVE_PARTICLE_FX_IN_RANGE(<<2136.1331, 4780.5635, 39.9702>>, 20) g_PropertySystemData.veh[0] = CREATE_VEHICLE(CUBAN800, <<2136.1331, 4780.5635, 39.9702>>, 25.29) SET_VEHICLE_ON_GROUND_PROPERLY(g_PropertySystemData.veh[0]) SET_VEHICLE_COLOUR_COMBINATION(g_PropertySystemData.veh[0], 2) FREEZE_ENTITY_POSITION(g_PropertySystemData.veh[0], TRUE) g_PropertySystemData.veh[1] = CREATE_VEHICLE(DUNE, <<2149.73, 4798.49, 40.57>>, 55.47) SET_VEHICLE_ON_GROUND_PROPERLY(g_PropertySystemData.veh[1]) ENDIF RESET_PROPERTY_ASSET_STREAMING(FALSE) REMOVE_CONTROL_AND_HUD_FOR_PROPERTY_CUTSCENE() RESET_FOR_SALE_SIGN_CREATE_STATE(TRUE) SET_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_CLEARED_FOR_MOCAP) ENDIF ENDIF IF NOT DOES_ENTITY_EXIST(g_PropertySystemData.ped) IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Oscar")) g_PropertySystemData.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("Oscar")) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Trevor") ENDIF IF CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Oscar") IF DOES_ENTITY_EXIST(g_PropertySystemData.ped) DELETE_PED(g_PropertySystemData.ped) ENDIF ENDIF IF CAN_SET_EXIT_STATE_FOR_CAMERA() WHILE IS_SCREEN_FADING_OUT() WAIT(0) ENDWHILE IF thisProperty = PROPERTY_ARMS_TRAFFICKING SET_ENTITY_VISIBLE(PLAYER_PED_ID(), FALSE) ENDIF DO_PROPERTY_CUTSCENE_CAM(thisProperty, g_PropertySystemData.iCutsceneShot) DO_PROPERTY_CUTSCENE_HELP(thisProperty, g_PropertySystemData.iCutsceneHelp) CLEAR_BITMASK_AS_ENUM(g_PropertySystemData.iSystemBit, PROPERTY_SYSTEM_BIT_PLAYING_MOCAP) IF IS_SCREEN_FADED_OUT() DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME) ENDIF ENDIF IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("mission_repeat_controller")) > 0 STOP_CUTSCENE() END_PROPERTY_CUTSCENE(thisProperty) ENDIF ENDIF ENDPROC