29.04.2016, 07:40
(
Последний раз редактировалось thaKing; 29.04.2016 в 08:11.
)
Many functions from SC:RP, a few edits of mine. All credits goes to SC:RP original owners/scripters.
PHP код:
ReturnDate()
{
static
date[36];
getdate(date[2], date[1], date[0]);
gettime(date[3], date[4], date[5]);
format(date, sizeof(date), "%02d/%02d/%d, %02d:%02d", date[0], date[1], date[2], date[3], date[4]);
return date;
}
ReturnVehicleHealth(vehicleid)
{
if (!IsValidVehicle(vehicleid))
return 0;
static
Float:amount;
GetVehicleHealth(vehicleid, amount);
return floatround(amount, floatround_round);
}
ReturnArmour(playerid)
{
static
Float:amount;
GetPlayerArmour(playerid, amount);
return floatround(amount, floatround_round);
}
ReturnHealth(playerid)
{
static
Float:amount;
GetPlayerHealth(playerid, amount);
return floatround(amount, floatround_round);
}
ReturnName(playerid, underscore = 1)
{
static
name[MAX_PLAYER_NAME + 1];
GetPlayerName(playerid, name, sizeof(name));
if (!underscore) {
for (new i = 0, len = strlen(name); i < len; i ++) {
if (name[i] == '_') name[i] = ' ';
}
}
return name;
}
ReturnIP(playerid)
{
static
ip[16];
GetPlayerIp(playerid, ip, sizeof(ip));
return ip;
}
GetDistance(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
{
return floatround(floatsqroot(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)) + ((z1 - z2) * (z1 - z2))));
}
IsValidObjectModel(modelid)
{
if (modelid < 0 || modelid > 20000)
return 0;
switch (modelid)
{
case 18632..18645, 18646..18658, 18659..18667, 18668..19299, 19301..19515, 18631, 331, 333..339, 318..321, 325, 326, 341..344, 346..353, 355..370, 372:
return 1;
}
new const g_arrModelData[] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,
-515899393, -134217729, -1, -1, 33554431, -1, -1, -1, -14337, -1, -33,
127, 0, 0, 0, 0, 0, -8388608, -1, -1, -1, -16385, -1, -1, -1, -1, -1,
-1, -1, -33, -1, -771751937, -1, -9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 33554431, -25, -1, -1, -1, -1, -1, -1,
-1073676289, -2147483648, 34079999, 2113536, -4825600, -5, -1, -3145729,
-1, -16777217, -63, -1, -1, -1, -1, -201326593, -1, -1, -1, -1, -1,
-257, -1, 1073741823, -133122, -1, -1, -65, -1, -1, -1, -1, -1, -1,
-2146435073, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1073741823, -64, -1,
-1, -1, -1, -2635777, 134086663, 0, -64, -1, -1, -1, -1, -1, -1, -1,
-536870927, -131069, -1, -1, -1, -1, -1, -1, -1, -1, -16384, -1,
-33554433, -1, -1, -1, -1, -1, -1610612737, 524285, -128, -1,
2080309247, -1, -1, -1114113, -1, -1, -1, 66977343, -524288, -1, -1, -1,
-1, -2031617, -1, 114687, -256, -1, -4097, -1, -4097, -1, -1,
1010827263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32768, -1, -1, -1, -1, -1,
2147483647, -33554434, -1, -1, -49153, -1148191169, 2147483647,
-100781080, -262145, -57, 134217727, -8388608, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1048577, -1, -449, -1017, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1835009, -2049, -1, -1, -1, -1, -1, -1,
-8193, -1, -536870913, -1, -1, -1, -1, -1, -87041, -1, -1, -1, -1, -1,
-1, -209860, -1023, -8388609, -2096897, -1, -1048577, -1, -1, -1, -1,
-1, -1, -897, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1610612737,
-3073, -28673, -1, -1, -1, -1537, -1, -1, -13, -1, -1, -1, -1, -1985,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1056964609, -1, -1, -1,
-1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-236716037, -1, -1, -1, -1, -1, -1, -1, -536870913, 3, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -2097153, -2109441, -1, 201326591, -4194304, -1, -1,
-241, -1, -1, -1, -1, -1, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -32768, -1, -1, -1, -2, -671096835, -1, -8388609, -66323585, -13,
-1793, -32257, -247809, -1, -1, -513, 16252911, 0, 0, 0, -131072,
33554383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8356095, 0, 0, 0, 0, 0,
0, -256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-268435449, -1, -1, -2049, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
92274627, -65536, -2097153, -268435457, 591191935, 1, 0, -16777216, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127
};
return ((modelid >= 0) && ((modelid / 32) < sizeof(g_arrModelData)) && (g_arrModelData[modelid / 32] & (1 << (modelid % 32))));
}
GetLocation(Float:fX, Float:fY, Float:fZ)
{
enum e_ZoneData
{
e_ZoneName[32 char],
Float:e_ZoneArea[6]
};
new const g_arrZoneData[][e_ZoneData] =
{
{!"The Big Ear", {-410.00, 1403.30, -3.00, -137.90, 1681.20, 200.00}},
{!"Aldea Malvada", {-1372.10, 2498.50, 0.00, -1277.50, 2615.30, 200.00}},
{!"Angel Pine", {-2324.90, -2584.20, -6.10, -1964.20, -2212.10, 200.00}},
{!"Arco del Oeste", {-901.10, 2221.80, 0.00, -592.00, 2571.90, 200.00}},
{!"Avispa Country Club", {-2646.40, -355.40, 0.00, -2270.00, -222.50, 200.00}},
{!"Avispa Country Club", {-2831.80, -430.20, -6.10, -2646.40, -222.50, 200.00}},
{!"Avispa Country Club", {-2361.50, -417.10, 0.00, -2270.00, -355.40, 200.00}},
{!"Avispa Country Club", {-2667.80, -302.10, -28.80, -2646.40, -262.30, 71.10}},
{!"Avispa Country Club", {-2470.00, -355.40, 0.00, -2270.00, -318.40, 46.10}},
{!"Avispa Country Club", {-2550.00, -355.40, 0.00, -2470.00, -318.40, 39.70}},
{!"Back o Beyond", {-1166.90, -2641.10, 0.00, -321.70, -1856.00, 200.00}},
{!"Battery Point", {-2741.00, 1268.40, -4.50, -2533.00, 1490.40, 200.00}},
{!"Bayside", {-2741.00, 2175.10, 0.00, -2353.10, 2722.70, 200.00}},
{!"Bayside Marina", {-2353.10, 2275.70, 0.00, -2153.10, 2475.70, 200.00}},
{!"Beacon Hill", {-399.60, -1075.50, -1.40, -319.00, -977.50, 198.50}},
{!"Blackfield", {964.30, 1203.20, -89.00, 1197.30, 1403.20, 110.90}},
{!"Blackfield", {964.30, 1403.20, -89.00, 1197.30, 1726.20, 110.90}},
{!"Blackfield Chapel", {1375.60, 596.30, -89.00, 1558.00, 823.20, 110.90}},
{!"Blackfield Chapel", {1325.60, 596.30, -89.00, 1375.60, 795.00, 110.90}},
{!"Blackfield Intersection", {1197.30, 1044.60, -89.00, 1277.00, 1163.30, 110.90}},
{!"Blackfield Intersection", {1166.50, 795.00, -89.00, 1375.60, 1044.60, 110.90}},
{!"Blackfield Intersection", {1277.00, 1044.60, -89.00, 1315.30, 1087.60, 110.90}},
{!"Blackfield Intersection", {1375.60, 823.20, -89.00, 1457.30, 919.40, 110.90}},
{!"Blueberry", {104.50, -220.10, 2.30, 349.60, 152.20, 200.00}},
{!"Blueberry", {19.60, -404.10, 3.80, 349.60, -220.10, 200.00}},
{!"Blueberry Acres", {-319.60, -220.10, 0.00, 104.50, 293.30, 200.00}},
{!"Caligula's Palace", {2087.30, 1543.20, -89.00, 2437.30, 1703.20, 110.90}},
{!"Caligula's Palace", {2137.40, 1703.20, -89.00, 2437.30, 1783.20, 110.90}},
{!"Calton Heights", {-2274.10, 744.10, -6.10, -1982.30, 1358.90, 200.00}},
{!"Chinatown", {-2274.10, 578.30, -7.60, -2078.60, 744.10, 200.00}},
{!"City Hall", {-2867.80, 277.40, -9.10, -2593.40, 458.40, 200.00}},
{!"Come-A-Lot", {2087.30, 943.20, -89.00, 2623.10, 1203.20, 110.90}},
{!"Commerce", {1323.90, -1842.20, -89.00, 1701.90, -1722.20, 110.90}},
{!"Commerce", {1323.90, -1722.20, -89.00, 1440.90, -1577.50, 110.90}},
{!"Commerce", {1370.80, -1577.50, -89.00, 1463.90, -1384.90, 110.90}},
{!"Commerce", {1463.90, -1577.50, -89.00, 1667.90, -1430.80, 110.90}},
{!"Commerce", {1583.50, -1722.20, -89.00, 1758.90, -1577.50, 110.90}},
{!"Commerce", {1667.90, -1577.50, -89.00, 1812.60, -1430.80, 110.90}},
{!"Conference Center", {1046.10, -1804.20, -89.00, 1323.90, -1722.20, 110.90}},
{!"Conference Center", {1073.20, -1842.20, -89.00, 1323.90, -1804.20, 110.90}},
{!"Cranberry Station", {-2007.80, 56.30, 0.00, -1922.00, 224.70, 100.00}},
{!"Creek", {2749.90, 1937.20, -89.00, 2921.60, 2669.70, 110.90}},
{!"Dillimore", {580.70, -674.80, -9.50, 861.00, -404.70, 200.00}},
{!"Doherty", {-2270.00, -324.10, -0.00, -1794.90, -222.50, 200.00}},
{!"Doherty", {-2173.00, -222.50, -0.00, -1794.90, 265.20, 200.00}},
{!"Downtown", {-1982.30, 744.10, -6.10, -1871.70, 1274.20, 200.00}},
{!"Downtown", {-1871.70, 1176.40, -4.50, -1620.30, 1274.20, 200.00}},
{!"Downtown", {-1700.00, 744.20, -6.10, -1580.00, 1176.50, 200.00}},
{!"Downtown", {-1580.00, 744.20, -6.10, -1499.80, 1025.90, 200.00}},
{!"Downtown", {-2078.60, 578.30, -7.60, -1499.80, 744.20, 200.00}},
{!"Downtown", {-1993.20, 265.20, -9.10, -1794.90, 578.30, 200.00}},
{!"Downtown Los Santos", {1463.90, -1430.80, -89.00, 1724.70, -1290.80, 110.90}},
{!"Downtown Los Santos", {1724.70, -1430.80, -89.00, 1812.60, -1250.90, 110.90}},
{!"Downtown Los Santos", {1463.90, -1290.80, -89.00, 1724.70, -1150.80, 110.90}},
{!"Downtown Los Santos", {1370.80, -1384.90, -89.00, 1463.90, -1170.80, 110.90}},
{!"Downtown Los Santos", {1724.70, -1250.90, -89.00, 1812.60, -1150.80, 110.90}},
{!"Downtown Los Santos", {1370.80, -1170.80, -89.00, 1463.90, -1130.80, 110.90}},
{!"Downtown Los Santos", {1378.30, -1130.80, -89.00, 1463.90, -1026.30, 110.90}},
{!"Downtown Los Santos", {1391.00, -1026.30, -89.00, 1463.90, -926.90, 110.90}},
{!"Downtown Los Santos", {1507.50, -1385.20, 110.90, 1582.50, -1325.30, 335.90}},
{!"East Beach", {2632.80, -1852.80, -89.00, 2959.30, -1668.10, 110.90}},
{!"East Beach", {2632.80, -1668.10, -89.00, 2747.70, -1393.40, 110.90}},
{!"East Beach", {2747.70, -1668.10, -89.00, 2959.30, -1498.60, 110.90}},
{!"East Beach", {2747.70, -1498.60, -89.00, 2959.30, -1120.00, 110.90}},
{!"East Los Santos", {2421.00, -1628.50, -89.00, 2632.80, -1454.30, 110.90}},
{!"East Los Santos", {2222.50, -1628.50, -89.00, 2421.00, -1494.00, 110.90}},
{!"East Los Santos", {2266.20, -1494.00, -89.00, 2381.60, -1372.00, 110.90}},
{!"East Los Santos", {2381.60, -1494.00, -89.00, 2421.00, -1454.30, 110.90}},
{!"East Los Santos", {2281.40, -1372.00, -89.00, 2381.60, -1135.00, 110.90}},
{!"East Los Santos", {2381.60, -1454.30, -89.00, 2462.10, -1135.00, 110.90}},
{!"East Los Santos", {2462.10, -1454.30, -89.00, 2581.70, -1135.00, 110.90}},
{!"Easter Basin", {-1794.90, 249.90, -9.10, -1242.90, 578.30, 200.00}},
{!"Easter Basin", {-1794.90, -50.00, -0.00, -1499.80, 249.90, 200.00}},
{!"Easter Bay Airport", {-1499.80, -50.00, -0.00, -1242.90, 249.90, 200.00}},
{!"Easter Bay Airport", {-1794.90, -730.10, -3.00, -1213.90, -50.00, 200.00}},
{!"Easter Bay Airport", {-1213.90, -730.10, 0.00, -1132.80, -50.00, 200.00}},
{!"Easter Bay Airport", {-1242.90, -50.00, 0.00, -1213.90, 578.30, 200.00}},
{!"Easter Bay Airport", {-1213.90, -50.00, -4.50, -947.90, 578.30, 200.00}},
{!"Easter Bay Airport", {-1315.40, -405.30, 15.40, -1264.40, -209.50, 25.40}},
{!"Easter Bay Airport", {-1354.30, -287.30, 15.40, -1315.40, -209.50, 25.40}},
{!"Easter Bay Airport", {-1490.30, -209.50, 15.40, -1264.40, -148.30, 25.40}},
{!"Easter Bay Chemicals", {-1132.80, -768.00, 0.00, -956.40, -578.10, 200.00}},
{!"Easter Bay Chemicals", {-1132.80, -787.30, 0.00, -956.40, -768.00, 200.00}},
{!"El Castillo del Diablo", {-464.50, 2217.60, 0.00, -208.50, 2580.30, 200.00}},
{!"El Castillo del Diablo", {-208.50, 2123.00, -7.60, 114.00, 2337.10, 200.00}},
{!"El Castillo del Diablo", {-208.50, 2337.10, 0.00, 8.40, 2487.10, 200.00}},
{!"El Corona", {1812.60, -2179.20, -89.00, 1970.60, -1852.80, 110.90}},
{!"El Corona", {1692.60, -2179.20, -89.00, 1812.60, -1842.20, 110.90}},
{!"El Quebrados", {-1645.20, 2498.50, 0.00, -1372.10, 2777.80, 200.00}},
{!"Esplanade East", {-1620.30, 1176.50, -4.50, -1580.00, 1274.20, 200.00}},
{!"Esplanade East", {-1580.00, 1025.90, -6.10, -1499.80, 1274.20, 200.00}},
{!"Esplanade East", {-1499.80, 578.30, -79.60, -1339.80, 1274.20, 20.30}},
{!"Esplanade North", {-2533.00, 1358.90, -4.50, -1996.60, 1501.20, 200.00}},
{!"Esplanade North", {-1996.60, 1358.90, -4.50, -1524.20, 1592.50, 200.00}},
{!"Esplanade North", {-1982.30, 1274.20, -4.50, -1524.20, 1358.90, 200.00}},
{!"Fallen Tree", {-792.20, -698.50, -5.30, -452.40, -380.00, 200.00}},
{!"Fallow Bridge", {434.30, 366.50, 0.00, 603.00, 555.60, 200.00}},
{!"Fern Ridge", {508.10, -139.20, 0.00, 1306.60, 119.50, 200.00}},
{!"Financial", {-1871.70, 744.10, -6.10, -1701.30, 1176.40, 300.00}},
{!"Fisher's Lagoon", {1916.90, -233.30, -100.00, 2131.70, 13.80, 200.00}},
{!"Flint Intersection", {-187.70, -1596.70, -89.00, 17.00, -1276.60, 110.90}},
{!"Flint Range", {-594.10, -1648.50, 0.00, -187.70, -1276.60, 200.00}},
{!"Fort Carson", {-376.20, 826.30, -3.00, 123.70, 1220.40, 200.00}},
{!"Foster Valley", {-2270.00, -430.20, -0.00, -2178.60, -324.10, 200.00}},
{!"Foster Valley", {-2178.60, -599.80, -0.00, -1794.90, -324.10, 200.00}},
{!"Foster Valley", {-2178.60, -1115.50, 0.00, -1794.90, -599.80, 200.00}},
{!"Foster Valley", {-2178.60, -1250.90, 0.00, -1794.90, -1115.50, 200.00}},
{!"Frederick Bridge", {2759.20, 296.50, 0.00, 2774.20, 594.70, 200.00}},
{!"Gant Bridge", {-2741.40, 1659.60, -6.10, -2616.40, 2175.10, 200.00}},
{!"Gant Bridge", {-2741.00, 1490.40, -6.10, -2616.40, 1659.60, 200.00}},
{!"Ganton", {2222.50, -1852.80, -89.00, 2632.80, -1722.30, 110.90}},
{!"Ganton", {2222.50, -1722.30, -89.00, 2632.80, -1628.50, 110.90}},
{!"Garcia", {-2411.20, -222.50, -0.00, -2173.00, 265.20, 200.00}},
{!"Garcia", {-2395.10, -222.50, -5.30, -2354.00, -204.70, 200.00}},
{!"Garver Bridge", {-1339.80, 828.10, -89.00, -1213.90, 1057.00, 110.90}},
{!"Garver Bridge", {-1213.90, 950.00, -89.00, -1087.90, 1178.90, 110.90}},
{!"Garver Bridge", {-1499.80, 696.40, -179.60, -1339.80, 925.30, 20.30}},
{!"Glen Park", {1812.60, -1449.60, -89.00, 1996.90, -1350.70, 110.90}},
{!"Glen Park", {1812.60, -1100.80, -89.00, 1994.30, -973.30, 110.90}},
{!"Glen Park", {1812.60, -1350.70, -89.00, 2056.80, -1100.80, 110.90}},
{!"Green Palms", {176.50, 1305.40, -3.00, 338.60, 1520.70, 200.00}},
{!"Greenglass College", {964.30, 1044.60, -89.00, 1197.30, 1203.20, 110.90}},
{!"Greenglass College", {964.30, 930.80, -89.00, 1166.50, 1044.60, 110.90}},
{!"Hampton Barns", {603.00, 264.30, 0.00, 761.90, 366.50, 200.00}},
{!"Hankypanky Point", {2576.90, 62.10, 0.00, 2759.20, 385.50, 200.00}},
{!"Harry Gold Parkway", {1777.30, 863.20, -89.00, 1817.30, 2342.80, 110.90}},
{!"Hashbury", {-2593.40, -222.50, -0.00, -2411.20, 54.70, 200.00}},
{!"Hilltop Farm", {967.30, -450.30, -3.00, 1176.70, -217.90, 200.00}},
{!"Hunter Quarry", {337.20, 710.80, -115.20, 860.50, 1031.70, 203.70}},
{!"Idlewood", {1812.60, -1852.80, -89.00, 1971.60, -1742.30, 110.90}},
{!"Idlewood", {1812.60, -1742.30, -89.00, 1951.60, -1602.30, 110.90}},
{!"Idlewood", {1951.60, -1742.30, -89.00, 2124.60, -1602.30, 110.90}},
{!"Idlewood", {1812.60, -1602.30, -89.00, 2124.60, -1449.60, 110.90}},
{!"Idlewood", {2124.60, -1742.30, -89.00, 2222.50, -1494.00, 110.90}},
{!"Idlewood", {1971.60, -1852.80, -89.00, 2222.50, -1742.30, 110.90}},
{!"Jefferson", {1996.90, -1449.60, -89.00, 2056.80, -1350.70, 110.90}},
{!"Jefferson", {2124.60, -1494.00, -89.00, 2266.20, -1449.60, 110.90}},
{!"Jefferson", {2056.80, -1372.00, -89.00, 2281.40, -1210.70, 110.90}},
{!"Jefferson", {2056.80, -1210.70, -89.00, 2185.30, -1126.30, 110.90}},
{!"Jefferson", {2185.30, -1210.70, -89.00, 2281.40, -1154.50, 110.90}},
{!"Jefferson", {2056.80, -1449.60, -89.00, 2266.20, -1372.00, 110.90}},
{!"Julius Thruway East", {2623.10, 943.20, -89.00, 2749.90, 1055.90, 110.90}},
{!"Julius Thruway East", {2685.10, 1055.90, -89.00, 2749.90, 2626.50, 110.90}},
{!"Julius Thruway East", {2536.40, 2442.50, -89.00, 2685.10, 2542.50, 110.90}},
{!"Julius Thruway East", {2625.10, 2202.70, -89.00, 2685.10, 2442.50, 110.90}},
{!"Julius Thruway North", {2498.20, 2542.50, -89.00, 2685.10, 2626.50, 110.90}},
{!"Julius Thruway North", {2237.40, 2542.50, -89.00, 2498.20, 2663.10, 110.90}},
{!"Julius Thruway North", {2121.40, 2508.20, -89.00, 2237.40, 2663.10, 110.90}},
{!"Julius Thruway North", {1938.80, 2508.20, -89.00, 2121.40, 2624.20, 110.90}},
{!"Julius Thruway North", {1534.50, 2433.20, -89.00, 1848.40, 2583.20, 110.90}},
{!"Julius Thruway North", {1848.40, 2478.40, -89.00, 1938.80, 2553.40, 110.90}},
{!"Julius Thruway North", {1704.50, 2342.80, -89.00, 1848.40, 2433.20, 110.90}},
{!"Julius Thruway North", {1377.30, 2433.20, -89.00, 1534.50, 2507.20, 110.90}},
{!"Julius Thruway South", {1457.30, 823.20, -89.00, 2377.30, 863.20, 110.90}},
{!"Julius Thruway South", {2377.30, 788.80, -89.00, 2537.30, 897.90, 110.90}},
{!"Julius Thruway West", {1197.30, 1163.30, -89.00, 1236.60, 2243.20, 110.90}},
{!"Julius Thruway West", {1236.60, 2142.80, -89.00, 1297.40, 2243.20, 110.90}},
{!"Juniper Hill", {-2533.00, 578.30, -7.60, -2274.10, 968.30, 200.00}},
{!"Juniper Hollow", {-2533.00, 968.30, -6.10, -2274.10, 1358.90, 200.00}},
{!"K.A.C.C. Military Fuels", {2498.20, 2626.50, -89.00, 2749.90, 2861.50, 110.90}},
{!"Kincaid Bridge", {-1339.80, 599.20, -89.00, -1213.90, 828.10, 110.90}},
{!"Kincaid Bridge", {-1213.90, 721.10, -89.00, -1087.90, 950.00, 110.90}},
{!"Kincaid Bridge", {-1087.90, 855.30, -89.00, -961.90, 986.20, 110.90}},
{!"King's", {-2329.30, 458.40, -7.60, -1993.20, 578.30, 200.00}},
{!"King's", {-2411.20, 265.20, -9.10, -1993.20, 373.50, 200.00}},
{!"King's", {-2253.50, 373.50, -9.10, -1993.20, 458.40, 200.00}},
{!"LVA Freight Depot", {1457.30, 863.20, -89.00, 1777.40, 1143.20, 110.90}},
{!"LVA Freight Depot", {1375.60, 919.40, -89.00, 1457.30, 1203.20, 110.90}},
{!"LVA Freight Depot", {1277.00, 1087.60, -89.00, 1375.60, 1203.20, 110.90}},
{!"LVA Freight Depot", {1315.30, 1044.60, -89.00, 1375.60, 1087.60, 110.90}},
{!"LVA Freight Depot", {1236.60, 1163.40, -89.00, 1277.00, 1203.20, 110.90}},
{!"Las Barrancas", {-926.10, 1398.70, -3.00, -719.20, 1634.60, 200.00}},
{!"Las Brujas", {-365.10, 2123.00, -3.00, -208.50, 2217.60, 200.00}},
{!"Las Colinas", {1994.30, -1100.80, -89.00, 2056.80, -920.80, 110.90}},
{!"Las Colinas", {2056.80, -1126.30, -89.00, 2126.80, -920.80, 110.90}},
{!"Las Colinas", {2185.30, -1154.50, -89.00, 2281.40, -934.40, 110.90}},
{!"Las Colinas", {2126.80, -1126.30, -89.00, 2185.30, -934.40, 110.90}},
{!"Las Colinas", {2747.70, -1120.00, -89.00, 2959.30, -945.00, 110.90}},
{!"Las Colinas", {2632.70, -1135.00, -89.00, 2747.70, -945.00, 110.90}},
{!"Las Colinas", {2281.40, -1135.00, -89.00, 2632.70, -945.00, 110.90}},
{!"Las Payasadas", {-354.30, 2580.30, 2.00, -133.60, 2816.80, 200.00}},
{!"Las Venturas Airport", {1236.60, 1203.20, -89.00, 1457.30, 1883.10, 110.90}},
{!"Las Venturas Airport", {1457.30, 1203.20, -89.00, 1777.30, 1883.10, 110.90}},
{!"Las Venturas Airport", {1457.30, 1143.20, -89.00, 1777.40, 1203.20, 110.90}},
{!"Las Venturas Airport", {1515.80, 1586.40, -12.50, 1729.90, 1714.50, 87.50}},
{!"Last Dime Motel", {1823.00, 596.30, -89.00, 1997.20, 823.20, 110.90}},
{!"Leafy Hollow", {-1166.90, -1856.00, 0.00, -815.60, -1602.00, 200.00}},
{!"Liberty City", {-1000.00, 400.00, 1300.00, -700.00, 600.00, 1400.00}},
{!"Lil' Probe Inn", {-90.20, 1286.80, -3.00, 153.80, 1554.10, 200.00}},
{!"Linden Side", {2749.90, 943.20, -89.00, 2923.30, 1198.90, 110.90}},
{!"Linden Station", {2749.90, 1198.90, -89.00, 2923.30, 1548.90, 110.90}},
{!"Linden Station", {2811.20, 1229.50, -39.50, 2861.20, 1407.50, 60.40}},
{!"Little Mexico", {1701.90, -1842.20, -89.00, 1812.60, -1722.20, 110.90}},
{!"Little Mexico", {1758.90, -1722.20, -89.00, 1812.60, -1577.50, 110.90}},
{!"Los Flores", {2581.70, -1454.30, -89.00, 2632.80, -1393.40, 110.90}},
{!"Los Flores", {2581.70, -1393.40, -89.00, 2747.70, -1135.00, 110.90}},
{!"Los Santos International", {1249.60, -2394.30, -89.00, 1852.00, -2179.20, 110.90}},
{!"Los Santos International", {1852.00, -2394.30, -89.00, 2089.00, -2179.20, 110.90}},
{!"Los Santos International", {1382.70, -2730.80, -89.00, 2201.80, -2394.30, 110.90}},
{!"Los Santos International", {1974.60, -2394.30, -39.00, 2089.00, -2256.50, 60.90}},
{!"Los Santos International", {1400.90, -2669.20, -39.00, 2189.80, -2597.20, 60.90}},
{!"Los Santos International", {2051.60, -2597.20, -39.00, 2152.40, -2394.30, 60.90}},
{!"Marina", {647.70, -1804.20, -89.00, 851.40, -1577.50, 110.90}},
{!"Marina", {647.70, -1577.50, -89.00, 807.90, -1416.20, 110.90}},
{!"Marina", {807.90, -1577.50, -89.00, 926.90, -1416.20, 110.90}},
{!"Market", {787.40, -1416.20, -89.00, 1072.60, -1310.20, 110.90}},
{!"Market", {952.60, -1310.20, -89.00, 1072.60, -1130.80, 110.90}},
{!"Market", {1072.60, -1416.20, -89.00, 1370.80, -1130.80, 110.90}},
{!"Market", {926.90, -1577.50, -89.00, 1370.80, -1416.20, 110.90}},
{!"Market Station", {787.40, -1410.90, -34.10, 866.00, -1310.20, 65.80}},
{!"Martin Bridge", {-222.10, 293.30, 0.00, -122.10, 476.40, 200.00}},
{!"Missionary Hill", {-2994.40, -811.20, 0.00, -2178.60, -430.20, 200.00}},
{!"Montgomery", {1119.50, 119.50, -3.00, 1451.40, 493.30, 200.00}},
{!"Montgomery", {1451.40, 347.40, -6.10, 1582.40, 420.80, 200.00}},
{!"Montgomery Intersection", {1546.60, 208.10, 0.00, 1745.80, 347.40, 200.00}},
{!"Montgomery Intersection", {1582.40, 347.40, 0.00, 1664.60, 401.70, 200.00}},
{!"Mulholland", {1414.00, -768.00, -89.00, 1667.60, -452.40, 110.90}},
{!"Mulholland", {1281.10, -452.40, -89.00, 1641.10, -290.90, 110.90}},
{!"Mulholland", {1269.10, -768.00, -89.00, 1414.00, -452.40, 110.90}},
{!"Mulholland", {1357.00, -926.90, -89.00, 1463.90, -768.00, 110.90}},
{!"Mulholland", {1318.10, -910.10, -89.00, 1357.00, -768.00, 110.90}},
{!"Mulholland", {1169.10, -910.10, -89.00, 1318.10, -768.00, 110.90}},
{!"Mulholland", {768.60, -954.60, -89.00, 952.60, -860.60, 110.90}},
{!"Mulholland", {687.80, -860.60, -89.00, 911.80, -768.00, 110.90}},
{!"Mulholland", {737.50, -768.00, -89.00, 1142.20, -674.80, 110.90}},
{!"Mulholland", {1096.40, -910.10, -89.00, 1169.10, -768.00, 110.90}},
{!"Mulholland", {952.60, -937.10, -89.00, 1096.40, -860.60, 110.90}},
{!"Mulholland", {911.80, -860.60, -89.00, 1096.40, -768.00, 110.90}},
{!"Mulholland", {861.00, -674.80, -89.00, 1156.50, -600.80, 110.90}},
{!"Mulholland Intersection", {1463.90, -1150.80, -89.00, 1812.60, -768.00, 110.90}},
{!"North Rock", {2285.30, -768.00, 0.00, 2770.50, -269.70, 200.00}},
{!"Ocean Docks", {2373.70, -2697.00, -89.00, 2809.20, -2330.40, 110.90}},
{!"Ocean Docks", {2201.80, -2418.30, -89.00, 2324.00, -2095.00, 110.90}},
{!"Ocean Docks", {2324.00, -2302.30, -89.00, 2703.50, -2145.10, 110.90}},
{!"Ocean Docks", {2089.00, -2394.30, -89.00, 2201.80, -2235.80, 110.90}},
{!"Ocean Docks", {2201.80, -2730.80, -89.00, 2324.00, -2418.30, 110.90}},
{!"Ocean Docks", {2703.50, -2302.30, -89.00, 2959.30, -2126.90, 110.90}},
{!"Ocean Docks", {2324.00, -2145.10, -89.00, 2703.50, -2059.20, 110.90}},
{!"Ocean Flats", {-2994.40, 277.40, -9.10, -2867.80, 458.40, 200.00}},
{!"Ocean Flats", {-2994.40, -222.50, -0.00, -2593.40, 277.40, 200.00}},
{!"Ocean Flats", {-2994.40, -430.20, -0.00, -2831.80, -222.50, 200.00}},
{!"Octane Springs", {338.60, 1228.50, 0.00, 664.30, 1655.00, 200.00}},
{!"Old Venturas Strip", {2162.30, 2012.10, -89.00, 2685.10, 2202.70, 110.90}},
{!"Palisades", {-2994.40, 458.40, -6.10, -2741.00, 1339.60, 200.00}},
{!"Palomino Creek", {2160.20, -149.00, 0.00, 2576.90, 228.30, 200.00}},
{!"Paradiso", {-2741.00, 793.40, -6.10, -2533.00, 1268.40, 200.00}},
{!"Pershing Square", {1440.90, -1722.20, -89.00, 1583.50, -1577.50, 110.90}},
{!"Pilgrim", {2437.30, 1383.20, -89.00, 2624.40, 1783.20, 110.90}},
{!"Pilgrim", {2624.40, 1383.20, -89.00, 2685.10, 1783.20, 110.90}},
{!"Pilson Intersection", {1098.30, 2243.20, -89.00, 1377.30, 2507.20, 110.90}},
{!"Pirates in Men's Pants", {1817.30, 1469.20, -89.00, 2027.40, 1703.20, 110.90}},
{!"Playa del Seville", {2703.50, -2126.90, -89.00, 2959.30, -1852.80, 110.90}},
{!"Prickle Pine", {1534.50, 2583.20, -89.00, 1848.40, 2863.20, 110.90}},
{!"Prickle Pine", {1117.40, 2507.20, -89.00, 1534.50, 2723.20, 110.90}},
{!"Prickle Pine", {1848.40, 2553.40, -89.00, 1938.80, 2863.20, 110.90}},
{!"Prickle Pine", {1938.80, 2624.20, -89.00, 2121.40, 2861.50, 110.90}},
{!"Queens", {-2533.00, 458.40, 0.00, -2329.30, 578.30, 200.00}},
{!"Queens", {-2593.40, 54.70, 0.00, -2411.20, 458.40, 200.00}},
{!"Queens", {-2411.20, 373.50, 0.00, -2253.50, 458.40, 200.00}},
{!"Randolph Industrial Estate", {1558.00, 596.30, -89.00, 1823.00, 823.20, 110.90}},
{!"Redsands East", {1817.30, 2011.80, -89.00, 2106.70, 2202.70, 110.90}},
{!"Redsands East", {1817.30, 2202.70, -89.00, 2011.90, 2342.80, 110.90}},
{!"Redsands East", {1848.40, 2342.80, -89.00, 2011.90, 2478.40, 110.90}},
{!"Redsands West", {1236.60, 1883.10, -89.00, 1777.30, 2142.80, 110.90}},
{!"Redsands West", {1297.40, 2142.80, -89.00, 1777.30, 2243.20, 110.90}},
{!"Redsands West", {1377.30, 2243.20, -89.00, 1704.50, 2433.20, 110.90}},
{!"Redsands West", {1704.50, 2243.20, -89.00, 1777.30, 2342.80, 110.90}},
{!"Regular Tom", {-405.70, 1712.80, -3.00, -276.70, 1892.70, 200.00}},
{!"Richman", {647.50, -1118.20, -89.00, 787.40, -954.60, 110.90}},
{!"Richman", {647.50, -954.60, -89.00, 768.60, -860.60, 110.90}},
{!"Richman", {225.10, -1369.60, -89.00, 334.50, -1292.00, 110.90}},
{!"Richman", {225.10, -1292.00, -89.00, 466.20, -1235.00, 110.90}},
{!"Richman", {72.60, -1404.90, -89.00, 225.10, -1235.00, 110.90}},
{!"Richman", {72.60, -1235.00, -89.00, 321.30, -1008.10, 110.90}},
{!"Richman", {321.30, -1235.00, -89.00, 647.50, -1044.00, 110.90}},
{!"Richman", {321.30, -1044.00, -89.00, 647.50, -860.60, 110.90}},
{!"Richman", {321.30, -860.60, -89.00, 687.80, -768.00, 110.90}},
{!"Richman", {321.30, -768.00, -89.00, 700.70, -674.80, 110.90}},
{!"Robada Intersection", {-1119.00, 1178.90, -89.00, -862.00, 1351.40, 110.90}},
{!"Roca Escalante", {2237.40, 2202.70, -89.00, 2536.40, 2542.50, 110.90}},
{!"Roca Escalante", {2536.40, 2202.70, -89.00, 2625.10, 2442.50, 110.90}},
{!"Rockshore East", {2537.30, 676.50, -89.00, 2902.30, 943.20, 110.90}},
{!"Rockshore West", {1997.20, 596.30, -89.00, 2377.30, 823.20, 110.90}},
{!"Rockshore West", {2377.30, 596.30, -89.00, 2537.30, 788.80, 110.90}},
{!"Rodeo", {72.60, -1684.60, -89.00, 225.10, -1544.10, 110.90}},
{!"Rodeo", {72.60, -1544.10, -89.00, 225.10, -1404.90, 110.90}},
{!"Rodeo", {225.10, -1684.60, -89.00, 312.80, -1501.90, 110.90}},
{!"Rodeo", {225.10, -1501.90, -89.00, 334.50, -1369.60, 110.90}},
{!"Rodeo", {334.50, -1501.90, -89.00, 422.60, -1406.00, 110.90}},
{!"Rodeo", {312.80, -1684.60, -89.00, 422.60, -1501.90, 110.90}},
{!"Rodeo", {422.60, -1684.60, -89.00, 558.00, -1570.20, 110.90}},
{!"Rodeo", {558.00, -1684.60, -89.00, 647.50, -1384.90, 110.90}},
{!"Rodeo", {466.20, -1570.20, -89.00, 558.00, -1385.00, 110.90}},
{!"Rodeo", {422.60, -1570.20, -89.00, 466.20, -1406.00, 110.90}},
{!"Rodeo", {466.20, -1385.00, -89.00, 647.50, -1235.00, 110.90}},
{!"Rodeo", {334.50, -1406.00, -89.00, 466.20, -1292.00, 110.90}},
{!"Royal Casino", {2087.30, 1383.20, -89.00, 2437.30, 1543.20, 110.90}},
{!"San Andreas Sound", {2450.30, 385.50, -100.00, 2759.20, 562.30, 200.00}},
{!"Santa Flora", {-2741.00, 458.40, -7.60, -2533.00, 793.40, 200.00}},
{!"Santa Maria Beach", {342.60, -2173.20, -89.00, 647.70, -1684.60, 110.90}},
{!"Santa Maria Beach", {72.60, -2173.20, -89.00, 342.60, -1684.60, 110.90}},
{!"Shady Cabin", {-1632.80, -2263.40, -3.00, -1601.30, -2231.70, 200.00}},
{!"Shady Creeks", {-1820.60, -2643.60, -8.00, -1226.70, -1771.60, 200.00}},
{!"Shady Creeks", {-2030.10, -2174.80, -6.10, -1820.60, -1771.60, 200.00}},
{!"Sobell Rail Yards", {2749.90, 1548.90, -89.00, 2923.30, 1937.20, 110.90}},
{!"Spinybed", {2121.40, 2663.10, -89.00, 2498.20, 2861.50, 110.90}},
{!"Starfish Casino", {2437.30, 1783.20, -89.00, 2685.10, 2012.10, 110.90}},
{!"Starfish Casino", {2437.30, 1858.10, -39.00, 2495.00, 1970.80, 60.90}},
{!"Starfish Casino", {2162.30, 1883.20, -89.00, 2437.30, 2012.10, 110.90}},
{!"Temple", {1252.30, -1130.80, -89.00, 1378.30, -1026.30, 110.90}},
{!"Temple", {1252.30, -1026.30, -89.00, 1391.00, -926.90, 110.90}},
{!"Temple", {1252.30, -926.90, -89.00, 1357.00, -910.10, 110.90}},
{!"Temple", {952.60, -1130.80, -89.00, 1096.40, -937.10, 110.90}},
{!"Temple", {1096.40, -1130.80, -89.00, 1252.30, -1026.30, 110.90}},
{!"Temple", {1096.40, -1026.30, -89.00, 1252.30, -910.10, 110.90}},
{!"The Camel's Toe", {2087.30, 1203.20, -89.00, 2640.40, 1383.20, 110.90}},
{!"The Clown's Pocket", {2162.30, 1783.20, -89.00, 2437.30, 1883.20, 110.90}},
{!"The Emerald Isle", {2011.90, 2202.70, -89.00, 2237.40, 2508.20, 110.90}},
{!"The Farm", {-1209.60, -1317.10, 114.90, -908.10, -787.30, 251.90}},
{!"The Four Dragons Casino", {1817.30, 863.20, -89.00, 2027.30, 1083.20, 110.90}},
{!"The High Roller", {1817.30, 1283.20, -89.00, 2027.30, 1469.20, 110.90}},
{!"The Mako Span", {1664.60, 401.70, 0.00, 1785.10, 567.20, 200.00}},
{!"The Panopticon", {-947.90, -304.30, -1.10, -319.60, 327.00, 200.00}},
{!"The Pink Swan", {1817.30, 1083.20, -89.00, 2027.30, 1283.20, 110.90}},
{!"The Sherman Dam", {-968.70, 1929.40, -3.00, -481.10, 2155.20, 200.00}},
{!"The Strip", {2027.40, 863.20, -89.00, 2087.30, 1703.20, 110.90}},
{!"The Strip", {2106.70, 1863.20, -89.00, 2162.30, 2202.70, 110.90}},
{!"The Strip", {2027.40, 1783.20, -89.00, 2162.30, 1863.20, 110.90}},
{!"The Strip", {2027.40, 1703.20, -89.00, 2137.40, 1783.20, 110.90}},
{!"The Visage", {1817.30, 1863.20, -89.00, 2106.70, 2011.80, 110.90}},
{!"The Visage", {1817.30, 1703.20, -89.00, 2027.40, 1863.20, 110.90}},
{!"Unity Station", {1692.60, -1971.80, -20.40, 1812.60, -1932.80, 79.50}},
{!"Valle Ocultado", {-936.60, 2611.40, 2.00, -715.90, 2847.90, 200.00}},
{!"Verdant Bluffs", {930.20, -2488.40, -89.00, 1249.60, -2006.70, 110.90}},
{!"Verdant Bluffs", {1073.20, -2006.70, -89.00, 1249.60, -1842.20, 110.90}},
{!"Verdant Bluffs", {1249.60, -2179.20, -89.00, 1692.60, -1842.20, 110.90}},
{!"Verdant Meadows", {37.00, 2337.10, -3.00, 435.90, 2677.90, 200.00}},
{!"Verona Beach", {647.70, -2173.20, -89.00, 930.20, -1804.20, 110.90}},
{!"Verona Beach", {930.20, -2006.70, -89.00, 1073.20, -1804.20, 110.90}},
{!"Verona Beach", {851.40, -1804.20, -89.00, 1046.10, -1577.50, 110.90}},
{!"Verona Beach", {1161.50, -1722.20, -89.00, 1323.90, -1577.50, 110.90}},
{!"Verona Beach", {1046.10, -1722.20, -89.00, 1161.50, -1577.50, 110.90}},
{!"Vinewood", {787.40, -1310.20, -89.00, 952.60, -1130.80, 110.90}},
{!"Vinewood", {787.40, -1130.80, -89.00, 952.60, -954.60, 110.90}},
{!"Vinewood", {647.50, -1227.20, -89.00, 787.40, -1118.20, 110.90}},
{!"Vinewood", {647.70, -1416.20, -89.00, 787.40, -1227.20, 110.90}},
{!"Whitewood Estates", {883.30, 1726.20, -89.00, 1098.30, 2507.20, 110.90}},
{!"Whitewood Estates", {1098.30, 1726.20, -89.00, 1197.30, 2243.20, 110.90}},
{!"Willowfield", {1970.60, -2179.20, -89.00, 2089.00, -1852.80, 110.90}},
{!"Willowfield", {2089.00, -2235.80, -89.00, 2201.80, -1989.90, 110.90}},
{!"Willowfield", {2089.00, -1989.90, -89.00, 2324.00, -1852.80, 110.90}},
{!"Willowfield", {2201.80, -2095.00, -89.00, 2324.00, -1989.90, 110.90}},
{!"Willowfield", {2541.70, -1941.40, -89.00, 2703.50, -1852.80, 110.90}},
{!"Willowfield", {2324.00, -2059.20, -89.00, 2541.70, -1852.80, 110.90}},
{!"Willowfield", {2541.70, -2059.20, -89.00, 2703.50, -1941.40, 110.90}},
{!"Yellow Bell Station", {1377.40, 2600.40, -21.90, 1492.40, 2687.30, 78.00}},
{!"Los Santos", {44.60, -2892.90, -242.90, 2997.00, -768.00, 900.00}},
{!"Las Venturas", {869.40, 596.30, -242.90, 2997.00, 2993.80, 900.00}},
{!"Bone County", {-480.50, 596.30, -242.90, 869.40, 2993.80, 900.00}},
{!"Tierra Robada", {-2997.40, 1659.60, -242.90, -480.50, 2993.80, 900.00}},
{!"Tierra Robada", {-1213.90, 596.30, -242.90, -480.50, 1659.60, 900.00}},
{!"San Fierro", {-2997.40, -1115.50, -242.90, -1213.90, 1659.60, 900.00}},
{!"Red County", {-1213.90, -768.00, -242.90, 2997.00, 596.30, 900.00}},
{!"Flint County", {-1213.90, -2892.90, -242.90, 44.60, -768.00, 900.00}},
{!"Whetstone", {-2997.40, -2892.90, -242.90, -1213.90, -1115.50, 900.00}}
};
new
name[32] = "San Andreas";
for (new i = 0; i != sizeof(g_arrZoneData); i ++) if ((fX >= g_arrZoneData[i][e_ZoneArea][0] && fX <= g_arrZoneData[i][e_ZoneArea][3]) && (fY >= g_arrZoneData[i][e_ZoneArea][1] && fY <= g_arrZoneData[i][e_ZoneArea][4]) && (fZ >= g_arrZoneData[i][e_ZoneArea][2] && fZ <= g_arrZoneData[i][e_ZoneArea][5])) {
strunpack(name, g_arrZoneData[i][e_ZoneName]);
break;
}
return name;
}
stock Float:GetPlayerDistanceFromPlayer(playerid, targetid)
{
new
Float:x,
Float:y,
Float:z;
GetPlayerPos(targetid, x, y, z);
return GetPlayerDistanceFromPoint(playerid, x, y, z);
}
IsPlayerArmed(playerid)
{
new
weapon,
ammo;
for (new i = 0; i < 13; i ++) {
GetPlayerWeaponData(playerid, i, weapon, ammo);
if (ammo > 0) {
switch (weapon) {
case 1, 2, 4, 6, 8, 9, 15, 22..38: return 1;
}
}
}
return 0;
}
GetNearestPlayerInView(playerid, Float:distance = 2.0)
{
new
Float:fAngle,
Float:fPosX,
Float:fPosY,
Float:fPosZ;
GetPlayerFacingAngle(playerid, fAngle);
GetPlayerPos(playerid, fPosX, fPosY, fPosZ);
fPosX += distance * floatsin(-fAngle, degrees);
fPosY += distance * floatcos(-fAngle, degrees);
for (new i = 0; i < MAX_PLAYERS; i++) if (IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i, 2.0, fPosX, fPosY, fPosZ)) {
return i;
}
return INVALID_PLAYER_ID;
}
PlayReloadAnimation(playerid, weaponid)
{
switch (weaponid)
{
case 22: ApplyAnimation(playerid, "COLT45", "colt45_reload", 4.0, 0, 0, 0, 0, 0);
case 23: ApplyAnimation(playerid, "SILENCED", "Silence_reload", 4.0, 0, 0, 0, 0, 0);
case 24: ApplyAnimation(playerid, "PYTHON", "python_reload", 4.0, 0, 0, 0, 0, 0);
case 25, 27: ApplyAnimation(playerid, "BUDDY", "buddy_reload", 4.0, 0, 0, 0, 0, 0);
case 26: ApplyAnimation(playerid, "COLT45", "sawnoff_reload", 4.0, 0, 0, 0, 0, 0);
case 29..31, 33, 34: ApplyAnimation(playerid, "RIFLE", "rifle_load", 4.0, 0, 0, 0, 0, 0);
case 28, 32: ApplyAnimation(playerid, "TEC", "tec_reload", 4.0, 0, 0, 0, 0, 0);
}
return 1;
}
IsWheelModel(modelid)
{
switch (modelid) {
case 1025, 1073..1085, 1096..1098: return 1;
}
return 0;
}
IsNOSCompatible(modelid)
{
switch (modelid) {
case 581, 523, 462, 521, 463, 522, 461, 448, 468, 586, 509, 481, 510, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 590, 569, 537, 538, 570, 449: return 0;
}
return 1;
}
new const g_aLegalMods[][] = {
{400, 1024, 1021, 1020, 1019, 1018, 1013, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{401, 1145, 1144, 1143, 1142, 1020, 1019, 1017, 1013, 1007, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000},
{404, 1021, 1020, 1019, 1017, 1016, 1013, 1007, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{405, 1023, 1021, 1020, 1019, 1018, 1014, 1001, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{410, 1024, 1023, 1021, 1020, 1019, 1017, 1013, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{415, 1023, 1019, 1018, 1017, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{418, 1021, 1020, 1016, 1006, 1002, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{420, 1021, 1019, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{421, 1023, 1021, 1020, 1019, 1018, 1016, 1014, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{422, 1021, 1020, 1019, 1017, 1013, 1007, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{426, 1021, 1019, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{436, 1022, 1021, 1020, 1019, 1017, 1013, 1007, 1006, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{439, 1145, 1144, 1143, 1142, 1023, 1017, 1013, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{477, 1021, 1020, 1019, 1018, 1017, 1007, 1006, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{478, 1024, 1022, 1021, 1020, 1013, 1012, 1005, 1004, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{489, 1024, 1020, 1019, 1018, 1016, 1013, 1006, 1005, 1004, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{491, 1145, 1144, 1143, 1142, 1023, 1021, 1020, 1019, 1018, 1017, 1014, 1007, 1003, 0000, 0000, 0000, 0000, 0000},
{492, 1016, 1006, 1005, 1004, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{496, 1143, 1142, 1023, 1020, 1019, 1017, 1011, 1007, 1006, 1003, 1002, 1001, 0000, 0000, 0000, 0000, 0000, 0000},
{500, 1024, 1021, 1020, 1019, 1013, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{516, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1007, 1004, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{517, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1017, 1016, 1007, 1003, 1002, 0000, 0000, 0000, 0000, 0000},
{518, 1145, 1144, 1143, 1142, 1023, 1020, 1018, 1017, 1013, 1007, 1006, 1005, 1003, 1001, 0000, 0000, 0000, 0000},
{527, 1021, 1020, 1018, 1017, 1015, 1014, 1007, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{529, 1023, 1020, 1019, 1018, 1017, 1012, 1011, 1007, 1006, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{534, 1185, 1180, 1179, 1178, 1127, 1126, 1125, 1124, 1123, 1122, 1106, 1101, 1100, 0000, 0000, 0000, 0000, 0000},
{535, 1121, 1120, 1119, 1118, 1117, 1116, 1115, 1114, 1113, 1110, 1109, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{536, 1184, 1183, 1182, 1181, 1128, 1108, 1107, 1105, 1104, 1103, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{540, 1145, 1144, 1143, 1142, 1024, 1023, 1020, 1019, 1018, 1017, 1007, 1006, 1004, 1001, 0000, 0000, 0000, 0000},
{542, 1145, 1144, 1021, 1020, 1019, 1018, 1015, 1014, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{546, 1145, 1144, 1143, 1142, 1024, 1023, 1019, 1018, 1017, 1007, 1006, 1004, 1002, 1001, 0000, 0000, 0000, 0000},
{547, 1143, 1142, 1021, 1020, 1019, 1018, 1016, 1003, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{549, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1017, 1012, 1011, 1007, 1003, 1001, 0000, 0000, 0000, 0000},
{550, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000},
{551, 1023, 1021, 1020, 1019, 1018, 1016, 1006, 1005, 1003, 1002, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{558, 1168, 1167, 1166, 1165, 1164, 1163, 1095, 1094, 1093, 1092, 1091, 1090, 1089, 1088, 0000, 0000, 0000, 0000},
{559, 1173, 1162, 1161, 1160, 1159, 1158, 1072, 1071, 1070, 1069, 1068, 1067, 1066, 1065, 0000, 0000, 0000, 0000},
{560, 1170, 1169, 1141, 1140, 1139, 1138, 1033, 1032, 1031, 1030, 1029, 1028, 1027, 1026, 0000, 0000, 0000, 0000},
{561, 1157, 1156, 1155, 1154, 1064, 1063, 1062, 1061, 1060, 1059, 1058, 1057, 1056, 1055, 1031, 1030, 1027, 1026},
{562, 1172, 1171, 1149, 1148, 1147, 1146, 1041, 1040, 1039, 1038, 1037, 1036, 1035, 1034, 0000, 0000, 0000, 0000},
{565, 1153, 1152, 1151, 1150, 1054, 1053, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045, 0000, 0000, 0000, 0000},
{567, 1189, 1188, 1187, 1186, 1133, 1132, 1131, 1130, 1129, 1102, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{575, 1177, 1176, 1175, 1174, 1099, 1044, 1043, 1042, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{576, 1193, 1192, 1191, 1190, 1137, 1136, 1135, 1134, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{580, 1023, 1020, 1018, 1017, 1007, 1006, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{589, 1145, 1144, 1024, 1020, 1018, 1017, 1016, 1013, 1007, 1006, 1005, 1004, 1000, 0000, 0000, 0000, 0000, 0000},
{600, 1022, 1020, 1018, 1017, 1013, 1007, 1006, 1005, 1004, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000},
{603, 1145, 1144, 1143, 1142, 1024, 1023, 1020, 1019, 1018, 1017, 1007, 1006, 1001, 0000, 0000, 0000, 0000, 0000}
};
IsLegalComponent(modelid, componentid)
{
if (IsWheelModel(componentid) || (1086 <= componentid <= 1087) || (componentid >= 1008 && componentid <= 1010))
{
if (!IsNOSCompatible(modelid))
return 1;
}
else
{
for (new i = 0; i < sizeof(g_aLegalMods); i ++)
{
if (g_aLegalMods[i][0] != modelid)
continue;
else for (new l = 1; l < 22; l ++) if (g_aLegalMods[i][l] == componentid) {
return 1;
}
}
}
return 0;
}
IsWeaponModel(model) {
new const g_aWeaponModels[] = {
0, 331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324,
325, 326, 342, 343, 344, 0, 0, 0, 346, 347, 348, 349, 350, 351, 352,
353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
367, 368, 368, 371
};
for (new i = 0; i < sizeof(g_aWeaponModels); i ++) if (g_aWeaponModels[i] == model) {
return 1;
}
return 0;
}
GetWeaponModel(weaponid) {
new const g_aWeaponModels[] = {
0, 331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324,
325, 326, 342, 343, 344, 0, 0, 0, 346, 347, 348, 349, 350, 351, 352,
353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
367, 368, 368, 371
};
if (1 <= weaponid <= 46)
return g_aWeaponModels[weaponid];
return 0;
}
IsVehicleSeatUsed(vehicleid, seat)
{
for (new i = 0; i < MAX_PLAYERS; i++) if (IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == seat) {
return 1;
}
return 0;
}
RemoveFromVehicle(playerid)
{
if (IsPlayerInAnyVehicle(playerid))
{
static
Float:fX,
Float:fY,
Float:fZ;
GetPlayerPos(playerid, fX, fY, fZ);
SetPlayerPos(playerid, fX, fY, fZ + 1.5);
}
return 1;
}
GetAvailableSeat(vehicleid, start = 1)
{
new seats = GetVehicleMaxSeats(vehicleid);
for (new i = start; i < seats; i ++) if (!IsVehicleSeatUsed(vehicleid, i)) {
return i;
}
return -1;
}
GetVehicleFromBehind(vehicleid)
{
static
Float:fCoords[7];
GetVehiclePos(vehicleid, fCoords[0], fCoords[1], fCoords[2]);
GetVehicleZAngle(vehicleid, fCoords[3]);
for (new i = 1; i != MAX_VEHICLES; i ++) if (i != vehicleid && GetVehiclePos(i, fCoords[4], fCoords[5], fCoords[6]))
{
if (floatabs(fCoords[0] - fCoords[4]) < 6 && floatabs(fCoords[1] - fCoords[5]) < 6 && floatabs(fCoords[2] - fCoords[6]) < 6)
return i;
}
return INVALID_VEHICLE_ID;
}
GetVehicleBoot(vehicleid, &Float:x, &Float:y, &Float:z)
{
if (!GetVehicleModel(vehicleid) || vehicleid == INVALID_VEHICLE_ID)
return (x = 0.0, y = 0.0, z = 0.0), 0;
static
Float:pos[7]
;
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, pos[0], pos[1], pos[2]);
GetVehiclePos(vehicleid, pos[3], pos[4], pos[5]);
GetVehicleZAngle(vehicleid, pos[6]);
x = pos[3] - (floatsqroot(pos[1] + pos[1]) * floatsin(-pos[6], degrees));
y = pos[4] - (floatsqroot(pos[1] + pos[1]) * floatcos(-pos[6], degrees));
z = pos[5];
return 1;
}
GetVehicleHood(vehicleid, &Float:x, &Float:y, &Float:z)
{
if (!GetVehicleModel(vehicleid) || vehicleid == INVALID_VEHICLE_ID)
return (x = 0.0, y = 0.0, z = 0.0), 0;
static
Float:pos[7]
;
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, pos[0], pos[1], pos[2]);
GetVehiclePos(vehicleid, pos[3], pos[4], pos[5]);
GetVehicleZAngle(vehicleid, pos[6]);
x = pos[3] + (floatsqroot(pos[1] + pos[1]) * floatsin(-pos[6], degrees));
y = pos[4] + (floatsqroot(pos[1] + pos[1]) * floatcos(-pos[6], degrees));
z = pos[5];
return 1;
}
RemoveAlpha(color) {
return (color & ~0xFF);
}
FormatNumber(number, prefix[] = "$")
{
static
value[32],
length;
format(value, sizeof(value), "%d", (number < 0) ? (-number) : (number));
if ((length = strlen(value)) > 3)
{
for (new i = length, l = 0; --i >= 0; l ++) {
if ((l > 0) && (l % 3 == 0)) strins(value, ",", i + 1);
}
}
if (prefix[0] != 0)
strins(value, prefix, 0);
if (number < 0)
strins(value, "-", 0);
return value;
}
IsValidPlayerName(const str[])
{
if (!str[0] || str[0] == '\1')
return 0;
for (new i = 0, l = strlen(str); i != l; i ++)
{
if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
continue;
if (str[i] == '_' || str[i] == '$' || str[i] == '@' || str[i] == '[' || str[i] == ']')
continue;
else
return 0;
}
return 1;
}
IsAnIP(str[])
{
if (!str[0] || str[0] == '\1')
return 0;
for (new i = 0, l = strlen(str); i != l; i ++)
{
if ((str[i] < '0' || str[i] > '9') && str[i] != '.')
return 0;
if (0 < ((i == 0) ? (strval(str)) : (strval(str[i + 1]))) > 255)
return 0;
}
return 1;
}
IsPlayerIdle(playerid) {
new
index = GetPlayerAnimationIndex(playerid);
return ((index == 1275) || (1181 <= index <= 1192));
}
IsPlayerNearDynamicObject(playerid, objectid, Float:range = 5.0) {
static
Float:fX,
Float:fY,
Float:fZ;
GetDynamicObjectPos(objectid, fX, fY, fZ);
return (IsPlayerInRangeOfPoint(playerid, range, fX, fY, fZ));
}
GetVehicleMaxSeats(vehicleid)
{
static const g_arrMaxSeats[] = {
4, 2, 2, 2, 4, 4, 1, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 1, 4, 4, 4, 2,
1, 7, 1, 2, 2, 0, 2, 7, 4, 2, 4, 1, 2, 2, 2, 4, 1, 2, 1, 0, 0, 2, 1, 1, 1, 2, 2, 2, 4, 4,
2, 2, 2, 2, 1, 1, 4, 4, 2, 2, 4, 2, 1, 1, 2, 2, 1, 2, 2, 4, 2, 1, 4, 3, 1, 1, 1, 4, 2, 2,
4, 2, 4, 1, 2, 2, 2, 4, 4, 2, 2, 1, 2, 2, 2, 2, 2, 4, 2, 1, 1, 2, 1, 1, 2, 2, 4, 2, 2, 1,
1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 1, 1, 2, 2, 2, 2, 7, 7, 1, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2,
4, 4, 2, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 1, 2, 4, 4, 1, 0, 0, 1, 1, 2, 1, 2, 2, 1, 2, 4,
4, 2, 4, 1, 0, 4, 2, 2, 2, 2, 0, 0, 7, 2, 2, 1, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 4,
0, 0
};
new
model = GetVehicleModel(vehicleid);
if (400 <= model <= 611)
return g_arrMaxSeats[model - 400];
return 0;
}
GetNearestVehicle(playerid)
{
static
Float:fX,
Float:fY,
Float:fZ;
for (new i = 1; i != MAX_VEHICLES; i ++) if (IsValidVehicle(i) && GetVehiclePos(i, fX, fY, fZ))
{
if (IsPlayerInRangeOfPoint(playerid, 3.5, fX, fY, fZ)) return i;
}
return INVALID_VEHICLE_ID;
}
IsPlayerNearPlayer(playerid, targetid, Float:radius)
{
static
Float:fX,
Float:fY,
Float:fZ;
GetPlayerPos(targetid, fX, fY, fZ);
return (GetPlayerInterior(playerid) == GetPlayerInterior(targetid) && GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(targetid)) && IsPlayerInRangeOfPoint(playerid, radius, fX, fY, fZ);
}
IsPlayerNearBoot(playerid, vehicleid)
{
static
Float:fX,
Float:fY,
Float:fZ;
GetVehicleBoot(vehicleid, fX, fY, fZ);
return (GetPlayerVirtualWorld(playerid) == GetVehicleVirtualWorld(vehicleid)) && IsPlayerInRangeOfPoint(playerid, 3.5, fX, fY, fZ);
}
IsPlayerNearHood(playerid, vehicleid)
{
static
Float:fX,
Float:fY,
Float:fZ;
GetVehicleHood(vehicleid, fX, fY, fZ);
return (GetPlayerVirtualWorld(playerid) == GetVehicleVirtualWorld(vehicleid)) && IsPlayerInRangeOfPoint(playerid, 3.0, fX, fY, fZ);
}
Log_Write(const path[], const str[], {Float,_}:...)
{
static
args,
start,
end,
File:file,
string[1024]
;
if ((start = strfind(path, "/")) != -1) {
strmid(string, path, 0, start + 1);
if (!fexist(string))
return printf("** Warning: Directory \"%s\" doesn't exist.", string);
}
#emit LOAD.S.pri 8
#emit STOR.pri args
file = fopen(path, io_append);
if (!file)
return 0;
if (args > 8)
{
#emit ADDR.pri str
#emit STOR.pri start
for (end = start + (args - 8); end > start; end -= 4)
{
#emit LREF.pri end
#emit PUSH.pri
}
#emit PUSH.S str
#emit PUSH.C 1024
#emit PUSH.C string
#emit PUSH.C args
#emit SYSREQ.C format
fwrite(file, string);
fwrite(file, "\r\n");
fclose(file);
#emit LCTRL 5
#emit SCTRL 4
#emit RETN
}
fwrite(file, str);
fwrite(file, "\r\n");
fclose(file);
return 1;
}
IsValidRoleplayName(const name[]) {
if (!name[0] || strfind(name, "_") == -1)
return 0;
else for (new i = 0, len = strlen(name); i != len; i ++) {
if ((i == 0) && (name[i] < 'A' || name[i] > 'Z'))
return 0;
else if ((i != 0 && i < len && name[i] == '_') && (name[i + 1] < 'A' || name[i + 1] > 'Z'))
return 0;
else if ((name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z') && name[i] != '_' && name[i] != '.')
return 0;
}
return 1;
}
IsNumeric(const str[])
{
for (new i = 0, l = strlen(str); i != l; i ++)
{
if (i == 0 && str[0] == '-')
continue;
else if (str[i] < '0' || str[i] > '9')
return 0;
}
return 1;
}
ReturnWeaponName(weaponid)
{
static
name[32];
GetWeaponName(weaponid, name, sizeof(name));
if (!weaponid)
name = "None";
else if (weaponid == 18)
name = "Molotov Cocktail";
else if (weaponid == 44)
name = "Nightvision";
else if (weaponid == 45)
name = "Infrared";
return name;
}
new stock g_arrVehicleNames[][] = {
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster",
"Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
"Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer",
"Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach",
"Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow",
"Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
"Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic",
"Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton",
"Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher",
"FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick",
"Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher",
"Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt", "Tanker", "Roadtrain",
"Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck",
"Fortune", "Cadrona", "SWAT Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan",
"Blade", "Streak", "Freight", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder",
"Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster",
"Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
"Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30",
"Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
"Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "LSPD Car", "SFPD Car", "LVPD Car",
"Police Rancher", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
"Boxville", "Tiller", "Utility Trailer"
};
ReturnVehicleModelName(model)
{
new
name[32] = "None";
if (model < 400 || model > 611)
return name;
format(name, sizeof(name), g_arrVehicleNames[model - 400]);
return name;
}
ReturnVehicleName(vehicleid)
{
new
model = GetVehicleModel(vehicleid),
name[32] = "None";
if (model < 400 || model > 611)
return name;
format(name, sizeof(name), g_arrVehicleNames[model - 400]);
return name;
}
GetVehicleModelByName(const name[])
{
if (IsNumeric(name) && (strval(name) >= 400 && strval(name) <= 611))
return strval(name);
for (new i = 0; i < sizeof(g_arrVehicleNames); i ++)
{
if (strfind(g_arrVehicleNames[i], name, true) != -1)
{
return i + 400;
}
}
return 0;
}
GetVehicleDriver(vehicleid) {
for (new i = 0; i < MAX_PLAYERS; i++) if (IsPlayerConnected(i)) {
if (GetPlayerState(i) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(i) == vehicleid) return i;
}
return INVALID_PLAYER_ID;
}
IsWindowedVehicle(vehicleid)
{
static const g_aWindowStatus[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1,
1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1,
1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0
};
new modelid = GetVehicleModel(vehicleid);
if (modelid < 400 || modelid > 611)
return 0;
return (g_aWindowStatus[modelid - 400]);
}
IsNewsVehicle(vehicleid)
{
switch (GetVehicleModel(vehicleid)) {
case 488, 582: return 1;
}
return 0;
}
IsACruiser(vehicleid)
{
switch (GetVehicleModel(vehicleid)) {
case 523, 427, 490, 528, 596..599, 601: return 1;
}
return 0;
}
IsDoorVehicle(vehicleid)
{
switch (GetVehicleModel(vehicleid)) {
case 400..424, 426..429, 431..440, 442..445, 451, 455, 456, 458, 459, 466, 467, 470, 474, 475:
return 1;
case 477..480, 482, 483, 486, 489, 490..492, 494..496, 498..500, 502..508, 514..518, 524..529, 533..536:
return 1;
case 540..547, 549..552, 554..562, 565..568, 573, 575, 576, 578..580, 582, 585, 587..589, 596..605, 609:
return 1;
}
return 0;
}
IsLoadableVehicle(vehicleid)
{
new modelid = GetVehicleModel(vehicleid);
if (GetVehicleTrailer(vehicleid))
modelid = GetVehicleModel(GetVehicleTrailer(vehicleid));
switch (modelid) {
case 609, 403, 414, 456, 498, 499, 514, 515, 435, 591: return 1;
}
return 0;
}
IsABoat(vehicleid)
{
switch (GetVehicleModel(vehicleid)) {
case 430, 446, 452, 453, 454, 472, 473, 484, 493, 595: return 1;
}
return 0;
}
IsABike(vehicleid)
{
switch (GetVehicleModel(vehicleid)) {
case 448, 461..463, 468, 521..523, 581, 586, 481, 509, 510: return 1;
}
return 0;
}
IsAPlane(vehicleid)
{
switch (GetVehicleModel(vehicleid)) {
case 460, 464, 476, 511, 512, 513, 519, 520, 553, 577, 592, 593: return 1;
}
return 0;
}
IsAHelicopter(vehicleid)
{
switch (GetVehicleModel(vehicleid)) {
case 417, 425, 447, 465, 469, 487, 488, 497, 501, 548, 563: return 1;
}
return 0;
}
IsEngineVehicle(vehicleid)
{
static const g_aEngineStatus[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0
};
new modelid = GetVehicleModel(vehicleid);
if (modelid < 400 || modelid > 611)
return 0;
return (g_aEngineStatus[modelid - 400]);
}
GetElapsedTime(time, &hours, &minutes, &seconds)
{
hours = 0;
minutes = 0;
seconds = 0;
if (time >= 3600)
{
hours = (time / 3600);
time -= (hours * 3600);
}
while (time >= 60)
{
minutes++;
time -= 60;
}
return (seconds = time);
}
GetDuration(time)
{
new
str[32];
if (time < 0 || time == gettime()) {
format(str, sizeof(str), "Never");
return str;
}
else if (time < 60)
format(str, sizeof(str), "%d seconds", time);
else if (time >= 0 && time < 60)
format(str, sizeof(str), "%d seconds", time);
else if (time >= 60 && time < 3600)
format(str, sizeof(str), (time >= 120) ? ("%d minutes") : ("%d minute"), time / 60);
else if (time >= 3600 && time < 86400)
format(str, sizeof(str), (time >= 7200) ? ("%d hours") : ("%d hour"), time / 3600);
else if (time >= 86400 && time < 2592000)
format(str, sizeof(str), (time >= 172800) ? ("%d days") : ("%d day"), time / 86400);
else if (time >= 2592000 && time < 31536000)
format(str, sizeof(str), (time >= 5184000) ? ("%d months") : ("%d month"), time / 2592000);
else if (time >= 31536000)
format(str, sizeof(str), (time >= 63072000) ? ("%d years") : ("%d year"), time / 31536000);
strcat(str, " ago");
return str;
}
GetEngineStatus(vehicleid)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
if (engine != 1)
return 0;
return 1;
}
GetHoodStatus(vehicleid)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
if (bonnet != 1)
return 0;
return 1;
}
GetTrunkStatus(vehicleid)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
if (boot != 1)
return 0;
return 1;
}
GetLightStatus(vehicleid)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
if (lights != 1)
return 0;
return 1;
}
SetEngineStatus(vehicleid, status)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
return SetVehicleParamsEx(vehicleid, status, lights, alarm, doors, bonnet, boot, objective);
}
SetLightStatus(vehicleid, status)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
return SetVehicleParamsEx(vehicleid, engine, status, alarm, doors, bonnet, boot, objective);
}
SetTrunkStatus(vehicleid, status)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
return SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, status, objective);
}
SetHoodStatus(vehicleid, status)
{
static
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
return SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, status, boot, objective);
}