Advertisement
Patrykos009

uf.inc

Aug 2nd, 2019
991
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 103.95 KB | None | 0 0
  1. /*  SA:MP Useful Functions maintained by Kaperstone | Edit & UnBug: Patrykos009
  2.  *  Repository link: https://github.com/Kaperstone/uf.inc
  3.  *  ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  4.  *      Don't use this link before update by author
  5.  *
  6.  *  (c) Copyright 2005-2018 under MIT license
  7.  *
  8.  *  Credits:
  9.  *   Alex "Y_Less" Cole
  10.  *   Jan "DracoBlue" Schütze
  11.  *   Gabriel "Larcius" Cordes
  12.  *   Rafelder
  13.  *   Mike
  14.  *   Slick
  15.  *   Allan
  16.  *   SidViciousII
  17.  *   Darkrealm
  18.  *   El Presy
  19.  *   Spectre
  20.  *   mabako
  21.  *   Sacky
  22.  *   Boss
  23.  *   Toxic
  24.  *   dyraXon
  25.  *   yellowblood
  26.  *   50p
  27.  *   rapidZ
  28.  *   Tratulla
  29.  *   Kamazy
  30.  *   Simon
  31.  *   yom
  32.  *   Betamaster
  33.  *   Peter
  34.  *   kool
  35.  *   Hellomy
  36.  *   Patrykos009
  37.  *
  38.  */
  39.  
  40. #if defined _uf_included
  41.     #endinput
  42. #endif
  43. #define _uf_included
  44. #pragma library uf
  45.  
  46. #define MAX_STRING 255
  47. #define MAX_VEHICLES_MODELS 212
  48. #if !defined MAX_PICKUPS
  49.     #define MAX_PICKUPS 999
  50. #endif
  51. #define MAX_AREAS 500
  52. #define MAX_FREEZE 100
  53. #define FREEZE_COUNTDOWN MAX_FREEZE
  54. #define FREEZE_COUNTUP MAX_FREEZE+1
  55. #define FREEZE_MENU MAX_FREEZE+2
  56. #define MAX_FREEZE_ALL FREEZE_MENU+1
  57. #define VTYPE_CAR 1
  58. #define VTYPE_HEAVY 2
  59. #define VTYPE_MONSTER 3
  60. #define VTYPE_BIKE 4
  61. #define VTYPE_QUAD 5
  62. #define VTYPE_BMX 6
  63. #define VTYPE_HELI 7
  64. #define VTYPE_PLANE 8
  65. #define VTYPE_SEA 9
  66. #define VTYPE_TRAILER 10
  67. #define VTYPE_TRAIN 11
  68. #define VTYPE_BOAT VTYPE_SEA
  69. #define VTYPE_BICYCLE VTYPE_BMX
  70. #define AREA_RECTANGLE 1
  71. #define AREA_CIRCLE 2
  72. #define AREA_ASHLAR 3
  73. #define AREA_CUBE AREA_ASHLAR
  74. #define AREA_SPHERE 4
  75. #define AREA_CYLINDER 5
  76. #define INF_INT 0x7F800000
  77. const Float:INF_FLOAT=Float:0x7F800000;
  78. const Float:PI=3.14159265;
  79. #define SecToMS(%1) %1*1000
  80. #define MinToMS(%1) %1*1000*60
  81. #define HourToMS(%1) %1*1000*60*60
  82. #define FORWARD 1
  83. #define SIDELONG 2
  84. #define SPEED_MPS 1
  85. #define SPEED_KMPH 2
  86. #define SPEED_MPH 3
  87. #define ACC_MPS2 1
  88. #define ACC_KMPH2 2
  89. #define ACC_G 3
  90.  
  91. new stock VehicleNames[(MAX_VEHICLES_MODELS+1)][MAX_STRING] = {
  92.    "Landstalker",
  93.    "Bravura",
  94.    "Buffalo",
  95.    "Linerunner",
  96.    "Pereniel",
  97.    "Sentinel",
  98.    "Dumper",
  99.    "Firetruck",
  100.    "Trashmaster",
  101.    "Stretch",
  102.    "Manana",
  103.    "Infernus",
  104.    "Voodoo",
  105.    "Pony",
  106.    "Mule",
  107.    "Cheetah",
  108.    "Ambulance",
  109.    "Leviathan",
  110.    "Moonbeam",
  111.    "Esperanto",
  112.    "Taxi",
  113.    "Washington",
  114.    "Bobcat",
  115.    "Mr Whoopee",
  116.    "BF Injection",
  117.    "Hunter",
  118.    "Premier",
  119.    "Enforcer",
  120.    "Securicar",
  121.    "Banshee",
  122.    "Predator",
  123.    "Bus",
  124.    "Rhino",
  125.    "Barracks",
  126.    "Hotknife",
  127.    "Trailer", //artict1
  128.    "Previon",
  129.    "Coach",
  130.    "Cabbie",
  131.    "Stallion",
  132.    "Rumpo",
  133.    "RC Bandit",
  134.    "Romero",
  135.    "Packer",
  136.    "Monster",
  137.    "Admiral",
  138.    "Squalo",
  139.    "Seasparrow",
  140.    "Pizzaboy",
  141.    "Tram",
  142.    "Trailer", //artict2
  143.    "Turismo",
  144.    "Speeder",
  145.    "Reefer",
  146.    "Tropic",
  147.    "Flatbed",
  148.    "Yankee",
  149.    "Caddy",
  150.    "Solair",
  151.    "Berkley's RC Van",
  152.    "Skimmer",
  153.    "PCJ-600",
  154.    "Faggio",
  155.    "Freeway",
  156.    "RC Baron",
  157.    "RC Raider",
  158.    "Glendale",
  159.    "Oceanic",
  160.    "Sanchez",
  161.    "Sparrow",
  162.    "Patriot",
  163.    "Quad",
  164.    "Coastguard",
  165.    "Dinghy",
  166.    "Hermes",
  167.    "Sabre",
  168.    "Rustler",
  169.    "ZR3 50",
  170.    "Walton",
  171.    "Regina",
  172.    "Comet",
  173.    "BMX",
  174.    "Burrito",
  175.    "Camper",
  176.    "Marquis",
  177.    "Baggage",
  178.    "Dozer",
  179.    "Maverick",
  180.    "News Chopper",
  181.    "Rancher",
  182.    "FBI Rancher",
  183.    "Virgo",
  184.    "Greenwood",
  185.    "Jetmax",
  186.    "Hotring",
  187.    "Sandking",
  188.    "Blista Compact",
  189.    "Police Maverick",
  190.    "Boxville",
  191.    "Benson",
  192.    "Mesa",
  193.    "RC Goblin",
  194.    "Hotring Racer", //hotrina
  195.    "Hotring Racer", //hotrinb
  196.    "Bloodring Banger",
  197.    "Rancher",
  198.    "Super GT",
  199.    "Elegant",
  200.    "Journey",
  201.    "Bike",
  202.    "Mountain Bike",
  203.    "Beagle",
  204.    "Cropdust",
  205.    "Stunt",
  206.    "Tanker", //petro
  207.    "RoadTrain",
  208.    "Nebula",
  209.    "Majestic",
  210.    "Buccaneer",
  211.    "Shamal",
  212.    "Hydra",
  213.    "FCR-900",
  214.    "NRG-500",
  215.    "HPV1000",
  216.    "Cement Truck",
  217.    "Tow Truck",
  218.    "Fortune",
  219.    "Cadrona",
  220.    "FBI Truck",
  221.    "Willard",
  222.    "Forklift",
  223.    "Tractor",
  224.    "Combine",
  225.    "Feltzer",
  226.    "Remington",
  227.    "Slamvan",
  228.    "Blade",
  229.    "Freight",
  230.    "Streak",
  231.    "Vortex",
  232.    "Vincent",
  233.    "Bullet",
  234.    "Clover",
  235.    "Sadler",
  236.    "Firetruck", //firela
  237.    "Hustler",
  238.    "Intruder",
  239.    "Primo",
  240.    "Cargobob",
  241.    "Tampa",
  242.    "Sunrise",
  243.    "Merit",
  244.    "Utility",
  245.    "Nevada",
  246.    "Yosemite",
  247.    "Windsor",
  248.    "Monster", //monstera
  249.    "Monster", //monsterb
  250.    "Uranus",
  251.    "Jester",
  252.    "Sultan",
  253.    "Stratum",
  254.    "Elegy",
  255.    "Raindance",
  256.    "RC Tiger",
  257.    "Flash",
  258.    "Tahoma",
  259.    "Savanna",
  260.    "Bandito",
  261.    "Freight", //freiflat
  262.    "Trailer", //streakc
  263.    "Kart",
  264.    "Mower",
  265.    "Duneride",
  266.    "Sweeper",
  267.    "Broadway",
  268.    "Tornado",
  269.    "AT-400",
  270.    "DFT-30",
  271.    "Huntley",
  272.    "Stafford",
  273.    "BF-400",
  274.    "Newsvan",
  275.    "Tug",
  276.    "Trailer", //petrotr
  277.    "Emperor",
  278.    "Wayfarer",
  279.    "Euros",
  280.    "Hotdog",
  281.    "Club",
  282.    "Trailer", //freibox
  283.    "Trailer", //artict3
  284.    "Andromada",
  285.    "Dodo",
  286.    "RC Cam",
  287.    "Launch",
  288.    "Police Car (LSPD)",
  289.    "Police Car (SFPD)",
  290.    "Police Car (LVPD)",
  291.    "Police Ranger",
  292.    "Picador",
  293.    "S.W.A.T. Van",
  294.    "Alpha",
  295.    "Phoenix",
  296.    "Glendale",
  297.    "Sadler",
  298.    "Luggage Trailer", //bagboxa
  299.    "Luggage Trailer", //bagboxb
  300.    "Stair Trailer", //tugstair
  301.    "Boxville",
  302.    "Farm Plow", //farmtr1
  303.    "Utility Trailer", //utiltr1
  304.    "Invalid Vehicle" //just to return if the modelid is invalid
  305. };
  306. #if defined OnPlayerBuyWeapon
  307. new stock Float:lvammu[3][3] = {
  308. (295.7932,-80.8074,1001.5156),
  309. (295.5800,-80.4444,1001.5156),
  310. (290.1626,-109.7770,1001.5156)
  311. };
  312. new stock Float:ammu[7][3] = {
  313. (296.7232,-38.5011,1001.5156),
  314. (313.0667,-165.7863,999.6010),
  315. (296.5075,-38.5065,1001.5156),
  316. (289.7543,-109.7784,1001.5156),
  317. (296.1650,-80.8099,1001.5156),
  318. (290.6806,-109.7799,1001.5156),
  319. (290.4812,-109.7673,1001.5156)
  320. };
  321. #endif
  322. #if defined OnPlayerGamble
  323. new stock Float:gamble1[12][3] = {
  324. (2230.7319,1589.3613,1007.1223),
  325. (2230.9382,1595.0582,1007.1223),
  326. (2230.7825,1615.1445,1007.1223),
  327. (2230.1284,1619.4703,1007.1223),
  328. (2241.9258,1619.5101,1007.1223),
  329. (2241.4067,1614.7375,1007.1223),
  330. (2242.6226,1595.3263,1007.1223),
  331. (2242.6494,1589.4646,1007.1223),
  332. (1958.8229,1025.9097,993.4035),
  333. (1963.6870,1025.8323,993.4035),
  334. (1959.4716,1010.6929,993.4035),
  335. (1963.4226,1010.7554,993.4035)
  336. };
  337. new stock Float:gamble2[3][3] = {
  338. (2230.3799,1604.6863,1006.1860),
  339. (2241.3516,1604.2601,1006.1797),
  340. (1126.4874,-1.4898,1000.6797)
  341. };
  342. new stock Float:gamble3[20][3] = {
  343. (1969.5471,1029.5972,992.4745),
  344. (1969.5416,1021.4896,992.4688),
  345. (1969.5569,1014.0104,992.4688),
  346. (1969.5547,1006.4145,992.4745),
  347. (1969.7015,1029.5469,992.4745),
  348. (1942.8903,1006.8364,992.4688),
  349. (1941.8312,1013.9740,992.4688),
  350. (1941.8381,1021.5088,992.4688),
  351. (1942.5658,1028.6289,992.4688),
  352. (2275.2219,1596.2104,1006.1797),
  353. (2275.2146,1589.7419,1006.1797),
  354. (2270.4824,1595.9219,1006.1797),
  355. (2265.4377,1596.3553,1006.1797),
  356. (2260.0259,1596.6718,1006.1797),
  357. (2254.9976,1596.3917,1006.1797),
  358. (2252.4050,1590.1534,1006.1797),
  359. (2257.4419,1590.0051,1006.1797),
  360. (2262.8257,1589.6021,1006.1797),
  361. (2267.9023,1589.6578,1006.1797),
  362. (1126.6071,2.9759,1000.6797)
  363. };
  364. new stock Float:gamble4[18][3] = {
  365. (1965.8324,997.9891,992.4688),
  366. (1962.9382,991.2863,992.4688),
  367. (1965.8340,998.0048,992.4688),
  368. (1958.1143,986.5440,992.4688),
  369. (1965.8490,1037.6136,992.4688),
  370. (1963.0631,1044.0096,992.4688),
  371. (1958.1376,1049.0104,992.4688),
  372. (2255.1760,1618.7878,1006.1797),
  373. (2255.2905,1614.8890,1006.1797),
  374. (2255.2170,1610.8423,1006.1797),
  375. (2268.5320,1606.8667,1006.1797),
  376. (2274.5471,1606.8854,1006.1797),
  377. (2218.6533,1619.8169,1006.1794),
  378. (2218.5603,1615.4678,1006.1797),
  379. (2216.3044,1603.6766,1006.1819),
  380. (2219.9624,1603.8689,1006.1797),
  381. (2218.4788,1593.6322,1006.1871),
  382. (2218.6128,1589.3203,1006.1841)
  383. };
  384. new stock Float:gamble5[2][3] = {
  385. (1961.4709,1020.2551,992.4688),
  386. (1961.5642,1015.8394,992.4688)
  387. };
  388. new stock Float:gamble6[5][3] = {
  389. (2271.6360,1586.1650,1006.1797),
  390. (2261.5183,1586.4304,1006.1797),
  391. (2251.8772,1586.5632,1006.1860),
  392. (1946.5306,986.7844,992.4688),
  393. (1120.0988,-1.3969,1000.6908)
  394. };
  395. new stock Float:gamble7[1][3] = {
  396. (1136.3954,-1.6494,1000.6797)
  397. };
  398. #endif
  399. enum SpeedEnum
  400. {
  401.     Show,
  402.     TextID,
  403.     Float:MPS,
  404.     Float:KMPH,
  405.     Float:MPH
  406. }
  407. enum AccelerationEnum
  408. {
  409.     Show,
  410.     TextID,
  411.     Float:MPS2,
  412.     Float:KMPH2,
  413.     Float:G
  414. }
  415. enum PlayersEnum
  416. {
  417.     Float:PE_X,
  418.     Float:PE_Y,
  419.     Float:PE_Z,
  420.     Float:Health,
  421.     Float:Armour,
  422.     Last_Vehicle,
  423.     Cur_Vehicle,
  424.     Last_Team,
  425.     Cur_Team,
  426.     Money,
  427.     State,
  428.     Weapon,
  429.     Score,
  430.     Wanted,
  431.     Freeze[MAX_FREEZE_ALL],
  432.     Speed[SpeedEnum],
  433.     Acceleration[AccelerationEnum]
  434. }
  435. enum VehiclesEnum
  436. {
  437.     Float:VE_X,
  438.     Float:VE_Y,
  439.     Float:VE_Z,
  440.     Float:Angle,
  441.     Float:Health,
  442.     Dynamic,
  443.     Static,
  444.     Last_Trailer,
  445.     Cur_Trailer,
  446.     Respawn,
  447.     Color1,
  448.     Color2,
  449.     Objective[MAX_PLAYERS],
  450.     Locked[MAX_PLAYERS]
  451. }
  452. enum PickupsEnum
  453. {
  454.     Float:PICKE_X,
  455.     Float:PICKE_Y,
  456.     Float:PICKE_Z,
  457.     Model,
  458.     Respawn,
  459.     Type
  460. }
  461. enum CounterDownEnum
  462. {
  463.     Style,
  464.     TextID,
  465.     Time
  466. }
  467. enum CounterUpEnum
  468. {
  469.     Style,
  470.     TextID,
  471.     Time,
  472.     Time2
  473. }
  474. enum CountersEnum
  475. {
  476.     Down[CounterDownEnum],
  477.     Up[CounterUpEnum]
  478. }
  479. enum AreasEnum
  480. {
  481.     Type,
  482.     Float:AE_X,
  483.     Float:AE_Y,
  484.     Float:AE_Z,
  485.     Float:X2,
  486.     Float:Y2,
  487.     Float:Z2,
  488.     Float:Radius,
  489.     PlayerInArea[MAX_PLAYERS]
  490. }
  491. new stock preh[MAX_PLAYERS];
  492. new stock bets[MAX_PLAYERS];
  493. new stock betting[MAX_PLAYERS];
  494. new stock Pickups[MAX_PICKUPS][PickupsEnum];
  495. new stock Vehicles[MAX_VEHICLES][VehiclesEnum];
  496. new stock Players[MAX_PLAYERS][PlayersEnum];
  497. new stock Counters[MAX_PLAYERS][CountersEnum];
  498. new stock Areas[MAX_AREAS][AreasEnum];
  499. new stock SpeederTime=0;
  500. new stock CountersTime=0;
  501.  
  502. stock GameModeInit()
  503. {
  504.     TextDrawCreate(0.0,0.0," ");
  505.     SetTimer("ufctimer", 100, true);
  506.     SetTimer("Counter", 10, true);
  507.     SetTimerEx("Speeder", 10, true, "i", 1000);
  508.     SetTimer("ClearOutOfRangeVehicles", 2000, true);
  509. }
  510.  
  511. stock IsVehicleConnected(vehicleid) //By Sacky (edited by Gabriel "Larcius" Cordes)
  512. {
  513.     new Float:x1,Float:y1,Float:z1;
  514.     GetVehiclePos(vehicleid,x1,y1,z1);
  515.     if(x1==0.0 && y1==0.0 && z1==0.0)
  516.     {
  517.         return 0;
  518.     }
  519.     return 1;
  520. }
  521.  
  522. stock IsPickupConnected(pickupid) //By Gabriel "Larcius" Cordes
  523. {
  524.     if(Pickups[pickupid][PICKE_X]==0.0 && Pickups[pickupid][PICKE_Y]==0.0 && Pickups[pickupid][PICKE_Z]==0.0)
  525.     {
  526.         return 0;
  527.     }
  528.     return 1;
  529. }
  530.  
  531. stock IsAreaConnected(areaid) //By Gabriel "Larcius" Cordes
  532. {
  533.     if(areaid<MAX_AREAS && Areas[areaid][Type])
  534.     {
  535.         return 1;
  536.     }
  537.     return 0;
  538. }
  539.  
  540. stock TogglePlayerControllable2(playerid, controllable, freezeid=0) //By Gabriel "Larcius" Cordes
  541. {
  542.     if(IsPlayerConnected(playerid))
  543.     {
  544.         new isplfreeze=IsPlayerFreeze(playerid);
  545.         if (controllable==0)
  546.         {
  547.             if(freezeid>=MAX_FREEZE_ALL || freezeid<0)
  548.             {
  549.                 for(new i=0; i<MAX_FREEZE_ALL; i++)
  550.                 {
  551.                     Players[playerid][Freeze][i]=0;
  552.                 }
  553.                 Players[playerid][Freeze][0]=1;
  554.             }
  555.             else
  556.             {
  557.                 Players[playerid][Freeze][freezeid]=1;
  558.             }
  559.             if(!isplfreeze)
  560.             {
  561.                 TogglePlayerControllable(playerid, 0);
  562.                 #if defined OnPlayerToggleControllable
  563.                     OnPlayerToggleControllable(playerid, 0);
  564.                 #endif
  565.             }
  566.         }
  567.         else
  568.         {
  569.             if(freezeid>=MAX_FREEZE_ALL || freezeid<0)
  570.             {
  571.                 for(new i=0; i<MAX_FREEZE_ALL; i++)
  572.                 {
  573.                     Players[playerid][Freeze][i]=0;
  574.                 }
  575.             }
  576.             else
  577.             {
  578.                 Players[playerid][Freeze][freezeid]=0;
  579.             }
  580.             if(isplfreeze && !IsPlayerFreeze(playerid))
  581.             {
  582.                 TogglePlayerControllable(playerid, 1);
  583.                 #if defined OnPlayerToggleControllable
  584.                     OnPlayerToggleControllable(playerid, 1);
  585.                 #endif
  586.             }
  587.         }
  588.         return 1;
  589.     }
  590.     return 0;
  591. }
  592.  
  593. stock Text:TextDrawCreateTimer(Float:x1, Float:y1, text[], ms) //By Gabriel "Larcius" Cordes
  594. {
  595.     new Text:textid=TextDrawCreate(x1, y1, text);
  596.     TextDrawDestroyTimer(textid, ms);
  597.     return textid;
  598. }
  599.  
  600. stock TextDrawDestroyTimer(Text:textid, ms) //By Gabriel "Larcius" Cordes
  601. {
  602.     SetTimerEx("TextDrawDestroyTimer2",ms,false,"i",_:textid);
  603.     return 1;
  604. }
  605.  
  606. public TextDrawDestroyTimer2(textid) //By Gabriel "Larcius" Cordes
  607. {
  608.     TextDrawDestroy(Text:textid);
  609. }
  610.  
  611. stock encrypt(const string[])
  612. {
  613.     return hash(string);
  614. }
  615.  
  616. stock hash_key(const string[], key[]="", bit=32) //By Gabriel "Larcius" Cordes
  617. {
  618.     new keyp[] = "abcdefghijklmopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ,;.:-_~!\"§$%&/(){}[]=?`´'#+-*/\\äöü<>|^°µ²³";
  619.     new retval[MAX_STRING],retval2[MAX_STRING],size,sum,j,ksize,hashedkey[MAX_STRING],c=0;
  620.     new kpsize=strfind(keyp," ");
  621.     format(retval, sizeof(retval), "%s",string);
  622.     while(strlen(retval)>bit || c<2)
  623.     {
  624.         format(retval2, sizeof(retval2), "");
  625.         j=strlen(retval);
  626.         if(j<(2*bit))
  627.         {
  628.             j=(2*bit);
  629.             c++;
  630.         }
  631.         j=floatval(floatdiv(j,2.0));
  632.         size=strlen(retval);
  633.         if(strlen(retval)<j)
  634.         {
  635.             size=j;
  636.         }
  637.         if(strlen(key)==0)
  638.         {
  639.             hashedkey=GetSingleChar(keyp,0);
  640.         }
  641.         else
  642.         {
  643.             hashedkey=hash(key,"",j);
  644.         }
  645.         ksize=strlen(hashedkey);
  646.         for (new i=0; i<j; i++)
  647.         {
  648.             sum=((sum + strfind(keyp, GetSingleChar(hashedkey,(i%ksize))) + strfind(keyp, GetSingleChar(retval,(i%size))) + strfind(keyp, GetSingleChar(retval,((j+i)%size)))) % kpsize);
  649.             strcat(retval2,GetSingleChar(keyp,sum));
  650.             retval2=reverse(retval2);
  651.         }
  652.         format(retval, sizeof(retval), "%s",retval2);
  653.     }
  654.     return retval;
  655. }
  656.  
  657. stock reverse(const source[]) //By Gabriel "Larcius" Cordes
  658. {
  659.     new string[MAX_STRING];
  660.     for(new i=(strlen(source)-1); i>=0; i--)
  661.     {
  662.         strcat(string,GetSingleChar(source,i));
  663.     }
  664.     return string;
  665. }
  666.  
  667. stock GetSingleChar(const source[], num) //By Gabriel "Larcius" Cordes
  668. {
  669.     new string[MAX_STRING];
  670.     strmid(string,source,num,(num+1));
  671.     return string;
  672. }
  673.  
  674. stock left(const source[], pos) //By Alex "Y_Less" Cole (Edited by Sacky)
  675. {
  676.     new retval[MAX_STRING];
  677.     strmid(retval, source, 0, pos);
  678.     return retval;
  679. }
  680.  
  681. stock firstchars(const source[], len=1) //By Gabriel "Larcius" Cordes
  682. {
  683.     new retval[MAX_STRING];
  684.     strmid(retval, source, 0, len);
  685.     return retval;
  686. }
  687.  
  688. stock right(const source[], pos) //By Gabriel "Larcius" Cordes
  689. {
  690.     new retval[MAX_STRING];
  691.     strmid(retval, source, (pos+1), strlen(source));
  692.     return retval;
  693. }
  694.  
  695. stock lastchars(const source[], len=1) //By Alex "Y_Less" Cole
  696. {
  697.     new retval[MAX_STRING];
  698.     strmid(retval, source, (strlen(source)-len), strlen(source));
  699.     return retval;
  700. }
  701.  
  702. stock CountDownForPlayer(playerid, seconds, freeze, style=1) //By Gabriel "Larcius" Cordes
  703. {
  704.     if(IsPlayerConnected(playerid))
  705.     {
  706.         if(!Counters[playerid][Down][Style])
  707.         {
  708.             Counters[playerid][Down][TextID]=0;
  709.         }
  710.         else if(Counters[playerid][Down][Style]!=style)
  711.         {
  712.             TextDrawDestroy(Text:Counters[playerid][Down][TextID]);
  713.         }
  714.         if(freeze==0 || style==0)
  715.         {
  716.             TogglePlayerControllable2(playerid, 1, FREEZE_COUNTDOWN);
  717.         }
  718.         else if(freeze)
  719.         {
  720.             TogglePlayerControllable2(playerid, 0, FREEZE_COUNTDOWN);
  721.             SetCameraBehindPlayer(playerid);
  722.         }
  723.         Counters[playerid][Down][Style]=style;
  724.         Counters[playerid][Down][Time]=seconds;
  725.         return 1;
  726.     }
  727.     return 0;
  728. }
  729.  
  730. stock CountDownForAll(seconds, freeze, style=1) //By Gabriel "Larcius" Cordes
  731. {
  732.     new ret=0;
  733.     for(new i=0; i<MAX_PLAYERS; i++)
  734.     {
  735.         if(CountDownForPlayer(i, seconds, freeze, style))
  736.         {
  737.             ret++;
  738.         }
  739.     }
  740.     return ret;
  741. }
  742.  
  743. stock CountUpForPlayer(playerid, seconds, freeze, style=1) //By Gabriel "Larcius" Cordes
  744. {
  745.     if(IsPlayerConnected(playerid))
  746.     {
  747.         if(!Counters[playerid][Up][Style])
  748.         {
  749.             Counters[playerid][Up][TextID]=0;
  750.         }
  751.         else if(Counters[playerid][Up][Style]!=style)
  752.         {
  753.             TextDrawDestroy(Text:Counters[playerid][Up][TextID]);
  754.         }
  755.         if(freeze==0 || style==0)
  756.         {
  757.             TogglePlayerControllable2(playerid, 1, FREEZE_COUNTUP);
  758.         }
  759.         else if(freeze)
  760.         {
  761.             TogglePlayerControllable2(playerid, 0, FREEZE_COUNTUP);
  762.             SetCameraBehindPlayer(playerid);
  763.         }
  764.         Counters[playerid][Up][Style]=style;
  765.         Counters[playerid][Up][Time]=seconds;
  766.         Counters[playerid][Up][Time2]=0;
  767.         return 1;
  768.     }
  769.     return 0;
  770. }
  771.  
  772. stock CountUpForAll(seconds, freeze, style=1) //By Gabriel "Larcius" Cordes
  773. {
  774.     new ret=0;
  775.     for(new i=0; i<MAX_PLAYERS; i++)
  776.     {
  777.         if(CountUpForPlayer(i, seconds, freeze, style))
  778.         {
  779.             ret++;
  780.         }
  781.     }
  782.     return ret;
  783. }
  784.  
  785. stock GetPlayerID(const playername[], partofname=0) //By Jan "DracoBlue" Schütze (edited by Gabriel "Larcius" Cordes)
  786. {
  787.     new i;
  788.     new playername1[MAX_STRING];
  789.     for (i=0;i<MAX_PLAYERS;i++)
  790.     {
  791.         if (IsPlayerConnected(i))
  792.         {
  793.             GetPlayerName(i,playername1,sizeof(playername1));
  794.             if (strcmp(playername1,playername,true)==0)
  795.             {
  796.                 return i;
  797.             }
  798.         }
  799.     }
  800.     new correctsigns_userid=-1;
  801.     new tmpuname[MAX_STRING];
  802.     new hasmultiple=-1;
  803.     if(partofname)
  804.     {
  805.         for (i=0;i<MAX_PLAYERS;i++)
  806.         {
  807.             if (IsPlayerConnected(i))
  808.             {
  809.                 GetPlayerName(i,tmpuname,sizeof(tmpuname));
  810.                 if (strfind(tmpuname,partofname,true)==0)
  811.                 {
  812.                     hasmultiple++;
  813.                     correctsigns_userid=i;
  814.                 }
  815.                 if (hasmultiple>0)
  816.                 {
  817.                     return -2;
  818.                 }
  819.             }
  820.         }
  821.     }
  822.     return correctsigns_userid;
  823. }
  824.  
  825. stock GetPlayerId(playername[])
  826. {
  827.     return GetPlayerID(partofname,0);
  828. }
  829.  
  830. stock PlayerID(playername[])
  831. {
  832.     return GetPlayerID(playername,1);
  833. }
  834.  
  835. stock PlayerId(playername[])
  836. {
  837.     return GetPlayerID(playername,1);
  838. }
  839.  
  840. stock parsecommand(cmdtext[], cmd[], text[], parcount) //By Alex "Y_Less" Cole
  841. {
  842.     new index = 0, length;
  843.     length = strlen(cmdtext);
  844.     while ((index < length) && (cmdtext[index] != ' '))
  845.     {
  846.         index++;
  847.     }
  848.     if (index == length)
  849.     {
  850.         strcat(cmd, cmdtext, MAX_STRING);
  851.         text[0] = EOS;
  852.         return 0;
  853.     }
  854.     else
  855.     {
  856.         strmid(cmd, cmdtext, 0, index, MAX_STRING);
  857.         cmd[index] = EOS;
  858.         strmid(text, cmdtext, index + 1, length, MAX_STRING);
  859.         text[length] = EOS;
  860.         if (parcount)
  861.         {
  862.             index = 0;
  863.             new pars = 0;
  864.             length = strlen(text);
  865.             while (index < length)
  866.             {
  867.                 if ((text[index] != ' ') && ((index == 0) || ((index > 0) && (text[index - 1] == ' '))))
  868.                 {
  869.                     pars++;
  870.                 }
  871.                 index++;
  872.             }
  873.             return pars;
  874.         }
  875.         else
  876.         {
  877.             return 1;
  878.         }
  879.     }
  880.     return 0;
  881. }
  882.  
  883. stock ReturnPlayerName(playerid) //By Alex "Y_Less" Cole
  884. {
  885.     new pname[MAX_PLAYER_NAME];
  886.     pname="Invalid PlayerID";
  887.     if(IsPlayerConnected(playerid))
  888.     {
  889.         new pname[MAX_PLAYER_NAME];
  890.         GetPlayerName(playerid, pname, sizeof (pname));
  891.     }
  892.     return pname
  893. }
  894.  
  895. stock minrand(min, max) //By Alex "Y_Less" Cole
  896. {
  897.     return random(max-min)+min;
  898. }
  899.  
  900. stock Float:floatrand(Float:min, Float:max) //By Alex "Y_Less" Cole
  901. {
  902.     new imin = floatround(min);
  903.     return floatdiv(float(random((floatround(max)-imin)*100)+(imin*100)),100.0);
  904. }
  905.  
  906. stock IsBetweenFloats(Float:f,Float:f1,Float:f2) //By Gabriel "Larcius" Cordes
  907. {
  908.     switch(floatcmp(f1, f2))
  909.     {
  910.         case 0: if(f==f1){return 1;}
  911.         case 1: if(f<=f1 && f>=f2){return 1;}
  912.         case -1: if(f>=f1 && f<=f2){return 1;}
  913.     }
  914.     return 0;
  915. }
  916.  
  917. stock GameTextForTeam(team, text[], time, style) //By Alex "Y_Less" Cole (edited by Gabriel "Larcius" Cordes)
  918. {
  919.     new ret=0;
  920.     for (new i=0; i<MAX_PLAYERS; i++)
  921.     {
  922.         if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  923.         {
  924.             GameTextForPlayer(i, text, time, style);
  925.             ret++;
  926.         }
  927.     }
  928.     return ret;
  929. }
  930.  
  931. stock SendClientMessageToTeam(team, color, text[]) //By Alex "Y_Less" Cole (edited by Gabriel "Larcius" Cordes)
  932. {
  933.     new ret=0;
  934.     for (new i=0; i<MAX_PLAYERS; i++)
  935.     {
  936.         if(IsPlayerConnected(i) && Players[i][Cur_team]==team)
  937.         {
  938.             SendClientMessage(i, color, text);
  939.             ret++;
  940.         }
  941.     }
  942.     return ret;
  943. }
  944.  
  945. stock valstr2(num) //By Alex "Y_Less" Cole
  946. {
  947.     new str[MAX_STRING];
  948.     valstr(str, num);
  949.     return str;
  950. }
  951.  
  952. stock IsValidEmail(const email[]) //By Jan "DracoBlue" Schütze
  953. {
  954.     new len=strlen(email);
  955.     new cstate=0;
  956.     for(new i=0;i<len;i++)
  957.     {
  958.         if ((cstate==0 || cstate==1) && (email[i]>='A' && email[i]<='Z') || (email[i]>='a' && email[i]<='z')  || (email[i]=='.')  || (email[i]=='-')  || (email[i]=='_'))
  959.         {
  960.         }
  961.         else
  962.         {
  963.             if ((cstate==0) &&(email[i]=='@'))
  964.             {
  965.                 cstate=1;
  966.             }
  967.             else
  968.             {
  969.                 return false;
  970.             }
  971.         }
  972.     }
  973.     if (cstate<1)
  974.     {
  975.         return false;
  976.     }
  977.     if (len<6)
  978.     {
  979.         return false;
  980.     }
  981.     if ((email[len-3]=='.') || (email[len-4]=='.') || (email[len-5]=='.'))
  982.     {
  983.         return true;
  984.     }
  985.     return false;
  986. }
  987.  
  988. stock GetVehicleSpawnPos(vehicleid,&Float:spawn_x,&Float:spawn_y,&Float:spawn_z,&Float:angle_z) //By Gabriel "Larcius" Cordes
  989. {
  990.     if(IsVehicleConnected(vehicleid))
  991.     {
  992.  
  993.     }
  994.     return -1,-1,-1,-1;
  995. }
  996.  
  997. stock GetPlayerLastVehicleID(playerid) //By Gabriel "Larcius" Cordes
  998. {
  999.     if(IsPlayerConnected(playerid))
  1000.     {
  1001.         return Players[playerid][Last_Vehicle];
  1002.     }
  1003.     return -1;
  1004. }
  1005.  
  1006. stock GetVehicleLastTrailerID(vehicleid) //By Gabriel "Larcius" Cordes
  1007. {
  1008.     if(IsVehicleConnected(vehicleid))
  1009.     {
  1010.         return Vehicles[vehicleid][Last_Trailer];
  1011.     }
  1012.     return -1;
  1013. }
  1014.  
  1015. stock GetVehicleLastTrailer(vehicleid)
  1016. {
  1017.     return GetVehicleLastTrailerID(vehicleid);
  1018. }
  1019.  
  1020. stock IsPlayerDriver(playerid) //By Sacky
  1021. {
  1022.     if(IsPlayerConnected(playerid) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
  1023.     {
  1024.         return 1;
  1025.     }
  1026.     return 0;
  1027. }
  1028.  
  1029. stock GetVehicleDriverID(vehicleid) //By Jan "DracoBlue" Schütze
  1030. {
  1031.     if(IsVehicleConnected(vehicleid))
  1032.     {
  1033.         for (new i=0;i<MAX_PLAYERS;i++)
  1034.         {
  1035.             if (IsPlayerConnected(i) && GetPlayerVehicleID(i)==vehicleid && IsPlayerDriver(i))
  1036.             {
  1037.                 return i;
  1038.             }
  1039.         }
  1040.     }
  1041.     return -1;
  1042. }
  1043.  
  1044. stock VehicleDriverID(vehicleid)
  1045. {
  1046.     return GetVehicleDriverID(vehicleid);
  1047. }
  1048.  
  1049. stock IsNumeric(const string[])//By Jan "DracoBlue" Schütze (edited by Gabriel "Larcius" Cordes
  1050. {
  1051.     new j = strlen(string);
  1052.     if(j == 0) return 0;
  1053.  
  1054.     for(new i = 0; i < j; i++)
  1055.     {
  1056.         if(string[i] > '9' || string[i] < '0') return 0;
  1057.     }
  1058.     return 1;
  1059. }
  1060.  
  1061. stock SendClientMessageToAdmins(colour,const str[]) //By Mike (Edited by Sacky)
  1062. {
  1063.     new ret=0;
  1064.     for (new i=0; i<MAX_PLAYERS; i++)
  1065.     {
  1066.         if (IsPlayerConnected(i) && IsPlayerAdmin(i))
  1067.         {
  1068.             SendClientMessage(i, colour, str);
  1069.             ret++;
  1070.         }
  1071.     }
  1072.     return ret;
  1073. }
  1074.  
  1075. stock Float:GetDistanceBetweenPoints(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2) //By milous22 (https://github.com/milous22)
  1076. {
  1077.     return floatsqroot(floatadd(floatadd(floatpower(floatsub(x1,x2),2),floatpower(floatsub(y1,y2),2)),floatpower(floatsub(z1,z2),2)));
  1078. }
  1079.  
  1080. stock Float:GetDistanceToPoint(playerid,Float:x1,Float:y1,Float:z1) //By Gabriel "Larcius" Cordes
  1081. {
  1082.     if (IsPlayerConnected(playerid))
  1083.     {
  1084.         new Float:x2,Float:y2,Float:z2;
  1085.         GetPlayerPos(playerid,x2,y2,z2);
  1086.         return GetDistanceBetweenPoints(x1,y1,z1,x2,y2,z2);
  1087.     }
  1088.     return INF_FLOAT;
  1089. }
  1090.  
  1091. stock Float:GetDistanceToVehicle(playerid,vehicleid) //By Darkrealm (Edited by Sacky and Gabriel "Larcius" Cordes)
  1092. {
  1093.     if (IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  1094.     {
  1095.         new Float:x1,Float:y1,Float:z1;
  1096.         GetVehiclePos(vehicleid,x1,y1,z1);
  1097.         return GetDistanceToPoint(playerid,x1,y1,z1);
  1098.     }
  1099.     return INF_FLOAT;
  1100. }
  1101.  
  1102. stock Float:GetDistanceToCar(playerid,vehicleid) //By Darkrealm (Edited by Sacky and Gabriel "Larcius" Cordes)
  1103. {
  1104.     return GetDistanceToVehicle(playerid,vehicleid);
  1105. }
  1106.  
  1107. stock GetClosestVehicle(playerid) //By Darkrealm (edited by Gabrie "Larcius" Cordes)
  1108. {
  1109.     if(IsPlayerConnected(playerid) && IsVehicleConnected(0))
  1110.     {
  1111.         new closestvehicle=0;
  1112.         new Float:closestdist=GetDistanceToVehicle(playerid,0);
  1113.         for(new vehicleid=0; vehicleid<MAX_VEHICLES; vehicleid++)
  1114.         {
  1115.             new Float:dist = GetDistanceToVehicle(playerid,vehicleid);
  1116.             if ((dist < closestdist))
  1117.             {
  1118.                 closestdist = dist;
  1119.                 closestvehicle = vehicleid;
  1120.             }
  1121.         }
  1122.         return closestvehicle;
  1123.     }
  1124.     return -1;
  1125. }
  1126.  
  1127. stock GetClosestCar(playerid)
  1128. {
  1129.     return GetClosestVehicle(playerid);
  1130. }
  1131.  
  1132. stock Float:GetDistanceBetweenPlayers(playerid,playerid2) //By Slick (Edited by Sacky and Gabriel "Larcius" Cordes)
  1133. {
  1134.     if(IsPlayerConnected(playerid) && IsPlayerConnected(playerid2))
  1135.     {
  1136.         new Float:x1,Float:y1,Float:z1;
  1137.         GetPlayerPos(playerid2,x1,y1,z1);
  1138.         return GetDistanceToPoint(playerid,x1,y1,z1);
  1139.     }
  1140.     return INF_FLOAT;
  1141. }
  1142.  
  1143. stock GetClosestPlayer(playerid) //By Slick (edited by Gabriel "Larcius" Cordes)
  1144. {
  1145.     if(IsPlayerConnected(playerid) && IsPlayerConnected(0))
  1146.     {
  1147.         new closestplayer=0;
  1148.         new Float:closestdist=GetDistanceBetweenPlayers(playerid,0);
  1149.         for(new playerid2=0; playerid2<MAX_PLAYERS; playerid2++)
  1150.         {
  1151.             new Float:dist = GetDistanceBetweenPlayers(playerid,playerid2);
  1152.             if ((dist < closestdist))
  1153.             {
  1154.                 closestdist = dist;
  1155.                 closestplayer = playerid;
  1156.             }
  1157.         }
  1158.         return closestplayer;
  1159.     }
  1160.     return -1;
  1161. }
  1162.  
  1163. stock GetClosestTeamPlayer(playerid) //By Gabriel "Larcius" Cordes
  1164. {
  1165.     if(IsPlayerConnected(playerid) && IsPlayerConnected(0))
  1166.     {
  1167.         new closestplayer=0;
  1168.         new Float:closestdist=GetDistanceBetweenPlayers(playerid,0);
  1169.         for(new playerid2=0; playerid2<MAX_PLAYERS; playerid2++)
  1170.         {
  1171.             new Float:dist = GetDistanceBetweenPlayers(playerid,playerid2);
  1172.             if (dist<closestdist && Players[playerid2][Cur_team]==Players[playerid][Cur_team])
  1173.             {
  1174.                 closestdist = dist;
  1175.                 closestplayer = playerid;
  1176.             }
  1177.         }
  1178.         return closestplayer;
  1179.     }
  1180.     return -1;
  1181. }
  1182.  
  1183. stock TwoWayRand(value) //By Allan
  1184. {
  1185.     value = random(value*2+1)-value;
  1186.     return value;
  1187. }
  1188.  
  1189. stock Float:QuadraticRootCalc(Float:Xsq,Float:X1,Float:num) //By Allan (corrected by Gabriel "Larcius" Cordes)
  1190. {
  1191.     return floatmul(floatadd(floatmul(floatdiv(floatsqroot(floatmul(floatmul(floatmul(floatpower(X1,2),4.0),Xsq),num)),2.0),Xsq),X1),floatsub(floatmul(floatdiv(floatsqroot(floatmul(floatmul(floatmul(floatpower(X1,2),4.0),Xsq),num)),2.0),Xsq),X1));
  1192. }
  1193.  
  1194. stock SendFormattedGameTextToPlayer(playerid, const msg[], time, style, define) //By Allan
  1195. {
  1196.     if(IsPlayerConnected(playerid))
  1197.     {
  1198.         new wrap[256];
  1199.         format(wrap, sizeof(wrap), msg, define);
  1200.         GameTextForPlayer(playerid,wrap,time,style);
  1201.         return 1;
  1202.     }
  1203.     return 0;
  1204. }
  1205.  
  1206. stock SendFormattedGameTextToAll(const msg[], time, style, define) //By Allan (edited by Gabriel "Larcius" Cordes)
  1207. {
  1208.     new ret=0;
  1209.     for(new i=0; i<MAX_PLAYERS; i++)
  1210.     {
  1211.         if(IsPlayerConnected(i))
  1212.         {
  1213.             if(SendFormattedGameTextToPlayer(playerid, msg, time, style, define))
  1214.             {
  1215.                 ret++;
  1216.             }
  1217.         }
  1218.     }
  1219.     return ret;
  1220. }
  1221.  
  1222. stock GivePlayerWeaponAlt(playerid, weaponid, ammo) //By Allan (Edited by Y_Less)
  1223. {
  1224.     if ((weaponid > 15 && weaponid < 22) || (weaponid > 32 && weaponid < 37) || (weaponid > 38 && weaponid < 41) || (weaponid > 42 && weaponid != 46))
  1225.     {
  1226.         weaponid = 0;
  1227.         print("Non-Working weapon class specified");
  1228.         SendClientMessage(playerid, 0x0000FFAA, "Non-Working weapon class specified");
  1229.     }
  1230.     GivePlayerWeapon(playerid, weaponid, ammo);
  1231.     return 1;
  1232. }
  1233.  
  1234. stock SecondsToString(time,mode=0) //By Gabriel "Larcius" Cordes
  1235. {
  1236.     new seconds,minutes,minutes1,hours,string0[MAX_STRING],string1[MAX_STRING],string2[MAX_STRING];
  1237.     seconds=time%60;
  1238.     minutes=(time-seconds)%3600;
  1239.     minutes1=(time-seconds)/60;
  1240.     hours=(time-minutes*60-seconds)/3600;
  1241.     if(hours<10)
  1242.     {
  1243.         format(string0, sizeof(string0), "0%d", hours);
  1244.     }
  1245.     else
  1246.     {
  1247.         format(string0, sizeof(string0), "%d", hours);
  1248.     }
  1249.     if(minutes<10)
  1250.     {
  1251.         format(string0, sizeof(string0), "%s:0%d",string0,minutes);
  1252.     }
  1253.     else
  1254.     {
  1255.         format(string0, sizeof(string0), "%s,%d",string0,minutes);
  1256.     }
  1257.     if(minutes1<10)
  1258.     {
  1259.         format(string1, sizeof(string1), "0%d",minutes1);
  1260.     }
  1261.     else
  1262.     {
  1263.         format(string1, sizeof(string1), "%d",minutes1);
  1264.     }
  1265.     if(seconds<10)
  1266.     {
  1267.         format(string0, sizeof(string0), "%s:0%d",string0,seconds);
  1268.         format(string1, sizeof(string1), "%s:0%d",string1,seconds);
  1269.     }
  1270.     else
  1271.     {
  1272.         format(string0, sizeof(string0), "%s:%d",string0,seconds);
  1273.         format(string1, sizeof(string1), "%s:%d",string1,seconds);
  1274.     }
  1275.     if(hours>0)
  1276.     {
  1277.         format(string2, sizeof(string2), "%d hours", hours);
  1278.     }
  1279.     if(minutes>0)
  1280.     {
  1281.         if(hours>0)
  1282.         {
  1283.             if(seconds>0)
  1284.             {
  1285.                 format(string2, sizeof(string2), "%s, %d minutes", string2, minutes);
  1286.             }
  1287.             else
  1288.             {
  1289.                 format(string2, sizeof(string2), "%s and %d minutes", string2, minutes);
  1290.             }
  1291.         }
  1292.     }
  1293.     if(seconds>0)
  1294.     {
  1295.         if(hours>0 || minutes>0)
  1296.         {
  1297.             format(string2, sizeof(string2), "%s and %d seconds", string2, seconds);
  1298.         }
  1299.         else
  1300.         {
  1301.             format(string2, sizeof(string2), "%d seconds", string2, seconds);
  1302.         }
  1303.     }
  1304.     if(hours==0 && minutes==0 && seconds==0)
  1305.     {
  1306.         format(string2, sizeof(string2), "0 seconds");
  1307.     }
  1308.     switch(mode)
  1309.     {
  1310.         case 0: return string0;
  1311.         case 1: return string1;
  1312.         case 2: return string2;
  1313.     }
  1314.     return string0;
  1315. }
  1316.  
  1317. stock ConvertSeconds(time)
  1318. {
  1319.     return SecondsToString(time,2)
  1320. }
  1321.  
  1322. stock timeconvert_seconds(time)
  1323. {
  1324.     return SecondsToString(time,1);
  1325. }
  1326.  
  1327. stock wiper(playerid) //By Spectre
  1328. {
  1329.     if(IsPlayerConnected(playerid))
  1330.     {
  1331.         for (new i=0;i<10;i++)
  1332.         {
  1333.             SendClientMessage(playerid,0xFFFFFFAA,"\n");
  1334.         }
  1335.         return 1;
  1336.     }
  1337.     return 0;
  1338. }
  1339.  
  1340. stock GetCurrentPosition(playerid) //By Sacky
  1341. {
  1342.     new Float:x1, Float:y1, Float:z1, Float:a;
  1343.     new string[MAX_STRING];
  1344.     if(IsPlayerConnected(playerid))
  1345.     {
  1346.         GetPlayerPos(playerid,x1,y1,z1);
  1347.         GetPlayerFacingAngle(playerid,a);
  1348.         format(string,sizeof(string),"x: %d, y: %d, z: %d, angle: %d",floatround(x1),floatround(y1),floatround(z1),floatround(a));
  1349.         return string;
  1350.     }
  1351.     return string;
  1352. }
  1353.  
  1354. stock GetVehicles() //By Gabriel "Larcius" Cordes
  1355. {
  1356.     new vehicles=0;
  1357.     for(new i=0;i<MAX_VEHICLES;i++)
  1358.     {
  1359.         if(IsVehicleConnected(i))
  1360.         {
  1361.             vehicles++;
  1362.         }
  1363.     }
  1364.     return vehicles;
  1365. }
  1366.  
  1367. stock VehicleDriverName(vehicleid) //By Sacky
  1368. {
  1369.     new playername[MAX_PLAYER_NAME];
  1370.     for(new i=0;i<MAX_PLAYERS;i++)
  1371.     {
  1372.         if(IsPlayerConnected(i))
  1373.         {
  1374.             if(IsPlayerInVehicle(i,vehicleid))
  1375.             {
  1376.                 GetPlayerName(i,playername,sizeof(playername));
  1377.                 return playername;
  1378.             }
  1379.         }
  1380.     }
  1381.     return playername;
  1382. }
  1383.  
  1384. stock IsPlayerInAnyInterior(playerid) //By Sacky (edited by Gabriel "Larcius" Cordes)
  1385. {
  1386.     if(IsPlayerConnected(playerid))
  1387.     {
  1388.         new Float:x, Float:y, Float:z;
  1389.         GetPlayerPos(playerid,x,y,z);
  1390.         if(GetPlayerInterior(playerid) > 0 || (z>900 && !IsPlayerInPlane(playerid) && !IsPlayerInHeli(playerid)))
  1391.         {
  1392.             return 1;
  1393.         }
  1394.     }
  1395.     return 0;
  1396. }
  1397.  
  1398. stock IsPlayerPassenger(playerid) //By Sacky
  1399. {
  1400.     if(IsPlayerConnected(playerid) && GetPlayerState(playerid)==PLAYER_STATE_PASSENGER)
  1401.     {
  1402.         return 1;
  1403.     }
  1404.     return 0;
  1405. }
  1406.  
  1407. stock IsPlayerOnFoot(playerid) //By Sacky
  1408. {
  1409.     if(IsPlayerConnected(playerid) && GetPlayerState(playerid)==PLAYER_STATE_ONFOOT)
  1410.     {
  1411.         return 1;
  1412.     }
  1413.     return 0;
  1414. }
  1415.  
  1416. stock IsPlayerOnBike(playerid) //By Gabriel "Larcius" Cordes
  1417. {
  1418.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1419.     {
  1420.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_BIKE)
  1421.         {
  1422.             return 1;
  1423.         }
  1424.     }
  1425.     return 0;
  1426. }
  1427.  
  1428. stock IsPlayerOnBicycle(playerid) //By Gabriel "Larcius" Cordes
  1429. {
  1430.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1431.     {
  1432.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_BMX)
  1433.         {
  1434.             return 1;
  1435.         }
  1436.     }
  1437.     return 0;
  1438. }
  1439.  
  1440. stock IsPlayerOnBMX(playerid)
  1441. {
  1442.     return IsPlayerOnBicycle(playerid);
  1443. }
  1444.  
  1445. stock IsPlayerInBoat(playerid) //By Gabriel "Larcius" Cordes
  1446. {
  1447.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1448.     {
  1449.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_SEA)
  1450.         {
  1451.             return 1;
  1452.         }
  1453.     }
  1454.     return 0;
  1455. }
  1456.  
  1457. stock IsPlayerInHeavy(playerid) //By Gabriel "Larcius" Cordes
  1458. {
  1459.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1460.     {
  1461.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_HEAVY)
  1462.         {
  1463.             return 1;
  1464.         }
  1465.     }
  1466.     return 0;
  1467. }
  1468.  
  1469. stock IsPlayerInTruck(playerid)
  1470. {
  1471.     return IsPlayerInHeavy(playerid);
  1472. }
  1473.  
  1474. stock IsPlayerInTrain(playerid) //By Gabriel "Larcius" Cordes
  1475. {
  1476.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1477.     {
  1478.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_TRAIN)
  1479.         {
  1480.             return 1;
  1481.         }
  1482.     }
  1483.     return 0;
  1484. }
  1485.  
  1486. stock IsPlayerInHelicopter(playerid) //By Gabriel "Larcius" Cordes
  1487. {
  1488.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1489.     {
  1490.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_HELI)
  1491.         {
  1492.             return 1;
  1493.         }
  1494.     }
  1495.     return 0;
  1496. }
  1497.  
  1498. stock IsPlayerInHeli(playerid)
  1499. {
  1500.     return IsPlayerInHelicopter(playerid);
  1501. }
  1502.  
  1503. stock IsPlayerInPlane(playerid) //By Gabriel "Larcius" Cordes
  1504. {
  1505.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1506.     {
  1507.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_PLANE)
  1508.         {
  1509.             return 1;
  1510.         }
  1511.     }
  1512.     return 0;
  1513. }
  1514.  
  1515. stock IsPlayerInMonsterTruck(playerid) //By Gabriel "Larcius" Cordes
  1516. {
  1517.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1518.     {
  1519.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_MONSTER)
  1520.         {
  1521.             return 1;
  1522.         }
  1523.     }
  1524.     return 0;
  1525. }
  1526.  
  1527. stock IsPlayerInCar(playerid) //By Gabriel "Larcius" Cordes
  1528. {
  1529.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1530.     {
  1531.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_CAR)
  1532.         {
  1533.             return 1;
  1534.         }
  1535.     }
  1536.     return 0;
  1537. }
  1538.  
  1539. stock IsPlayerOnQuad(playerid) //By Gabriel "Larcius" Cordes
  1540. {
  1541.     if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1542.     {
  1543.         if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_QUAD)
  1544.         {
  1545.             return 1;
  1546.         }
  1547.     }
  1548.     return 0;
  1549. }
  1550.  
  1551. stock IsVehicleTrailer(vehicleid) //By Gabriel "Larcius" Cordes
  1552. {
  1553.     if(GetVehicleType(vehicleid)==VTYPE_TRAILER)
  1554.     {
  1555.         return 1;
  1556.     }
  1557.     return 0;
  1558. }
  1559.  
  1560. stock IsPlayerInQuad(playerid) //By Gabriel "Larcius" Cordes
  1561. {
  1562.     return IsPlayerOnQuad(playerid);
  1563. }
  1564.  
  1565. stock ShowSpeedForPlayer(playerid,a=SPEED_KMPH) //By Gabriel "Larcius" Cordes
  1566. {
  1567.     if(IsPlayerConnected(playerid))
  1568.     {
  1569.         Players[playerid][Speed][Show]=a;
  1570.         return 1;
  1571.     }
  1572.     return 0;
  1573. }
  1574.  
  1575. stock ShowSpeedForAll(a=SPEED_KMPH) //By Gabriel "Larcius" Cordes
  1576. {
  1577.     new ret=0;
  1578.     for(new i=0;i<MAX_PLAYERS;i++)
  1579.     {
  1580.         if(ShowSpeedForPlayer(i,a))
  1581.         {
  1582.             ret++;
  1583.         }
  1584.     }
  1585.     return ret;
  1586. }
  1587.  
  1588. stock HideSpeedForPlayer(playerid) //By Gabriel "Larcius" Cordes
  1589. {
  1590.     if(IsPlayerConnected(playerid))
  1591.     {
  1592.         Players[playerid][Speed][Show]=0;
  1593.         return 1;
  1594.     }
  1595.     return 0;
  1596. }
  1597.  
  1598. stock HideSpeedForAll() //By Gabriel "Larcius" Cordes
  1599. {
  1600.     new ret=0;
  1601.     for(new i=0;i<MAX_PLAYERS;i++)
  1602.     {
  1603.         if(HideSpeedForPlayer(i))
  1604.         {
  1605.             ret++;
  1606.         }
  1607.     }
  1608.     return ret;
  1609. }
  1610.  
  1611. stock ShowAccelerationForPlayer(playerid,a=ACC_MPS2) //By Gabriel "Larcius" Cordes
  1612. {
  1613.     if(IsPlayerConnected(playerid))
  1614.     {
  1615.         Players[playerid][Acceleration][Show]=a;
  1616.         return 1;
  1617.     }
  1618.     return 0;
  1619. }
  1620.  
  1621. stock ShowAccelerationForAll(a=ACC_MPS2) //By Gabriel "Larcius" Cordes
  1622. {
  1623.     new ret=0;
  1624.     for(new i=0;i<MAX_PLAYERS;i++)
  1625.     {
  1626.         if(ShowAccelerationForPlayer(i,a))
  1627.         {
  1628.             ret++;
  1629.         }
  1630.     }
  1631.     return ret;
  1632. }
  1633.  
  1634. stock HideAccelerationForPlayer(playerid) //By Gabriel "Larcius" Cordes
  1635. {
  1636.     if(IsPlayerConnected(playerid))
  1637.     {
  1638.         Players[playerid][Acceleration][Show]=0;
  1639.         return 1;
  1640.     }
  1641.     return 0;
  1642. }
  1643.  
  1644. stock HideAccelerationForAll() //By Gabriel "Larcius" Cordes
  1645. {
  1646.     new ret=0;
  1647.     for(new i=0;i<MAX_PLAYERS;i++)
  1648.     {
  1649.         if(HideAccelerationForPlayer(i))
  1650.         {
  1651.             ret++;
  1652.         }
  1653.     }
  1654.     return ret;
  1655. }
  1656.  
  1657. /*stock GetVehicleName(vehicleid) //By Sacky
  1658. {
  1659.     new modelid=612;
  1660.     if(IsVehicleConnected(vehicleid))
  1661.     {
  1662.         modelid=GetVehicleModel(vehicleid);
  1663.     }
  1664.     return VehicleNames[(modelid-400)];
  1665. }*/
  1666.  
  1667. stock GetVehicleNameByModel(modelid) //By Gabriel "Larcius" Cordes
  1668. {
  1669.     if(400<modelid || modelid>611)
  1670.     {
  1671.         modelid=612;
  1672.     }
  1673.     return VehicleNames[(modelid-400)];
  1674. }
  1675.  
  1676. stock Float:GetDistanceToPointXY(playerid,Float:xs,Float:ys) //By Gabriel "Larcius" Cordes
  1677. {
  1678.     new Float:x1,Float:y1,Float:z1;
  1679.     GetPlayerPos(playerid,x1,y1,z1);
  1680.     return GetDistanceToPoint(playerid,xs,ys,z1);
  1681. }
  1682.  
  1683. stock Float:GetDistanceBetweenPointsXY(Float:x1,Float:y1,Float:x2,Float:y2) //By Gabriel "Larcius" Cordes
  1684. {
  1685.     return GetDistanceBetweenPoints(x1,y1,0.0,x2,y2,0.0);
  1686. }
  1687.  
  1688. stock Float:GetPlayerDistanceToPointXY(playerid,Float:xs,Float:ys)
  1689. {
  1690.     return GetDistanceToPointXY(playerid,xs,ys);
  1691. }
  1692.  
  1693. stock Float:GetPlayerDistanceToPoint(playerid,Float:xs,Float:ys) //By Sacky
  1694. {
  1695.     return GetDistanceToPointXY(playerid,xs,ys);
  1696. }
  1697.  
  1698. stock Float:GetPlayerDistanceToPointEx(playerid,Float:xs,Float:ys,Float:zs) //By Sacky
  1699. {
  1700.     return GetDistanceToPoint(playerid,xs,ys,zs);
  1701. }
  1702.  
  1703. stock Float:GetPointDistanceToPoint(Float:x1,Float:y1,Float:x2,Float:y2) //By Sacky
  1704. {
  1705.     return GetDistanceBetweenPoints(x1,y1,0.0,x2,y2,0.0);
  1706. }
  1707.  
  1708. stock Float:GetPointDistanceToPointEx(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2) //By Sacky
  1709. {
  1710.     return GetDistanceBetweenPoints(x1,y1,z1,x2,y2,z2);
  1711. }
  1712.  
  1713. stock IsPlayerInRectangle(playerid, Float:x1, Float:y1, Float:x2, Float:y2)
  1714. {
  1715.     if(IsPlayerConnected(playerid))
  1716.     {
  1717.         new Float:xs,Float:ys,Float:zs;
  1718.         GetPlayerPos(playerid,xs,ys,zs);
  1719.         return IsPointInRectangle(xs,ys,x1,y1,x2,y2);
  1720.     }
  1721.     return 0;
  1722. }
  1723.  
  1724. stock IsPointInRectangle(Float:xs, Float:ys, Float:x1, Float:y1, Float:x2, Float:y2) //By Alex "Y_Less" Cole (edited by Gabriel "Larcius" Cordes)
  1725. {
  1726.     if(IsBetweenFloats(xs,x1,x2) && IsBetweenFloats(ys,y1,y2))
  1727.     {
  1728.         return 1;
  1729.     }
  1730.     return 0;
  1731. }
  1732.  
  1733. stock IsPointInCircle(Float:xs,Float:ys,Float:x1,Float:y1,Float:radius1) //By Sacky
  1734. {
  1735.     if(GetDistanceBetweenPointsXY(xs,ys,x1,y1)<=radius1)
  1736.     {
  1737.         return 1;
  1738.     }
  1739.     return 0;
  1740. }
  1741.  
  1742. stock IsPlayerInCircle(playerid,Float:x1,Float:y1,Float:radius1)
  1743. {
  1744.     if(IsPlayerConnected(playerid))
  1745.     {
  1746.         new Float:xs,Float:ys,Float:zs;
  1747.         GetPlayerPos(playerid,xs,ys,zs);
  1748.         return IsPointInCircle(xs,ys,x1,y1,radius1);
  1749.     }
  1750.     return 0;
  1751. }
  1752.  
  1753. stock IsPlayerInAshlar(playerid,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
  1754. {
  1755.     if(IsPlayerConnected(playerid))
  1756.     {
  1757.         new Float:xs,Float:ys,Float:zs;
  1758.         GetPlayerPos(playerid,xs,ys,zs);
  1759.         return IsPointInAshlar(xs,ys,zs,x1,y1,z1,x2,y2,z2);
  1760.     }
  1761.     return 0;
  1762. }
  1763.  
  1764. stock IsPointInAshlar(Float:xs,Float:ys,Float:zs,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2) //By 50p (edited by Gabriel "Larcius" Cordes)
  1765. {
  1766.     if(IsBetweenFloats(xs,x1,x2) && IsBetweenFloats(ys,y1,y2) && IsBetweenFloats(zs,z1,z2))
  1767.     {
  1768.         return 1;
  1769.     }
  1770.     return 0;
  1771. }
  1772.  
  1773. stock IsPlayerInCube(Float:xs,Float:ys,Float:zs,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
  1774. {
  1775.     return IsPlayerInAshlar(xs,ys,zs,x1,y1,z1,x2,y2,z2);
  1776. }
  1777.  
  1778. stock IsPointInCube(playerid,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
  1779. {
  1780.     return IsPointInAshlar(playerid,x1,y1,z1,x2,y2,z2);
  1781. }
  1782.  
  1783. stock IsPlayerInSphere(playerid,Float:x1,Float:y1,Float:z1,Float:radius)
  1784. {
  1785.     if(IsPlayerConnected(playerid))
  1786.     {
  1787.         new Float:xs,Float:ys,Float:zs;
  1788.         GetPlayerPos(playerid,xs,ys,zs);
  1789.         return IsPointInSphere(xs,ys,zs,x1,y1,z1,radius);
  1790.     }
  1791.     return 0;
  1792. }
  1793.  
  1794. stock IsPointInSphere(Float:xs,Float:ys,Float:zs,Float:x1,Float:y1,Float:z1,Float:radius) //By Sacky
  1795. {
  1796.     if(GetDistanceBetweenPoints(xs,ys,zs,x1,y1,z1)<=radius)
  1797.     {
  1798.         return 1;
  1799.     }
  1800.     return 0;
  1801. }
  1802.  
  1803. stock IsPlayerInCylinder(playerid,Float:x1,Float:y1,Float:z1,Float:h1,Float:radius1)
  1804. {
  1805.     if(IsPlayerConnected(playerid))
  1806.     {
  1807.         new Float:xs,Float:ys,Float:zs;
  1808.         GetPlayerPos(playerid,xs,ys,zs);
  1809.         return IsPointInCylinder(xs,ys,zs,x1,y1,z1,h1,radius1);
  1810.     }
  1811.     return 0;
  1812. }
  1813.  
  1814. stock IsPointInCylinder(Float:xs,Float:ys,Float:zs,Float:x1,Float:y1,Float:z1,Float:h1,Float:radius1) //By Sacky
  1815. {
  1816.     if(GetDistanceBetweenPointsXY(xs,ys,x1,y1)<=radius1 && zs>=z1 && zs<=(z1+h1))
  1817.     {
  1818.         return 1;
  1819.     }
  1820.     return 0;
  1821. }
  1822.  
  1823. stock TakePlayerMoney(playerid,money) //By Sacky
  1824. {
  1825.     if(IsPlayerConnected(playerid))
  1826.     {
  1827.         GivePlayerMoney(playerid,0-money);
  1828.         return 1;
  1829.     }
  1830.     return 0;
  1831. }
  1832.  
  1833. stock DestroyPickup2(pickupid) //By Gabriel "Larcius" Cordes
  1834. {
  1835.     if(IsPickupConnected(pickupid))
  1836.     {
  1837.         DestroyPickup(pickupid);
  1838.         Pickups[pickupid][Model]=0;
  1839.         Pickups[pickupid][Type]=0;
  1840.         Pickups[pickupid][PICKE_X]=0;
  1841.         Pickups[pickupid][PICKE_Y]=0;
  1842.         Pickups[pickupid][PICKE_Z]=0;
  1843.         return 1;
  1844.     }
  1845.     return 0;
  1846. }
  1847.  
  1848. stock CreatePickup2(model,type,Float:x1,Float:y1,Float:z1) //By Gabriel "Larcius" Cordes
  1849. {
  1850.     if(GetPickups()<MAX_PICKUPS)
  1851.     {
  1852.         new pickupid=CreatePickup(model,type,x1,y1,z1);
  1853.         Pickups[pickupid][Model]=model;
  1854.         Pickups[pickupid][Type]=type;
  1855.         Pickups[pickupid][PICKE_X]=x1;
  1856.         Pickups[pickupid][PICKE_Y]=y1;
  1857.         Pickups[pickupid][PICKE_Z]=z1;
  1858.         return 1;
  1859.     }
  1860.     return 0;
  1861. }
  1862.  
  1863. stock AddStaticPickup2(model,type,Float:x1,Float:y1,Float:z1) //By Sacky (edited by Gabriel "Larcius" Cordes)
  1864. {
  1865.     if(GetPickups()<MAX_PICKUPS)
  1866.     {
  1867.         new pickupid=AddStaticPickup(model,type,x1,y1,z1);
  1868.         Pickups[pickupid][Model]=model;
  1869.         Pickups[pickupid][Type]=type;
  1870.         Pickups[pickupid][PICKE_X]=x1;
  1871.         Pickups[pickupid][PICKE_Y]=y1;
  1872.         Pickups[pickupid][PICKE_Z]=z1;
  1873.         return 1;
  1874.     }
  1875.     return 0;
  1876. }
  1877.  
  1878. stock SetVehicleParamsForPlayer2(vehicleid, playerid, objective, doorslocked, trailer=0) //By Gabriel "Larcius" Cordes
  1879. {
  1880.     if(IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  1881.     {
  1882. /*      if(objective==0 && IsVehicleObjectivedForPlayer(vehicleid,playerid))
  1883.         {
  1884.             new Float:x1,Float:y1,Float:z1,Float:angle_z;
  1885.             GetVehiclePos(vehicleid,x1,y1,z1);
  1886.             GetVehicleZAngle(vehicleid,angle_z);
  1887.             SetVehicleToRespawn(vehicleid);
  1888.             if(IsVehicleTrailer(vehicleid))
  1889.             {
  1890.                 AttachTrailerToVehicle(vehicleid,trailer);
  1891.             }
  1892.             else
  1893.             {  
  1894.                 PutPlayerInVehicle(playerid,vehicleid,0);
  1895.                 SetVehiclePos(vehicleid,x1,y1,z1);
  1896.                 SetVehicleZAngle(vehicleid,angle_z);
  1897.             }
  1898.         }*/
  1899.         SetVehicleParamsForPlayer(vehicleid, playerid, objective, doorslocked);
  1900.         Vehicles[vehicleid][Objective][playerid]=objective;
  1901.         Vehicles[vehicleid][Locked][playerid]=doorslocked;
  1902.         if (trailer && IsTrailerAttachedToVehicle(vehicleid))
  1903.         {
  1904.             SetVehicleParamsForPlayer2(GetVehicleTrailer(vehicleid), playerid, objective, doorslocked, vehicleid);
  1905.         }
  1906.         return 1;
  1907.     }
  1908.     return 0;
  1909. }
  1910.  
  1911. stock SetVehicleParamsForAll(vehicleid, objective, doorslocked, trailer=0) //By Gabriel "Larcius" Cordes
  1912. {
  1913.     new ret=0;
  1914.     for(new i=0; i<MAX_PLAYERS; i++)
  1915.     {
  1916.         if(SetVehicleParamsForPlayer2(vehicleid, i, objective, doorslocked, trailer))
  1917.         {
  1918.             ret++;
  1919.         }
  1920.     }
  1921.     return ret;
  1922. }
  1923.  
  1924. stock DestroyVehicle2(vehicleid)
  1925. {
  1926.     if(IsVehicleConnected(vehicleid))
  1927.     {
  1928.         SetVehicleParamsForAll(vehicleid, 0, 0);
  1929.         DestroyVehicle(vehicleid);
  1930.         Vehicles[vehicleid][VE_X]=0.0;
  1931.         Vehicles[vehicleid][VE_Y]=0.0;
  1932.         Vehicles[vehicleid][VE_Z]=0.0;
  1933.         Vehicles[vehicleid][Angle]=0.0;
  1934.         Vehicles[vehicleid][Health]=0.0;
  1935.         Vehicles[vehicleid][Dynamic]=0;
  1936.         Vehicles[vehicleid][Respawn]=0;
  1937.         Vehicles[vehicleid][Color1]=0;
  1938.         Vehicles[vehicleid][Color2]=0;
  1939.         Vehicles[vehicleid][Locked]=0;
  1940.         return 1;
  1941.     }
  1942.     return 0;
  1943. }
  1944.  
  1945. stock AddStaticVehicleEx2(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2,respawn_delay) //By Sacky (edited by Gabriel "Larcius" Cordes)
  1946. {
  1947.     if(GetVehicles()<MAX_VEHICLES)
  1948.     {
  1949.         new id=AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2,respawn_delay), Float:h;
  1950.         GetVehicleHealth(id, h);
  1951.         Vehicles[id][VE_X]=spawn_x;
  1952.         Vehicles[id][VE_Y]=spawn_y;
  1953.         Vehicles[id][VE_Z]=spawn_z;
  1954.         Vehicles[id][Health]=h;
  1955.         Vehicles[id][Color1]=color1;
  1956.         Vehicles[id][Color2]=color2;
  1957.         Vehicles[id][Respawn]=respawn_delay;
  1958.         Vehicles[id][Dynamic]=0;
  1959.         Vehicles[id][Last_Trailer]=-1;
  1960.         Vehicles[id][Cur_Trailer]=-1;
  1961.         Vehicles[id][Static]=1;
  1962.         Vehicles[id][Angle]=z_angle;
  1963.         return 1;
  1964.     }
  1965.     return 0;
  1966. }
  1967.  
  1968. stock substr(const string[], const substr[] )
  1969. {
  1970.        new found_str = strfind( string, substr );
  1971.           new szRet[ 256 ];
  1972.    
  1973.           if( found_str )
  1974.           {
  1975.                  strmid( szRet, string, found_str + 1, strlen( string ) );
  1976.        }
  1977.           return szRet;
  1978. }
  1979.  
  1980. stock Float:GetPlayerSpeed(playerid,a=SPEED_KMPH) //By Gabriel "Larcius" Cordes
  1981. {
  1982.     if(IsPlayerConnected(playerid))
  1983.     {
  1984.         switch(a)
  1985.         {
  1986.             case SPEED_KMPH: return Players[playerid][Speed][KMPH];
  1987.             case SPEED_MPH: return Players[playerid][Speed][MPH];
  1988.             case SPEED_MPS: return Players[playerid][Speed][MPS];
  1989.         }
  1990.     }
  1991.     return -1.0;
  1992. }
  1993.  
  1994. stock Float:GetPlayerAcceleration(playerid,a=ACC_MPS2) //By Sacky (basically edited by Gabriel "Larcius" Cordes)
  1995. {
  1996.     if(IsPlayerConnected(playerid))
  1997.     {
  1998.         switch(a)
  1999.         {
  2000.             case ACC_MPS2: return Players[playerid][Acceleration][MPS2];
  2001.             case ACC_KMPH2: return Players[playerid][Acceleration][KMPH2];
  2002.             case ACC_G: return Players[playerid][Acceleration][G];
  2003.         }
  2004.     }
  2005.     return 0.0;
  2006. }
  2007.  
  2008. stock GetAdmins() //By Gabriel "Larcius" Cordes
  2009. {
  2010.     new admins=0;
  2011.     for(new i=0;i<MAX_PLAYERS;i++)
  2012.     {
  2013.         if(IsPlayerConnected(i) && IsPlayerAdmin(i))
  2014.         {
  2015.             admins++;
  2016.         }
  2017.     }
  2018.     return admins;
  2019. }
  2020.  
  2021. stock GetPickups() //By Gabriel "Larcius" Cordes
  2022. {
  2023.     new pickups=0;
  2024.     for(new i=0;i<MAX_PICKUPS;i++)
  2025.     {
  2026.         if(IsPickupConnected(i))
  2027.         {
  2028.             pickups++;
  2029.         }
  2030.     }
  2031.     return pickups;
  2032. }
  2033.  
  2034. stock Float:isin(Float:opp,Float:hyp) //By Sacky
  2035. {
  2036.     new Float:x = floatdiv(opp,hyp);
  2037.     if(x < 1.0 && x > -1.0)
  2038.     {
  2039.         return x+(1.0/2.0)*(floatpower(x,3)/3.0)+((1.0*3.0)/(2.0*4.0))*(floatpower(x,5)/5.0)+((1.0*3.0*5.0)/(2.0*4.0*6.0))*(floatpower(x,7)/7.0)+((1.0*3.0*5.0*7.0)/(2.0*4.0*6.0*8.0))*(floatpower(x,9)/9.0)+((1.0*3.0*5.0*7.0*9.0)/(2.0*4.0*6.0*8.0*10.0))*(floatpower(x,11)/11.0);
  2040.     }
  2041.     return -1.0;
  2042. }
  2043.  
  2044. stock Float:icos(Float:adj,Float:hyp) //By Sacky
  2045. {
  2046.     new Float:x = floatdiv(adj,hyp);
  2047.     if(x < 1.0 && x > -1.0)
  2048.     {
  2049.         return floatsub(floatdiv(PI,2.0),isin(adj,hyp));
  2050.     }
  2051.     return -1.0;
  2052. }
  2053.  
  2054. stock Float:itan(Float:opp,Float:adj) //By Sacky
  2055. {
  2056.     new Float:x = floatdiv(opp,adj);
  2057.     if(x < 1.0 && x > -1.0)
  2058.     {
  2059.         return x-(1.0/3.0)*floatpower(x,3)+(1.0/5.0)*floatpower(x,5)-(1.0/7.0)*floatpower(x,7)+(1.0/9.0)*floatpower(x,9)-(1.0/11.0)*floatpower(x,11)+(1.0/13.0)*floatpower(x,13)-(1.0/15.0)*floatpower(x,15)+(1.0/17.0)*floatpower(x,17)-(1.0/19.0)*floatpower(x,19)+(1.0/21.0)*floatpower(x,21)-(1.0/23.0)*floatpower(x,23)+(1.0/25.0)*floatpower(x,25);
  2060.     }
  2061.     return -1.0;
  2062. }
  2063.  
  2064. stock Float:RadiansToDegrees(Float:radians) //By Sacky
  2065. {
  2066.     return floatdiv(floatmul(radians,PI),180.0);
  2067. }
  2068.  
  2069. stock Float:DegreesToRadians(Float:degree) //By Sacky
  2070. {
  2071.     return floatdiv(floatmul(degree,180.0),PI);
  2072. }
  2073.  
  2074. stock IsVehicleInUse(vehicleid) //By Sacky
  2075. {
  2076.     if(IsVehicleConnected(vehicleid) && VehicleDriverID(vehicleid)!=-1)
  2077.     {
  2078.         return 1;
  2079.     }
  2080.     return 0;
  2081. }
  2082.  
  2083. stock PlayerPlaySound2(playerid,soundid) //By Sacky
  2084. {
  2085.     new Float:x, Float:y, Float:z;
  2086.     GetPlayerPos(playerid,x,y,z);
  2087.     PlayerPlaySound(playerid,soundid,x,y,z);
  2088.     return 1;
  2089. }
  2090.  
  2091. stock PlayerPlaySoundEx(playerid,soundid) //By Sacky
  2092. {
  2093.     return PlayerPlaySound2(playerid,soundid);
  2094. }
  2095.  
  2096. stock SetVehicleSpawnPos(vehicleid,Float:x1,Float:y1,Float:z1,Float:angle1)
  2097. {
  2098.     if(IsVehicleConnected(vehicleid))
  2099.     {
  2100.         Vehicles[vehicleid][VE_X]=x1;
  2101.         Vehicles[vehicleid][VE_Y]=y1;
  2102.         Vehicles[vehicleid][VE_Z]=z1;
  2103.         Vehicles[vehicleid][Angle]=angle1;
  2104.         Vehicles[vehicleid][Dynamic]=1;
  2105.         return 1;
  2106.     }
  2107.     return 0;
  2108. }
  2109.  
  2110. stock ResetVehicleSpawnPos(vehicleid)
  2111. {
  2112.     if(IsVehicleConnected(vehicleid))
  2113.     {
  2114.         Vehicles[vehicleid][Dynamic]=0;
  2115.         return 1;
  2116.     }
  2117.     return 0;
  2118. }
  2119.  
  2120. stock SetVehicleToRespawn2(vehicleid) //By Gabriel "Larcius" Cordes
  2121. {
  2122.     if(IsVehicleConnected(vehicleid))
  2123.     {
  2124.         if(Vehicles[vehicleid][Dynamic])
  2125.         {
  2126.             SetVehiclePos(vehicleid,Vehicles[vehicleid][VE_X],Vehicles[vehicleid][VE_Y],Vehicles[vehicleid][VE_Z]);
  2127.             SetVehicleZAngle(vehicleid,Vehicles[vehicleid][Angle]);
  2128.             #if defined OnVehicleRespawn
  2129.             OnVehicleSpawn2(vehicleid,1);
  2130.             #endif
  2131.             return 2;
  2132.         }
  2133.         else
  2134.         {
  2135.             SetVehicleToRespawn(vehicleid);
  2136.             return 1;
  2137.         }
  2138.     }
  2139.     return 0;
  2140. }
  2141.  
  2142. stock randomcolor() //By Gabriel "Larcius" Cordes
  2143. {
  2144.     return random(126);
  2145. }
  2146.  
  2147. stock AddStaticVehicle2(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2) //By Boss (edited by Gabriel "Larcius" Cordes)
  2148. {
  2149.     if(GetVehicles()<MAX_VEHICLES)
  2150.     {
  2151.         if(color1<0)
  2152.         {
  2153.             color1=randomcolor();
  2154.         }
  2155.         if(color2<0)
  2156.         {
  2157.             color2=randomcolor();
  2158.         }
  2159.         new vehicleid=AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2), Float:h;
  2160.         GetVehicleHealth(vehicleid, h);
  2161.         Vehicles[vehicleid][VE_X]=spawn_x;
  2162.         Vehicles[vehicleid][VE_Y]=spawn_y;
  2163.         Vehicles[vehicleid][VE_Z]=spawn_z;
  2164.         Vehicles[vehicleid][Health]=h;
  2165.         Vehicles[vehicleid][Color1]=color1;
  2166.         Vehicles[vehicleid][Color2]=color2;
  2167.         Vehicles[vehicleid][Dynamic]=0;
  2168.         Vehicles[vehicleid][Last_Trailer]=-1;
  2169.         Vehicles[vehicleid][Cur_Trailer]=-1;
  2170.         Vehicles[vehicleid][Static]=1;
  2171.         Vehicles[vehicleid][Respawn]=0;
  2172.         Vehicles[vehicleid][Angle]=z_angle;
  2173.         return 1;
  2174.     }
  2175.     return 0;
  2176. }
  2177.  
  2178. stock CreateVehicle2(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay) //By Boss (edited by Gabriel "Larcius" Cordes)
  2179. {
  2180.     if(GetVehicles()<MAX_VEHICLES)
  2181.     {
  2182.         if(respawn_delay<0)
  2183.         {
  2184.             respawn_delay=INF_INT;
  2185.         }
  2186.         if(color1<0)
  2187.         {
  2188.             color1=randomcolor();
  2189.         }
  2190.         if(color2<0)
  2191.         {
  2192.             color2=randomcolor();
  2193.         }
  2194.         new id=CreateVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, respawn_delay), Float:h;
  2195.         GetVehicleHealth(id, h);
  2196.         Vehicles[id][VE_X]=spawn_x;
  2197.         Vehicles[id][VE_Y]=spawn_y;
  2198.         Vehicles[id][VE_Z]=spawn_z;
  2199.         Vehicles[id][Health]=h;
  2200.         Vehicles[id][Color1]=color1;
  2201.         Vehicles[id][Color2]=color2;
  2202.         Vehicles[id][Respawn]=respawn_delay;
  2203.         Vehicles[id][Dynamic]=0;
  2204.         Vehicles[id][Last_Trailer]=-1;
  2205.         Vehicles[id][Cur_Trailer]=-1;
  2206.         Vehicles[id][Static]=-1;
  2207.         Vehicles[id][Angle]=z_angle;
  2208.         return 1;
  2209.     }
  2210.     return 0;
  2211. }
  2212.  
  2213. stock AddStaticVehicleLine(modelid, Float:x1, Float:y1, Float:z1, Float:Z_Angle, color1, color2, Float:distance, MaxAmount, type) //By Gabriel "Larcius" Cordes
  2214. {
  2215.     new ret=0, Float:xRate=floatmul(floatsin(Z_Angle,degrees),distance), Float:yRate=floatmul(floatcos(Z_Angle,degrees),distance), Float:tmp;
  2216.     if(type==SIDELONG)
  2217.     {
  2218.         tmp=xRate;
  2219.         xRate=yRate;
  2220.         yRate=tmp;
  2221.     }
  2222.     for(new i=0; i<MaxAmount; i++)
  2223.     {
  2224.         if(AddStaticVehicle2(modelid, x1, y1, z1, Z_Angle, color1, color2))
  2225.         {
  2226.             x1+=xRate;
  2227.             y1+=yRate;
  2228.             ret++;
  2229.         }
  2230.     }
  2231.     return ret;
  2232. }
  2233.  
  2234. stock CreateVehicleLine(modelid, Float:x1, Float:y1, Float:z1, Float:Z_Angle, color1, color2, respawn_delay, Float:distance, MaxAmount, type) //By Gabriel "Larcius" Cordes
  2235. {
  2236.     new ret=0, Float:xRate=floatmul(floatsin(Z_Angle,degrees),distance), Float:yRate=floatmul(floatcos(Z_Angle,degrees),distance), Float:tmp;
  2237.     if(type==SIDELONG)
  2238.     {
  2239.         tmp=xRate;
  2240.         xRate=yRate;
  2241.         yRate=tmp;
  2242.     }
  2243.     for(new i=0; i<MaxAmount; i++)
  2244.     {
  2245.         if(CreateVehicle2(modelid,x1,y1,z1,Z_Angle,color1,color2,respawn_delay))
  2246.         {
  2247.             x1+=xRate;
  2248.             y1+=yRate;
  2249.             ret++;
  2250.         }
  2251.     }
  2252.     return ret;
  2253. }
  2254.  
  2255. stock DetachTrailerFromVehicle2(vehicleid) //By Gabriel "Larcius" Cordes
  2256. {
  2257.     if(IsVehicleConnected(vehicleid) && IsTrailerAttachedToVehicle(vehicleid))
  2258.     {
  2259.         new trailerid=GetVehicleTrailer(vehicleid);
  2260.         AttachTrailerToVehicle(trailerid, vehicleid);
  2261.         DetachTrailerFromVehicle(vehicleid);
  2262.         return trailerid;
  2263.     }
  2264.     return -1;
  2265. }
  2266.  
  2267. stock SetVehicleParamsForAllOthers(vehicleid, playerid, objective, doorslocked, trailer=0) //By Gabriel "Larcius" Cordes
  2268. {
  2269.     new ret=0;
  2270.     if(IsVehicleConnected(vehicleid))
  2271.     {
  2272.         for (new i=0; i<MAX_PLAYERS; i++)
  2273.         {
  2274.             if(IsPlayerConnected(i) && i!=playerid)
  2275.             {
  2276.                 SetVehicleParamsForPlayer2(vehicleid, i, objective, doorslocked, trailer);
  2277.                 ret++;
  2278.             }
  2279.         }
  2280.     }
  2281.     return ret;
  2282. }
  2283.  
  2284. stock GetVehicleParamsOfPlayer(vehicleid, playerid, &objective, &doorslocked) //By Gabriel "Larcius" Cordes
  2285. {
  2286.     objective=-1, doorslocked=-1;
  2287.     if(IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  2288.     {
  2289.         objective=Vehicles[vehicleid][Objective][playerid];
  2290.         doorslocked=Vehicles[vehicleid][Locked][playerid];
  2291.     }
  2292.     return objective,doorslocked;
  2293. }
  2294.  
  2295. stock GetVehicleParamsForPlayer(vehicleid, playerid, &objective, &doorslocked)
  2296. {
  2297.     GetVehicleParamsOfPlayer(vehicleid, playerid, objective, doorslocked);
  2298.     return objective, doorslocked;
  2299. }
  2300.  
  2301. stock IsPlayerFreeze(playerid)
  2302. {
  2303.     if(IsPlayerConnected(playerid))
  2304.     {
  2305.         for(new i=0; i<MAX_FREEZE_ALL; i++)
  2306.         {
  2307.             if(Players[playerid][Freeze][i]==1)
  2308.             {
  2309.                 return 1;
  2310.             }
  2311.         }
  2312.     }
  2313.     return 0;
  2314. }
  2315.  
  2316. stock IsVehicleLockedForPlayer(vehicleid, playerid) //By Gabriel "Larcius" Cordes
  2317. {
  2318.     if(IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  2319.     {
  2320.         new objective, doorslocked;
  2321.         GetVehicleParamsOfPlayer(vehicleid, playerid, objective, doorslocked);
  2322.         if(doorslocked==1)
  2323.         {
  2324.             return 1;
  2325.         }
  2326.     }
  2327.     return 0;
  2328. }
  2329.  
  2330. stock IsVehicleLockedForAnyPlayer(vehicleid) //By Gabriel "Larcius" Cordes
  2331. {
  2332.     if(IsVehicleConnected(vehicleid))
  2333.     {
  2334.         for(new i=0; i<MAX_PLAYERS; i++)
  2335.         {
  2336.             if(IsPlayerConnected(i) && IsVehicleLockedForPlayer(vehicleid, i))
  2337.             {
  2338.                 return 1;
  2339.             }
  2340.         }
  2341.     }
  2342.     return 0;
  2343. }
  2344.  
  2345. stock IsVehicleLockedForAll(vehicleid) //By Gabriel "Larcius" Cordes
  2346. {
  2347.     if(IsVehicleConnected(vehicleid))
  2348.     {
  2349.         for(new i=0; i<MAX_PLAYERS; i++)
  2350.         {
  2351.             if(IsPlayerConnected(i) && !IsVehicleLockedForPlayer(vehicleid, i))
  2352.             {
  2353.                 return 0;
  2354.             }
  2355.         }
  2356.         return 1;
  2357.     }
  2358.     return 0;
  2359. }
  2360.  
  2361. stock IsVehicleObjectivedForPlayer(vehicleid, playerid) //By Gabriel "Larcius" Cordes
  2362. {
  2363.     if(IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  2364.     {
  2365.         new objective, doorslocked;
  2366.         GetVehicleParamsOfPlayer(vehicleid, playerid, objective, doorslocked);
  2367.         if(objective==1)
  2368.         {
  2369.             return 1;
  2370.         }
  2371.     }
  2372.     return 0;
  2373. }
  2374.  
  2375. stock IsVehicleObjectivedForAnyPlayer(vehicleid) //By Gabriel "Larcius" Cordes
  2376. {
  2377.     if(IsVehicleConnected(vehicleid))
  2378.     {
  2379.         for(new i=0; i<MAX_PLAYERS; i++)
  2380.         {
  2381.             if(IsPlayerConnected(i) && IsVehicleObjectivedForPlayer(vehicleid, i))
  2382.             {
  2383.                 return 1;
  2384.             }
  2385.         }
  2386.     }
  2387.     return 0;
  2388. }
  2389.  
  2390. stock IsVehicleObjectivedForAll(vehicleid) //By Gabriel "Larcius" Cordes
  2391. {
  2392.     if(IsVehicleConnected(vehicleid))
  2393.     {
  2394.         for(new i=0; i<MAX_PLAYERS; i++)
  2395.         {
  2396.             if(IsPlayerConnected(i) && !IsVehicleObjectivedForPlayer(vehicleid, i))
  2397.             {
  2398.                 return 0;
  2399.             }
  2400.         }
  2401.         return 1;
  2402.     }
  2403.     return 0;
  2404. }
  2405.  
  2406. stock SetTeamPos(team, x, y, z) //dyraXon
  2407. {
  2408.     for (new i = 0; i < MAX_PLAYERS; i++)
  2409.     {
  2410.         if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2411.         {
  2412.             SetPlayerPos(i, x, y, z);
  2413.         }
  2414.     }
  2415.     return 1;
  2416. }
  2417.  
  2418. stock IsTeamInArea(team, Float:minx, Float:maxx, Float:miny, Float:maxy) //dyraXon
  2419. {
  2420.     for (new i = 0; i < MAX_PLAYERS; i++)
  2421.     {
  2422.         if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2423.         {
  2424.             new Float:x, Float:y, Float:z;
  2425.             GetPlayerPos(i, x, y, z);
  2426.             if (x > minx && x < maxx && y > miny && y < maxy)
  2427.             {
  2428.                 return 1;
  2429.             }
  2430.         }
  2431.     }
  2432.     return 0;
  2433. }
  2434.  
  2435. stock KickTeam(team) //dyraXon
  2436. {
  2437.     for (new i = 0; i < MAX_PLAYERS; i++)
  2438.     {
  2439.         if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2440.         {
  2441.             Kick(i);
  2442.         }
  2443.     }
  2444.     return 1;
  2445. }
  2446.  
  2447. stock BanTeam(team) //dyraXon
  2448. {
  2449.     for (new i = 0; i < MAX_PLAYERS; i++)
  2450.     {
  2451.         if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2452.         {
  2453.             Ban(i);
  2454.         }
  2455.     }
  2456. }
  2457.  
  2458. stock GetVehicleType(vehicleid) //By YellowBlood (edited by Gabriel "Larcius" Cordes)
  2459. {
  2460.     new type=0;
  2461.     if(IsVehicleConnected(vehicleid))
  2462.     {
  2463.     switch(GetVehicleModel(vehicleid))
  2464.     {
  2465. // ================== CARS =======
  2466.     case
  2467.     416,   //ambulan  -  car
  2468.     445,   //admiral  -  car
  2469.     602,   //alpha  -  car
  2470.     485,   //baggage  -  car
  2471.     568,   //bandito  -  car
  2472.     429,   //banshee  -  car
  2473.     499,   //benson  -  car
  2474.     424,   //bfinject,   //car
  2475.     536,   //blade  -  car
  2476.     496,   //blistac  -  car
  2477.     504,   //bloodra  -  car
  2478.     422,   //bobcat  -  car
  2479.     609,   //boxburg  -  car
  2480.     498,   //boxville,   //car
  2481.     401,   //bravura  -  car
  2482.     575,   //broadway,   //car
  2483.     518,   //buccanee,   //car
  2484.     402,   //buffalo  -  car
  2485.     541,   //bullet  -  car
  2486.     482,   //burrito  -  car
  2487.     431,   //bus  -  car
  2488.     438,   //cabbie  -  car
  2489.     457,   //caddy  -  car
  2490.     527,   //cadrona  -  car
  2491.     483,   //camper  -  car
  2492.     524,   //cement  -  car
  2493.     415,   //cheetah  -  car
  2494.     542,   //clover  -  car
  2495.     589,   //club  -  car
  2496.     480,   //comet  -  car
  2497.     596,   //copcarla,   //car
  2498.     599,   //copcarru,   //car
  2499.     597,   //copcarsf,   //car
  2500.     598,   //copcarvg,   //car
  2501.     578,   //dft30  -  car
  2502.     486,   //dozer  -  car
  2503.     507,   //elegant  -  car
  2504.     562,   //elegy  -  car
  2505.     585,   //emperor  -  car
  2506.     427,   //enforcer,   //car
  2507.     419,   //esperant,   //car
  2508.     587,   //euros  -  car
  2509.     490,   //fbiranch,   //car
  2510.     528,   //fbitruck,   //car
  2511.     533,   //feltzer  -  car
  2512.     544,   //firela  -  car
  2513.     407,   //firetruk,   //car
  2514.     565,   //flash  -  car
  2515.     455,   //flatbed  -  car
  2516.     530,   //forklift,   //car
  2517.     526,   //fortune  -  car
  2518.     466,   //glendale,   //car
  2519.     604,   //glenshit,   //car
  2520.     492,   //greenwoo,   //car
  2521.     474,   //hermes  -  car
  2522.     434,   //hotknife,   //car
  2523.     502,   //hotrina  -  car
  2524.     503,   //hotrinb  -  car
  2525.     494,   //hotring  -  car
  2526.     579,   //huntley  -  car
  2527.     545,   //hustler  -  car
  2528.     411,   //infernus,   //car
  2529.     546,   //intruder,   //car
  2530.     559,   //jester  -  car
  2531.     508,   //journey  -  car
  2532.     571,   //kart  -  car
  2533.     400,   //landstal,   //car
  2534.     403,   //linerun  -  car
  2535.     517,   //majestic,   //car
  2536.     410,   //manana  -  car
  2537.     551,   //merit  -  car
  2538.     500,   //mesa  -  car
  2539.     418,   //moonbeam,   //car
  2540.     572,   //mower  -  car
  2541.     423,   //mrwhoop  -  car
  2542.     516,   //nebula  -  car
  2543.     582,   //newsvan  -  car
  2544.     467,   //oceanic  -  car
  2545.     404,   //peren  -  car
  2546.     514,   //petro  -  car
  2547.     603,   //phoenix  -  car
  2548.     600,   //picador  -  car
  2549.     413,   //pony  -  car
  2550.     426,   //premier  -  car
  2551.     436,   //previon  -  car
  2552.     547,   //primo  -  car
  2553.     489,   //rancher  -  car
  2554.     441,   //rcbandit,   //car
  2555.     594,   //rccam  -  car
  2556.     564,   //rctiger  -  car
  2557.     515,   //rdtrain  -  car
  2558.     479,   //regina  -  car
  2559.     534,   //remingtn,   //car
  2560.     505,   //rnchlure,   //car
  2561.     442,   //romero  -  car
  2562.     440,   //rumpo  -  car
  2563.     475,   //sabre  -  car
  2564.     543,   //sadler  -  car
  2565.     605,   //sadlshit,   //car
  2566.     495,   //sandking,   //car
  2567.     567,   //savanna  -  car
  2568.     428,   //securica,   //car
  2569.     405,   //sentinel,   //car
  2570.     535,   //slamvan  -  car
  2571.     458,   //solair  -  car
  2572.     580,   //stafford,   //car
  2573.     439,   //stallion,   //car
  2574.     561,   //stratum  -  car
  2575.     409,   //stretch  -  car
  2576.     560,   //sultan  -  car
  2577.     550,   //sunrise  -  car
  2578.     506,   //supergt  -  car
  2579.     601,   //swatvan  -  car
  2580.     574,   //sweeper  -  car
  2581.     566,   //tahoma  -  car
  2582.     549,   //tampa  -  car
  2583.     420,   //taxi  -  car
  2584.     459,   //topfun  -  car
  2585.     576,   //tornado  -  car
  2586.     583,   //tug  -  car
  2587.     451,   //turismo  -  car
  2588.     558,   //uranus  -  car
  2589.     552,   //utility  -  car
  2590.     540,   //vincent  -  car
  2591.     491,   //virgo  -  car
  2592.     412,   //voodoo  -  car
  2593.     478,   //walton  -  car
  2594.     421,   //washing  -  car
  2595.     529,   //willard  -  car
  2596.     555,   //windsor  -  car
  2597.     456,   //yankee  -  car
  2598.     554,   //yosemite -  car
  2599.     477   //zr350  -  car
  2600.     : type = VTYPE_CAR;
  2601.  
  2602. // ================== BIKES =======
  2603.     case
  2604.     581,   //bf400  -  bike
  2605.     523,   //copbike  -  bike
  2606.     462,   //faggio  -  bike
  2607.     521,   //fcr900  -  bike
  2608.     463,   //freeway  -  bike
  2609.     522,   //nrg500  -  bike
  2610.     461,   //pcj600  -  bike
  2611.     448,   //pizzaboy,   //bike
  2612.     468,   //sanchez  -  bike
  2613.     586   //wayfarer,   //bike
  2614.     : type = VTYPE_BIKE;
  2615.  
  2616. // =================== BMX =======
  2617.     case
  2618.     509,   //bike  -  bmx
  2619.     481,   //bmx  -  bmx
  2620.     510   //mtbike  -  bmx
  2621.     : type = VTYPE_BMX;
  2622.  
  2623. // ================== QUADS =======
  2624.     case
  2625.     471   //quad  -  quad
  2626.     : type = VTYPE_QUAD;
  2627.  
  2628. // ================== SEA =======
  2629.     case
  2630.     472,   //coastg  -  boat
  2631.     473,   //dinghy  -  boat
  2632.     493,   //jetmax  -  boat
  2633.     595,   //launch  -  boat
  2634.     484,   //marquis  -  boat
  2635.     430,   //predator,   //boat
  2636.     453,   //reefer  -  boat
  2637.     452,   //speeder  -  boat
  2638.     446,   //squalo  -  boat
  2639.     454   //tropic  -  boat
  2640.     : type = VTYPE_SEA;
  2641.  
  2642. // ================= HELI =======
  2643.     case
  2644.     548,   //cargobob,   //heli
  2645.     425,   //hunter  -  heli
  2646.     417,   //leviathn,   //heli
  2647.     487,   //maverick,   //heli
  2648.     497,   //polmav  -  heli
  2649.     563,   //raindanc,   //heli
  2650.     501,   //rcgoblin,   //heli
  2651.     465,   //rcraider,   //heli
  2652.     447,   //seaspar  -  heli
  2653.     469,   //sparrow  -  heli
  2654.     488   //vcnmav  -  heli
  2655.     : type = VTYPE_HELI;
  2656.  
  2657. // ================ PLANE =======
  2658.     case
  2659.     592,   //androm  -  plane
  2660.     577,   //at 400  -  plane
  2661.     511,   //beagle  -  plane
  2662.     512,   //cropdust,   //plane
  2663.     593,   //dodo  -  plane
  2664.     520,   //hydra  -  plane
  2665.     553,   //nevada  -  plane
  2666.     464,   //rcbaron  -  plane
  2667.     476,   //rustler  -  plane
  2668.     519,   //shamal  -  plane
  2669.     460,   //skimmer  -  plane
  2670.     513,   //stunt  -  plane
  2671.     539   //vortex  -  plane
  2672.     : type = VTYPE_PLANE;
  2673.  
  2674. // ================== HEAVY =======
  2675.     case
  2676.     588,   //hotdog  -  car
  2677.     437,   //coach  -  car
  2678.     532,   //combine  -  car
  2679.     433,   //barracks,   //car
  2680.     414,   //mule  -  car
  2681.     443,   //packer  -  car
  2682.     470,   //patriot  -  car
  2683.     432,   //rhino  -  car
  2684.     525,   //towtruck,   //car
  2685.     531,   //tractor  -  car
  2686.     408   //trash  -  car
  2687.     : type = VTYPE_HEAVY;
  2688.  
  2689. // ================ MONSTER =======
  2690.     case
  2691.     406,   //dumper  -  mtruck
  2692.     573,   //duneride,   //mtruck
  2693.     444,   //monster  -  mtruck
  2694.     556,   //monstera,   //mtruck
  2695.     557   //monsterb,   //mtruck
  2696.     : type = VTYPE_MONSTER;
  2697.  
  2698. // ================ TRAILER =======
  2699.     case
  2700.     435,   //artict1  -  trailer
  2701.     450,   //artict2  -  trailer
  2702.     591,   //artict3  -  trailer
  2703.     606,   //bagboxa  -  trailer
  2704.     607,   //bagboxb  -  trailer
  2705.     610,   //farmtr1  -  trailer
  2706.     584,   //petrotr  -  trailer
  2707.     608,   //tugstair -  trailer
  2708.     611   //utiltr1  -  trailer
  2709.     : type = VTYPE_TRAILER;
  2710.  
  2711. // ================== TRAIN =======
  2712.     case
  2713.     590,   //freibox  -  train
  2714.     569,   //freiflat,   //train
  2715.     537,   //freight  -  train
  2716.     538,   //streak  -  train
  2717.     570,   //streakc  -  train
  2718.     449   //tram  -  train
  2719.     : type = VTYPE_TRAIN;
  2720.     }
  2721.     }
  2722.     return type;
  2723. }
  2724.  
  2725. stock GetPlayers() //By rapidZ
  2726. {
  2727.     new players=0;
  2728.     for (new i=0;i<MAX_PLAYERS;i++)
  2729.     {
  2730.         if(IsPlayerConnected(i))
  2731.         {
  2732.             players++;
  2733.         }
  2734.     }
  2735.     return players;
  2736. }
  2737.  
  2738. stock str_replace(search[], replace[], source[]) //By Tratulla
  2739. {
  2740.     new newnick[256];
  2741.     new newlen;
  2742.     for (new i; i < strlen(source); i++)
  2743.     {
  2744.         if (strlen(search) > 1 && i != (strlen(source) - 1))
  2745.         {
  2746.             new matched = 1;
  2747.             new start = i;
  2748.             for (new s=0; s < strlen(search) && matched == 1; s++)
  2749.             {
  2750.                 if (source[i] != search[s] && s == 0)
  2751.                 {
  2752.                     newnick[newlen] = source[i];
  2753.                     matched = 0;
  2754.                 } else
  2755.                 {
  2756.                     if (source[i] == search[s])
  2757.                     {
  2758.                         i++;
  2759.                     } else
  2760.                     {
  2761.                         matched = 0;
  2762.                     }
  2763.                 }
  2764.             }
  2765.             if (matched == 0)
  2766.             {
  2767.                 for (start=start; start <= i; start++)
  2768.                 {
  2769.                     newnick[newlen] = source[start];
  2770.                     newlen++;
  2771.                 }
  2772.             } else
  2773.             {
  2774.                 for (new r; r < strlen(replace); r++)
  2775.                 {
  2776.                     newnick[newlen] = replace[r];
  2777.                     newlen++;
  2778.                 }
  2779.                 i = (start + (strlen(search) - 1));
  2780.             }
  2781.         } else
  2782.         {
  2783.             if (strlen(search) == 1 && source[i] == search[0])
  2784.             {
  2785.                 for (new r; r < strlen(replace); r++)
  2786.                 {
  2787.                     newnick[newlen] = replace[r];
  2788.                     newlen++;
  2789.                 }
  2790.             } else
  2791.             {
  2792.                 newnick[newlen] = source[i];
  2793.                 newlen++;
  2794.             }
  2795.         }
  2796.     }
  2797.     newnick[newlen] = EOS;
  2798.     return newnick;
  2799. }
  2800.  
  2801. stock GameTextCheck(const string[]) //By Kamazy
  2802. {
  2803.     for (new i=0; i<strlen(string); i++)
  2804.     {
  2805.         if ((string[i] == 126) && (string[i-1] == 126) || (string[i] == ' ') && (string[i-1] == '~') && (string[i-2] == ' ') || (string[i] == '~') && (string[i+2] != '~') && (string[i-2] != '~') || (string[i] == '~') && (string[i+2] == '~') && (string[i-2] == '~'))
  2806.         {
  2807.             return 1;
  2808.         }
  2809.     }
  2810.     return 0;
  2811. }
  2812.  
  2813. stock SetPlayerPosEx(playerid,Float:x1,Float:y1,Float:z1,Float:Ang,Int) //By Kamazy
  2814. {
  2815.     SetPlayerInterior(playerid,Int);
  2816.     SetPlayerFacingAngle(playerid,Ang);
  2817.     SetPlayerPos(playerid,x1,x1,z1);
  2818.     SetCameraBehindPlayer(playerid);
  2819.     return 1;
  2820. }
  2821.  
  2822. stock IsPlayerInRange(playerid, Float:Range, Float:Z_Range, Float:tar_x, Float:tar_y, Float:tar_z) //By Gabriel "Larcius" Cordes
  2823. {
  2824.     new bool:care_z = true, Float:player_x, Float:player_y, Float:player_z, Float:radius_xy, Float:radius_z;
  2825.     GetPlayerPos(playerid, player_x, player_y, player_z);
  2826.     radius_xy = floatsqroot(floatadd(floatpower(floatsub(player_x,tar_x),2.0),floatpower(floatsub(player_y,tar_y),2.0)));
  2827.     radius_z = floatsqroot(floatadd(floatpower(radius_xy,2.0),floatpower(floatsub(player_z,tar_z),2.0)));
  2828.     if(radius_z > Z_Range && radius_xy < radius_z)
  2829.     {
  2830.         care_z = false;
  2831.     }
  2832.     if(radius_xy <= Range && care_z)
  2833.     {
  2834.         return 1;
  2835.     }
  2836.     return 0;
  2837. }
  2838.  
  2839. stock GivePlayerWeaponEx(playerid, ...) //By Peter
  2840. {
  2841.     new Count = numargs();
  2842.     for(new i = 1; i < Count; i += 2)
  2843.     {
  2844.         new WeaponID = getarg(i);
  2845.         new Ammo = getarg((i+1));
  2846.         if(WeaponID > 0 && WeaponID < 47)
  2847.         {
  2848.             GivePlayerWeaponAlt(playerid, WeaponID, Ammo);
  2849.         }
  2850.     }
  2851.     return 1;
  2852. }
  2853.  
  2854. stock SendClientMessageToAllOthers(playerid, color, const message[]) //By yom
  2855. {
  2856.     new ret=0;
  2857.     for (new i=0; i<MAX_PLAYERS; i++)
  2858.     {
  2859.         if (IsPlayerConnected(i) && i!=playerid)
  2860.         {
  2861.             SendClientMessage(i, color, message);
  2862.             ret++;
  2863.         }
  2864.     }
  2865.     return ret;
  2866. }
  2867.  
  2868. stock GameTextForAllOthers(playerid, const string[], time, style) //By yom
  2869. {
  2870.     new ret=0;
  2871.     for (new i=0; i<MAX_PLAYERS; i++)
  2872.     {
  2873.         if (IsPlayerConnected(i) && i != playerid)
  2874.         {
  2875.             GameTextForPlayer(i, string, time, style);
  2876.             ret++;
  2877.         }
  2878.     }
  2879.     return ret;
  2880. }
  2881.  
  2882. stock SetPlayerColourAlpha(playerid, alpha)
  2883. {
  2884.     return SetPlayerColorAlpha(playerid, alpha);
  2885. }
  2886.  
  2887. stock SetPlayerColorAlpha(playerid, alpha) //By Betamaster
  2888. {
  2889.     new r, g, b, a;
  2890.     HexToRGBA(GetPlayerColor(playerid), r, g, b, a);
  2891.     SetPlayerColor(playerid, RGBAToHex(r, g, b, alpha));
  2892. }
  2893.  
  2894. stock RGBAToHex(r, g, b, a) //By Betamaster
  2895. {
  2896.     return (r<<24 | g<<16 | b<<8 | a);
  2897. }
  2898.  
  2899. stock HexToRGBA(colour, &r, &g, &b, &a) //By Betamaster
  2900. {
  2901.     r = (colour >> 24) & 0xFF;
  2902.     g = (colour >> 16) & 0xFF;
  2903.     b = (colour >> 8) & 0xFF;
  2904.     a = colour & 0xFF;
  2905. }
  2906.  
  2907. stock IsPlayerInAreaEx(playerid, Float:...) //By kool
  2908. {
  2909.     new Count = numargs();
  2910.     new Float:xe[255], Float:ye[255];
  2911.     new j=0;
  2912.     for(new i=1; i<Count; i+=2)
  2913.     {
  2914.         xe[j] = Float:getarg(i);
  2915.         ye[j] = Float:getarg(i+1);
  2916.         j++;
  2917.     }
  2918.     xe[j] = xe[0];
  2919.     ye[j] = ye[0];
  2920.     new Lines;
  2921.     new Float:xcut;
  2922.     new Float:x, Float:y, Float:z;
  2923.     GetPlayerPos(playerid, x, y, z);
  2924.     for(new i=0; i<j; i++)
  2925.     {
  2926.         xcut = xe[i]+((y-ye[i])*(xe[i+1]-xe[i])/(ye[i+1]-ye[i]));
  2927.         if(((y >= ye[i] && y <= ye[i+1]) || (y >= ye[i+1] && y <= ye[i])) && xcut < x)
  2928.         {
  2929.             Lines++;
  2930.         }
  2931.     }
  2932.     if(Lines%2 == 1)
  2933.     {
  2934.         return 1;
  2935.     }
  2936.     return 0;
  2937. }
  2938.  
  2939. stock SetTeamScore(team, score) //By Hellomy
  2940. {
  2941.     for (new i=0; i<MAX_PLAYERS; i++)
  2942.     {
  2943.         if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2944.         {
  2945.             SetPlayerScore(i, score);
  2946.         }
  2947.     }
  2948.     return 1;
  2949. }
  2950.  
  2951. stock GiveTeamMoney(team, amount) //By Hellomy
  2952. {
  2953.     for (new i=0; i<MAX_PLAYERS; i++)
  2954.     {
  2955.         if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2956.         {
  2957.             GivePlayerMoney(i, amount);
  2958.         }
  2959.     }
  2960.     return 1;
  2961. }
  2962.  
  2963. stock SetTime(hours,minutes)
  2964. {
  2965.     for(new i=0; i<MAX_PLAYERS; i++)
  2966.     {
  2967.         SetPlayerTime(i, hours, minutes);
  2968.     }
  2969. }
  2970.  
  2971. stock Wait(time)
  2972. {
  2973.     new stamp = tickcount();
  2974.     while (tickcount() - stamp < time)
  2975.     {
  2976.     }
  2977.     return 1;
  2978. }
  2979.  
  2980. stock strrest(const string[], index)
  2981. {
  2982.     new length = strlen(string);
  2983.     new offset = index;
  2984.     new result[256];
  2985.     while ((index < length) && ((index - offset) < (sizeof(result) - 1)) && (string[index] > '\r'))
  2986.     {
  2987.         result[index - offset] = string[index];
  2988.         index++;
  2989.     }
  2990.     result[index - offset] = EOS;
  2991.     return result;
  2992. }
  2993.  
  2994. stock Float:lengthdir_x(Float:len,Float:angles) //By Slick
  2995. {
  2996.     return floatmul(floatcos(floatdiv(floatmul(angles,PI),180.0)),len);
  2997. }
  2998.  
  2999. stock Float:lengthdir_y(Float:len,Float:angles) //By Slick
  3000. {
  3001.     return floatmul(-floatsin(floatdiv(floatmul(angles,PI),180.0)),len);
  3002. }
  3003.  
  3004. stock FindEmptySlot(const array[], const length) //By Gabriel "Larcius" Cordes
  3005. {
  3006.     for (new i=0;i<length;i++)
  3007.     {
  3008.         if(!array[i])
  3009.         {
  3010.             return i;
  3011.         }
  3012.        
  3013.     }
  3014.     return -1;
  3015. }
  3016.  
  3017. stock FindEmptySlot2D(const array[], const length, &d1, &d2) //By Gabriel "Larcius" Cordes
  3018. {
  3019.     for (new i=0; i<length; i++)
  3020.     {
  3021.         if (array[i])
  3022.         {
  3023.         new d2=FindEmptySlot(array[i][], sizeof(array[i]));
  3024.         if (d2!=-1)
  3025.         {
  3026.             new d1=i;
  3027.                 return d1, d2;
  3028.         }
  3029.         }
  3030.     }
  3031.     d1=-1;
  3032.     d2=-1;
  3033.     return d1,d2;
  3034. }
  3035.  
  3036. stock FindIntegerInArray(const num, const array[], const length) //By Gabriel "Larcius" Cordes
  3037. {
  3038.     for (new i=0; i<length; i++)
  3039.     {
  3040.         if (array[i] == num)
  3041.         {
  3042.             return i;
  3043.         }
  3044.     }
  3045.     return -1;
  3046. }
  3047.  
  3048. stock FindStringInArray(const string[], const array[], const length) //By Gabriel "Larcius" Cordes
  3049. {
  3050.     for (new i=0; i<length; i++)
  3051.     {
  3052.         if (strcmp(string, array[i], true) == 0)
  3053.         {
  3054.             return i;
  3055.         }
  3056.     }
  3057.     return -1;
  3058. }
  3059.  
  3060. stock FindFloatInArray(const Float:num, const array[], const length) //By Gabriel "Larcius" Cordes
  3061. {
  3062.     for (new i=0; i<length; i++)
  3063.     {
  3064.         if (array[i] == num)
  3065.         {
  3066.             return i;
  3067.         }
  3068.     }
  3069.     return -1;
  3070. }
  3071.  
  3072. stock FindIntegerIn2DArray(const num, const array[], length, &d1, &d2) //By Gabriel "Larcius" Cordes
  3073. {
  3074.     for (new i=0; i<length; i++)
  3075.     {
  3076.         if (array[i])
  3077.         {
  3078.         new d2=FindIntegerInArray(num, array[i][], sizeof(array[i]));
  3079.         if (d2 != -1)
  3080.         {
  3081.             new d1=i;
  3082.                 return d1, d2;
  3083.         }
  3084.         }
  3085.     }
  3086.     return -1;
  3087. }
  3088.  
  3089. stock FindStringIn2DArray(const string[], const array[], length, &d1, &d2) //By Gabriel "Larcius" Cordes
  3090. {
  3091.     for (new i=0; i<length; i++)
  3092.     {
  3093.         if (array[i])
  3094.         {
  3095.         new d2=FindStringInArray(num, array[i][], sizeof(array[i]));
  3096.         if (d2 != -1)
  3097.         {
  3098.             new d1=i;
  3099.                 return d1, d2;
  3100.         }
  3101.         }
  3102.     }
  3103.     return -1;
  3104. }
  3105.  
  3106. stock FindFloatIn2DArray(const Float:num, const array[], length, &d1, &d2) //By Gabriel "Larcius" Cordes
  3107. {
  3108.     for (new i=0; i<length; i++)
  3109.     {
  3110.         if (array[i])
  3111.         {
  3112.         new d2=FindFloatInArray(num, array[i][], sizeof(array[i]));
  3113.         if (d2 != -1)
  3114.         {
  3115.             new d1=i;
  3116.                 return d1, d2;
  3117.         }
  3118.         }
  3119.     }
  3120.     return -1;
  3121. }
  3122.  
  3123. stock AddArea(type,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2,Float:radius1) //By Gabriel "Larcius" Cordes
  3124. {
  3125.     new areaid=0;
  3126.     while(IsAreaConnected(areaid) && areaid<MAX_AREAS)
  3127.     {
  3128.         areaid++;
  3129.     }
  3130.     if(areaid<MAX_AREAS)
  3131.     {
  3132.         Areas[areaid][Type]=0;
  3133.         switch (type)
  3134.         {
  3135.             case AREA_RECTANGLE:
  3136.             {
  3137.                 if(x1!=x2 && y1!=y2)
  3138.                 {
  3139.                     Areas[areaid][Type]=AREA_RECTANGLE;
  3140.                     Areas[areaid][AE_X]=x1;
  3141.                     Areas[areaid][AE_Y]=y1;
  3142.                     Areas[areaid][X2]=x2;
  3143.                     Areas[areaid][Y2]=y2;
  3144.                 }
  3145.             }
  3146.             case AREA_CIRCLE:
  3147.             {
  3148.                 if(radius1!=0.0)
  3149.                 {
  3150.                     Areas[areaid][Type]=AREA_CIRCLE;
  3151.                     Areas[areaid][AE_X]=x1;
  3152.                     Areas[areaid][AE_Y]=y1;
  3153.                     Areas[areaid][Radius]=radius1;
  3154.                 }
  3155.             }
  3156.             case AREA_ASHLAR:
  3157.             {
  3158.                 if(x1!=x2 && y1!=y2 && z1!=z2)
  3159.                 {
  3160.                     Areas[areaid][Type]=AREA_ASHLAR;
  3161.                     Areas[areaid][AE_X]=x1;
  3162.                     Areas[areaid][AE_Y]=y1;
  3163.                     Areas[areaid][AE_Z]=z1;
  3164.                     Areas[areaid][X2]=x2;
  3165.                     Areas[areaid][Y2]=y2;
  3166.                     Areas[areaid][Z2]=z2;
  3167.                 }
  3168.             }
  3169.             case AREA_SPHERE:
  3170.             {
  3171.                 if(radius1!=0.0)
  3172.                 {
  3173.                     Areas[areaid][Type]=AREA_SPHERE;
  3174.                     Areas[areaid][AE_X]=x1;
  3175.                     Areas[areaid][AE_Y]=y1;
  3176.                     Areas[areaid][AE_Z]=z1;
  3177.                     Areas[areaid][Radius]=radius1;
  3178.                 }
  3179.             }
  3180.             case AREA_CYLINDER:
  3181.             {
  3182.                 if(radius1!=0.0 && z2!=0.0)
  3183.                 {
  3184.                     Areas[areaid][Type]=AREA_CYLINDER;
  3185.                     Areas[areaid][AE_X]=x1;
  3186.                     Areas[areaid][AE_Y]=y1;
  3187.                     Areas[areaid][AE_Z]=z1;
  3188.                     Areas[areaid][Z2]=z2;
  3189.                     Areas[areaid][Radius]=radius1;
  3190.                 }
  3191.             }
  3192.         }
  3193.         if(Areas[areaid][Type])
  3194.         {
  3195.             return areaid;
  3196.         }
  3197.     }
  3198.     return -1;
  3199. }
  3200.  
  3201. stock AddRectangleArea(Float:x1,Float:y1,Float:x2,Float:y2) //By Gabriel "Larcius" Cordes
  3202. {
  3203.     return AddArea(AREA_RECTANGLE,x1,y1,0.0,x2,y2,0.0,0.0);
  3204. }
  3205.  
  3206. stock AddCircleArea(Float:x1,Float:y1,Float:radius1) //By Gabriel "Larcius" Cordes
  3207. {
  3208.     return AddArea(AREA_CIRCLE,x1,y1,0.0,0.0,0.0,0.0,radius1);
  3209. }
  3210.  
  3211. stock AddAshlarArea(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2) //By Gabriel "Larcius" Cordes
  3212. {
  3213.     return AddArea(AREA_ASHLAR,x1,y1,z1,x2,y2,z2,0.0);
  3214. }
  3215.  
  3216. stock AddCubeArea(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
  3217. {
  3218.     return AddAshlarArea(x1,y1,z1,x2,y2,z2);
  3219. }
  3220.  
  3221. stock AddSphereArea(Float:x1,Float:y1,Float:z1,Float:radius1) //By Gabriel "Larcius" Cordes
  3222. {
  3223.     return AddArea(AREA_SPHERE,x1,y1,z1,0.0,0.0,0.0,radius1);
  3224. }
  3225.  
  3226. stock AddCylinderArea(Float:x1,Float:y1,Float:z1,Float:z2,Float:radius1) //By Gabriel "Larcius" Cordes
  3227. {
  3228.     return AddArea(AREA_Cylinder,x1,y1,z1,0.0,0.0,z2,radius1);
  3229. }
  3230.  
  3231. stock GetAreaType(areaid) //By Gabriel "Larcius" Cordes
  3232. {
  3233.     if(IsAreaConnected(areaid))
  3234.     {
  3235.         return Areas[areaid][Type];
  3236.     }
  3237.     return 0;
  3238. }
  3239.  
  3240. stock GetAreaParams(areaid,&type,&Float:x1,&Float:y1,&Float:z1,&Float:x2,&Float:y2,&Float:z2,&Float:radius1)
  3241. {
  3242.     if(IsAreaConnected(areaid))
  3243.     {
  3244.         type=Areas[areaid][Type];x1=Areas[areaid][AE_X];y1=Areas[areaid][AE_Y];z1=Areas[areaid][AE_Z];x2=Areas[areaid][X2];y2=Areas[areaid][Y2];z2=Areas[areaid][Z2];radius1=Areas[areaid][Radius];
  3245.     }
  3246.     else
  3247.     {
  3248.         type=0;x1=0.0;y1=0.0;z1=0.0;x2=0.0;y2=0.0;z2=0.0;radius1=0.0;
  3249.     }
  3250.     return type,x1,y1,z1,x2,y2,z2,radius1;
  3251. }
  3252.  
  3253. stock IsPointInArea(Float:x1,Float:y1,Float:z1,areaid)
  3254. {
  3255.     if(IsAreaConnected(areaid))
  3256.     {
  3257.         switch (Areas[areaid][Type])
  3258.         {
  3259.             case AREA_RECTANGLE:
  3260.             {
  3261.                 if(IsPointInRectangle(x1,y1,Areas[areaid][AE_X],Areas[areaid][AE_Y],Areas[areaid][X2],Areas[areaid][Y2]))
  3262.                 {
  3263.                     return 1;
  3264.                 }
  3265.             }
  3266.             case AREA_CIRCLE:
  3267.             {
  3268.                 if(IsPointInCircle(x1,y1,Areas[areaid][AE_X],Areas[areaid][AE_Y],Areas[areaid][Radius]))
  3269.                 {
  3270.                     return 1;
  3271.                 }
  3272.             }
  3273.             case AREA_ASHLAR:
  3274.             {
  3275.                 if(IsPointInAshlar(x1,y1,z1,Areas[areaid][AE_X],Areas[areaid][AE_Y],Areas[areaid][AE_Z],Areas[areaid][X2],Areas[areaid][Y2],Areas[areaid][Z2]))
  3276.                 {
  3277.                     return 1;
  3278.                 }
  3279.             }
  3280.             case AREA_SPHERE:
  3281.             {
  3282.                 if(IsPointInSphere(x1,y1,z1,Areas[areaid][AE_X],Areas[areaid][AE_Y],Areas[areaid][AE_Z],Areas[areaid][Radius]))
  3283.                 {
  3284.                     return 1;
  3285.                 }
  3286.             }
  3287.             case AREA_CYLINDER:
  3288.             {
  3289.                 if(IsPointInCylinder(x1,y1,z1,Areas[areaid][AE_X],Areas[areaid][AE_Y],Areas[areaid][AE_Z],Areas[areaid][Z2],Areas[areaid][Radius]))
  3290.                 {
  3291.                     return 1;
  3292.                 }
  3293.             }
  3294.         }
  3295.     }
  3296.     return 0;
  3297. }
  3298.  
  3299. stock IsPlayerInArea(playerid, areaid) //By Gabriel "Larcius" Cordes
  3300. {
  3301.     if(IsPlayerConnected(playerid))
  3302.     {
  3303.         new Float:x,Float:y,Float:z;
  3304.         GetPlayerPos(playerid,x,y,z);
  3305.         if(IsPointInArea(x,y,z,areaid))
  3306.         {
  3307.             return 1;
  3308.         }
  3309.     }
  3310.     return 0;
  3311. }
  3312.  
  3313. stock IsAnyPlayerInArea(areaid) //By Gabriel "Larcius" Cordes
  3314. {
  3315.     if(IsAreaConnected(areaid))
  3316.     {
  3317.         for(new i=0; i<MAX_PLAYERS; i++)
  3318.         {
  3319.             if(IsPlayerInArea(i, areaid))
  3320.             {
  3321.                 return 1;
  3322.             }
  3323.         }
  3324.     }
  3325.     return 0;
  3326. }
  3327.  
  3328. stock IsPlayerInAnyArea(playerid) //By Gabriel "Larcius" Cordes
  3329. {
  3330.     if(IsPlayerConnected(playerid))
  3331.     {
  3332.         for(new i=0; i<MAX_AREAS; i++)
  3333.         {
  3334.             if(IsPlayerInArea(playerid, i))
  3335.             {
  3336.                 return 1;
  3337.             }
  3338.         }
  3339.     }
  3340.     return 0;
  3341. }
  3342.  
  3343. stock AreaDestroy(areaid)
  3344. {
  3345.     return DestroyArea(areaid);
  3346. }
  3347.  
  3348. stock DestroyArea(areaid) //By Gabriel "Larcius" Cordes
  3349. {
  3350.     if(IsAreaConnected(areaid))
  3351.     {
  3352.         Areas[areaid][Type]=0;
  3353.         Areas[areaid][AE_X]=0.0;
  3354.         Areas[areaid][AE_Y]=0.0;
  3355.         Areas[areaid][AE_Z]=0.0;
  3356.         Areas[areaid][X2]=0.0;
  3357.         Areas[areaid][Y2]=0.0;
  3358.         Areas[areaid][Z2]=0.0;
  3359.         Areas[areaid][Radius]=0.0;
  3360.         for(new i=0; i<MAX_PLAYERS; i++)
  3361.         {
  3362.             Areas[areaid][PlayerInArea][i]=0;
  3363.         }
  3364.         return 1;
  3365.     }
  3366.     return 0;
  3367. }
  3368.  
  3369. stock strfloat(Float:value) //By Gabriel "Larcius" Cordes
  3370. {
  3371.     new string[MAX_STRING];
  3372.     format(string, sizeof(string), "%f", value);
  3373.     return string;
  3374. }
  3375.  
  3376. stock strfromfloat(Float:value)
  3377. {
  3378.     return strfloat(value);
  3379. }
  3380.  
  3381. stock floattostr(Float:value)
  3382. {
  3383.     return strfloat(value);
  3384. }
  3385.  
  3386. stock floatval(Float:value) //By Gabriel "Larcius" Cordes
  3387. {
  3388.     new string[MAX_STRING];
  3389.     string = strfloat(floatround(value));
  3390.     return strval(left(string,strfind(string, ".", true)));
  3391. }
  3392.  
  3393. stock floatint(Float:value)
  3394. {
  3395.     return floatval(value);
  3396. }
  3397.  
  3398. stock IsAnyPlayerInRangeOfVehicle(vehicleid,Float:range)
  3399. {
  3400.     for (new i=0; i<=MAX_PLAYERS;i++)
  3401.     {
  3402.         if (IsPlayerInRangeOfVehicle(i,vehicleid,range))
  3403.         {
  3404.             return 1;
  3405.         }
  3406.     }
  3407.     return 0;
  3408. }
  3409.  
  3410. public ClearOutOfRangeVehicles()
  3411. {
  3412.     #if !defined OutOfRange
  3413.     new Float:OutOfRange=250.0;
  3414.     #endif
  3415.     if(OutOfRange<=0)
  3416.     {
  3417.         OutOfRange=INF_FLOAT;
  3418.     }
  3419.     new ret=0;
  3420.     for (new i=0;i<MAX_VEHICLES;i++)
  3421.     {
  3422.         if(IsVehicleConnected(i) && Vehicles[i][Static]==-1 && !IsAnyPlayerInRangeOfVehicle(i, OutOfRange) && (!IsVehicleLockedForAnyPlayer(i) || (GetPlayers()==1 && IsVehicleObjectivedForAnyPlayer(i))))
  3423.         {
  3424.             DestroyVehicle2(i);
  3425.             ret++;
  3426.         }
  3427.     }
  3428.     return ret;
  3429. }
  3430.  
  3431. stock IsPlayerInRangeOfVehicle(playerid, vehicleid, Float:range) //By Gabriel "Larcius" Cordes
  3432. {
  3433.     if(IsVehicleConnected(vehicleid))
  3434.     {
  3435.         new Float:x1, Float:y1, Float:z1;
  3436.         GetVehiclePos(vehicleid, x1, y1, z1);
  3437.         return IsPlayerInSphere(playerid,x1,y1,z1,range);
  3438.     }
  3439.     return 0;
  3440. }
  3441.  
  3442. stock IsAnyPlayerInVehicle(vehicleid, status=PLAYER_STATE_NONE) //By Gabriel "Larcius" Cordes
  3443. {
  3444. // PLAYER_STATE_DRIVER means has to be driver, PLAYER_STATE_PASSENGER means has to be passenger, all other or nothing means don't care if driver or passenger
  3445.     for (new i=0; i<=MAX_PLAYERS; i++)
  3446.     {
  3447.         if (IsVehicleConnected(i) && IsPlayerInVehicle(i, vehicleid))
  3448.         {
  3449.             if (status==PLAYER_STATE_DRIVER)
  3450.             {
  3451.                 if (IsPlayerDriver(i))
  3452.                 {
  3453.                         return 1;
  3454.                 }
  3455.             }
  3456.             else if (status==PLAYER_STATE_PASSENGER)
  3457.             {
  3458.                 if (IsPlayerPassenger(i))
  3459.                 {
  3460.                         return 1;
  3461.                 }
  3462.             }
  3463.             else
  3464.             {
  3465.                 return 1;
  3466.             }
  3467.         }
  3468.     }
  3469.     return 0;
  3470. }
  3471.  
  3472.  
  3473.  
  3474. /*---------------------------------------- functions of dutils.inc ----------------------------------------*/
  3475.  
  3476. stock mktime(hour,minute,second,day,month,year)
  3477. {
  3478.     new timestamp2;
  3479.  
  3480.     timestamp2 = second + (minute * 60) + (hour * 3600);
  3481.  
  3482.     new days_of_month[12];
  3483.  
  3484.     if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) {
  3485.             days_of_month = {31,29,31,30,31,30,31,31,30,31,30,31}; // Schaltjahr
  3486.         } else {
  3487.             days_of_month = {31,28,31,30,31,30,31,31,30,31,30,31}; // keins
  3488.         }
  3489.     new days_this_year = 0;
  3490.     days_this_year = day;
  3491.     if(month > 1) { // No January Calculation, because its always the 0 past months
  3492.         for(new i=0; i<month-1;i++) {
  3493.             days_this_year += days_of_month[i];
  3494.         }
  3495.     }
  3496.     timestamp2 += days_this_year * 86400;
  3497.  
  3498.     for(new j=1970;j<year;j++) {
  3499.         timestamp2 += 31536000;
  3500.         if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) )  timestamp2 += 86400; // Schaltjahr + 1 Tag
  3501.     }
  3502.  
  3503.     return timestamp2;
  3504. }
  3505.  
  3506. stock ValidEmail(email[])
  3507. {
  3508.     return IsValidEmail(email);
  3509. }
  3510.  
  3511. stock Now()
  3512. {
  3513.     new hour,minute,second,year,month,day;
  3514.     gettime(hour, minute, second);
  3515.     getdate(year, month, day);
  3516.     return mktime(hour,minute,second,day,month,year);
  3517. }
  3518.  
  3519. stock HexToInt(string[])
  3520. {
  3521.     if (string[0]==0)
  3522.     {
  3523.         return 0;
  3524.     }
  3525.     new cur=1;
  3526.     new res=0;
  3527.     for (new i=strlen(string);i>0;i--)
  3528.     {
  3529.         if (string[i-1]<58)
  3530.         {
  3531.             res=res+cur*(string[i-1]-48);
  3532.         }
  3533.         else
  3534.         {
  3535.             res=res+cur*(string[i-1]-65+10);
  3536.         }
  3537.     cur=cur*16;
  3538.   }
  3539.   return res;
  3540. }
  3541.  
  3542. stock IntToHex(number)
  3543. {
  3544.     new m=1;
  3545.     new depth=0;
  3546.     while (number>=m)
  3547.     {
  3548.         m = m*16;
  3549.         depth++;
  3550.     }
  3551.     depth--;
  3552.     new str[MAX_STRING];
  3553.     for (new i = depth; i >= 0; i--)
  3554.     {
  3555.         str[i] = ( number & 0x0F) + 0x30; // + (tmp > 9 ? 0x07 : 0x00)
  3556.         str[i] += (str[i] > '9') ? 0x07 : 0x00;
  3557.         number >>= 4;
  3558.     }
  3559.     str[8] = '\0';
  3560.     return str;
  3561. }
  3562.  
  3563. stock StrToInt(string[])
  3564. {
  3565.     return strval(string);
  3566. }
  3567.  
  3568. stock IntToStr(value)
  3569. {
  3570.     new tmp[MAX_STRING];
  3571.     valstr(tmp, value);
  3572.     return tmp;
  3573. }
  3574.  
  3575. stock trunc(Float:value)
  3576. {
  3577.     return floatround(value,floatround_floor);
  3578. }
  3579.  
  3580. stock SetPlayerMoney(playerid,howmuch)
  3581. {
  3582.     PRIVATE_Last_Money[playerid]=howmuch;
  3583.     GivePlayerMoney(playerid,(howmuch-GetPlayerMoney(playerid)));
  3584. }
  3585.  
  3586. stock fcopy(oldname[],newname[])
  3587. {
  3588.     new File:ohnd,File:nhnd;
  3589.     if (!fexist(oldname))
  3590.     {
  3591.         return 0;
  3592.     }
  3593.     ohnd=fopen(oldname,io_read);
  3594.     nhnd=fopen(newname,io_write);
  3595.     new buf2[1];
  3596.     for (new i=flength(ohnd);i>0;i--)
  3597.     {
  3598.         fputchar(nhnd, fgetchar(ohnd, buf2[0],false),false);
  3599.     }
  3600.     fclose(ohnd);
  3601.     fclose(nhnd);
  3602.     return 1;
  3603. }
  3604.  
  3605. stock fcopytextfile(oldname[],newname[])
  3606. {
  3607.     new File:ohnd,File:nhnd;
  3608.     if (!fexist(oldname))
  3609.     {
  3610.         return 0;
  3611.     }
  3612.     ohnd=fopen(oldname,io_read);
  3613.     nhnd=fopen(newname,io_write);
  3614.     new tmpres[MAX_STRING];
  3615.     while (fread(ohnd,tmpres))
  3616.     {
  3617.         StripNewLine(tmpres);
  3618.         format(tmpres,sizeof(tmpres),"%s\r\n",tmpres);
  3619.         fwrite(nhnd,tmpres);
  3620.     }
  3621.     fclose(ohnd);
  3622.     fclose(nhnd);
  3623.     return 1;
  3624. }
  3625.  
  3626. stock frename(oldname[],newname[])
  3627. {
  3628.     if (!fexist(oldname))
  3629.     {
  3630.         return 0;
  3631.     }
  3632.     fremove(newname);
  3633.     if (!fcopy(oldname,newname))
  3634.     {
  3635.         return 0;
  3636.     }
  3637.     fremove(oldname);
  3638.     return 1;
  3639. }
  3640.  
  3641. stock frenametextfile(oldname[],newname[]) {
  3642.     if (!fexist(oldname))
  3643.     {
  3644.         return 0;
  3645.     }
  3646.     fremove(newname);
  3647.     if (!fcopytextfile(oldname,newname))
  3648.     {
  3649.         return 0;
  3650.     }
  3651.     fremove(oldname);
  3652.     return 1;
  3653. }
  3654.  
  3655. stock StripNewLine(string[])
  3656. {
  3657.     new len = strlen(string);
  3658.     if (string[0]==0)
  3659.     {
  3660.         return ;
  3661.     }
  3662.     if (string[(len-1)]=='\n' || string[(len-1)]=='\r')
  3663.     {
  3664.         string[(len-1)] = 0;
  3665.         if (string[0]==0)
  3666.         {
  3667.             return ;
  3668.         }
  3669.         if (string[(len-2)]=='\n' || string[(len-2)]=='\r')
  3670.         {
  3671.             string[(len-2)] = 0;
  3672.         }
  3673.     }
  3674. }
  3675.  
  3676. stock ret_memcpy(source[],index=0,numbytes)
  3677. {
  3678.     new tmp[MAX_STRING];
  3679.     tmp[0]=0;
  3680.     if (index>=strlen(source))
  3681.     {
  3682.         return tmp;
  3683.     }
  3684.     if (numbytes+index>=strlen(source))
  3685.     {
  3686.         numbytes=strlen(source)-index;
  3687.     }
  3688.     if (numbytes<=0)
  3689.     {
  3690.         return tmp;
  3691.     }
  3692.     for (new i=index;i<numbytes+index;i++)
  3693.     {
  3694.         tmp[i-index]=source[i];
  3695.         if (source[i]==0)
  3696.         {
  3697.             return tmp;
  3698.         }
  3699.     }
  3700.     tmp[numbytes]=0;
  3701.     return tmp;
  3702. }
  3703.  
  3704. stock copy(dest[],source[],count)
  3705. {
  3706.     dest[0]=0;
  3707.     if (count<0)
  3708.     {
  3709.         return 0;
  3710.     }
  3711.     if (count>strlen(source))
  3712.     {
  3713.         count=strlen(source);
  3714.     }
  3715.     for (new i=0;i<count;i++) {
  3716.         dest[i]=source[i];
  3717.         if (source[i]==0)
  3718.         {
  3719.             return true;
  3720.         }
  3721.     }
  3722.     dest[count]=0;
  3723.     return 1;
  3724. }
  3725.  
  3726. stock delete(string[],count)
  3727. {
  3728.     new tmp[MAX_STRING];
  3729.     tmp[0]=0;
  3730.     if (count<=0)
  3731.     {
  3732.         format(tmp,sizeof(tmp),"%s",string);
  3733.         return tmp;
  3734.     }
  3735.     tmp=ret_memcpy(string,count,strlen(string));
  3736.     return tmp;
  3737. }
  3738.  
  3739. stock set(dest[],source[])
  3740. {
  3741.     new count = strlen(source);
  3742.     new i=0;
  3743.     for (i=0;i<count;i++)
  3744.     {
  3745.         dest[i]=source[i];
  3746.     }
  3747.     dest[count]=0;
  3748. }
  3749.  
  3750. stock equal(str1[],str2[],bool:ignorecase)
  3751. {
  3752.     if (strlen(str1)!=strlen(str2))
  3753.     {
  3754.         return 0;
  3755.     }
  3756.     if (strcmp(str1,str2,ignorecase)==0)
  3757.     {
  3758.         return 1;
  3759.     }
  3760.     return 0;
  3761. }
  3762.  
  3763. stock mod(up,down) {
  3764.       return up-(floatround((up/down),floatround_floor))*down;
  3765. }
  3766.  
  3767. stock div(up,down)
  3768. {
  3769.       return (floatround((up/down),floatround_floor));
  3770. }
  3771.  
  3772. stock num_hash(buf[])
  3773.  {
  3774.     new length=strlen(buf), s1=1, s2=0;
  3775.     for (new n=0; n<length; n++)
  3776.     {
  3777.         s1 = (s1 + buf[n]) % 65521;
  3778.         s2 = (s2 + s1)     % 65521;
  3779.     }
  3780.     return ((s2 << 16) + s1);
  3781. }
  3782.  
  3783. stock hash(str2[])
  3784. {
  3785.     new tmpdasdsa[MAX_STRING];
  3786.     tmpdasdsa[0]=0;
  3787.     valstr(tmpdasdsa,num_hash(str2));
  3788.     return tmpdasdsa;
  3789. }
  3790.  
  3791. stock strlower(txt[])
  3792. {
  3793.     new tmp[MAX_STRING];
  3794.     tmp[0]=0;
  3795.     if (txt[0]==0)
  3796.     {
  3797.         return tmp;
  3798.     }
  3799.     for (new i=0;i<strlen(txt);i++)
  3800.     {
  3801.         tmp[i]=tolower(txt[i]);
  3802.     }
  3803.     tmp[strlen(txt)]=0;
  3804.     return tmp;
  3805. }
  3806.  
  3807. stock strupper(txt[])
  3808. {
  3809.     new tmp[MAX_STRING];
  3810.     tmp[0]=0;
  3811.     if (txt[0]==0)
  3812.     {
  3813.         return tmp;
  3814.     }
  3815.     for (new i=0;i<strlen(txt);i++)
  3816.     {
  3817.         tmp[i]=toupper(txt[i]);
  3818.     }
  3819.     tmp[strlen(txt)]=0;
  3820.     return tmp;
  3821. }
  3822.  
  3823.  
  3824. /*---------------------------------------- functions of dutils.inc ----------------------------------------*/
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830. /* Useful Callbacks: */
  3831.  
  3832.  
  3833.  
  3834. public ufctimer()
  3835. {
  3836.     for (new i=0; i<MAX_VEHICLES; i++)
  3837.     {
  3838.         if(IsVehicleConnected(i))
  3839.         {
  3840.             CheckVehicle(i);
  3841.         }
  3842.     }
  3843.     for (new i=0; i<MAX_PLAYERS; i++)
  3844.     {
  3845.         if(IsPlayerConnected(i))
  3846.         {
  3847.             CheckArea(i);
  3848.             CheckPickup(i);
  3849.             CheckShot(i);
  3850.             CheckPlayer(i);
  3851.         }
  3852.     }
  3853. }
  3854.  
  3855. public Speeder(ms) //By Gabriel "Larcius" Cordes
  3856. {
  3857.     new mspassed=(tickcount()-SpeederTime);
  3858.     if(mspassed>=ms)
  3859.     {
  3860.         SpeederTime=tickcount();
  3861.         for(new i=0; i<MAX_PLAYERS; i++)
  3862.         {
  3863.             if(IsPlayerConnected(i))
  3864.             {
  3865.                 UpdateSpeed(i,mspassed);
  3866.             }
  3867.         }
  3868.     }
  3869.     return 1;
  3870. }
  3871.  
  3872. public Counter() //By Gabriel "Larcius" Cordes
  3873. {
  3874.     if((tickcount()-CountersTime)>=1000)
  3875.     {
  3876.         CountersTime=tickcount();
  3877.         for(new i=0; i<MAX_PLAYERS; i++)
  3878.         {
  3879.             if(IsPlayerConnected(i))
  3880.             {
  3881.                 if(Counters[i][Down][Style])
  3882.                 {
  3883.                     if(Counters[i][Down][Time]>0 && Counters[i][Down][Time]<4)
  3884.                     {
  3885.                         PlayerPlaySound2(i, 1056);
  3886.                     }
  3887.                     else if(Counters[i][Down][Time]==0)
  3888.                     {
  3889.                         PlayerPlaySound2(i, 1057);
  3890.                     }
  3891.                     if(Counters[i][Down][Time]<=0)
  3892.                     {
  3893.                         TextDrawDestroy(Text:Counters[i][Down][TextID]);
  3894.                         Counters[i][Down][TextID]=0;
  3895.                         Counters[i][Down][Style]=0;
  3896.                         Counters[i][Down][Time]=0;
  3897.                         TogglePlayerControllable2(i, 1, FREEZE_COUNTDOWN);
  3898.                     }
  3899.                     else
  3900.                     {
  3901.                         if (Counters[i][Down][Style]==1)
  3902.                         {
  3903.                             if(!Counters[i][Down][TextID])
  3904.                             {
  3905.                                 Counters[i][Down][TextID]=_:TextDrawCreate(300.0, 250.0, SecondsToString(Counters[i][Down][Time],1));
  3906.                                 TextDrawShowForPlayer(i, Text:Counters[i][Down][TextID]);
  3907.                             }
  3908.                             else
  3909.                             {
  3910.                                  TextDrawSetString(Text:Counters[i][Down][TextID], SecondsToString(Counters[i][Down][Time],1));
  3911.                             }
  3912.                             Counters[i][Down][Time]--;
  3913.                         }
  3914.                         else if (Counters[i][Down][Style]==2)
  3915.                         {
  3916.                             if(!Counters[i][Down][TextID])
  3917.                             {
  3918.                                 Counters[i][Down][TextID]=_:TextDrawCreate(20.0, 100.0, SecondsToString(Counters[i][Down][Time],1));
  3919.                                 TextDrawShowForPlayer(i, Text:Counters[i][Down][TextID]);
  3920.                             }
  3921.                             else
  3922.                             {
  3923.                                  TextDrawSetString(Text:Counters[i][Down][TextID], SecondsToString(Counters[i][Down][Time],1));
  3924.                             }
  3925.                             Counters[i][Down][Time]--;
  3926.                         }
  3927.                     }
  3928.                 }
  3929.                 if(Counters[i][Up][Style])
  3930.                 {
  3931.                     if((Counters[i][Up][Time]-Counters[i][Up][Time2])>0 && (Counters[i][Up][Time]-Counters[i][Up][Time2])<4)
  3932.                     {
  3933.                         PlayerPlaySound2(i, 1056);
  3934.                     }
  3935.                     else if((Counters[i][Up][Time]-Counters[i][Up][Time2])==0)
  3936.                     {
  3937.                         PlayerPlaySound2(i, 1057);
  3938.                     }
  3939.                     if(Counters[i][Up][Time2]>=Counters[i][Up][Time])
  3940.                     {
  3941.                         TextDrawDestroy(Text:Counters[i][Up][TextID]);
  3942.                         Counters[i][Up][TextID]=0;
  3943.                         Counters[i][Up][Style]=0;
  3944.                         Counters[i][Up][Time]=0;
  3945.                         Counters[i][Up][Time2]=0;
  3946.                         TogglePlayerControllable2(i, 1, FREEZE_COUNTUP);
  3947.                     }
  3948.                     else
  3949.                     {
  3950.                         if (Counters[i][Up][Style]==1)
  3951.                         {
  3952.                             if(!Counters[i][Up][TextID])
  3953.                             {
  3954.                                 Counters[i][Up][TextID]=_:TextDrawCreate(300.0, 250.0, SecondsToString(Counters[i][Up][Time2],1));
  3955.                                 TextDrawShowForPlayer(i, Text:Counters[i][Up][TextID]);
  3956.                             }
  3957.                             else
  3958.                             {
  3959.                                  TextDrawSetString(Text:Counters[i][Up][TextID], SecondsToString(Counters[i][Up][Time2],1));
  3960.                             }
  3961.                             Counters[i][Up][Time2]++;
  3962.                         }
  3963.                         else if (Counters[i][Up][Style]==2)
  3964.                         {
  3965.                             if(!Counters[i][Up][TextID])
  3966.                             {
  3967.                                 Counters[i][Up][TextID]=_:TextDrawCreate(20.0, 100.0, SecondsToString(Counters[i][Up][Time2],1));
  3968.                                 TextDrawShowForPlayer(i, Text:Counters[i][Up][TextID]);
  3969.                             }
  3970.                             else
  3971.                             {
  3972.                                  TextDrawSetString(Text:Counters[i][Up][TextID], SecondsToString(Counters[i][Up][Time2],1));
  3973.                             }
  3974.                             Counters[i][Up][Time2]++;
  3975.                         }
  3976.                     }
  3977.                 }
  3978.             }
  3979.         }
  3980.         return 1;
  3981.     }
  3982.     return 0;
  3983. }
  3984.  
  3985.  
  3986. stock CheckPickup(playerid)
  3987. {
  3988.     for(new i=0; i<MAX_PICKUPS; i++)
  3989.     {
  3990.         if(IsPickupConnected(i))
  3991.         {
  3992.             if(IsPlayerInSphere(playerid,Pickups[i][PICKE_X],Pickups[i][PICKE_Y],Pickups[i][PICKE_Z],1.0))
  3993.             {
  3994.                 #if defined OnPlayerPickupItem
  3995.                 OnPlayerPickupItem(playerid,i,Pickups[i][Model],Pickups[i][Type]);
  3996.                 if(Pickups[i][Respawn]==2)
  3997.                 {
  3998.                     Pickups[i][Respawn]=180;
  3999.                 }
  4000.                 #endif
  4001.             }
  4002.             if(Pickups[i][Respawn]==0)
  4003.             {
  4004.                 #if defined OnPlayerGetShot
  4005.                 OnPickupRespawn(i,Pickups[i][Model]);
  4006.                 #endif
  4007.                 Pickups[i][Respawn]=999;
  4008.             }
  4009.             if(Pickups[i][Respawn]!=999)
  4010.             {
  4011.                 Pickups[i][Respawn]--;
  4012.             }
  4013.         }
  4014.     }
  4015. }
  4016.  
  4017. stock CheckShot(playerid)
  4018. {
  4019.     new Float:x1, Float:y1, Float:z1, Float:h, rh;
  4020.     GetPlayerPos(playerid,x1,y1,z1);
  4021.     GetPlayerHealth(playerid,h);
  4022.     rh = floatround(h);
  4023.     if(preh[playerid]-rh > 5)
  4024.     {
  4025.         new cid = GetClosestPlayer(playerid);
  4026.         new Float:dis = GetDistanceBetweenPlayers(playerid, cid);
  4027.         if(dis<100.0 && z1>=Players[playerid][PE_Z])
  4028.         {
  4029.             if(IsPlayerInAnyVehicle(cid))
  4030.             {
  4031.                 if(GetPlayerSpeed(cid,SPEED_KMPH) < 75.0)
  4032.                 {
  4033.                 }
  4034.                 #if defined OnPlayerGetShot
  4035.                 OnPlayerGetShot(playerid);
  4036.                 #endif
  4037.             }
  4038.             #if defined OnPlayerGetShot
  4039.             OnPlayerGetShot(playerid);
  4040.             #endif
  4041.         }
  4042.     }
  4043.     preh[playerid] = rh;
  4044. }
  4045.  
  4046. stock UpdateSpeed(playerid,ms) //By Gabriel "Larcius" Cordes
  4047. {
  4048.     new Float:x1,Float:y1,Float:z1,Float:distance,Float:tmp,Float:speedprev,txt[MAX_STRING];
  4049.     GetPlayerPos(playerid,x1,y1,z1);
  4050.     distance = GetDistanceToPoint(playerid,Players[playerid][PE_X],Players[playerid][PE_Y],Players[playerid][PE_Z]);
  4051.     speedprev = Players[playerid][Speed][MPS];
  4052.     tmp = floatdiv(floatmul(distance,1000.0),float(ms));
  4053.     Players[playerid][Speed][MPS] = tmp;
  4054.     Players[playerid][Speed][KMPH] = floatmul(tmp,3.6);
  4055.     Players[playerid][Speed][MPH] = floatmul(tmp,5.76);
  4056.     tmp = floatdiv(floatmul(floatsub(tmp,speedprev),1000.0),float(ms));
  4057.     Players[playerid][Acceleration][MPS2] = tmp;
  4058.     Players[playerid][Acceleration][KMPH2] = floatdiv(tmp,12960.0);
  4059.     Players[playerid][Acceleration][G] = floatdiv(tmp,9.81);
  4060.     Players[playerid][PE_X] = x1;
  4061.     Players[playerid][PE_Y] = y1;
  4062.     Players[playerid][PE_Z] = z1;
  4063.  
  4064.     if(!Players[playerid][Speed][Show] && Players[playerid][Speed][TextID])
  4065.     {
  4066.         TextDrawDestroy(Text:Players[playerid][Speed][TextID]);
  4067.     }
  4068.     else if(Players[playerid][Speed][Show])
  4069.     {
  4070.         new show_speed=Players[playerid][Speed][Show];
  4071.         format(txt, sizeof(txt), "%d km/h", floatval(GetPlayerSpeed(playerid,SPEED_KMPH)));
  4072.         switch (show_speed)
  4073.         {
  4074.             case SPEED_MPS: format(txt, sizeof(txt), "%d m/s", floatval(GetPlayerSpeed(playerid,show_speed)));
  4075.             case SPEED_KMPH: format(txt, sizeof(txt), "%d km/h", floatval(GetPlayerSpeed(playerid,show_speed)));
  4076.             case SPEED_MPH: format(txt, sizeof(txt), "%d m/h", floatval(GetPlayerSpeed(playerid,show_speed)));
  4077.         }
  4078.         if(!Players[playerid][Speed][TextID])
  4079.         {
  4080.             Players[playerid][Speed][TextID]=_:TextDrawCreate(10.0, 100.0, txt);
  4081.             TextDrawFont(Text:Players[playerid][Speed][TextID], 3);
  4082.             TextDrawShowForPlayer(playerid, Text:Players[playerid][Speed][TextID]);
  4083.         }
  4084.         else
  4085.         {
  4086.             TextDrawSetString(Text:Players[playerid][Speed][TextID], txt);
  4087.         }
  4088.     }
  4089.  
  4090.     if(!Players[playerid][Acceleration][Show] && Players[playerid][Acceleration][TextID])
  4091.     {
  4092.         TextDrawDestroy(Text:Players[playerid][Acceleration][TextID]);
  4093.     }
  4094.     else if(Players[playerid][Acceleration][Show])
  4095.     {
  4096.         new show_acc=Players[playerid][Acceleration][Show];
  4097.         format(txt, sizeof(txt), "%d km/h", floatval(GetPlayerAcceleration(playerid,ACC_MPS2)));
  4098.         switch (show_acc)
  4099.         {
  4100.             case ACC_MPS2: format(txt, sizeof(txt), "%d m/ss", floatval(GetPlayerAcceleration(playerid,show_acc)));
  4101.             case ACC_KMPH2: format(txt, sizeof(txt), "%d km/hh", floatval(GetPlayerAcceleration(playerid,show_acc)));
  4102.             case ACC_G: format(txt, sizeof(txt), "%d g", floatval(GetPlayerAcceleration(playerid,show_acc)));
  4103.         }
  4104.         if(!Players[playerid][Acceleration][TextID])
  4105.         {
  4106.             Players[playerid][Acceleration][TextID]=_:TextDrawCreate(10.0, 120.0, txt);
  4107.             TextDrawFont(Text:Players[playerid][Acceleration][TextID], 3);
  4108.             TextDrawShowForPlayer(playerid, Text:Players[playerid][Acceleration][TextID]);
  4109.         }
  4110.         else
  4111.         {
  4112.             TextDrawSetString(Text:Players[playerid][Acceleration][TextID], txt);
  4113.         }
  4114.     }
  4115. }
  4116.  
  4117. stock CheckArea(playerid)
  4118. {
  4119.     new Float:x1,Float:y1,Float:z1;
  4120.     GetPlayerPos(playerid,x1,y1,z1);
  4121.     for(new areaid=0; areaid<MAX_AREAS; areaid++)
  4122.     {
  4123.         if(IsAreaConnected(areaid))
  4124.         {
  4125.             if(IsPlayerInArea(playerid,areaid))
  4126.             {
  4127.                 if(!Areas[areaid][PlayerInArea][playerid])
  4128.                 {
  4129.                     Areas[areaid][PlayerInArea][playerid]=1;
  4130.                     #if defined OnPlayerEnterArea
  4131.                         OnPlayerEnterArea(playerid,areaid);
  4132.                     #endif
  4133.                 }
  4134.             }
  4135.             else if(Areas[areaid][PlayerInArea][playerid])
  4136.             {
  4137.                 Areas[areaid][PlayerInArea][playerid]=0;
  4138.                 #if defined OnPlayerLeaveArea
  4139.                     OnPlayerLeaveArea(playerid,areaid);
  4140.                 #endif
  4141.             }
  4142.         }
  4143.     }
  4144.     new moneys = GetPlayerMoney(playerid);
  4145.     new tmpmon = Players[playerid][Money]-moneys;
  4146.     new tmpmon2 = moneys-Players[playerid][Money];
  4147.     #if defined OnPlayerGamble
  4148.         new nb;
  4149.     #endif
  4150.     if(tmpmon > 0)
  4151.     {
  4152.         #if defined OnPlayerBuyWeapon
  4153.             for(new i=0;i<sizeof(lvammu);i++)
  4154.             {
  4155.                 if(IsPlayerInSphere(playerid,lvammu[i][0],lvammu[i][1],lvammu[i][2],1.0))
  4156.                 {
  4157.                     switch (tmpmon)
  4158.                     {
  4159.                         case 200:OnPlayerBuyWeapon(playerid,22,200);
  4160.                         case 240:OnPlayerBuyWeapon(playerid,0,240);
  4161.                         case 300:OnPlayerBuyWeapon(playerid,32,300);
  4162.                         case 500:OnPlayerBuyWeapon(playerid,28,500);
  4163.                         case 600:{OnPlayerBuyWeapon(playerid,23,600);OnPlayerBuyWeapon(playerid,25,0);}
  4164.                         case 800:OnPlayerBuyWeapon(playerid,26,800);
  4165.                         case 1200:{OnPlayerBuyWeapon(playerid,24,1200);OnPlayerBuyWeapon(playerid,27,1200);}
  4166.                         case 2000:OnPlayerBuyWeapon(playerid,29,2000);
  4167.                         case 3500:OnPlayerBuyWeapon(playerid,30,3500);
  4168.                         case 4500:OnPlayerBuyWeapon(playerid,31,4500);
  4169.                     }
  4170.                 }
  4171.             }
  4172.             for(new i=0;i<sizeof(ammu);i++)
  4173.             {
  4174.                 if(IsPlayerInSphere(playerid,ammu[i][0],ammu[i][1],ammu[i][2],1.0))
  4175.                 {
  4176.                     switch (tmpmon)
  4177.                     {
  4178.                         case 200:{OnPlayerBuyWeapon(playerid,22,200);OnPlayerBuyWeapoon(playerid,0,0);}
  4179.                         case 300:OnPlayerBuyWeapon(playerid,32,300);
  4180.                         case 500:OnPlayerBuyWeapon(playerid,28,500);
  4181.                         case 600:{OnPlayerBuyWeapon(playerid,23,600);OnPlayerBuyWeapon(playerid,25,0);}
  4182.                         case 800:OnPlayerBuyWeapon(playerid,26,800);
  4183.                         case 1200:{OnPlayerBuyWeapon(playerid,24,1200);OnPlayerBuyWeapon(playerid,27,1200);}
  4184.                         case 2000:OnPlayerBuyWeapon(playerid,29,2000);
  4185.                         case 3500:OnPlayerBuyWeapon(playerid,30,3500);
  4186.                         case 4500:OnPlayerBuyWeapon(playerid,31,4500);
  4187.                     }
  4188.                 }
  4189.             }
  4190.         #endif
  4191.         #if defined OnPlayerBuyPizza
  4192.             if(IsPlayerInSphere(playerid,374.0000,374.0000,374.0000,1.0))
  4193.             {
  4194.                 switch (tmpmon)
  4195.                 {
  4196.                     case 2:OnPlayerBuyPizza(playerid,2);
  4197.                 }
  4198.             }
  4199.         #endif
  4200.         #if defined OnPlayerBuyChicken
  4201.             if(IsPlayerInSphere(playerid,368.7890,-6.8570,1001.8516,1.0))
  4202.             {
  4203.                 switch (tmpmon)
  4204.                 {
  4205.                     case 2:OnPlayerBuyChicken(playerid,2.0);
  4206.                 }
  4207.             }
  4208.         #endif
  4209.         #if defined OnPlayerBuyBurger
  4210.             if(IsPlayerInSphere(playerid,375.5660,-68.2220,1001.5151,1.0))
  4211.             {
  4212.                 switch (tmpmon)
  4213.                 {
  4214.                     case 2:OnPlayerBuyBurger(playerid,2);
  4215.                 }
  4216.             }
  4217.         #endif
  4218.         #if defined OnPlayerBuyDrink
  4219.             if(tmpmon == 5)
  4220.             {
  4221.                 OnPlayerBuyDrink(playerid,5);
  4222.             }
  4223.         #endif
  4224.         #if defined OnPlayerGamble
  4225.             if(betting[playerid] != 0)
  4226.             {
  4227.                 if(bets[playerid] == 0)
  4228.                 {
  4229.                     bets[playerid] = tmpmon;
  4230.                 }
  4231.                 else
  4232.                 {
  4233.                     OnPlayerGamble(playerid,betting[playerid],bets[playerid],0);
  4234.                     betting[playerid] = 0;
  4235.                     bets[playerid] = 0;
  4236.                 }
  4237.             }
  4238.         #endif
  4239.         #if defined OnPlayerModVehicle
  4240.             if(IsPlayerInSphere(playerid,617.5360,-1.9889,1000.6190,4.0) && IsPlayerInAnyVehicle(playerid))
  4241.             {
  4242.                 new vehicleid = GetPlayerVehicleID(playerid);
  4243.                 switch (tmpmon)
  4244.                 {
  4245.                     case 150:OnPlayerModVehicle(playerid,vehicleid,1,150);
  4246.                     case 200:OnPlayerModVehicle(playerid,vehicleid,2,200);
  4247.                     case 250:OnPlayerModVehicle(playerid,vehicleid,3,250);
  4248.                     case 300:OnPlayerModVehicle(playerid,vehicleid,4,300);
  4249.                     case 350:{OnPlayerModVehicle(playerid,vehicleid,5,350);OnPlayerModVehicle(playerid,vehicleid,6,0);}
  4250.                     case 500:{OnPlayerModVehicle(playerid,vehicleid,7,500);OnPlayerModVehicle(playerid,vehicleid,8,0);}
  4251.                     case 550:OnPlayerModVehicle(playerid,vehicleid,9,550);
  4252.                     case 620:OnPlayerModVehicle(playerid,vehicleid,10,620);
  4253.                     case 770:OnPlayerModVehicle(playerid,vehicleid,11,770);
  4254.                     case 820:OnPlayerModVehicle(playerid,vehicleid,12,820);
  4255.                     case 1000:{OnPlayerModVehicle(playerid,vehicleid,13,1000);OnPlayerModVehicle(playerid,vehicleid,14,0);OnPlayerModVehicle(playerid,vehicleid,15,0);}
  4256.                     case 1030:OnPlayerModVehicle(playerid,vehicleid,16,1030);
  4257.                     case 1140:OnPlayerModVehicle(playerid,vehicleid,17,1140);
  4258.                     case 1200:OnPlayerModVehicle(playerid,vehicleid,18,1200);
  4259.                     case 1230:OnPlayerModVehicle(playerid,vehicleid,19,1230);
  4260.                     case 1500:OnPlayerModVehicle(playerid,vehicleid,20,1500);
  4261.                     case 1560:OnPlayerModVehicle(playerid,vehicleid,21,1560);
  4262.                 }
  4263.             }
  4264.         #endif
  4265.     }
  4266.     if(tmpmon2 > 0)
  4267.     {
  4268.         #if defined OnPlayerGamble
  4269.             if(betting != 0)
  4270.             {
  4271.                 OnPlayerGamble(playerid,betting[playerid],bets[playerid],1);
  4272.                 betting[playerid] = 0;
  4273.                 bets[playerid] = 0;
  4274.             }
  4275.         #endif
  4276.     }
  4277.     #if defined OnPlayerGamble
  4278.         for(new i=0;i<sizeof(gamble1);i++)
  4279.         {
  4280.             if(IsPlayerInSphere(playerid,gamble1[i][0],gamble1[i][1],gamble1[i][2],1.0))
  4281.             {
  4282.                 betting[playerid] = 1;
  4283.                 nb++;
  4284.             }
  4285.         }
  4286.         for(new i=0;i<sizeof(gamble2);i++)
  4287.         {
  4288.             if(IsPlayerInSphere(playerid,gamble2[i][0],gamble2[i][1],gamble2[i][2],1.0))
  4289.             {
  4290.                 betting[playerid] = 2;
  4291.                 nb++;
  4292.             }
  4293.         }
  4294.         for(new i=0;i<sizeof(gamble3);i++)
  4295.         {
  4296.             if(IsPlayerInSphere(playerid,gamble3[i][0],gamble3[i][1],gamble3[i][2],1.0))
  4297.             {
  4298.                 betting[playerid] = 3;
  4299.                 nb++;
  4300.             }
  4301.         }
  4302.         for(new i=0;i<sizeof(gamble4);i++)
  4303.         {
  4304.             if(IsPlayerInSphere(playerid,gamble4[i][0],gamble4[i][1],gamble4[i][2],1.0))
  4305.             {
  4306.                 betting[playerid] = 4;
  4307.                 nb++;
  4308.             }
  4309.         }
  4310.         for(new i=0;i<sizeof(gamble5);i++)
  4311.         {
  4312.             if(IsPlayerInSphere(playerid,gamble5[i][0],gamble5[i][1],gamble5[i][2],1.0))
  4313.             {
  4314.                 betting[playerid] = 2;
  4315.                 nb++;
  4316.             }
  4317.         }
  4318.         for(new i=0;i<sizeof(gamble6);i++)
  4319.         {
  4320.             if(IsPlayerInSphere(playerid,gamble6[i][0],gamble6[i][1],gamble6[i][2],1.0))
  4321.             {
  4322.                 betting[playerid] = 5;
  4323.                 nb++;
  4324.             }
  4325.         }
  4326.         for(new i=0;i<sizeof(gamble7);i++)
  4327.         {
  4328.             if(IsPlayerInSphere(playerid,gamble7[i][0],gamble7[i][1],gamble7[i][2],1.0))
  4329.             {
  4330.                 betting[playerid] = 3;
  4331.                 nb++;
  4332.             }
  4333.         }
  4334.         if(nb == 0)
  4335.         {
  4336.             betting[playerid] = 0;
  4337.             bets[playerid] = 0;
  4338.         }
  4339.     #endif
  4340. }
  4341.  
  4342. stock CheckVehicle(vehicleid) //By Gabriel "Larcius" Cordes
  4343. {
  4344.     new Float:h, trailerid=-1;
  4345.     GetVehicleHealth(vehicleid, h);
  4346.     if(IsTrailerAttachedToVehicle(vehicleid))
  4347.     {
  4348.         trailerid=GetVehicleTrailer(vehicleid);
  4349.     }
  4350.     #if defined OnVehicleGetHealth
  4351.     if(h!=Vehicles[vehicleid][Health])
  4352.     {
  4353.         OnVehicleGetHealth(vehicleid, floatsub(h,Vehicles[vehicleid][Health]));
  4354.     }
  4355.     #endif
  4356.     if(trailerid>0 && Vehicles[vehicleid][Cur_Trailer]<0)
  4357.     {
  4358.         Vehicles[vehicleid][Cur_Trailer]=trailerid;
  4359.         #if defined OnVehicleAttachTrailer
  4360.         OnVehicleAttachTrailer(vehicleid, trailerid);
  4361.         #endif
  4362.     }
  4363.     else if(trailerid<0 && Vehicles[vehicleid][Cur_Trailer]>0)
  4364.     {
  4365.         Vehicles[vehicleid][Last_Trailer]=Vehicles[vehicleid][Cur_Trailer];
  4366.         Vehicles[vehicleid][Cur_Trailer]=-1;
  4367.         #if defined OnVehicleDetachTrailer
  4368.         OnVehicleDetachTrailer(vehicleid, Vehicles[vehicleid][Cur_Trailer]);
  4369.         #endif
  4370.     }
  4371. }
  4372.  
  4373. stock CheckPlayer(playerid) //By Rafelder (edited by Gabriel "Larcius" Cordes)
  4374. {
  4375.     new Float:h, Float:a, m, t, s, w, sc, wl, keys, updown, leftright;
  4376.     GetPlayerHealth(playerid, h);
  4377.     GetPlayerArmour(playerid, a);
  4378.     t=GetPlayerTeam(playerid);
  4379.     m=GetPlayerMoney(playerid);
  4380.     s=GetPlayerState(playerid);
  4381.     w=GetPlayerWeapon(playerid);
  4382.     sc=GetPlayerScore(playerid);
  4383.     wl=GetPlayerWantedLevel(playerid);
  4384.     GetPlayerKeys(playerid, keys, updown, leftright);
  4385.     #if defined OnPlayerGetHealth
  4386.     if (h!=Players[playerid][Health])
  4387.     {
  4388.         OnPlayerGetHealth(playerid,floatsub(h,Players[playerid][Health]));
  4389.     }
  4390.     #endif
  4391.     #if defined OnPlayerGetArmour
  4392.     if (a!=Players[playerid][Armour])
  4393.     {
  4394.         OnPlayerGetArmour(playerid,floatsub(a,Players[playerid][Armour]));
  4395.     }
  4396.     #endif
  4397.     #if defined OnPlayerGetMoney
  4398.     if (m!=Players[playerid][Money])
  4399.     {
  4400.         OnPlayerGetMoney(playerid,(m-Players[playerid][Money]));
  4401.     }
  4402.     #endif
  4403.     if (t!=Players[playerid][Cur_Team])
  4404.     {
  4405.         Players[playerid][Last_Team]=Players[playerid][Cur_Team];
  4406.         Players[playerid][Cur_Team]=t;
  4407.         #if defined OnPlayerChangeTeam
  4408.         OnPlayerChangeTeam(playerid, Players[playerid][Last_Team], t); //By Gabriel "Larcius" Cordes
  4409.         #endif
  4410.     }
  4411.     if (s!=Players[playerid][State])
  4412.     {
  4413.         if(s==PLAYER_STATE_DRIVER || s==PLAYER_STATE_PASSENGER)
  4414.         {
  4415.             new vehicleid=GetPlayerVehicleID(playerid);
  4416.             if (Vehicles[vehicleid][Locked][playerid])
  4417.             {
  4418.                 new Float:x1, Float:y1, Float:z1;
  4419.                 GetPlayerPos(playerid, x1, y1, z1);
  4420.                 GameTextForPlayer(playerid, "~w~This vehicle is locked", 3000, 4);
  4421.                 RemovePlayerFromVehicle(playerid);
  4422.                 SetPlayerPos(playerid, x1, y1, z1);
  4423.             }
  4424.             else if(IsVehicleLockedForAnyPlayer(vehicleid) || (GetPlayers()==1 && IsVehicleObjectivedForPlayer(vehicleid, playerid)))
  4425.             {
  4426.                 SetVehicleParamsForAll(vehicleid, 0, 0, 1);
  4427.             }
  4428.             new Text:txt=TextDrawCreateTimer(500.0,400.0,GetVehicleName(vehicleid),3000);
  4429.             TextDrawFont(txt,3);
  4430.             TextDrawShowForPlayer(playerid,txt);
  4431.         }
  4432.         else
  4433.         {
  4434.             Players[playerid][Last_Vehicle]=Players[playerid][Cur_Vehicle];
  4435.             new vehicleid=Players[playerid][Last_Vehicle];
  4436.             if ((Players[playerid][State]==PLAYER_STATE_DRIVER || Players[playerid][State]==PLAYER_STATE_PASSENGER) && IsVehicleLockedForPlayer(vehicleid, playerid))
  4437.             {
  4438.                 new Float:x1, Float:y1, Float:z1;
  4439.                 GetVehiclePos(vehicleid, x1, y1, z1);
  4440.                 SetVehicleParamsForPlayer2(vehicleid, playerid, 1, 0, 1);
  4441.             }
  4442.         }
  4443.         #if defined OnPlayerChangeState
  4444.         OnPlayerChangeState(playerid, Players[playerid][State], s, Players[playerid][Last_Vehicle]);
  4445.         #endif
  4446.     }
  4447.     #if defined OnPlayerSwitchWeapon
  4448.     if (w!=Players[playerid][Weapon])
  4449.     {
  4450.         OnPlayerSwitchWeapon(playerid, Players[playerid][Weapon], w);
  4451.     }
  4452.     #endif
  4453.     #if defined OnPlayerGetScore
  4454.     if (sc!=Players[playerid][Score])
  4455.     {
  4456.         OnPlayerGetScore(playerid, (sc-Players[playerid][Score]));
  4457.     }
  4458.     #endif
  4459.     #if defined OnPlayerGetWantedLevel
  4460.     if (wl!=Players[playerid][Wanted])
  4461.     {
  4462.         OnPlayerGetWantedLevel(playerid, (wl-Players[playerid][Wanted]));
  4463.     }
  4464.     #endif
  4465.     #if defined OnPlayerPressMoveKey
  4466.     if (updown)
  4467.     {
  4468.         OnPlayerPressMoveKey(playerid, updown);
  4469.     }
  4470.     else if (updown)
  4471.     {
  4472.         OnPlayerPressMoveKey(playerid, leftright);
  4473.     }
  4474.     #endif
  4475.     #if defined OnPlayerPressKey
  4476.     if(keys && !updown && !leftright)
  4477.     {
  4478.         OnPlayerPressKey(playerid, keys);
  4479.     }
  4480.     #endif
  4481.  
  4482.     Players[playerid][Health]=h;
  4483.     Players[playerid][Armour]=a;
  4484.     Players[playerid][Money]=m;
  4485.     Players[playerid][State]=s;
  4486.     Players[playerid][Weapon]=w;
  4487.     Players[playerid][Score]=sc;
  4488.     Players[playerid][Wanted]=wl;
  4489.     if(IsPlayerInAnyVehicle(playerid))
  4490.     {
  4491.         Players[playerid][Cur_Vehicle]=GetPlayerVehicleID(playerid);
  4492.     }
  4493.     else
  4494.     {
  4495.         Players[playerid][Cur_Vehicle]=-1;
  4496.     }
  4497.     if (h<0.0)
  4498.     {
  4499.         Players[playerid][Health]=0.0;
  4500.         Players[playerid][Armour]=0.0;
  4501.     }
  4502. }
  4503.  
  4504.  
  4505.  
  4506. forward ufctimer();
  4507. forward Counter();
  4508. forward Speeder(ms);
  4509. forward ClearOutOfRangeVehicles();
  4510. forward TextDrawDestroyTimer2(textid);
  4511.  
  4512. // --------------------------------------------------
  4513. // Forwards (Callback declarations)
  4514. // --------------------------------------------------
  4515.  
  4516. #if defined OnPlayerPickupItem
  4517. forward OnPlayerPickupItem(playerid,pickupid,modelid,type);
  4518. #endif
  4519. #if defined OnPickupRespawn
  4520. forward OnPickupRespawn(pickupid,modelid);
  4521. #endif
  4522. #if defined OnPlayerGetShot
  4523. forward OnPlayerGetShot(playerid);
  4524. #endif
  4525. #if defined OnPlayerBuyWeapon
  4526. forward OnPlayerBuyWeapon(playerid,weaponid,cost);
  4527. #endif
  4528. #if defined OnPlayerBuyPizza
  4529. forward OnPlayerBuyPizza(playerid,cost);
  4530. #endif
  4531. #if defined OnPlayerBuyChicken
  4532. forward OnPlayerBuyChicken(playerid,cost);
  4533. #endif
  4534. #if defined OnPlayerBuyBurger
  4535. forward OnPlayerBuyBurger(playerid,cost);
  4536. #endif
  4537. #if defined OnPlayerBuyDrink
  4538. forward OnPlayerBuyDrink(playerid,cost);
  4539. #endif
  4540. #if defined OnPlayerGamble
  4541. forward OnPlayerGamble(playerid,type,bet,wl);
  4542. #endif
  4543. #if defined OnPlayerModVehicle
  4544. forward OnPlayerModVehicle(playerid,vehicleid,partid,cost);
  4545. #endif
  4546. #if defined OnVehicleSpawn2
  4547. forward OnVehicleSpawn2(vehicleid,dynamic);
  4548. #endif
  4549.  
  4550. #if defined OnPlayerGetHealth
  4551. forward OnPlayerGetHealth(playerid, Float:health);
  4552. #endif
  4553. #if defined OnPlayerGetArmour
  4554. forward OnPlayerGetArmour(playerid, Float:armour);
  4555. #endif
  4556. #if defined OnPlayerGetMoney
  4557. forward OnPlayerGetMoney(playerid, money);
  4558. #endif
  4559. #if defined OnPlayerGetScore
  4560. forward OnPlayerGetScore(playerid, score);
  4561. #endif
  4562. #if defined OnPlayerGetWantedLevel
  4563. forward OnPlayerGetWantedLevel(playerid, wantedlevel);
  4564. #endif
  4565. #if defined OnPlayerChangeTeam
  4566. forward OnPlayerChangeTeam(playerid, prev_team, cur_team);
  4567. #endif
  4568. #if defined OnPlayerChangeState
  4569. forward OnPlayerChangeState(playerid, prev_state, cur_state, last_vehicleid);
  4570. #endif
  4571. #if defined OnPlayerSwitchWeapon
  4572. forward OnPlayerSwitchWeapon(playerid, prev_weapon, cur_weapon);
  4573. #endif
  4574. #if defined OnPlayerPressKey
  4575. forward OnPlayerPressKey(playerid, key);
  4576. #endif
  4577. #if defined OnPlayerPressMoveKey
  4578. forward OnPlayerPressMoveKey(playerid, key);
  4579. #endif
  4580. #if defined OnVehicleGetHealth
  4581. forward OnVehicleGetHealth(vehicleid, Float:health);
  4582. #endif
  4583. #if defined OnVehicleAttachTrailer
  4584. forward OnVehicleAttachTrailer(vehicleid, trailerid);
  4585. #endif
  4586. #if defined OnVehicleDetachTrailer
  4587. forward OnVehicleDetachTrailer(vehicleid, trailerid);
  4588. #endif
  4589. #if defined OnPlayerToggleControllable
  4590. forward OnPlayerToggleControllable(playerid, controllable);
  4591. #endif
  4592.  
  4593. #if defined OnPlayerEnterArea
  4594. forward OnPlayerEnterArea(playerid,areaid);
  4595. #endif
  4596. #if defined OnPlayerLeaveArea
  4597. forward OnPlayerLeaveArea(playerid,areaid);
  4598. #endif
  4599.  
  4600.  
  4601. public OnVehicleSpawn(vehicleid)
  4602. {
  4603.     if(Vehicles[vehicleid][Respawn]>=INF_INT && Vehicles[vehicleid][Static]==-1)
  4604.     {
  4605.         DestroyVehicle2(vehicleid);
  4606.     }
  4607.     else
  4608.     {
  4609.         SetVehicleParamsForAll(vehicleid,0,0);
  4610.         #if defined OnVehicleSpawn2
  4611.             OnVehicleSpawn2(vehicleid,0);
  4612.         #endif
  4613.     }
  4614.     #if defined UF_OnVehicleSpawn
  4615.         return UF_OnVehicleSpawn(vehicleid);
  4616.     #else
  4617.         return 1;
  4618.     #endif
  4619. }
  4620.  
  4621.  
  4622. #if defined _ALS_OnVehicleSpawn
  4623.     #undef OnVehicleSpawn
  4624. #else
  4625.     #define _ALS_OnVehicleSpawn
  4626. #endif
  4627.  
  4628.  
  4629. #define OnVehicleSpawn  UF_OnVehicleSpawn
  4630.  
  4631. #if defined UF_OnVehicleSpawn
  4632.     forward UF_OnVehicleSpawn(vehicleid);
  4633. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement