// Checks for player flying under bridges //Compile out Title Update changes to header functions. //Must be before includes. //CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R. USING "rage_builtins.sch" USING "globals.sch" USING "commands_entity.sch" USING "commands_player.sch" USING "commands_script.sch" USING "brains.sch" USING "script_player.sch" USING "flow_public_core.sch" USING "replay_public.sch" USING "mission_stat_public.sch" USING "commands_recording.sch" USING "achievement_public.sch" USING "flyUnderBridges.sch" ENUM underBridgeStageFlag waitingForInteraction = 0, checkForExit ENDENUM underBridgeStageFlag underBridgeStage = waitingForInteraction ENUM splashStageFlag loadScaleform, printSplash, animateSplash, cleanupSplash ENDENUM splashStageFlag splashStage = loadScaleform BOOL bPrintSplash SCALEFORM_INDEX sfMovie INT currentBridge, iPrintedCompletion BOOL bEnteredArea1, bEnteredArea2, bExitViaArea1, bExitViaArea2, bPassingThroughAreas, bIsKnife VECTOR vTriggerPoint[SP_NUMBER_OF_CHALLENGES] FLOAT fStartChecking = 200*200 VECTOR vArea1Min, vArea1Max VECTOR vArea2Min, vArea2Max FLOAT fAreaWidth VECTOR vInput #if IS_DEBUG_BUILD BOOL bCheckBridgeCompletion, bBlipAllBridges, bAddBitFieldWidgets, bBitFieldWidgetsCreated WIDGET_GROUP_ID widgetGroup BLIP_INDEX blipBridge[SP_NUMBER_OF_CHALLENGES] #ENDIF PROC SETUP_BRIDGE_INFO() vTriggerPoint[SP_LA_RIVER_01] = <<1083, -231, 60>> vTriggerPoint[SP_LA_RIVER_02] = <<1024, -325, 60>> //Aqueduct Pipes vTriggerPoint[SP_LA_RIVER_03] = <<910, -401, 43>> vTriggerPoint[SP_LA_RIVER_04] = <<721, -457, 26>> vTriggerPoint[SP_LA_RIVER_05] = <<643, -579, 26>> vTriggerPoint[SP_LA_RIVER_06] = <<590, -851, 26>> vTriggerPoint[SP_LA_RIVER_07] = <<590, -1023, 16>> vTriggerPoint[SP_LA_RIVER_08] = <<582, -1205, 24>> //Aqueduct Rail Track vTriggerPoint[SP_LA_RIVER_09] = <<608, -1335, 16>> vTriggerPoint[SP_LA_RIVER_10] = <<640, -1434, 16>> vTriggerPoint[SP_LA_RIVER_11] = <<671, -1742, 20>> vTriggerPoint[SP_LA_RIVER_12] = <<651, -2046, 16>> vTriggerPoint[SP_LA_RIVER_13] = <<603, -2505, 9>> vTriggerPoint[SP_LA_RIVER_14] = <<673, -2582, 4>> vTriggerPoint[SP_LA_RIVER_15] = <<728, -2594, 10>> vTriggerPoint[SP_LA_RIVER_16] = <<794, -2624, 27>> vTriggerPoint[SP_HIGHWAY_CS3] = <<-2663, 2594, 7.5>> vTriggerPoint[SP_DOUBLEARCH_CS3] = <<-1902, 4617, 30>> vTriggerPoint[SP_RAILARCH_CS1] = <<-513, 4427, 40>> vTriggerPoint[SP_RAILLOW_CS4] = <<126, 3366, 40>> vTriggerPoint[SP_ROADLOW_CS4] = <<143, 3418, 36>> vTriggerPoint[SP_RAILLOW_CS2] = <<2822, 4978, 40>> vTriggerPoint[SP_RAILLOW_CS3] = <<-162, 4249, 40>> vTriggerPoint[SP_MADISON_CS3] = <<-408, 2964, 20>> vTriggerPoint[SP_ROADLOW_CS6] = <<-181, 2862, 38>> vTriggerPoint[SP_RAILLOW_CH3] = <<2558, 2201, 24>> vTriggerPoint[SP_SEAARCH_CH3] = <<2950, 803, 8>> vTriggerPoint[SP_RAILHIGH_CH3] = <<2369, -409, 80>> vTriggerPoint[SP_RAILFREE_CH3] = <<1906, -755, 84 >> vTriggerPoint[SP_ROADSUSP_PO1] = <<-403, -2333, 40>> vTriggerPoint[SP_RAILLOW_CH1] = <<-1429, 2649, 10>> vTriggerPoint[SP_RAILLOW_PO1] = <<219, -2315, 5>> vTriggerPoint[SP_ROADLOW_PO1] = <<350, -2315, 5>> vTriggerPoint[SP_KNIFE_SM01] = <<-1848, -333, 75>> vTriggerPoint[SP_KNIFE_2] = <<-693, -608, 69>>//<<-794, -595, 65>> vTriggerPoint[SP_KNIFE_3] = <<-1461, -582, 53>>//<<-890, -1261, 40>> vTriggerPoint[SP_KNIFE_4] = <<-1553, -546, 59>>//<<-969, -1304, 40>> //Chemical Vats vTriggerPoint[SP_DOMES_PO1] = <<338, -2758, 23>> vTriggerPoint[SP_RAILROAD_CS2] = <<1985, 6201, 53>> vTriggerPoint[SP_HELI_UNDER] = <<-713, -1538, 13>> vTriggerPoint[SP_HELI_OVER] = <<-659, -1518, 13>> vTriggerPoint[SP_CANAL_TRACK] = <<-620, -1502, 16>> vTriggerPoint[SP_SPAGH_LOW] = <<-445, -1575, 26>> vTriggerPoint[SP_CHINOZ_BRIDGE] = <<-373, -1680, 19>> vTriggerPoint[SP_SC1_ARCH_BRIDGE] = <<-212, -1805, 29>> vTriggerPoint[SP_LOW_CAST_IRON] = <<47, -2040, 18>> vTriggerPoint[SP_CS_FREEWAY] = <<-3080, 766, 25>> vTriggerPoint[SP_CH1_RIVER] = <<-1478, 2400, 20>> vTriggerPoint[SP_CH3_OVERPASS] = <<2308, 1124, 78>> vTriggerPoint[SP_CH3_RAILBRIDGE] = <<2349, 1174, 79>> vTriggerPoint[SP_KNIFE_5] = <<-1186, -365, 46>> vTriggerPoint[SP_KNIFE_6] = <<-916, -407, 93>> vTriggerPoint[SP_KNIFE_7] = <<-726, 235, 105>> vTriggerPoint[SP_KNIFE_8] = <<-774, 286, 112>> vTriggerPoint[SP_KNIFE_9] = <<271, 134, 125>> vTriggerPoint[SP_KNIFE_10] = <<377, -28, 125>> vTriggerPoint[SP_KNIFE_11] = <<121, -703, 150>> vTriggerPoint[SP_KNIFE_12] = <<-204, -784, 74>> vTriggerPoint[SP_KNIFE_13] = <<-287, -774, 72>> vTriggerPoint[SP_KNIFE_14] = <<-272, -824, 71>> vTriggerPoint[SP_KNIFE_15] = <<-230, -723, 80>> vTriggerPoint[SP_BRIDGE_47] = <<1822, 2044, 62>> vTriggerPoint[SP_BRIDGE_48] = <<2410, 2907, 44>> vTriggerPoint[SP_BRIDGE_49] = <<2686, 4858, 36>> vTriggerPoint[SP_BRIDGE_50] = <<-1046, 4751, 244>> vTriggerPoint[SP_EXTRA_SUSP_1] = <<-213, -2463, 38>> vTriggerPoint[SP_EXTRA_SUSP_2] = <<-597, -2192, 38>> vTriggerPoint[SP_FREEWAY_1] = <<1036, -980, 41>> vTriggerPoint[SP_FREEWAY_2] = <<980, -837, 42>> //vTriggerPoint[SP_FREEWAY_3] = <<-597, -2192, 38>> vTriggerPoint[SP_FREEWAY_3] = <<1208, -1173, 38>> ENDPROC PROC GET_CURRENT_BRIDGE_INFO(INT bridgeIndex) SWITCH bridgeIndex CASE SP_LA_RIVER_01 vArea1Min = <<1103.013916,-233.037369,56.130039>> vArea1Max = <<1073.190918,-214.847794,66.059296>> fAreaWidth = 30 vArea2Min = <<1093.588623,-248.592606,56.886391>> vArea2Max = <<1063.774414,-230.142532,66.678467>> BREAK CASE SP_LA_RIVER_02 vArea1Min = <<1044.181885,-324.590363,49.334076>> vArea1Max = <<1016.709717,-307.738251,64.813431>> fAreaWidth = 30 vArea2Min = <<1007.983154,-320.615875,48.454296>> vArea2Max = <<1036.006714,-337.420410,64.480797>> BREAK CASE SP_LA_RIVER_03 vArea1Min = <<916.598999,-419.878204,35.627480>> vArea1Max = <<910.379333,-383.882568,47.543388>> fAreaWidth = 7 vArea2Min = <<912.136169,-420.516144,35.380337>> vArea2Max = <<906.895203,-384.677887,47.249256>> BREAK CASE SP_LA_RIVER_04 vArea1Min = <<757.718872,-472.923950,19.253498>> vArea1Max = <<696.593628,-420.211456,35.460842>> fAreaWidth = 20.75 vArea2Min = <<744.911438,-480.737335,19.065138>> vArea2Max = <<682.561401,-429.553345,37.026600>> BREAK CASE SP_LA_RIVER_05 vArea1Min = <<680.367676,-581.179199,14.214504>> vArea1Max = <<599.810059,-528.305908,33.409580>> fAreaWidth = 45.000000 vArea2Min = <<667.369202,-610.535645,13.854013>> vArea2Max = <<582.843262,-556.781799,33.403355>> BREAK CASE SP_LA_RIVER_06 vArea1Min = <<644.249695,-844.750427,12.367073>> vArea1Max = <<526.860840,-845.252075,35.989601>> fAreaWidth = 25.000000 vArea2Min = <<644.365906,-859.387756,12.596766>> vArea2Max = <<526.861511,-857.520752,36.328571>> BREAK CASE SP_LA_RIVER_07 vArea1Min = <<634.971985,-1011.640198,10.925943>> vArea1Max = <<539.650085,-1024.017090,35.958515>> fAreaWidth = 25.000000 vArea2Min = <<634.961243,-1029.123047,10.618461>> vArea2Max = <<543.489319,-1038.261475,35.959301>> BREAK CASE SP_LA_RIVER_08 vArea1Min = <<645.722290,-1191.215332,10.451977>> vArea1Max = <<524.301758,-1197.166870,39.611725>> fAreaWidth = 50.000000 vArea2Min = <<645.722290,-1228.966431,10.980150>> vArea2Max = <<521.937866,-1217.607300,39.471722>> BREAK CASE SP_LA_RIVER_09 vArea1Min = <<642.121643,-1295.730103,9.005976>> vArea1Max = <<568.170166,-1375.350830,20.129887>> fAreaWidth = 7.000000 vArea2Min = <<644.777222,-1298.168335,9.128529>> vArea2Max = <<571.634155,-1378.644409,20.358023>> BREAK CASE SP_LA_RIVER_10 vArea1Min = <<686.567505,-1444.709839,9.065001>> vArea1Max = <<598.932800,-1444.437988,25.688457>> fAreaWidth = 25.000000 vArea2Min = <<682.302673,-1429.871948,9.890836>> vArea2Max = <<593.821655,-1432.995483,25.600724>> BREAK CASE SP_LA_RIVER_11 vArea1Min = <<718.761658,-1734.312866,9.082874>> vArea1Max = <<615.001709,-1725.897339,27.545851>> fAreaWidth = 30.000000 vArea2Min = <<717.535461,-1748.645630,9.363478>> vArea2Max = <<614.217957,-1734.847534,27.357079>> BREAK CASE SP_LA_RIVER_12 vArea1Min = <<694.316467,-2049.805664,0.009695>> vArea1Max = <<618.684509,-2040.013672,25.834118>> fAreaWidth = 30.000000 vArea2Min = <<693.183594,-2063.225098,0.429037>> vArea2Max = <<607.594360,-2055.326416,26.918158>> BREAK CASE SP_LA_RIVER_13 vArea1Min = <<642.667053,-2494.551270,0.468485>> vArea1Max = <<570.180664,-2513.958740,11.787938>> fAreaWidth = 20.000000 vArea2Min = <<647.033875,-2506.202148,0.583701>> vArea2Max = <<571.141541,-2522.975342,10.450453>> BREAK CASE SP_LA_RIVER_14 vArea1Min = <<691.823547,-2558.218506,0.363352>> vArea1Max = <<645.886292,-2600.311279,9.898791>> fAreaWidth = 10.250000 vArea2Min = <<695.792847,-2561.033691,0.346731>> vArea2Max = <<656.391907,-2601.971680,9.643657>> BREAK CASE SP_LA_RIVER_15 vArea1Min = <<723.625427,-2562.170654,0.255647>> vArea1Max = <<720.751953,-2619.769531,15.732105>> fAreaWidth = 20.000000 vArea2Min = <<735.764954,-2561.935059,0.311182>> vArea2Max = <<736.121399,-2618.766602,15.790609>> BREAK CASE SP_LA_RIVER_16 vArea1Min = <<891.438660,-2603.120117,0>> vArea1Max = <<704.493164,-2634.793213,45>> fAreaWidth = 20.000000 vArea2Min = <<893.257813,-2616.235107,0>> vArea2Max = <<707.726135,-2647.695557,45>> BREAK CASE SP_HIGHWAY_CS3 vArea1Min = <<-2669.586914,2491.959961,2.043799>> vArea1Max = <<-2617.764648,2841.594727,14.082197>> fAreaWidth = 26.500000 vArea2Min = <<-2687.605713,2494.868164,2.608733>> vArea2Max = <<-2637.084717,2846.875244,14.159884>> BREAK CASE SP_DOUBLEARCH_CS3 vArea1Min = <<-1986.172607,4521.798828,0>> vArea1Max = <<-1809.902588,4699.551270,53.508797>> fAreaWidth = 17.000000 vArea2Min = <<-1995.668091,4531.259277,0>> vArea2Max = <<-1817.543457,4708.394531,53.509171>> BREAK CASE SP_RAILARCH_CS1 vArea1Min = <<-526.026489,4472.442383,0>> vArea1Max = <<-505.571442,4335.724609,86.733109>> fAreaWidth = 10.000000 vArea2Min = <<-519.928101,4476.345703,0>> vArea2Max = <<-500.731323,4336.389160,86.712891>> BREAK CASE SP_RAILLOW_CS4 vArea1Min = <<98.161499,3384.489014,45.451691>> vArea1Max = <<154.974030,3350.694092,30.033585>> fAreaWidth = 8.000000 vArea2Min = <<152.680176,3346.793457,45.021557>> vArea2Max = <<95.571877,3380.090576,30.432842>> BREAK CASE SP_ROADLOW_CS4 vArea1Min = <<147.860611,3406.796143,38.036716>> vArea1Max = <<126.132935,3416.926758,30.029865>> fAreaWidth = 14.50000 vArea2Min = <<130.091629,3425.417236,38.056725>> vArea2Max = <<151.870346,3415.391357,30.057804>> BREAK CASE SP_RAILLOW_CS2 vArea1Min = <<2830.972168,4967.139648,34.560127>> vArea1Max = <<2818.718750,4992.298340,51.290901>> fAreaWidth = 10.000000 vArea2Min = <<2826.766846,4964.185059,34.106361>> vArea2Max = <<2814.216309,4989.983398,51.218491>> BREAK CASE SP_RAILLOW_CS3 vArea1Min = <<-151.576416,4264.416992,31.047348>> vArea1Max = <<-193.196228,4224.604004,43.872551>> fAreaWidth = 10.000000 vArea2Min = <<-148.384186,4261.071289,31.574089>> vArea2Max = <<-190.471878,4222.076172,43.954426>> BREAK CASE SP_MADISON_CS3 vArea1Min = <<-426.691864,2964.271973,14.848002>> vArea1Max = <<-396.229797,2959.277588,23.506374>> fAreaWidth = 7.000000 vArea2Min = <<-425.028290,2967.861328,15.226991>> vArea2Max = <<-395.607269,2962.606689,24.380791>> BREAK CASE SP_ROADLOW_CS6 vArea1Min = <<-192.341370,2864.916260,30.725950>> vArea1Max = <<-170.150940,2857.128174,43.941822>> fAreaWidth = 10.000000 vArea2Min = <<-192.012863,2871.602539,29.999426>> vArea2Max = <<-169.595749,2863.838379,44.032505>> BREAK CASE SP_RAILLOW_CH3 vArea1Min = <<2539.185059,2228.771729,18.610205>> vArea1Max = <<2574.373291,2169.401367,27.265978>> fAreaWidth = 10.000000 vArea2Min = <<2543.707520,2231.401611,18.331003>> vArea2Max = <<2578.078857,2171.583740,27.260571>> BREAK CASE SP_SEAARCH_CH3 vArea1Min = <<2954.086670,815.720886,0.037901>> vArea1Max = <<2933.189209,796.468811,12.983917>> fAreaWidth = 35.000000 vArea2Min = <<2966.122559,806.888855,0.544056>> vArea2Max = <<2950.801270,786.781555,11.745959>> BREAK CASE SP_RAILHIGH_CH3 vArea1Min = <<2329.672607,-459.664764,70.242767>> vArea1Max = <<2413.383789,-361.218842,91.778862>> fAreaWidth = 12.000000 vArea2Min = <<2324.751953,-455.523773,70.251450>> vArea2Max = <<2407.409424,-356.200317,91.430832>> BREAK CASE SP_RAILFREE_CH3 vArea1Min = <<1943.428467,-753.250977,80.179047>> vArea1Max = <<1850.364502,-760.958740,93.025215>> fAreaWidth = 7.000000 vArea2Min = <<1943.365967,-758.287048,80.322914>> vArea2Max = <<1851.353516,-765.180664,92.935455>> BREAK CASE SP_ROADSUSP_PO1 vArea1Min = <<-655.146729,-2138.093506,-0.339008>> vArea1Max = <<-146.027893,-2493.724365,54.675671>> fAreaWidth = 47.750000 vArea2Min = <<-672.221313,-2162.674561,-0.082912>> vArea2Max = <<-163.555618,-2519.058105,54.722488>> BREAK CASE SP_RAILLOW_CH1 vArea1Min = <<-1483.000366,2691.427734,-10>> vArea1Max = <<-1377.168213,2600.768799,15.955276>> fAreaWidth = 12.000000 vArea2Min = <<-1478.152100,2696.687988,-10>> vArea2Max = <<-1378.503174,2608.697754,15.609236>> BREAK CASE SP_RAILLOW_PO1 vArea1Min = <<222.151871,-2343.486572,0.039199>> vArea1Max = <<222.684906,-2297.406982,7.088753>> fAreaWidth = 12.000000 vArea2Min = <<216.959015,-2343.486572,0.207734>> vArea2Max = <<216.602036,-2295.445068,7.424279>> BREAK CASE SP_ROADLOW_PO1 vArea1Min = <<346.462158,-2244.374023,0.159779>> vArea1Max = <<346.834717,-2389.590576,7.852059>> fAreaWidth = 20.000000 vArea2Min = <<359.609039,-2244.467773,0.129684>> vArea2Max = <<355.405426,-2390.258301,7.080691>> BREAK CASE SP_KNIFE_SM01 vArea1Min = <<-1859.679932,-322.635742,56.163681>> vArea1Max = <<-1836.613647,-335.414124,96.116104>> fAreaWidth = 7.500000 vArea2Min = <<-1860.269775,-327.863434,57.542999>> vArea2Max = <<-1837.270874,-339.222717,95.693253>> BREAK CASE SP_KNIFE_2 vArea1Min = <<-680.263245,-600.817993,69.112892>> vArea1Max = <<-706.661255,-600.751526,30.476036>> fAreaWidth = 31.500000 vArea2Min = <<-680.607727,-618.365845,69.274963>> vArea2Max = <<-706.359619,-618.238464,30.312347>> BREAK CASE SP_KNIFE_3 vArea1Min = <<-1468.096069,-591.715759,67.055176>> vArea1Max = <<-1454.699951,-573.451782,29.567360>> fAreaWidth = 11.750000 vArea2Min = <<-1474.902954,-591.121460,67.080910>> vArea2Max = <<-1457.173096,-568.131592,29.440590>> BREAK CASE SP_KNIFE_4 vArea1Min = <<-1544.957764,-537.147522,72.443474>> vArea1Max = <<-1564.616211,-551.182922,32.861633>> fAreaWidth = 11.750000 vArea2Min = <<-1541.007935,-541.549377,71.619720>> vArea2Max = <<-1561.218872,-555.868042,32.927902>> BREAK CASE SP_DOMES_PO1 vArea1Min = <<333.210785,-2727.273682,20.716625>> vArea1Max = <<333.429688,-2791.608887,41.990227>> fAreaWidth = 20.000000 vArea2Min = <<343.112732,-2727.235840,20.236126>> vArea2Max = <<343.667816,-2791.602295,41.379284>> BREAK CASE SP_RAILROAD_CS2 vArea1Min = <<1928.071289,6228.355469,43.493977>> vArea1Max = <<2039.882324,6167.397461,55.464050>> fAreaWidth = 13.000000 vArea2Min = <<1931.820190,6235.633789,43.373817>> vArea2Max = <<2039.597534,6176.525391,55.255970>> BREAK CASE SP_HELI_UNDER vArea1Min = <<-736.430908,-1590.920776,10.808919>> vArea1Max = <<-710.811035,-1516.349487,-0.098598>> fAreaWidth = 15.000000 vArea2Min = <<-727.230713,-1585.221191,11.780270>> vArea2Max = <<-700.020142,-1511.782593,-0.341655>> BREAK CASE SP_HELI_OVER vArea1Min = <<-686.377502,-1548.552612,12.337475>> vArea1Max = <<-669.328979,-1507.062866,-0.788618>> fAreaWidth = 25.000000 vArea2Min = <<-654.203003,-1536.145996,9.191055>> vArea2Max = <<-645.995422,-1500.219360,-2.406948>> BREAK CASE SP_CANAL_TRACK vArea1Min = <<-624.234375,-1537.045288,12.601933>> vArea1Max = <<-622.174927,-1472.876587,-0.292606>> fAreaWidth = 8.000000 vArea2Min = <<-615.400330,-1536.650024,12.402705>> vArea2Max = <<-619.738525,-1472.937134,-0.243267>> BREAK CASE SP_SPAGH_LOW vArea1Min = <<-492.505707,-1632.457153,24.330700>> vArea1Max = <<-418.208801,-1487.452148,0>> fAreaWidth = 25.000000 vArea2Min = <<-486.201599,-1636.094971,24.208052>> vArea2Max = <<-398.764832,-1490.440308,0>> BREAK CASE SP_CHINOZ_BRIDGE vArea1Min = <<-359.354095,-1639.692749,13.134555>> vArea1Max = <<-388.495483,-1690.945190,-0.183164>> fAreaWidth = 25.000000 vArea2Min = <<-378.151825,-1705.659668,12.471957>> vArea2Max = <<-348.959106,-1654.411011,0.193478>> BREAK CASE SP_SC1_ARCH_BRIDGE vArea1Min = <<-243.443573,-1814.622803,25.694649>> vArea1Max = <<-183.998734,-1780.644653,-0.085802>> fAreaWidth = 25.000000 vArea2Min = <<-235.131912,-1822.093750,25.865416>> vArea2Max = <<-175.510468,-1788.274780,-0.506062>> BREAK CASE SP_LOW_CAST_IRON vArea1Min = <<84.555367,-2046.158813,13.307674>> vArea1Max = <<17.931641,-2045.151855,-0.031946>> fAreaWidth = 25.000000 vArea2Min = <<17.907875,-2035.772949,12.627057>> vArea2Max = <<84.572067,-2034.183838,0.048385>> BREAK CASE SP_CS_FREEWAY vArea1Min = <<-3064.972656,780.167725,18.706421>> vArea1Max = <<-3093.957520,757.288635,29.196960>> fAreaWidth = 5.000000 vArea2Min = <<-3063.053711,778.016541,18.671673>> vArea2Max = <<-3092.174561,754.915588,29.145802>> BREAK CASE SP_CH1_RIVER vArea1Min = <<-1471.516602,2406.815186,2.485338>> vArea1Max = <<-1489.422119,2404.390381,21.769384>> fAreaWidth = 15.000000 vArea2Min = <<-1468.889404,2400.668213,2.603960>> vArea2Max = <<-1487.055054,2398.087402,21.837677>> BREAK CASE SP_CH3_OVERPASS vArea1Min = <<2326.570068,1096.030518,76.314575>> vArea1Max = <<2290.332031,1136.130737,58.857056>> fAreaWidth = 21.000000 vArea2Min = <<2334.453369,1103.066772,76.266029>> vArea2Max = <<2297.845703,1142.896851,58.842430>> BREAK CASE SP_CH3_RAILBRIDGE vArea1Min = <<2379.442139,1150.775513,58.796318>> vArea1Max = <<2327.657959,1212.366333,72.833298>> fAreaWidth = 12.000000 vArea2Min = <<2374.063721,1146.282104,58.833305>> vArea2Max = <<2320.894531,1209.596069,72.792992>> BREAK CASE SP_KNIFE_5 vArea1Min = <<-1179.405151,-355.255432,56.530029>> vArea1Max = <<-1198.064087,-357.836304,35.355511>> fAreaWidth = 12.500000 vArea2Min = <<-1178.385254,-361.878418,56.150814>> vArea2Max = <<-1197.103760,-364.700439,36.494755>> BREAK CASE SP_KNIFE_6 vArea1Min = <<-921.384583,-384.939972,137.018127>> vArea1Max = <<-912.432373,-429.228973,36.701126>> fAreaWidth = 16.000000 vArea2Min = <<-914.165771,-387.944366,137.079361>> vArea2Max = <<-906.253357,-424.691040,47.118820>> BREAK CASE SP_KNIFE_7 vArea1Min = <<-740.256409,246.452850,132.292191>> vArea1Max = <<-718.360229,201.004150,80.955711>> fAreaWidth = 20.000000 vArea2Min = <<-726.642883,253.067642,132.331940>> vArea2Max = <<-705.585815,210.433563,78.705727>> BREAK CASE SP_KNIFE_8 vArea1Min = <<-771.206787,268.272888,132.168915>> vArea1Max = <<-778.341675,313.114807,84.270538>> fAreaWidth = 16.000000 vArea2Min = <<-770.803528,310.862518,137.416138>> vArea2Max = <<-763.068054,269.044037,83.314743>> BREAK CASE SP_KNIFE_9 vArea1Min = <<259.220520,135.414612,136.708267>> vArea1Max = <<279.239624,128.137939,100.823303>> fAreaWidth = 16.000000 vArea2Min = <<261.969360,142.967636,136.688919>> vArea2Max = <<281.720337,134.955078,100.770416>> BREAK CASE SP_KNIFE_10 vArea1Min = <<393.547974,-30.871658,152.663452>> vArea1Max = <<369.962189,-23.884607,88.357758>> fAreaWidth = 8.000000 vArea2Min = <<390.535797,-36.088818,152.781250>> vArea2Max = <<368.127472,-28.818884,88.694473>> BREAK CASE SP_KNIFE_11 vArea1Min = <<114.313911,-648.429749,261.848785>> vArea1Max = <<131.078156,-733.768372,39.343933>> fAreaWidth = 20.000000 vArea2Min = <<124.846703,-646.657532,261.848785>> vArea2Max = <<140.050247,-737.427002,39.349304>> BREAK CASE SP_KNIFE_12 vArea1Min = <<-215.918991,-823.843628,126.022392>> vArea1Max = <<-193.223679,-761.778137,27.913818>> fAreaWidth = 20.000000 vArea2Min = <<-225.396957,-820.393738,126.081223>> vArea2Max = <<-202.943253,-758.257019,27.477341>> BREAK CASE SP_KNIFE_13 vArea1Min = <<-296.472504,-802.081543,95.401085>> vArea1Max = <<-278.135193,-747.784119,50.400459>> fAreaWidth = 20.000000 vArea2Min = <<-305.460236,-798.836914,95.481941>> vArea2Max = <<-285.737640,-745.095886,49.576508>> BREAK CASE SP_KNIFE_14 vArea1Min = <<-292.303436,-823.356873,95.376205>> vArea1Max = <<-258.599060,-835.563232,27.979462>> fAreaWidth = 20.000000 vArea2Min = <<-288.920624,-814.022034,95.375565>> vArea2Max = <<-255.211594,-826.256042,27.737495>> BREAK CASE SP_KNIFE_15 vArea1Min = <<-256.358856,-714.783752,110.161659>> vArea1Max = <<-212.905441,-730.532043,32.219460>> fAreaWidth = 20.000000 vArea2Min = <<-253.772324,-705.663208,110.173569>> vArea2Max = <<-210.058777,-722.674805,32.465363>> BREAK CASE SP_BRIDGE_47 vArea1Min = <<1808.214478,1949.245850,71.737068>> vArea1Max = <<1837.906250,2127.283203,52.804909>> fAreaWidth = 9.750000 vArea2Min = <<1802.785889,1950.261719,71.740021>> vArea2Max = <<1831.994385,2127.432617,52.838928>> BREAK CASE SP_BRIDGE_48 vArea1Min = <<2388.732910,2931.940918,46.626808>> vArea1Max = <<2426.680664,2883.066162,36.215237>> fAreaWidth = 10.000000 vArea2Min = <<2392.546631,2934.867188,46.626797>> vArea2Max = <<2430.332520,2885.908447,36.281479>> BREAK CASE SP_BRIDGE_49 vArea1Min = <<2700.055664,4836.380859,42.078537>> vArea1Max = <<2685.673340,4893.380371,30.908669>> fAreaWidth = 20.750000 vArea2Min = <<2685.671875,4821.652832,42.184708>> vArea2Max = <<2672.812256,4880.356445,31.133106>> BREAK CASE SP_BRIDGE_50 vArea1Min = <<-1053.446411,4766.245117,234.325119>> vArea1Max = <<-1040.263428,4737.156738,204.491638>> fAreaWidth = 5.000000 vArea2Min = <<-1051.414307,4767.192871,234.429306>> vArea2Max = <<-1037.954224,4738.354492,204.528152>> BREAK CASE SP_FREEWAY_1 vArea1Min = <<1001.145081,-987.113770,42.624561>> vArea1Max = <<1078.645020,-963.743530,28.933376>> fAreaWidth = 14.000000 vArea2Min = <<1002.864197,-992.898621,42.624561>> vArea2Max = <<1080.483643,-969.903381,28.883770>> BREAK CASE SP_FREEWAY_2 vArea1Min = <<952.504150,-847.661499,43.018440>> vArea1Max = <<1021.093079,-844.506287,29.719673>> fAreaWidth = 20.000000 vArea2Min = <<945.549438,-835.977661,43.156578>> vArea2Max = <<1016.363892,-835.386108,29.729702>> BREAK CASE SP_FREEWAY_3 vArea1Min = <<1212.476685,-1183.012573,46.473896>> vArea1Max = <<1267.188721,-1161.996704,32.482971>> fAreaWidth = 40.000000 vArea2Min = <<1206.009644,-1157.062988,47.936985>> vArea2Max = <<1258.374023,-1140.679932,32.429031>> BREAK ENDSWITCH ENDPROC PROC RESET_BRIDGE_CHECKS() bEnteredArea1 = FALSE bEnteredArea2 = FALSE bExitViaArea1 = FALSE bExitViaArea2 = FALSE bPassingThroughAreas = FALSE underBridgeStage = waitingForInteraction ENDPROC FUNC INT CHECK_BRIDGE_COMPLETION() INT completeCount, completeKnives, completeBridges completeBridges = GET_NUMBER_OF_COMPLETED_UNDER_BRIDGES() completeKnives = GET_NUMBER_OF_COMPLETED_KNIFE_FLIGHTS() //Update achievement progress IF (completeBridges+completeKnives)>0 SET_ACHIEVEMENT_PROGRESS_SAFE(ENUM_TO_INT(ACH29),completeBridges+completeKnives) ENDIF IF bIsKnife completeCount = completeKnives IF completeKnives >= 8 //NUMBER_OF_KNIVES/2 PRINTLN(" - At least half of all knives are complete, award achievement.") REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_KNFFLT) ELSE PRINTLN(" - ", completeKnives, " knives are complete, no achievement yet.") ENDIF ELSE completeCount = completeBridges IF completeBridges >= 50 PRESENCE_EVENT_UPDATESTAT_INT(SP0_WATER_CANNON_DEATHS, 100) PRINTLN(" - PRESENCE_EVENT_UPDATESTAT_INT 100") ELIF completeBridges >= 38 PRESENCE_EVENT_UPDATESTAT_INT(SP0_WATER_CANNON_DEATHS, 75) PRINTLN(" - PRESENCE_EVENT_UPDATESTAT_INT 75") ELIF completeBridges >= 25 PRINTLN(" - At least half of all bridges are complete, award percentage.") REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_UNDBRG) PRESENCE_EVENT_UPDATESTAT_INT(SP0_WATER_CANNON_DEATHS, 50) PRINTLN(" - PRESENCE_EVENT_UPDATESTAT_INT 50") ELIF completeBridges >= 13 PRESENCE_EVENT_UPDATESTAT_INT(SP0_WATER_CANNON_DEATHS, 25) PRINTLN(" - PRESENCE_EVENT_UPDATESTAT_INT 25") ENDIF ENDIF CPRINTLN(DEBUG_ACHIEVEMENT, "[ACHIEVEMENT]: ACH29 - Close Shave - :", completeKnives + completeBridges, "of", SP_NUMBER_OF_KNIVES + SP_NUMBER_OF_BRIDGES) IF (completeKnives = SP_NUMBER_OF_KNIVES) AND (completeBridges = SP_NUMBER_OF_BRIDGES) AWARD_ACHIEVEMENT(ACH29) // close shave ENDIF RETURN completeCount ENDFUNC PROC DRAW_FLY_UNDER_SPLASH() IF NOT IS_RESULT_SCREEN_DISPLAYING() IF HAS_SCALEFORM_MOVIE_LOADED(sfMovie) DRAW_SCALEFORM_MOVIE(sfMovie,0.5, 0.5, 1.0, 1.0, 100, 100, 100, 255 ) ENDIF ENDIF ENDPROC PROC CLEANUP_SCALEFORM() IF HAS_SCALEFORM_MOVIE_LOADED(sfMovie) SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sfMovie) ENDIF ENDPROC BOOL bShouldTerminate = FALSE PROC GET_CURRENT_BRIDGE() INT i REPEAT SP_NUMBER_OF_CHALLENGES i IF ARE_VECTORS_ALMOST_EQUAL(vInput, vTriggerPoint[i]) IF i = SP_EXTRA_SUSP_1 OR i = SP_EXTRA_SUSP_2 PRINTLN(" - Bridge is ROADSUSP_PO1") fStartChecking = 700*700 currentBridge = SP_ROADSUSP_PO1 ELSE currentBridge = i ENDIF ENDIF ENDREPEAT IF currentBridge < 32 IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, currentBridge) bShouldTerminate = TRUE ENDIF ELIF currentBridge < 64 IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2, (currentBridge - 32)) bShouldTerminate = TRUE ENDIF ELSE IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3, (currentBridge - 64)) bShouldTerminate = TRUE ENDIF ENDIF IF bShouldTerminate PRINTLN(" - Bridge ", currentBridge, " has already been completed.") //TERMINATE_THIS_THREAD() ELSE GET_CURRENT_BRIDGE_INFO(currentBridge) ENDIF ENDPROC PROC PRINT_SPLASH() //INT iSplashSoundID SWITCH splashStage CASE loadScaleform IF bPrintSplash AND NOT bShouldTerminate IF NOT IS_RESULT_SCREEN_DISPLAYING() sfMovie = REQUEST_SCALEFORM_MOVIE("MIDSIZED_MESSAGE") WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(sfMovie)) WAIT(0) ENDWHILE BEGIN_SCALEFORM_MOVIE_METHOD(sfMovie, "SHOW_BRIDGES_KNIVES_PROGRESS") IF bIsKnife SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("FU_KNIFE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(SP_NUMBER_OF_KNIVES) ELSE SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("FU_TITLE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(SP_NUMBER_OF_BRIDGES) ENDIF //CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("FU_PASS") IF bIsKnife SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("FU_CHALL_KN") ELSE SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("FU_CHALLENGE") ENDIF SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(CHECK_BRIDGE_COMPLETION()) END_SCALEFORM_MOVIE_METHOD() iPrintedCompletion = CHECK_BRIDGE_COMPLETION() g_bCompletedBridgesCount = iPrintedCompletion //iSplashSoundID = GET_SOUND_ID() //PLAY_SOUND_FRONTEND(iSplashSoundID, "CHECKPOINT_UNDER_THE_BRIDGE", "HUD_MINI_GAME_SOUNDSET") SETTIMERB(0) PLAY_SOUND_FRONTEND( -1,"UNDER_THE_BRIDGE", "HUD_AWARDS") ENDIF splashStage = printSplash ENDIF BREAK CASE printSplash IF TIMERB() > DEFAULT_GOD_TEXT_TIME/2 OR IS_SCREEN_FADED_OUT() OR NOT IS_PLAYER_PLAYING(PLAYER_ID()) OR IS_RESULT_SCREEN_DISPLAYING() OR NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()) OR IS_REPLAY_BEING_PROCESSED() OR IS_MINIGAME_SPLASH_SHOWING() BEGIN_SCALEFORM_MOVIE_METHOD(sfMovie, "SHARD_ANIM_OUT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(HUD_COLOUR_WHITE)) SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.33) END_SCALEFORM_MOVIE_METHOD() SETTIMERB(0) splashStage = animateSplash ELSE DRAW_FLY_UNDER_SPLASH() IF g_bCompletedBridgesCount > iPrintedCompletion splashStage = cleanupSplash ENDIF ENDIF BREAK CASE animateSplash IF TIMERB() > 500 OR IS_SCREEN_FADED_OUT() OR NOT IS_PLAYER_PLAYING(PLAYER_ID()) OR IS_RESULT_SCREEN_DISPLAYING() OR NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()) OR IS_REPLAY_BEING_PROCESSED() OR IS_MINIGAME_SPLASH_SHOWING() splashStage = cleanupSplash ELSE DRAW_FLY_UNDER_SPLASH() IF g_bCompletedBridgesCount > iPrintedCompletion splashStage = cleanupSplash ENDIF ENDIF BREAK CASE cleanupSplash CLEANUP_SCALEFORM() bPrintSplash = FALSE GET_CURRENT_BRIDGE() bShouldTerminate = TRUE splashStage = loadScaleform BREAK ENDSWITCH ENDPROC PROC STORE_BRIDGE_AS_COMPLETE() //Check if the current bridge has already been completed BOOL bAlreadySet IF currentBridge < 32 bAlreadySet= IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, currentBridge) ELIF currentBridge < 64 bAlreadySet = IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2, (currentBridge - 32)) ELSE bAlreadySet = IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3, (currentBridge - 64)) ENDIF IF bAlreadySet //Exit as this stat has already been incremented CPRINTLN(debug_ambient," - This bridge has already been completed, skipping stat increase") ELSE CDEBUG1LN(debug_ambient," - Storing bridge complete for bridge ",currentBridge) IF NOT bShouldTerminate IF bIsKnife STAT_INCREMENT(SP_KNIFE_FLIGHTS_COUNT,1.0) ELSE STAT_INCREMENT(SP_UNDER_THE_BRIDGE_COUNT,1.0) ENDIF INCREMENT_PLAYER_PED_STAT(GET_CURRENT_PLAYER_PED_ENUM(), PS_FLYING_ABILITY, 3) MAKE_AUTOSAVE_REQUEST() ENDIF IF currentBridge < 32 SET_BIT(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, currentBridge) ELIF currentBridge < 64 SET_BIT(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2, (currentBridge - 32)) ELSE SET_BIT(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3, (currentBridge - 64)) ENDIF g_bUnderTheBridgeTriggered = TRUE CHECK_BRIDGE_COMPLETION() bPrintSplash = TRUE ENDIF #IF IS_DEBUG_BUILD IF DOES_BLIP_EXIST(blipBridge[currentBridge]) SET_BLIP_COLOUR(blipBridge[currentBridge], BLIP_COLOUR_GREEN) ENDIF #ENDIF ENDPROC INT iTerminateTimer PROC TERMINATE_IF_ALREADY_COMPLETE() IF GET_GAME_TIMER() - iTerminateTimer > 500 IF currentBridge = SP_ROADSUSP_PO1 IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, currentBridge) bShouldTerminate = TRUE ENDIF ENDIF //CDEBUG3LN(DEBUG_MISSION, " Terminate check") //Commenting out to prevent constant debug spam. iTerminateTimer = GET_GAME_TIMER() ENDIF ENDPROC PROC SETUP_DEBUG() #if IS_DEBUG_BUILD widgetGroup = START_WIDGET_GROUP("flyUnderBridges") ADD_WIDGET_BOOL("Add bit field widgets", bAddBitFieldWidgets) ADD_WIDGET_BOOL("Recheck bridge completion", bCheckBridgeCompletion) ADD_WIDGET_BOOL("Blip all bridges", bBlipAllBridges) ADD_WIDGET_BOOL("Test splash", bPrintSplash) STOP_WIDGET_GROUP() #ENDIF ENDPROC PROC RUN_DEBUG() #if IS_DEBUG_BUILD INT iTemp TEXT_LABEL_23 blipName, blipNumberString IF bAddBitFieldWidgets IF NOT bBitFieldWidgetsCreated SET_CURRENT_WIDGET_GROUP(widgetGroup) ADD_BIT_FIELD_WIDGET("Bridges Flown Under", g_savedGlobals.sAmbient.iBridgesFlownUnderFlags) ADD_BIT_FIELD_WIDGET("Bridges Flown Under (Continued)", g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2) ADD_BIT_FIELD_WIDGET("Bridges Flown Under (Continued Again)", g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3) CLEAR_CURRENT_WIDGET_GROUP(widgetGroup) bBitFieldWidgetsCreated = TRUE ENDIF bAddBitFieldWidgets = FALSE ENDIF IF bCheckBridgeCompletion CHECK_BRIDGE_COMPLETION() bCheckBridgeCompletion = FALSE ENDIF IF bBlipAllBridges REPEAT SP_NUMBER_OF_CHALLENGES iTemp IF DOES_BLIP_EXIST(blipBridge[iTemp]) REMOVE_BLIP(blipBridge[iTemp]) ELSE blipBridge[iTemp] = ADD_BLIP_FOR_COORD(vTriggerPoint[iTemp]) blipName = "Bridge " blipNumberString = GET_STRING_FROM_INT(iTemp) blipName += blipNumberString SET_BLIP_NAME_FROM_ASCII(blipBridge[iTemp], blipName) IF iTemp < 32 IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags, iTemp) SET_BLIP_COLOUR(blipBridge[iTemp], BLIP_COLOUR_GREEN) ELSE SET_BLIP_COLOUR(blipBridge[iTemp], BLIP_COLOUR_RED) ENDIF ELIF iTemp < 64 IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags2, (iTemp - 32)) SET_BLIP_COLOUR(blipBridge[iTemp], BLIP_COLOUR_GREEN) ELSE SET_BLIP_COLOUR(blipBridge[iTemp], BLIP_COLOUR_RED) ENDIF ELSE IF IS_BIT_SET(g_savedGlobals.sAmbient.iBridgesFlownUnderFlags3, (iTemp - 64)) SET_BLIP_COLOUR(blipBridge[iTemp], BLIP_COLOUR_GREEN) ELSE SET_BLIP_COLOUR(blipBridge[iTemp], BLIP_COLOUR_RED) ENDIF ENDIF ENDIF ENDREPEAT bBlipAllBridges = FALSE ENDIF #ENDIF ENDPROC FUNC BOOL DOES_PLAYER_MEET_FLIGHT_REQUIREMENTS() IF bIsKnife IF IS_PED_IN_ANY_PLANE(PLAYER_PED_ID()) IF GET_ENTITY_UPRIGHT_VALUE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) > -0.6 AND GET_ENTITY_UPRIGHT_VALUE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) < 0.6 CPRINTLN(DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " - DOES_PLAYER_MEET_FLIGHT_REQUIREMENTS()") RETURN TRUE ENDIF ENDIF ELSE RETURN TRUE ENDIF RETURN FALSE ENDFUNC SCRIPT (coords_struct in_coords) vInput = in_coords.vec_coord[0] PRINTLN(" - Launched at ", vInput) IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_SP_TO_MP|FORCE_CLEANUP_FLAG_MAGDEMO) TERMINATE_THIS_THREAD() ENDIF IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_ANIMAL) //B* - 2061273 OR IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) OR IS_REPEAT_PLAY_ACTIVE() //B* 2049712 - 'ding' in the plane scene TERMINATE_THIS_THREAD() ENDIF CHECK_BRIDGE_COMPLETION() SETUP_BRIDGE_INFO() GET_CURRENT_BRIDGE() SETUP_DEBUG() PRINTLN(" - Launched and checking bridge number ", currentBridge) WHILE TRUE WAIT(0) RUN_DEBUG() PRINT_SPLASH() IF IS_WORLD_POINT_WITHIN_BRAIN_ACTIVATION_RANGE() IF IS_PLAYER_PLAYING(PLAYER_ID()) TERMINATE_IF_ALREADY_COMPLETE() SWITCH underBridgeStage CASE waitingForInteraction // IF TIMERA() > (1000/NUMBER_OF_BRIDGES) // Check each area only once per second. IF NOT IS_PED_INJURED(PLAYER_PED_ID()) IF VDIST2(GET_ENTITY_COORDS(PLAYER_PED_ID(), FALSE), vTriggerPoint[currentBridge]) < fStartChecking // Wait until player is within fStartChecking before starting checks. IF IS_PED_IN_ANY_HELI(PLAYER_PED_ID()) OR IS_PED_IN_ANY_PLANE(PLAYER_PED_ID()) IF currentBridge = SP_KNIFE_SM01 OR currentBridge = SP_KNIFE_2 OR currentBridge = SP_KNIFE_3 OR currentBridge = SP_KNIFE_4 OR currentBridge = SP_KNIFE_5 OR currentBridge = SP_KNIFE_6 OR currentBridge = SP_KNIFE_7 OR currentBridge = SP_KNIFE_8 OR currentBridge = SP_KNIFE_9 OR currentBridge = SP_KNIFE_10 OR currentBridge = SP_KNIFE_11 OR currentBridge = SP_KNIFE_12 OR currentBridge = SP_KNIFE_13 OR currentBridge = SP_KNIFE_14 OR currentBridge = SP_KNIFE_15 bIsKnife = TRUE ELSE bIsKnife = FALSE ENDIF IF IS_VEHICLE_DRIVEABLE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) IF DOES_PLAYER_MEET_FLIGHT_REQUIREMENTS() IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) bEnteredArea1 = TRUE underBridgeStage = checkForExit ENDIF IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) bEnteredArea2 = TRUE underBridgeStage = checkForExit ENDIF ENDIF ENDIF ENDIF ELSE // IF NOT bEnteredArea1 // OR NOT bEnteredArea2 // currentBridge++ // IF currentBridge = NUMBER_OF_BRIDGES // currentBridge = 0 // ENDIF // ENDIF ENDIF ENDIF SETTIMERA(0) // ENDIF BREAK CASE checkForExit IF NOT IS_PED_INJURED(PLAYER_PED_ID()) IF NOT IS_PED_IN_ANY_HELI(PLAYER_PED_ID()) AND NOT IS_PED_IN_ANY_PLANE(PLAYER_PED_ID()) RESET_BRIDGE_CHECKS() PRINTLN(" - Player is no longer in a flying vehicle. Reset & wait.") ELSE IF NOT IS_VEHICLE_DRIVEABLE(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) RESET_BRIDGE_CHECKS() PRINTLN(" - Player's vehicle is no longer driveable. Reset & wait.") ELIF NOT IS_ENTITY_IN_AIR(GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID())) RESET_BRIDGE_CHECKS() PRINTLN(" - Player's vehicle is touching the ground. Reset & wait.") ENDIF ENDIF IF bEnteredArea1 IF bPassingThroughAreas IF bExitViaArea2 IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) //Passed Through RESET_BRIDGE_CHECKS() STORE_BRIDGE_AS_COMPLETE() REPLAY_RECORD_BACK_FOR_TIME(3) PRINTLN(" - Succesful! bExitViaArea2 for bridge number ", currentBridge, ".") ENDIF ELSE IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) bExitViaArea2 = TRUE ELSE IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) //Never passed through RESET_BRIDGE_CHECKS() PRINTLN(" - Unsuccessful pass under bridge ", currentBridge, ".") ENDIF ENDIF ENDIF ELSE IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) bPassingThroughAreas = TRUE ELSE IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) //Never passed through RESET_BRIDGE_CHECKS() PRINTLN(" - Unsuccessful pass under bridge ", currentBridge, ".") ENDIF ENDIF ENDIF ELIF bEnteredArea2 IF bPassingThroughAreas IF bExitViaArea1 IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) //Passed Through RESET_BRIDGE_CHECKS() STORE_BRIDGE_AS_COMPLETE() REPLAY_RECORD_BACK_FOR_TIME(3) PRINTLN(" - Succesful! bExitViaArea1 for bridge number ", currentBridge, ".") ENDIF ELSE IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) bExitViaArea1 = TRUE ELSE IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) //Never passed through RESET_BRIDGE_CHECKS() PRINTLN(" - Unsuccessful pass under bridge ", currentBridge, ".") ENDIF ENDIF ENDIF ELSE IF IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) bPassingThroughAreas = TRUE ELSE IF NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea1Min, vArea1Max, fAreaWidth) AND NOT IS_ENTITY_IN_ANGLED_AREA(PLAYER_PED_ID(), vArea2Min, vArea2Max, fAreaWidth) //Never passed through RESET_BRIDGE_CHECKS() PRINTLN(" - Unsuccessful pass under bridge ", currentBridge, ".") ENDIF ENDIF ENDIF ENDIF ENDIF BREAK ENDSWITCH ENDIF ELSE IF splashStage = loadScaleform TERMINATE_THIS_THREAD() ENDIF ENDIF ENDWHILE ENDSCRIPT