Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Script by: Bullet
- Map by: Erza
- Mission Base: Parkour
- Mission Type: Parkour
- Mission Type ID: 7
- */
- //==============================================================================
- // Includes
- //==============================================================================
- #include <a_samp>
- #include <crashdetect>
- #include <fixes2>
- #include "..\filterscripts\MM\stuff\defines"
- #include "..\filterscripts\MM\stuff\serverkeymsg"
- //==============================================================================
- // Defines
- //==============================================================================
- #define MISSION_NAME "Narrow Track"
- #define Health Float:0x7F800000
- #define MAX_MAP_OBJECTS 148
- #define CLASS_POSTION -1357.6470,3904.8469,11.5787
- #define CLASS_CAMERA -1357.7566,3895.3135,11.5787
- #define CLASS_FACING_AGNLE 178.8214
- #define Z_LIMIT 2
- #define START_TIME 20
- //==============================================================================
- // Per mission functions
- //==============================================================================
- enum cp_enum
- {
- Float:cp_x,
- Float:cp_y,
- Float:cp_z,
- cp_type,
- Float:cp_size
- };
- new const cp[][cp_enum] =
- {
- {3390.03540, -1934.06519, 21.44539,0,10.0},
- {3389.73071, -1905.71033, 18.44244,0,10.0},
- {3390.34033, -1862.79895, 3.28515,0,10.0},
- {3381.85474, -1755.46753, 9.46028,0,10.0},
- {3373.59082, -1792.29333, 2.97107,0,10.0},
- {3373.76196, -1815.65527, 3.15511,0,10.0},
- {3368.08203, -1851.85095, 6.03253,0,10.0},
- {3360.39868, -1813.48254, 9.02437,0,10.0},
- {3358.14844, -1708.54004, -0.03291,0,10.0},
- {3357.11377, -1622.58606, 12.98087,0,10.0},
- {3354.25854, -1531.85022, 16.42716,0,10.0},
- {3354.78174, -1498.82983, 27.52671,0,10.0},
- {3343.52051, -1473.24243, 40.55153,1,10.0}
- };
- enum ped_enum
- {
- TeamID,
- Skin,
- Float:SpawnX,
- Float:SpawnY,
- Float:SpawnZ,
- Float:SpawnAngle,
- SpawnInterior,
- VirtualWorld,
- Weapon1,
- Ammo1,
- Weapon2,
- Ammo2,
- Weapon3,
- Ammo3,
- };
- new PedInfo[][ped_enum] = {
- {TEAM_DEFEND,0,-1553.1431,3381.9172,37.3405,357.2542,0,0,0,0,0,0,0,0}
- };
- #if MAX_MAP_OBJECTS != 0
- new Object[MAX_MAP_OBJECTS];
- CreateMap()
- {
- Object[0] = CreateObject(12990,3390.6999500,-1787.9000200,3.0000000,0.0000000,0.0000000,0.0000000); //
- Object[1] = CreateObject(12990,3390.6999500,-1812.6999500,3.0000000,0.0000000,0.0000000,0.0000000); //
- Object[2] = CreateObject(931,3392.5000000,-1826.5000000,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[3] = CreateObject(931,3388.9003900,-1834.4003900,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[4] = CreateObject(5627,3382.1001000,-1763.4000200,7.5000000,0.0000000,0.0000000,0.0000000); //
- Object[5] = CreateObject(12990,3373.3000500,-1787.6999500,3.0000000,0.0000000,0.0000000,0.0000000); //
- Object[6] = CreateObject(12990,3373.3000500,-1814.1999500,3.0000000,0.0000000,0.0000000,0.0000000); //
- Object[7] = CreateObject(13635,3368.1001000,-1840.5000000,6.0000000,0.0000000,0.0000000,1.0000000); //
- Object[8] = CreateObject(16078,3360.3999000,-1815.0000000,8.4000000,0.0000000,0.0000000,294.0000000); //
- Object[9] = CreateObject(3865,3368.6999500,-1851.8000500,7.8100000,20.0000000,356.0000000,275.5000000); //
- Object[10] = CreateObject(931,3364.0000000,-1851.4000200,3.6000000,0.0000000,353.2500000,0.0000000); //
- Object[11] = CreateObject(931,3364.0000000,-1852.9000200,3.6000000,0.0000000,353.2500000,0.0000000); //
- Object[12] = CreateObject(931,3359.8999000,-1851.5000000,2.8000000,0.0000000,353.2489900,0.0000000); //
- Object[13] = CreateObject(931,3359.8999000,-1852.9000200,2.8000000,0.0000000,353.2489900,0.0000000); //
- Object[14] = CreateObject(931,3358.6001000,-1851.5999800,2.5000000,0.0000000,353.2489900,0.0000000); //
- Object[15] = CreateObject(931,3358.6001000,-1852.9000200,2.5000000,0.0000000,353.2489900,0.0000000); //
- Object[16] = CreateObject(16078,3360.1999500,-1767.1999500,8.4000000,0.0000000,0.0000000,116.5000000); //
- Object[17] = CreateObject(1395,3358.3999000,-1707.3000500,5.0000000,0.0000000,268.7500000,91.7500000); //
- Object[18] = CreateObject(7025,3357.5000000,-1667.6999500,13.4000000,0.0000000,0.0000000,272.0000000); //
- Object[19] = CreateObject(11431,3357.8000500,-1654.8000500,12.2000000,0.0000000,0.0000000,0.0000000); //
- Object[20] = CreateObject(11431,3357.8000500,-1647.6999500,12.2000000,0.0000000,0.0000000,0.0000000); //
- Object[21] = CreateObject(11431,3357.6001000,-1640.5000000,12.2000000,0.0000000,0.0000000,0.0000000); //
- Object[22] = CreateObject(11431,3357.3999000,-1631.5000000,12.2000000,0.0000000,0.0000000,0.0000000); //
- Object[23] = CreateObject(18365,-1979.3000500,-2652.8000500,66.8000000,0.0000000,0.0000000,0.0000000); //
- Object[24] = CreateObject(18365,3355.1001000,-1557.0000000,20.0000000,0.0000000,0.0000000,316.0000000); //
- Object[25] = CreateObject(3631,3346.5000000,-1493.5000000,28.8000000,0.0000000,0.0000000,0.0000000); //
- Object[26] = CreateObject(3631,3353.8000500,-1493.5000000,28.8000000,0.0000000,0.0000000,0.0000000); //
- Object[27] = CreateObject(3631,3360.8999000,-1493.4000200,28.8000000,0.0000000,0.0000000,0.0000000); //
- Object[28] = CreateObject(13644,3352.1999500,-1488.5999800,30.4000000,0.0000000,0.0000000,182.0000000); //
- Object[29] = CreateObject(13644,3344.6001000,-1478.1999500,36.0000000,0.0000000,358.0000000,185.2500000); //
- Object[30] = CreateObject(13644,3348.4003900,-1483.0996100,33.0000000,0.0000000,357.9950000,185.2460000); //
- Object[31] = CreateObject(12990,3390.6001000,-1838.0999800,3.0000000,0.0000000,0.0000000,0.0000000); //
- Object[32] = CreateObject(931,3390.8000500,-1818.5999800,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[33] = CreateObject(931,3389.0000000,-1808.5999800,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[34] = CreateObject(931,3392.3999000,-1808.3000500,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[35] = CreateObject(931,3390.3000500,-1801.0000000,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[36] = CreateObject(931,3391.1999500,-1800.9000200,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[37] = CreateObject(931,3389.6001000,-1788.9000200,4.2000000,0.0000000,0.0000000,180.0000000); //
- Object[38] = CreateObject(931,3391.8999000,-1788.9000200,4.2000000,0.0000000,0.0000000,179.9950000); //
- Object[39] = CreateObject(931,3392.0000000,-1778.8000500,4.2000000,0.0000000,0.0000000,179.7450000); //
- Object[40] = CreateObject(931,3389.6999500,-1778.8000500,4.2000000,0.0000000,0.0000000,179.9950000); //
- Object[41] = CreateObject(931,3389.1999500,-1834.4000200,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[42] = CreateObject(931,3392.2002000,-1834.4003900,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[43] = CreateObject(3507,3372.1999500,-1754.6999500,8.1000000,0.0000000,0.0000000,0.0000000); //
- Object[44] = CreateObject(3507,3391.8000500,-1754.3000500,8.1000000,0.0000000,0.0000000,0.0000000); //
- Object[45] = CreateObject(839,3372.8000500,-1800.3000500,4.5000000,0.0000000,0.0000000,102.0000000); //
- Object[46] = CreateObject(2583,3371.1001000,-1827.5999800,4.3000000,0.0000000,0.0000000,87.2500000); //
- Object[47] = CreateObject(2582,3375.5000000,-1827.5000000,4.0000000,0.0000000,0.0000000,270.0000000); //
- Object[48] = CreateObject(3799,3360.3000500,-1771.9000200,8.1000000,0.0000000,0.0000000,0.0000000); //
- Object[49] = CreateObject(3799,3360.1999500,-1761.9000200,8.1000000,0.0000000,0.0000000,0.5000000); //
- Object[50] = CreateObject(12990,3390.5000000,-1866.2002000,3.0000000,0.0000000,0.0000000,0.0000000); //
- Object[51] = CreateObject(12990,3385.9003900,-1866.0996100,3.0000000,0.0000000,0.0000000,182.0000000); //
- Object[52] = CreateObject(12990,3394.8999000,-1866.3000500,3.0000000,0.0000000,0.0000000,0.0000000); //
- Object[53] = CreateObject(3572,3393.8000500,-1881.4000200,4.7000000,0.0000000,0.0000000,0.0000000); //
- Object[54] = CreateObject(3572,3385.8000500,-1881.4000200,4.7000000,0.0000000,0.0000000,0.0000000); //
- Object[55] = CreateObject(3572,3393.8000500,-1883.9000200,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[56] = CreateObject(3572,3385.8000500,-1883.8000500,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[57] = CreateObject(3572,3393.8999000,-1886.3000500,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[58] = CreateObject(3572,3385.8000500,-1886.1999500,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[59] = CreateObject(3572,3385.8000500,-1888.5999800,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[60] = CreateObject(3572,3393.8999000,-1888.6999500,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[61] = CreateObject(2583,3397.5000000,-1889.1999500,9.6000000,0.0000000,0.0000000,269.9950000); //
- Object[62] = CreateObject(2582,3382.1001000,-1888.6999500,9.6000000,0.0000000,0.0000000,91.5000000); //
- Object[63] = CreateObject(3799,3360.1001000,-1759.1999500,10.0000000,0.0000000,0.0000000,0.2500000); //
- Object[64] = CreateObject(3799,3360.0000000,-1751.8000500,14.0000000,0.0000000,0.0000000,0.0000000); //
- Object[65] = CreateObject(3572,3385.8000500,-1891.0999800,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[66] = CreateObject(3572,3393.8000500,-1891.1999500,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[67] = CreateObject(2477,3382.0000000,-1887.0999800,9.2000000,0.0000000,0.0000000,80.0000000); //
- Object[68] = CreateObject(2935,3343.1001000,-1474.6999500,39.1000000,0.0000000,0.2470000,273.2460000); //
- Object[69] = CreateObject(3799,3360.1005900,-1756.5000000,12.0000000,0.0000000,0.0000000,0.0000000); //
- Object[70] = CreateObject(3572,3385.7998000,-1893.5996100,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[71] = CreateObject(3572,3393.6999500,-1893.5999800,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[72] = CreateObject(3572,3385.6001000,-1896.0000000,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[73] = CreateObject(3572,3393.6001000,-1896.0000000,7.3000000,0.0000000,0.0000000,0.0000000); //
- Object[74] = CreateObject(2935,3393.1001000,-1899.5999800,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[75] = CreateObject(2935,3386.1001000,-1899.5999800,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[76] = CreateObject(2935,3386.5000000,-1916.0999800,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[77] = CreateObject(2935,3393.6005900,-1916.0996100,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[78] = CreateObject(2935,3393.5000000,-1919.1999500,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[79] = CreateObject(2935,3386.6001000,-1919.1999500,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[80] = CreateObject(2935,3386.6001000,-1927.4000200,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[81] = CreateObject(2935,3393.6999500,-1927.4000200,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[82] = CreateObject(2934,3386.0000000,-1902.4000200,17.0000000,0.0000000,0.0000000,90.0000000); //
- Object[83] = CreateObject(2934,3393.1999500,-1902.4000200,17.0000000,0.0000000,0.0000000,90.0000000); //
- Object[84] = CreateObject(2934,3393.1001000,-1905.5000000,17.0000000,0.0000000,0.0000000,90.0000000); //
- Object[85] = CreateObject(2934,3386.0000000,-1905.5000000,17.0000000,0.0000000,0.0000000,90.0000000); //
- Object[86] = CreateObject(2934,3386.0000000,-1908.5999800,17.0000000,0.0000000,0.0000000,90.0000000); //
- Object[87] = CreateObject(2934,3393.1001000,-1908.5999800,17.0000000,0.0000000,0.0000000,90.0000000); //
- Object[88] = CreateObject(2935,3393.6999500,-1930.5000000,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[89] = CreateObject(2935,3386.6001000,-1930.5000000,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[90] = CreateObject(2935,3386.6001000,-1933.5999800,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[91] = CreateObject(2935,3393.6999500,-1933.5999800,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[92] = CreateObject(2935,3393.6999500,-1936.6999500,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[93] = CreateObject(2935,3386.6001000,-1936.6999500,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[94] = CreateObject(2935,3386.6005900,-1939.7998000,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[95] = CreateObject(2935,3393.6999500,-1939.8000500,20.0000000,0.0000000,0.0000000,90.0000000); //
- Object[96] = CreateObject(3529,3385.0000000,-1944.5000000,20.8900000,0.0000000,88.0000000,270.0000000); //
- Object[97] = CreateObject(3529,3395.0000000,-1949.4003900,21.0600000,0.0000000,87.9950000,270.0000000); //
- Object[98] = CreateObject(3529,3395.0000000,-1944.5000000,20.8900000,0.0000000,87.9950000,270.0000000); //
- Object[99] = CreateObject(3529,3390.0000000,-1949.4003900,21.0600000,0.0000000,87.9950000,270.0000000); //
- Object[100] = CreateObject(3529,3390.0000000,-1944.5000000,20.8900000,0.0000000,87.9950000,270.0000000); //
- Object[101] = CreateObject(3529,3385.0000000,-1949.4003900,21.0600000,0.0000000,87.9950000,270.0000000); //
- Object[102] = CreateObject(3529,3390.0000000,-1944.5000000,20.8900000,0.0000000,87.9950000,270.0000000); //
- Object[103] = CreateObject(3502,3390.0000000,-1955.6999500,23.3000000,0.0000000,0.0000000,0.0000000); //
- Object[104] = CreateObject(3502,3395.0000000,-1955.8000500,23.2000000,0.0000000,0.0000000,0.0000000); //
- Object[105] = CreateObject(3502,3385.1001000,-1955.8000500,23.3000000,0.0000000,0.0000000,0.0000000); //
- Object[106] = CreateObject(1437,3395.6999500,-1910.5000000,18.9000000,67.9000000,0.0000000,0.0000000); //
- Object[107] = CreateObject(1437,3385.0000000,-1910.7002000,18.9000000,67.8960000,0.0000000,0.0000000); //
- Object[108] = CreateObject(1437,3390.1001000,-1910.5999800,18.9000000,67.8960000,0.0000000,0.0000000); //
- Object[109] = CreateObject(2582,3382.1001000,-1890.1999500,9.6000000,0.0000000,0.0000000,91.5000000); //
- Object[110] = CreateObject(2582,3382.1999500,-1891.5000000,9.6000000,0.0000000,0.0000000,91.5000000); //
- Object[111] = CreateObject(2582,3382.3000500,-1892.9000200,9.6000000,0.0000000,0.0000000,91.5000000); //
- Object[112] = CreateObject(2583,3397.5000000,-1887.6999500,9.6000000,0.0000000,0.0000000,269.9950000); //
- Object[113] = CreateObject(2583,3397.5000000,-1886.1999500,9.6000000,0.0000000,0.0000000,269.9950000); //
- Object[114] = CreateObject(2579,3397.3999000,-1890.5000000,9.6000000,0.0000000,0.0000000,268.0000000); //
- Object[115] = CreateObject(2579,3397.3000500,-1892.0000000,9.6000000,0.0000000,0.0000000,267.9950000); //
- Object[116] = CreateObject(2579,3397.3999000,-1884.5999800,9.6000000,0.0000000,0.0000000,267.9950000); //
- Object[117] = CreateObject(942,3385.6001000,-1919.5000000,22.9000000,0.0000000,0.0000000,0.0000000); //
- Object[118] = CreateObject(942,3390.6999500,-1919.5000000,22.9000000,0.0000000,0.0000000,0.0000000); //
- Object[119] = CreateObject(942,3394.3999000,-1919.5000000,22.9000000,0.0000000,0.0000000,0.0000000); //
- Object[120] = CreateObject(2480,3382.5000000,-1892.3000500,9.2000000,0.0000000,0.0000000,0.0000000); //
- Object[121] = CreateObject(2480,3382.3000500,-1885.6999500,9.2000000,0.0000000,2.0000000,78.0000000); //
- Object[122] = CreateObject(2464,3383.1999500,-1884.5999800,8.8000000,0.0000000,0.0000000,0.0000000); //
- Object[123] = CreateObject(931,3392.0000000,-1847.5999800,4.0000000,0.0000000,0.0000000,180.0000000); //
- Object[124] = CreateObject(931,3389.8000500,-1847.5999800,4.0000000,0.0000000,0.0000000,177.9950000); //
- Object[125] = CreateObject(2465,3383.0000000,-1883.1999500,8.9000000,0.0000000,0.0000000,0.0000000); //
- Object[126] = CreateObject(2935,3384.8000500,-1963.4000200,20.3000000,0.0000000,0.0000000,176.0000000); //
- Object[127] = CreateObject(2935,3389.6999500,-1963.5999800,20.3000000,0.0000000,0.0000000,175.9950000); //
- Object[128] = CreateObject(2935,3394.8000500,-1963.8000500,20.3000000,0.0000000,0.0000000,175.9950000); //
- Object[129] = CreateObject(2935,3384.3000500,-1970.5000000,20.3000000,0.0000000,0.0000000,175.9950000); //
- Object[130] = CreateObject(2935,3389.1999500,-1970.6999500,20.3000000,0.0000000,0.0000000,175.9950000); //
- Object[131] = CreateObject(2935,3394.3000500,-1970.9000200,20.3000000,0.0000000,0.0000000,175.9950000); //
- Object[132] = CreateObject(980,3390.1001000,-1976.9000200,21.3000000,90.0000000,0.0000000,356.0000000); //
- Object[133] = CreateObject(980,3401.6838400,-1977.1383100,21.3000000,90.0000000,0.0000000,353.9950000); //
- Object[134] = CreateObject(980,3387.5000000,-1982.0000000,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[135] = CreateObject(980,3389.8000500,-1982.4000200,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[136] = CreateObject(980,3387.3000500,-1987.1999500,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[137] = CreateObject(980,3389.6999500,-1987.4000200,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[138] = CreateObject(980,3389.5000000,-1992.5999800,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[139] = CreateObject(980,3386.8999000,-1992.6999500,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[140] = CreateObject(2935,3342.8999000,-1471.6999500,39.1000000,0.0000000,0.2470000,273.2460000); //
- Object[141] = CreateObject(980,3401.0349100,-1988.1165800,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[142] = CreateObject(980,3400.9475100,-1993.0553000,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[143] = CreateObject(980,3401.3571800,-1982.4404300,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[144] = CreateObject(980,3378.6340300,-1976.5999800,21.3000000,90.0000000,0.0000000,356.0000000); //
- Object[145] = CreateObject(980,3378.3183600,-1981.7794200,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[146] = CreateObject(980,3378.0300300,-1987.3568100,21.3000000,90.0000000,0.0000000,357.9950000); //
- Object[147] = CreateObject(980,3377.8249500,-1992.6759000,21.3000000,90.0000000,0.0000000,357.9950000); //
- }
- #endif
- //==============================================================================
- // Basic vars
- //==============================================================================
- new bool:MissionStarted;
- new bool:ObjectiveStarted;
- new bool:MissionCancelled;
- new GMTimer;
- new GMSec;
- new TotalPlayers;
- new CurrentRacePos;
- new MAX_CPs;
- new RaceMin,RaceSec,RaceMili;
- new randA;
- native IsValidVehicle(vehicleid);
- enum playersdata
- {
- UserName[MAX_PLAYER_NAME],
- rSec,
- rMin,
- rMili,
- CurrentCheckpoint,
- MissionFinished,
- PlayerClassID,
- PlayerCounted,
- rBestMin,
- rBestSec,
- rBestMili
- };
- new PlayerMissionInfo[MAX_PLAYERS][playersdata];
- //==============================================================================
- // Basic script
- //==============================================================================
- main()
- {
- print("----------------------------------");
- print(" Mission: "MISSION_NAME" started.");
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- MissionStarted= true;
- #if MAX_MAP_OBJECTS != 0
- CreateMap();
- #endif
- for(new i=0; i<sizeof(PedInfo); i++)
- {
- AddPlayerClassEx(PedInfo[i][TeamID],PedInfo[i][Skin],PedInfo[i][SpawnX],PedInfo[i][SpawnY],PedInfo[i][SpawnZ],PedInfo[i][SpawnAngle],0,0,0,0,0,0);
- }
- if(CallRemoteFunction("GetCurrentMissionCJWalk","")) UsePlayerPedAnims();
- GMTimer = SetTimer("GMClock",1000,true);
- MAX_CPs = sizeof(cp);
- randA=random(2);
- CallRemoteFunction("UpdateRaceRecordsFunc","dd",INVALID_PLAYER_ID,0);
- return 1;
- }
- public OnGameModeExit()
- {
- #if MAX_MAP_OBJECTS != 0
- for(new i=0;i<MAX_MAP_OBJECTS;i++) DestroyObject(Object[i]);
- #endif
- KillTimer(GMTimer);
- return 1;
- }
- FUNCTION GMClock()
- {
- GMSec++;
- switch(ObjectiveStarted)
- {
- case false:
- {
- switch(GMSec)
- {
- case 1:
- {
- new string[40];
- format(string,sizeof(string),"The parkour will start in %d seconds.",START_TIME);
- CallRemoteFunction("ShowInfoBox", "iisi", -1, -1, string,0);
- }
- case START_TIME-4:
- {
- GameTextForAll("~r~~h~GET READY!",1000,3);
- PlaySoundForAll(1056);
- }
- case START_TIME-3:
- {
- GameTextForAll("~r~~h~~h~3",1000,3);
- PlaySoundForAll(1056);
- }
- case START_TIME-2:
- {
- GameTextForAll("~r~~h~~h~~h~2",1000,3);
- PlaySoundForAll(1056);
- }
- case START_TIME-1:
- {
- GameTextForAll("~y~1",1000,3);
- PlaySoundForAll(1056);
- }
- case START_TIME:
- {
- PlaySoundForAll(1057);
- CallRemoteFunction("StartMission","");
- GameTextForAll("~g~~h~~h~RUN!",1000,3);
- ObjectiveStarted= true;
- ToggleControllable(true);
- SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" DAZZZ! The parkour has started. Good luck.");
- CallRemoteFunction("ShowInfoText", "iisi", -1, -1,"DAZZZ! The parkour has started. Good luck.",0);
- RaceMili=GetTickCount();
- }
- }
- }
- case true:
- {
- for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
- {
- if(IsPlayerConnected(i) && CallRemoteFunction("GetAliveState","i",i) && !PlayerMissionInfo[i][MissionFinished])
- {
- GetPlayerPosition(i);
- new Float:x,Float:y,Float:z;
- GetPlayerPos(i,x,y,z);
- if(z <= Z_LIMIT)
- {
- SpawnPlayer(i);
- CallRemoteFunction("UpdateAliveState","ii",i,0);
- CallRemoteFunction("UpdateLastCheckpoint","dfff",i,-1.0,-1.0,-1.0);
- }
- }
- }
- RaceSec++;
- if(RaceSec == 60)
- {
- RaceSec=0;
- RaceMin++;
- }
- }
- }
- }
- public OnPlayerDisconnect(playerid,reason)
- {
- if(!PlayerMissionInfo[playerid][MissionFinished])
- {
- if(PlayerMissionInfo[playerid][PlayerCounted])
- {
- TotalPlayers--;
- PlayerMissionInfo[playerid][PlayerCounted]= false;
- }
- }
- else PlayerMissionInfo[playerid][MissionFinished] = false;
- RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
- DisablePlayerRaceCheckpoint(playerid);
- CallRemoteFunction("PlayerRaceRecords","dd",playerid,1);
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid,CLASS_POSTION);
- SetPlayerCameraPos(playerid,CLASS_CAMERA);
- SetPlayerCameraLookAt(playerid,CLASS_POSTION);
- SetPlayerFacingAngle(playerid,CLASS_FACING_AGNLE);
- CallRemoteFunction("ShowClassSelection","ddsddd",playerid, 2,"Parkour Artist", PedInfo[classid][Weapon1], PedInfo[classid][Weapon2], PedInfo[classid][Weapon3]);
- SetPlayerColor(playerid,COLOR_SERVER);
- PlayerMissionInfo[playerid][PlayerClassID]=classid;
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- CallRemoteFunction("UpdateRaceRecordsFunc","dd",INVALID_PLAYER_ID,0);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- new string[124];
- CallRemoteFunction("UpdateAliveState","ii",playerid,1);
- SetPlayerHealth(playerid,Health);
- if(PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Skin] == 0)
- {
- back:
- new skin=random(312);
- if(skin == 74 || skin < 1) goto back;
- SetPlayerSkin(playerid,skin);
- }
- if(CallRemoteFunction("GetSpectateStatus","d",playerid)) return CallRemoteFunction("SpecOffAdmin","d",playerid);
- SetPlayerColor(playerid,(randA == TEAM_ATTACK) ? COLOR_TEAM_ATTACK : COLOR_TEAM_DEFEND);
- SetPlayerTeam(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][TeamID]);
- switch(ObjectiveStarted)
- {
- case false:
- {
- TogglePlayerControllable(playerid,false);
- format(string,sizeof(string),"The parkour will start in %d seconds. Get ready.",(GMSec-START_TIME)*-1);
- CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,string,100);
- }
- case true:
- {
- TogglePlayerControllable(playerid,true);
- CallRemoteFunction("ShowInfoBox", "iisi", playerid, -1,"HURRY UP! The parkour has already started.",2000);
- }
- }
- CallRemoteFunction("ShowInfoText", "iisi", playerid, -1,"Try to finish first!",2000);
- if(CallRemoteFunction("GetJailedStatus","d",playerid)) CallRemoteFunction("SetJailed","d",playerid);
- else
- {
- SetPlayerInterior(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnInterior]);
- SetPlayerPos(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnX]-(random(3)),PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnY],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnZ]+5);
- SetPlayerFacingAngle(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][SpawnAngle]);
- SetPlayerVirtualWorld(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][VirtualWorld]);
- SetCameraBehindPlayer(playerid);
- CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon1],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo1]);
- CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon2],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo2]);
- CallRemoteFunction("GivePlayerWeaponEx","ddd",playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Weapon3],PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][Ammo3]);
- if(!PlayerMissionInfo[playerid][MissionFinished])
- {
- PlayerMissionInfo[playerid][CurrentCheckpoint]= 0;
- SetPlayerVirtualWorld(playerid,PedInfo[PlayerMissionInfo[playerid][PlayerClassID]][VirtualWorld]);
- SetPlayerRaceCheckpoint(playerid,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_type],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_z],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_z],10.0);
- SetPlayerMapIcon(playerid, MAP_ICON_NEXT_CP,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_z], 0, 0xFF000033, MAPICON_LOCAL);
- }
- else
- {
- SetPlayerVirtualWorld(playerid,2);
- CallRemoteFunction("OnPlayerMissionComplete","d",playerid);
- }
- if(!PlayerMissionInfo[playerid][PlayerCounted])
- {
- TotalPlayers++;
- PlayerMissionInfo[playerid][PlayerCounted]= true;
- }
- }
- CallRemoteFunction("GetPlayerPersonalBest","d",playerid);
- CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,4,GetPlayerPosition(playerid),TotalPlayers,RaceMin,PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][CurrentCheckpoint],MAX_CPs,PlayerMissionInfo[playerid][rBestMin],PlayerMissionInfo[playerid][rBestSec],PlayerMissionInfo[playerid][rBestMili],-1);
- CallRemoteFunction("PlayerRaceRecords","dd",playerid,2);
- return 1;
- }
- public OnPlayerDeath(playerid,killerid,reason)
- {
- CallRemoteFunction("UpdateAliveState","ii",playerid,0);
- if(!PlayerMissionInfo[playerid][MissionFinished]) PlayerMissionInfo[playerid][CurrentCheckpoint]= 0;
- CallRemoteFunction("PlayerRaceRecords","dd",playerid,1);
- CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,-1.0,-1.0,-1.0);
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- if(!MissionStarted || !ObjectiveStarted) return 0;
- new string[124],type;
- PlayerPlaySound(playerid,1139,0,0,0);
- CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_z]);
- if(PlayerMissionInfo[playerid][CurrentCheckpoint] != MAX_CPs-1)
- {
- type=cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_type];
- }
- if(PlayerMissionInfo[playerid][CurrentCheckpoint] == MAX_CPs-2)
- {
- SetPlayerRaceCheckpoint(playerid,type,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_z],0.0,0.0,0.0,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_size]);
- RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
- }
- else if(PlayerMissionInfo[playerid][CurrentCheckpoint] == MAX_CPs-1)
- {
- PlaySoundForAll(1058);
- PlayerMissionInfo[playerid][MissionFinished]= true;
- DisablePlayerRaceCheckpoint(playerid);
- RemovePlayerMapIcon(playerid,MAP_ICON_NEXT_CP);
- new Pos=GetPlayerPosition(playerid);
- CurrentRacePos++;
- PlayerMissionInfo[playerid][rMin]=RaceMin;
- PlayerMissionInfo[playerid][rSec]=RaceSec;
- new Prize=floatround(20000/Pos, floatround_round)+(1000*TotalPlayers);
- PlayerMissionInfo[playerid][rMili]=(((GetTickCount()-RaceMili)-(1000*PlayerMissionInfo[playerid][rSec]))-((1000*60)*PlayerMissionInfo[playerid][rMin]));
- while(PlayerMissionInfo[playerid][rMili] >= 1000)
- {
- PlayerMissionInfo[playerid][rMili]-=1000;
- PlayerMissionInfo[playerid][rSec]++;
- if(PlayerMissionInfo[playerid][rSec] == 60)
- {
- PlayerMissionInfo[playerid][rSec]=0;
- PlayerMissionInfo[playerid][rMin]++;
- }
- }
- CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,4,Pos,TotalPlayers,PlayerMissionInfo[playerid][rMin],PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][CurrentCheckpoint]+1,MAX_CPs,PlayerMissionInfo[playerid][rBestMin],PlayerMissionInfo[playerid][rBestSec],PlayerMissionInfo[playerid][rBestMili],-1);
- CallRemoteFunction("GivePlayerCash","ii",playerid,Prize);
- if(Pos == 1)
- {
- CallRemoteFunction("PlayerMissionStats","dd",playerid,3);
- format(string,sizeof(string),""SERVER_KEY_MSG" %s (%d) has finished 1st in the parkour. Time Taken: %02d:%02d:%03d | Prize: $%d + Token.",PlayerMissionInfo[playerid][UserName],playerid,PlayerMissionInfo[playerid][rMin],PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][rMili],Prize);
- CallRemoteFunction("GivePlayerToken","dd",playerid,1);
- CallRemoteFunction("CheckForBetWinners","d",playerid);
- }
- else format(string,sizeof(string),""SERVER_KEY_MSG" %s (%d) has finished %d%s in the parkour. Time Taken: %02d:%02d:%03d | Prize: $%d.",PlayerMissionInfo[playerid][UserName],playerid,Pos,GetEndStyle(Pos),PlayerMissionInfo[playerid][rMin],PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][rMili],Prize);
- if(Pos == 2) CallRemoteFunction("PlayerMissionStats","dd",playerid,4);
- if(Pos == 3) CallRemoteFunction("PlayerMissionStats","dd",playerid,5);
- CallRemoteFunction("PlayerMissionStats","dd",playerid,0);
- CallRemoteFunction("IRC_SendMessage","ss",string,IRC_SERVER_COLOR);
- new time = ((PlayerMissionInfo[playerid][rMin]*60000)+(PlayerMissionInfo[playerid][rSec]*1000)+(PlayerMissionInfo[playerid][rMili]));
- CallRemoteFunction("CheckRaceRecord","dd",playerid,time);
- SetPlayerVirtualWorld(playerid,2);
- SendClientMessageToAll(COLOR_SERVER,string);
- CallRemoteFunction("OnPlayerMissionComplete","d",playerid);
- CallRemoteFunction("UpdateLastCheckpoint","dfff",playerid,-2.0,-2.0,-2.0);
- CallRemoteFunction("PlayerMissionStats","dd",playerid,11);
- }
- else if(PlayerMissionInfo[playerid][CurrentCheckpoint] < MAX_CPs-1)
- {
- SetPlayerRaceCheckpoint(playerid,type,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_z],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_z],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+1][cp_size]);
- SetPlayerMapIcon(playerid, MAP_ICON_NEXT_CP,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]+2][cp_z], 0, 0xFF000033, MAPICON_LOCAL);
- }
- PlayerMissionInfo[playerid][CurrentCheckpoint]++;
- return 1;
- }
- FUNCTION EndTheMission()
- {
- if(!MissionStarted) return 1;
- MissionStarted= false;
- KillTimer(GMTimer);
- if(!MissionCancelled && ObjectiveStarted)
- {
- SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The parkour has ended.");
- CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The parkour has ended.",IRC_SERVER_COLOR);
- CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The parkour has ended.",0);
- for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
- {
- if(IsPlayerConnected(i) && !PlayerMissionInfo[i][MissionFinished])
- {
- PlayerPlaySound(i,17004,0,0,0);
- GameTextForPlayer(i,"~R~MISSION FAILED~w~!",3000,3);
- DisablePlayerCheckpoint(i);
- CallRemoteFunction("PlayerMissionStats","dd",i,1);
- }
- }
- }
- else
- {
- PlaySoundForAll(1058);
- SendClientMessageToAll(COLOR_SERVER,""SERVER_KEY_MSG" The mission has been cancelled.");
- CallRemoteFunction("IRC_SendMessage","ss",""SERVER_KEY_MSG" The mission has been cancelled.",IRC_SERVER_COLOR);
- CallRemoteFunction("ShowInfoBox", "iisi", -1, -1,"The mission has been cancelled.",0);
- for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
- {
- if(IsPlayerConnected(i))
- {
- GameTextForPlayer(i,"~R~MISSION CANCELLED~w~!",3000,3);
- DisablePlayerCheckpoint(i);
- RemovePlayerMapIcon(i,MAP_ICON_NEXT_CP);
- }
- }
- }
- return 1;
- }
- //==============================================================================
- // Mission functions
- //==============================================================================
- GetPlayerPosition(playerid)
- {
- if(!IsPlayerConnected(playerid)) return 0;
- if(PlayerMissionInfo[playerid][MissionFinished]) return GetPlayerScore(playerid);
- new PlayerPositon=CurrentRacePos+1;
- new Float:PlayerDistance=GetPlayerDistanceFromPoint(playerid,cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_x],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_y],cp[PlayerMissionInfo[playerid][CurrentCheckpoint]][cp_z]);
- new Float:OtherPlayerDistance;
- for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- if(!CallRemoteFunction("GetAliveState","i",i) || !ObjectiveStarted || PlayerMissionInfo[i][MissionFinished]) continue;
- if(PlayerMissionInfo[playerid][CurrentCheckpoint] < PlayerMissionInfo[i][CurrentCheckpoint])
- {
- PlayerPositon++;
- continue;
- }
- else if(PlayerMissionInfo[playerid][CurrentCheckpoint] == PlayerMissionInfo[i][CurrentCheckpoint])
- {
- OtherPlayerDistance=GetPlayerDistanceFromPoint(i,cp[PlayerMissionInfo[i][CurrentCheckpoint]][cp_x],cp[PlayerMissionInfo[i][CurrentCheckpoint]][cp_y],cp[PlayerMissionInfo[i][CurrentCheckpoint]][cp_z]);
- if(PlayerDistance > OtherPlayerDistance)
- {
- PlayerPositon++;
- continue;
- }
- }
- }
- SetPlayerScore(playerid,PlayerPositon);
- CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,4,PlayerPositon,TotalPlayers,RaceMin,RaceSec,PlayerMissionInfo[playerid][CurrentCheckpoint],MAX_CPs,PlayerMissionInfo[playerid][rBestMin],PlayerMissionInfo[playerid][rBestSec],PlayerMissionInfo[playerid][rBestMili],-1);
- return PlayerPositon;
- }
- GetEndStyle(pos)
- {
- new end[3];
- if(pos == 11 || pos == 12 || pos == 13) { end = "TH"; }
- else if(pos - (pos / 10) * 10 == 1) { end = "ST"; }
- else if(pos - (pos / 10) * 10 == 2) { end = "ND"; }
- else if(pos - (pos / 10) * 10 == 3) { end = "RD"; }
- else { end = "TH"; }
- return end;
- }
- PlaySoundForAll(sound)
- {
- for (new i=0,j=GetPlayerPoolSize(); i <=j ; i++)
- {
- if(IsPlayerConnected(i)) PlayerPlaySound(i,sound,0,0,0);
- }
- }
- ToggleControllable(control)
- {
- for(new i=0,j=GetPlayerPoolSize(); i<=j; i++)
- {
- if(IsPlayerConnected(i))
- {
- if(CallRemoteFunction("GetAliveState","i",i)) TogglePlayerControllable(i,control);
- }
- }
- return 1;
- }
- //==============================================================================
- // Important functions required
- //==============================================================================
- FUNCTION OnPlayerGetPersonalBest(playerid,Min,Sec,Mili)
- {
- PlayerMissionInfo[playerid][rBestMin]=Min;
- PlayerMissionInfo[playerid][rBestSec]=Sec;
- PlayerMissionInfo[playerid][rBestMili]=Mili;
- CallRemoteFunction("UpdateMissionHud","iiiiiiiiiiii",playerid,2,GetPlayerPosition(playerid),TotalPlayers,PlayerMissionInfo[playerid][rMin],PlayerMissionInfo[playerid][rSec],PlayerMissionInfo[playerid][CurrentCheckpoint]+1,MAX_CPs,PlayerMissionInfo[playerid][rBestMin],PlayerMissionInfo[playerid][rBestSec],PlayerMissionInfo[playerid][rBestMili],0);
- return 1;
- }
- FUNCTION CancelTheMission()
- {
- MissionCancelled= true;
- return 1;
- }
- FUNCTION OnPlayerNameRecieve(playerid,name[])
- {
- format(PlayerMissionInfo[playerid][UserName],MAX_PLAYER_NAME,"%s",name);
- return 1;
- }
- FUNCTION MissionObjectiveStarted() return ObjectiveStarted;
Advertisement
Add Comment
Please, Sign In to add comment