Advertisement
Guest User

Short Reallife

a guest
Jun 11th, 2011
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 34.94 KB | None | 0 0
  1. /*              Short Reallife Script by Homerx3
  2.                Bitte das Copyright nicht entfernen!
  3.                Editiren vom Script ist erlaubt!
  4. */
  5.  
  6. #include <a_samp>
  7. #include <dini>
  8. #include <Dudb>
  9. #include <ocmd>
  10.  
  11. #pragma tabsize 0
  12.  
  13. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  14.  
  15. #define BLAU 0x0087FFFF
  16. #define ROT 0xE10000FF
  17. #define COLOR_BLACK 0x00000052
  18. #define COLOR_GRAD1 0xB4B5B7FF
  19. #define COLOR_GRAD2 0xBFC0C2FF
  20. #define COLOR_GRAD3 0xCBCCCEFF
  21. #define COLOR_GRAD4 0xD8D8D8FF
  22. #define COLOR_GRAD5 0xE3E3E3FF
  23. #define COLOR_GRAD6 0xF0F0F0FF
  24. #define COLOR_GREY 0xAFAFAFAA
  25. #define COLOR_GREEN 0x33AA33AA
  26. #define COLOR_RED 0xAA3333AA
  27. #define COLOR_ORANGE 0xFF9900AA
  28. #define COLOR_LIGHTRED 0xFF6347AA
  29. #define COLOR_LIGHTBLUE 0x33CCFFAA
  30. #define COLOR_LIGHTGREEN 0x9ACD32AA
  31. #define COLOR_YELLOW 0xFFFF00AA
  32. #define COLOR_YELLOW2 0xF5DEB3AA
  33. #define COLOR_WHITE 0xFFFFFFAA
  34. #define COLOR_FADE1 0xE6E6E6E6
  35. #define COLOR_FADE2 0xC8C8C8C8
  36. #define COLOR_FADE3 0xAAAAAAAA
  37. #define COLOR_FADE4 0x8C8C8C8C
  38. #define COLOR_FADE5 0x6E6E6E6E
  39. #define COLOR_PURPLE 0xC2A2DAAA
  40. #define COLOR_DBLUE 0x2641FEAA
  41. #define COLOR_ALLDEPT 0xFF8282AA
  42. #define COLOR_NEWS 0xFFA500AA
  43. #define COLOR_NEWRED 0xF60000F6
  44. #define COLOR_NEWORANGE 0xF6A600F6
  45. #define COLOR_GOLD 0xB8860BAA
  46. #define COLOR_GRÜN 0x33AA33AA
  47. #define NB 0x005B9BF6
  48. #define NY 0xF5DEB3AA
  49. #define COLOR_OOC 0xE0FFFFAA
  50. #define COLOR 0xAA3333AA
  51.  
  52. #define DIALOG_TUTORIAL 1
  53. #define DIALOG_LOGIN 2
  54. #define DIALOG_REG 3
  55. #define TEAM_LSPD 4
  56. #define TEAM_MEDIC 5
  57. #define TEAM_VAGOS 6
  58.  
  59. forward Spawn(playerid);
  60.  
  61. forward istLSPDcar(carid);
  62. forward istMediccar(carid);
  63. forward istVagoscar(carid);
  64.  
  65. new OnDuty[MAX_PLAYERS];
  66. new ADuty[MAX_PLAYERS];
  67. new bsnenter;
  68. new bsnexit;
  69.  
  70. new Vagos;
  71. new Polizei;
  72. new BSN;
  73. new Medic;
  74.  
  75. new LSPDCars [19];
  76. new MedicCars [7];
  77. new VagosCars [11];
  78.  
  79. enum pInfo
  80. {
  81.     Wanted,
  82.     Skin,
  83.     eingeloggt,
  84.     AdminLevel,
  85.     Member,
  86.     Leader
  87. }
  88. new PlayerInfo[MAX_PLAYERS][pInfo];
  89.  
  90. main()
  91. {
  92.     print("\n----------------------------------");
  93.     print("German Short Reallife");
  94.     print("----------------------------------\n");
  95. }
  96.  
  97.  
  98. public OnGameModeInit()
  99. {
  100.  
  101.     DisableInteriorEnterExits();
  102.     UsePlayerPedAnims();
  103.     bsnexit=CreatePickup(1559,1,362.8524,-75.1179,1001.5078);
  104.     bsnenter=CreatePickup(1559,1,1199.2235,-918.1543,43.1233);
  105.  
  106.     Create3DTextLabel("BSN\n Eingang",BLAU,1199.2235,-918.1543,43.1233,10,0);
  107.     Create3DTextLabel("Gib hier\n/knast ein",0x00FFA0FF,1216.2290,-1820.6230,13.5957,10,0,0);
  108.    
  109.    
  110.     BSN = GangZoneCreate(1167.788, -945.9079, 1237.855, -875.8406);
  111.     Vagos = GangZoneCreate(2410.151, -1369.99, 2824.661, -967.3207);
  112.     Polizei = GangZoneCreate(1132.754, -1845.104, 1296.244, -1728.326);
  113.     Medic = GangZoneCreate(1150.5148,-1410.4993,1257.4927,-1289.5197);
  114.  
  115.  
  116.     SetGameModeText("Short Reallife");
  117.     AddPlayerClass(0,2047.4270,1336.5569,10.6719,188.9284,0,0,0,0,0,0);
  118.  
  119.     AddStaticVehicle(409,1226.2432,-905.7473,42.6997,10.2423,151,151);
  120.    
  121.     LSPDCars[0] = AddStaticVehicleEx(427,1198.03503418,-1836.11193848,13.64861965,271.99951172,79,7,15); //Enforcer
  122.     LSPDCars[1] = AddStaticVehicleEx(427,1197.98547363,-1829.75109863,13.64880085,271.99951172,79,7,15); //Enforcer
  123.     LSPDCars[2] = AddStaticVehicleEx(427,1198.01220703,-1832.94543457,13.64857769,271.99951172,79,7,15); //Enforcer
  124.     LSPDCars[3] = AddStaticVehicleEx(596,1229.65112305,-1836.45825195,13.20670319,270.00000000,106,1,15); //Police Car (LSPD)
  125.     LSPDCars[4] = AddStaticVehicleEx(596,1239.71008301,-1836.36047363,13.20694351,270.00000000,106,1,15); //Police Car (LSPD)
  126.     LSPDCars[5] = AddStaticVehicleEx(596,1249.06359863,-1836.23229980,13.20725632,270.00000000,106,1,15); //Police Car (LSPD)
  127.     LSPDCars[6] = AddStaticVehicleEx(596,1257.58349609,-1836.18298340,13.20737648,270.00000000,106,1,15); //Police Car (LSPD)
  128.     LSPDCars[7] = AddStaticVehicleEx(601,1279.72619629,-1805.46325684,13.31566906,124.00000000,-1,-1,15); //S.W.A.T. Van
  129.     LSPDCars[8] = AddStaticVehicleEx(601,1279.27441406,-1801.79980469,13.31444263,123.99719238,-1,-1,15); //S.W.A.T. Van
  130.     LSPDCars[9] = AddStaticVehicleEx(601,1279.33325195,-1809.70507812,13.31641674,123.99719238,-1,-1,15); //S.W.A.T. Van
  131.     LSPDCars[10] = AddStaticVehicleEx(599,1279.63952637,-1814.26159668,13.76911736,118.00000000,103,1,15); //Police Ranger
  132.     LSPDCars[11] = AddStaticVehicleEx(599,1280.09924316,-1817.69470215,13.76844215,117.99865723,103,1,15); //Police Ranger
  133.     LSPDCars[12] = AddStaticVehicleEx(599,1280.48437500,-1821.33752441,13.76787758,117.99865723,103,1,15); //Police Ranger
  134.     LSPDCars[13] = AddStaticVehicleEx(523,1280.93896484,-1827.48645020,13.04319000,84.00000000,125,1,15); //HPV1000
  135.     LSPDCars[14] = AddStaticVehicleEx(523,1281.02929688,-1826.53027344,13.04319000,83.99597168,125,1,15); //HPV1000
  136.     LSPDCars[15] = AddStaticVehicleEx(523,1280.95520020,-1828.49426270,13.04319000,83.99597168,125,1,15); //HPV1000
  137.     LSPDCars[16] = AddStaticVehicleEx(497,1256.78186035,-1804.43811035,13.68426991,128.24572754,44,1,15); //Police Maverick
  138.     LSPDCars[17] = AddStaticVehicleEx(497,1242.67285156,-1812.00390625,13.69074535,117.99865723,44,1,15); //Police Maverick
  139.     LSPDCars[18] = AddStaticVehicleEx(427,1197.80151367,-1826.75109863,13.64880085,271.99951172,79,7,15); //Enforcer
  140.    
  141.     MedicCars[0] = AddStaticVehicleEx(416,1181.61315918,-1339.75085449,13.87964439,271.00000000,3,6,15); //Ambulance
  142.     MedicCars[1] = AddStaticVehicleEx(416,1181.65991211,-1308.45800781,13.87964439,270.99975586,3,6,15); //Ambulance
  143.     MedicCars[2] = AddStaticVehicleEx(596,1189.87023926,-1369.06811523,13.36090183,0.00000000,3,6,15); //Police Car (LSPD)
  144.     MedicCars[3] = AddStaticVehicleEx(596,1189.83105469,-1376.16210938,13.34704304,0.00000000,3,6,15); //Police Car (LSPD)
  145.     MedicCars[5] = AddStaticVehicleEx(596,1189.76953125,-1362.04296875,13.37462616,0.00000000,3,6,15); //Police Car (LSPD)
  146.     MedicCars[6] = AddStaticVehicleEx(497,1189.74975586,-1327.92639160,13.83285522,0.00000000,3,6,15); //Police Maverick
  147.    
  148.     VagosCars[0] = AddStaticVehicleEx(411,2548.00390625,-1052.81787109,69.24237823,90.50000000,6,1,15); //Infernus
  149.     VagosCars[1] = AddStaticVehicleEx(411,2540.25341797,-1053.01562500,69.24237823,90.49987793,6,1,15); //Infernus
  150.     VagosCars[2] = AddStaticVehicleEx(429,2543.91723633,-1042.03198242,69.16406250,90.50000000,6,-1,15); //Banshee
  151.     VagosCars[3] = AddStaticVehicleEx(429,2537.33862305,-1042.11987305,69.16406250,90.49987793,6,-1,15); //Banshee
  152.     VagosCars[4] = AddStaticVehicleEx(429,2531.16186523,-1042.19360352,69.16406250,90.49987793,6,-1,15); //Banshee
  153.     VagosCars[5] = AddStaticVehicleEx(587,2528.90869141,-1052.79248047,69.38614655,90.00000000,6,1,15); //Euros
  154.     VagosCars[6] = AddStaticVehicleEx(587,2522.38574219,-1052.91015625,69.38614655,90.00000000,6,1,15); //Euros
  155.     VagosCars[7] = AddStaticVehicleEx(587,2516.61791992,-1052.81872559,69.38614655,88.00000000,6,1,15); //Euros
  156.     VagosCars[8] = AddStaticVehicleEx(560,2521.70141602,-1042.35021973,69.36651611,91.00000000,6,1,15); //Sultan
  157.     VagosCars[9] = AddStaticVehicleEx(560,2514.97290039,-1042.43591309,69.36651611,90.99975586,6,1,15); //Sultan
  158.     VagosCars[10] = AddStaticVehicleEx(487,2557.18530273,-1039.86938477,69.83430481,0.00000000,6,-1,15); //Maverick
  159.  
  160.     //~~~~~LSPDBase~~~~~
  161.     CreateObject(970,1220.79907227,-1842.33850098,13.09886074,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (1)
  162.     CreateObject(970,1277.29357910,-1842.33691406,13.10985756,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (2)
  163.     CreateObject(970,1224.92773438,-1842.32324219,13.09835625,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (3)
  164.     CreateObject(970,1229.03417969,-1842.31835938,13.09835625,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (4)
  165.     CreateObject(970,1233.13769531,-1842.32031250,13.09835625,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (5)
  166.     CreateObject(970,1237.25097656,-1842.30371094,13.09835625,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (6)
  167.     CreateObject(970,1241.41015625,-1842.28027344,13.09640980,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (7)
  168.     CreateObject(970,1245.54492188,-1842.25488281,13.10292244,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (8)
  169.     CreateObject(970,1249.61816406,-1842.27734375,13.09841347,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (9)
  170.     CreateObject(970,1253.71191406,-1842.26562500,13.09941387,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (10)
  171.     CreateObject(970,1257.86425781,-1842.24902344,13.10657310,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (11)
  172.     CreateObject(970,1261.95996094,-1842.26660156,13.10645866,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (12)
  173.     CreateObject(970,1285.33215332,-1842.28955078,13.09559631,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (13)
  174.     CreateObject(970,1281.44531250,-1842.30078125,13.09941006,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (14)
  175.     CreateObject(970,1287.53027344,-1831.91369629,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (15)
  176.     CreateObject(970,1287.54394531,-1840.16992188,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (16)
  177.     CreateObject(970,1287.55078125,-1836.07519531,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (17)
  178.     CreateObject(970,1287.50976562,-1819.52343750,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (18)
  179.     CreateObject(970,1287.52832031,-1827.77441406,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (19)
  180.     CreateObject(970,1287.52148438,-1823.64648438,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (20)
  181.     CreateObject(970,1287.51953125,-1803.00659180,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (21)
  182.     CreateObject(970,1287.48925781,-1811.27734375,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (23)
  183.     CreateObject(970,1287.50390625,-1807.16503906,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (24)
  184.     CreateObject(970,1287.46679688,-1790.59436035,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (25)
  185.     CreateObject(970,1287.55957031,-1798.89453125,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (26)
  186.     CreateObject(970,1287.44140625,-1794.75097656,13.10236931,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (27)
  187.     CreateObject(970,1287.46093750,-1784.33776855,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (28)
  188.     CreateObject(970,1287.44042969,-1786.44628906,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (29)
  189.     CreateObject(970,1277.17529297,-1782.23730469,13.16600227,0.00000000,0.00000000,178.99475098); //object(fencesmallb) (30)
  190.     CreateObject(970,1285.39062500,-1782.30468750,13.09835625,0.00000000,0.00000000,178.98925781); //object(fencesmallb) (31)
  191.     CreateObject(970,1281.28479004,-1782.27966309,13.12285614,0.00000000,0.00000000,180.23925781); //object(fencesmallb) (32)
  192.     CreateObject(970,1206.58996582,-1842.23046875,13.10763550,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (33)
  193.     CreateObject(970,1194.21594238,-1842.26782227,13.10995770,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (34)
  194.     CreateObject(970,1202.48437500,-1842.22753906,13.11129379,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (35)
  195.     CreateObject(970,1198.37988281,-1842.23730469,13.11611557,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (36)
  196.     CreateObject(970,1189.91979980,-1840.17553711,13.12179375,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (37)
  197.     CreateObject(970,1192.05957031,-1842.25781250,13.10995770,0.00000000,0.00000000,0.00000000); //object(fencesmallb) (38)
  198.     CreateObject(970,1189.89343262,-1836.03894043,13.12179375,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (39)
  199.     CreateObject(970,1189.89941406,-1831.93127441,13.12179375,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (40)
  200.     CreateObject(970,1189.90539551,-1827.78479004,13.12179375,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (41)
  201.     CreateObject(970,1189.91284180,-1823.66833496,13.12179375,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (42)
  202.     CreateObject(970,1189.92041016,-1819.52429199,13.12179375,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (43)
  203.     CreateObject(970,1189.92529297,-1815.38061523,13.12179375,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (44)
  204.     CreateObject(970,1189.93249512,-1811.22570801,13.09679413,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (45)
  205.     CreateObject(970,1287.48925781,-1811.27734375,13.09835625,0.00000000,0.00000000,270.00000000); //object(fencesmallb) (23)
  206.     CreateObject(970,1287.48645020,-1815.46801758,13.09835625,0.00000000,0.00000000,270.50000000); //object(fencesmallb) (18)
  207.     CreateObject(3261,1216.22692871,-1819.97802734,12.59669113,0.00000000,0.00000000,0.00000000); //object(grasshouse) (1)
  208.     CreateObject(3261,1216.22485352,-1822.98107910,12.59669113,0.00000000,0.00000000,0.00000000); //object(grasshouse) (2)
  209.     //~~~~LSPDBASEND~~~~~~~~
  210.  
  211.     return 1;
  212. }
  213.  
  214. public OnGameModeExit()
  215. {
  216.     return 1;
  217. }
  218.  
  219. public OnPlayerRequestClass(playerid, classid)
  220. {
  221.     SetTimer("Spawn", 10, false);
  222.     return 1;
  223. }
  224.  
  225. public OnPlayerConnect(playerid)
  226. {
  227.     OnDuty[playerid] = 0; ADuty[playerid] = 0;
  228.    
  229.     new pname[MAX_PLAYERS],accFormat[128];
  230.     GetPlayerName(playerid,pname,sizeof pname);
  231.     format(accFormat,sizeof accFormat,"/Accounts/%s.ini",pname);
  232.     if(fexist(accFormat))
  233.     {
  234.         ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
  235.     }
  236.     else
  237.     {
  238.         ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
  239.     }
  240.     return 1;
  241. }
  242.  
  243. public OnPlayerDisconnect(playerid, reason)
  244. {
  245.     new pname[MAX_PLAYERS],accFormat[128];
  246.     GetPlayerName(playerid,pname,sizeof pname);
  247.     format(accFormat,sizeof accFormat,"%/Accounts/%s.ini",pname);
  248.     if(fexist(accFormat) && PlayerInfo[playerid][eingeloggt])
  249.     {
  250.         dini_IntSet(accFormat,"Wanted",PlayerInfo[playerid][Wanted]);
  251.         dini_IntSet(accFormat,"Skin",PlayerInfo[playerid][Skin]);
  252.         dini_IntSet(accFormat,"AdminLevel",PlayerInfo[playerid][AdminLevel]);
  253.         dini_IntSet(accFormat,"Member",PlayerInfo[playerid][Member]);
  254.         dini_IntSet(accFormat,"Leader",PlayerInfo[playerid][Leader]);
  255.         dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
  256.         dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
  257.     }
  258.     PlayerInfo[playerid][eingeloggt] = 0;
  259.     return 1;
  260. }
  261.  
  262. public OnPlayerSpawn(playerid)
  263. {
  264.     new pname[MAX_PLAYERS],accFormat[128];
  265.     GetPlayerName(playerid,pname,sizeof pname);
  266.     format(accFormat,sizeof accFormat,"/Accounts/%s.ini",pname);
  267.    
  268.     GangZoneShowForPlayer(playerid, BSN, 0xEA0000D3);
  269.     GangZoneShowForPlayer(playerid, Vagos, 0xFFFF00D3);
  270.     GangZoneShowForPlayer(playerid, Polizei, 0x0080FFD5);
  271.     GangZoneShowForPlayer(playerid, Medic, 0xFF9900AA);
  272.  
  273.    
  274.     if(PlayerInfo[playerid][Member] == 0 || PlayerInfo[playerid][Leader] == 0)//team zivi
  275.     {
  276.         SetPlayerPos(playerid,1222.1761,-1814.5532,16.5938);
  277.         SetPlayerInterior(playerid, 0);
  278.         SetPlayerSkin(playerid,284);
  279.         SetPlayerColor(playerid,COLOR_GREY);
  280.     }
  281.     if(PlayerInfo[playerid][Member] == 1 || PlayerInfo[playerid][Leader] == 1) //team polizei
  282.     {
  283.         SetPlayerPos(playerid,1222.1761,-1814.5532,16.5938);
  284.         SetPlayerInterior(playerid, 0);
  285.         SetPlayerSkin(playerid,283);
  286.         SetPlayerColor(playerid,0x0080FFD5);
  287.     }
  288.     if(PlayerInfo[playerid][Member] == 2 || PlayerInfo[playerid][Leader] == 2) //team Medic
  289.     {
  290.         SetPlayerPos(playerid,1175.2816,-1323.4961,14.3906);
  291.         SetPlayerFacingAngle(playerid,270.2851 );
  292.         SetPlayerSkin(playerid,275);
  293.         SetPlayerColor(playerid,COLOR_ORANGE);
  294.  
  295.     }
  296.     if(PlayerInfo[playerid][Member] == 3 || PlayerInfo[playerid][Leader] == 3) //team Vagos
  297.     {
  298.         SetPlayerPos(playerid,2503.5015,-1028.7251,70.0859);
  299.         SetCameraBehindPlayer(playerid);
  300.         SetPlayerSkin(playerid,108);
  301.         SetPlayerColor(playerid,COLOR_YELLOW);
  302.     }
  303.  
  304.     return 1;
  305. }
  306.  
  307. public OnPlayerDeath(playerid, killerid, reason)
  308. {
  309.     return 1;
  310. }
  311.  
  312. public OnVehicleSpawn(vehicleid)
  313. {
  314.     return 1;
  315. }
  316.  
  317. public OnVehicleDeath(vehicleid, killerid)
  318. {
  319.     return 1;
  320. }
  321.  
  322. public OnPlayerText(playerid, text[])
  323. {
  324.     return 1;
  325. }
  326.  
  327. public OnPlayerCommandText(playerid, cmdtext[])
  328. {
  329.    
  330.     new sendername [128];
  331.     GetPlayerName(playerid,sendername,sizeof(sendername));
  332.     if(strcmp(cmdtext,"/gotobsn",true)==0)
  333.     {
  334.         if(ADuty[playerid] != 1)
  335.         {
  336.               SendClientMessage(playerid, COLOR_GREY, "   Du bist nicht im Admin Dienst !");
  337.               return 1;
  338.         }
  339.         if(PlayerInfo[playerid][AdminLevel] >= 1)
  340.         {
  341.             SetPlayerPos(playerid,1181.5217,-923.6135,43.2166);
  342.             SetPlayerFacingAngle(playerid,244.5949);
  343.             return 1;
  344.         }
  345.         SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
  346.         return 1;
  347.     }
  348.     if(!strcmp(strget(cmdtext,0),"/makeleader"))
  349.     {
  350.         new string [128];
  351.         if(ADuty[playerid] != 1)
  352.         {
  353.               SendClientMessage(playerid, COLOR_GREY, "   Du bist nicht im Admin Dienst !");
  354.               return 1;
  355.         }
  356.         if(PlayerInfo[playerid][AdminLevel] >= 4)
  357.         {
  358.             if(!strlen(strget(cmdtext,1)))
  359.             return
  360.             SendClientMessage(playerid,COLOR_GREY,"Benutze: /makeleader [ID] [FraktionsID]");
  361.             new id3 = strval(strget(cmdtext,1));
  362.             new admin3[MAX_PLAYER_NAME];
  363.             new gang = strval(strget(cmdtext,2));
  364.             GetPlayerName(id3,admin3,sizeof(admin3));
  365.             format(string, sizeof(string), "*** Du wurdest von Admin %s zum Leader der Fraktionsnummer %d gemacht.", admin3, gang);
  366.             SendClientMessage(id3, COLOR_LIGHTRED, string);
  367.             format(string, sizeof(string), "*** Du hast %s zum Leader der Fraktionsnummer %d gemacht.", id3, gang);
  368.             SendClientMessage(playerid, COLOR_LIGHTRED, string);
  369.             if(gang==1) { SetPlayerSkin(id3,283);PlayerInfo[playerid][Leader]= 1;SetPlayerPos(playerid,1222.1761,-1814.5532,16.5938);SetPlayerInterior(playerid, 0); }
  370.             if(gang==2) { SetPlayerSkin(id3,275);PlayerInfo[playerid][Leader]= 2;SetPlayerPos(playerid,1175.2816,-1323.4961,14.3906);SetPlayerInterior(playerid, 0); }
  371.             if(gang==3) { SetPlayerSkin(id3,108);PlayerInfo[playerid][Leader]= 3;SetPlayerPos(playerid,2503.5015,-1028.7251,70.0859);SetPlayerInterior(playerid, 0); }
  372.  
  373.             PlayerInfo[id3][Leader] = gang;
  374.             PlayerInfo[id3][Member] = gang;
  375.  
  376.         }
  377.         else
  378.         {
  379.         SendClientMessage(playerid, COLOR_LIGHTRED,"Du darfst diesen Befehl nicht benutzen !");
  380.         }
  381.     return 1;
  382.     }
  383.     if(strcmp(cmdtext, "/ahelp", true) == 0 || strcmp(cmdtext, "/Adminhilfe", true) == 0 || strcmp(cmdtext, "/ah", true) == 0)
  384.     {
  385.         if(IsPlayerConnected(playerid))
  386.         {
  387.            
  388.             SendClientMessage(playerid, 0xF000FFFF,"_____Adminstratoren-Commands______");
  389.             if (PlayerInfo[playerid][AdminLevel] >= 1)
  390.             {
  391.                 SendClientMessage(playerid, 0xF000FFFF,"Supporter: /aduty");
  392.             }
  393.             if (PlayerInfo[playerid][AdminLevel] >= 2)
  394.             {
  395.                 SendClientMessage(playerid, 0xF000FFFF,"Probe Moderator: ");
  396.             }
  397.             if (PlayerInfo[playerid][AdminLevel] >= 3)
  398.             {
  399.                 SendClientMessage(playerid, 0xF000FFFF,"Moderator:");
  400.             }
  401.             if (PlayerInfo[playerid][AdminLevel] >= 4)
  402.             {
  403.                 SendClientMessage(playerid, 0xF000FFFF,"Adminstrator: /makeleader");
  404.             }
  405.             if (PlayerInfo[playerid][AdminLevel] >= 5)
  406.             {
  407.                 SendClientMessage(playerid, 0xF000FFFF,"Server Owner: /restart");
  408.             }
  409.             SendClientMessage(playerid, 0xF000FFFF,"_______________________________________");
  410.         }
  411.         return 1;
  412.     }
  413.     if (strcmp(cmdtext, "/adminduty", true) == 0 || strcmp(cmdtext, "/aduty", true) == 0)
  414.     {
  415.         new string[128];
  416.         if(ADuty[playerid] == 0)
  417.         {
  418.             if(PlayerInfo[playerid][AdminLevel] >= 1)
  419.             {
  420.                 SendClientMessage(playerid,COLOR_YELLOW," => Du bist im Admin Dienst!");
  421.                 SetPlayerColor(playerid,0xFF0000FF);
  422.                 ADuty[playerid] = 1;
  423.                 GetPlayerName(playerid, sendername, sizeof(sendername));
  424.                 format(string,sizeof(string)," **Administrator %s ist nun im Dienst!**",sendername);
  425.                 SendClientMessageToAll(0xFF5000FF, string);
  426.                 return 1;
  427.             }
  428.         }
  429.         if(ADuty[playerid] == 1)
  430.         {
  431.             SendClientMessage(playerid,COLOR_YELLOW," => Du bist nicht mehr im Admin Dienst!");
  432.             ADuty[playerid] = 0;
  433.             GetPlayerName(playerid, sendername, sizeof(sendername));
  434.             format(string,sizeof(string)," **Administrator %s ist nun nicht mehr im Dienst!**",sendername);
  435.             SendClientMessageToAll(0xFF5000FF, string);
  436.             return 1;
  437.         }
  438.         else
  439.         {
  440.             SendClientMessage(playerid,ROT ,"  Du bist kein Admin!");
  441.         }
  442.         return 1;
  443.     }
  444.     new cmd[256], idx;
  445.     cmd = strtok(cmdtext, idx);
  446.     if(strcmp(cmd, "/makeadmin", true) == 0)
  447.     {
  448.        new string[128];
  449.        new tmp[256];
  450.        new player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
  451.        new giveplayerid;
  452.        if (IsPlayerAdmin(playerid))
  453.        {
  454.                tmp = strtok(cmdtext, idx);
  455.                if(!strlen(tmp))
  456.                {
  457.                        SendClientMessage(playerid, COLOR_ORANGE, "USAGE: /makeadmin [playerid] [level]");
  458.                        SendClientMessage(playerid, COLOR_ORANGE, "FUNCTION: Player will be an admin.");
  459.                        return 1;
  460.                }
  461.                tmp = strtok(cmdtext, idx);
  462.                new level = strval(tmp);
  463.                if(giveplayerid != INVALID_PLAYER_ID)
  464.                {
  465.                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
  466.                        GetPlayerName(playerid, player, sizeof(player));
  467.                        PlayerInfo[giveplayerid][AdminLevel] = level;
  468.                        printf("Admin %s made %s a level %d admin.", player, giveplayer, level);
  469.                        format(string, sizeof(string), "You are now an administrator level %d thanks to %s.", level,  player);
  470.                        SendClientMessage(giveplayerid, 0x00C2ECFF, string);
  471.                        format(string, sizeof(string), "You have given %s level %d admin.",  giveplayer,PlayerInfo[giveplayerid][AdminLevel]);
  472.                        SendClientMessage(playerid, 0x00C2ECFF, string);
  473.                }
  474.                else if(giveplayerid == INVALID_PLAYER_ID)
  475.                {
  476.                        format(string, sizeof(string), "%i is not an active player.", giveplayerid);
  477.                        SendClientMessage(playerid, 0xE60000FF, string);
  478.                }
  479.        }
  480.        else
  481.        {
  482.            SendClientMessage(playerid, 0xE60000FF, "You are not a lead admin!");
  483.        }
  484.        return 1;
  485.     }
  486.     if(strcmp(cmdtext,"/restart",true)==0)
  487.     {
  488.         if(ADuty[playerid] != 1)
  489.         {
  490.               SendClientMessage(playerid, COLOR_GREY, "   Du bist nicht im Admin Dienst !");
  491.               return 1;
  492.         }
  493.         if(PlayerInfo[playerid][AdminLevel] >= 4)
  494.         {
  495.             SendRconCommand("gmx");
  496.             return 1;
  497.         }
  498.         SendClientMessage(playerid,BLAU,"Du bist kein Admin.");
  499.         return 1;
  500.     }
  501.     /*if(strcmp(cmdtext,"/stats",true)==0)
  502.     {
  503.         new string[128];
  504.         format(string,sizeof(string),"[Name: %s] [Level: %i] [Adminlevel: %i] [Member: %s] [Leader: %s]",pname(playerid),GetPlayerScore(playerid),PlayerInfo[playerid][AdminLevel],PlayerInfo[playerid][Member],PlayerInfo[playerid][Leader]);
  505.         SendClientMessage(playerid,COLOR_ORANGE,string);
  506.         return 1;
  507.     }*/
  508.     return 0;
  509. }
  510.  
  511. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  512. {
  513.     return 1;
  514. }
  515.  
  516. public OnPlayerExitVehicle(playerid, vehicleid)
  517. {
  518.     return 1;
  519. }
  520.  
  521. public OnPlayerStateChange(playerid, newstate, oldstate)
  522. {
  523.     new pdcar = GetPlayerVehicleID(playerid);
  524.     if(newstate == PLAYER_STATE_DRIVER)
  525.     {
  526.         if(istLSPDcar(pdcar))
  527.         {
  528.             if(PlayerInfo[playerid][Member] == 1 || PlayerInfo[playerid][Leader] == 1) {}  
  529.             else
  530.             {
  531.                 RemovePlayerFromVehicle(playerid);
  532.                 SendClientMessage(playerid, BLAU , "Du bist kein Polizist!");
  533.             }
  534.         }
  535.     }
  536.     new mediccar = GetPlayerVehicleID(playerid);
  537.     if(newstate == PLAYER_STATE_DRIVER)
  538.     {
  539.         if(istMediccar(mediccar))
  540.         {
  541.             if(PlayerInfo[playerid][Member] == 2 || PlayerInfo[playerid][Leader] == 2) {}  
  542.             else
  543.             {
  544.                 RemovePlayerFromVehicle(playerid);
  545.                 SendClientMessage(playerid, COLOR_RED, "Du bist kein Sanitäter!");
  546.             }
  547.         }
  548.     }
  549.     new vagoscar = GetPlayerVehicleID(playerid);
  550.     if(newstate == PLAYER_STATE_DRIVER)
  551.     {
  552.         if(istVagoscar(vagoscar))
  553.         {
  554.             if(PlayerInfo[playerid][Member] == 3 || PlayerInfo[playerid][Leader] == 3) {}  
  555.             else
  556.             {
  557.                 RemovePlayerFromVehicle(playerid);
  558.                 SendClientMessage(playerid, COLOR_RED, "Du bist kein Vagos Member!");
  559.             }
  560.         }
  561.     }
  562.     return 1;
  563. }
  564.  
  565. public OnPlayerEnterCheckpoint(playerid)
  566. {
  567.     return 1;
  568. }
  569.  
  570. public OnPlayerLeaveCheckpoint(playerid)
  571. {
  572.     return 1;
  573. }
  574.  
  575. public OnPlayerEnterRaceCheckpoint(playerid)
  576. {
  577.     return 1;
  578. }
  579.  
  580. public OnPlayerLeaveRaceCheckpoint(playerid)
  581. {
  582.     return 1;
  583. }
  584.  
  585. public OnRconCommand(cmd[])
  586. {
  587.     return 1;
  588. }
  589.  
  590. public OnPlayerRequestSpawn(playerid)
  591. {
  592.     return 1;
  593. }
  594.  
  595. public OnObjectMoved(objectid)
  596. {
  597.     return 1;
  598. }
  599.  
  600. public OnPlayerObjectMoved(playerid, objectid)
  601. {
  602.     return 1;
  603. }
  604.  
  605. public OnPlayerPickUpPickup(playerid, pickupid)
  606. {
  607.     if(pickupid==bsnenter)
  608.     {
  609.         SetPlayerPos(playerid,364.5703,-73.8091,1001.5078);
  610.         SetPlayerFacingAngle(playerid,287.5200);
  611.         SetPlayerInterior(playerid,10);
  612.         GameTextForPlayer(playerid,"~w~Du ~r~hast ~b~den ~n~~g~BSN betreten.",3000,3);
  613.     }
  614.     if(pickupid==bsnexit)
  615.     {
  616.         SetPlayerPos(playerid,1199.4618,-920.8215,43.1059);
  617.         SetPlayerFacingAngle(playerid,185.7090);
  618.         SetCameraBehindPlayer(playerid);
  619.         SetPlayerInterior(playerid,0);
  620.     }
  621.     return 1;
  622. }
  623.  
  624. public OnVehicleMod(playerid, vehicleid, componentid)
  625. {
  626.     return 1;
  627. }
  628.  
  629. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  630. {
  631.     return 1;
  632. }
  633.  
  634. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  635. {
  636.     return 1;
  637. }
  638.  
  639. public OnPlayerSelectedMenuRow(playerid, row)
  640. {
  641.     return 1;
  642. }
  643.  
  644. public OnPlayerExitedMenu(playerid)
  645. {
  646.     return 1;
  647. }
  648.  
  649. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  650. {
  651.     return 1;
  652. }
  653.  
  654. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  655. {
  656.     return 1;
  657. }
  658.  
  659. public OnRconLoginAttempt(ip[], password[], success)
  660. {
  661.     return 1;
  662. }
  663.  
  664. public OnPlayerUpdate(playerid)
  665. {
  666.     return 1;
  667. }
  668.  
  669. public OnPlayerStreamIn(playerid, forplayerid)
  670. {
  671.     return 1;
  672. }
  673.  
  674. public OnPlayerStreamOut(playerid, forplayerid)
  675. {
  676.     return 1;
  677. }
  678.  
  679. public OnVehicleStreamIn(vehicleid, forplayerid)
  680. {
  681.     return 1;
  682. }
  683.  
  684. public OnVehicleStreamOut(vehicleid, forplayerid)
  685. {
  686.     return 1;
  687. }
  688.  
  689. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  690. {
  691.     new pname[MAX_PLAYERS],accFormat[128];
  692.     GetPlayerName(playerid,pname,sizeof pname);
  693.     format(accFormat,sizeof accFormat,"/Accounts/%s.ini",pname);
  694.     if(response)
  695.     {
  696.         switch(dialogid)
  697.         {
  698.             case DIALOG_LOGIN:
  699.             {
  700.                 if(!strlen(inputtext))
  701.                 {
  702.                     ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
  703.                     return SendClientMessage(playerid,0xFFFFFFFF,"Kein Passwort angegeben!");
  704.                 }
  705.                 if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0)
  706.                 {
  707.                     PlayerInfo[playerid][Wanted] = dini_Int(accFormat,"Wanted");
  708.                     PlayerInfo[playerid][Skin] = dini_Int(accFormat,"Skin");
  709.                     GivePlayerMoney(playerid,dini_Int(accFormat,"Geld"));
  710.                     SetPlayerScore(playerid,dini_Int(accFormat,"Score"));
  711.                     PlayerInfo[playerid][AdminLevel] = dini_Int(accFormat, "AdminLevel");
  712.                     PlayerInfo[playerid][Member] = dini_Int(accFormat,"Member");
  713.                     PlayerInfo[playerid][Leader] = dini_Int(accFormat,"Leader");
  714.                     PlayerInfo[playerid][eingeloggt] = 1;
  715.                     SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
  716.                 }
  717.                 else
  718.                 {
  719.                     ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
  720.                     SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
  721.                 }
  722.             }
  723.             case DIALOG_REG:
  724.             {
  725.                 if(!strlen(inputtext))
  726.                 {
  727.                         ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
  728.                         return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort ist zu kurz!");
  729.                 }
  730.                 dini_Create(accFormat);
  731.                 dini_IntSet(accFormat, "AdminLevel" , 0);
  732.                 PlayerInfo[playerid][AdminLevel] = 0;
  733.                 dini_Set(accFormat,"Passwort",inputtext);
  734.                 PlayerInfo[playerid][eingeloggt] = 1;
  735.                 SendClientMessage(playerid,0xFFFFFFFF,"Account wurde angelegt und du wurdest eingeloggt.");
  736.                 SetPlayerColor(playerid,COLOR_GREY);
  737.             }
  738.         }
  739.     }
  740.     else
  741.     {
  742.         switch(dialogid)
  743.         {
  744.             case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
  745.             case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
  746.         }
  747.     }
  748.     return 1;
  749. }
  750. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  751. {
  752.     return 1;
  753. }
  754. public Spawn(playerid)
  755. {
  756.     SpawnPlayer(playerid);
  757.     return 1;
  758. }
  759. public istLSPDcar(carid)
  760. {
  761.         for(new i = 0; i < sizeof(LSPDCars); i++)
  762.         {
  763.             if(carid == LSPDCars[i])
  764.             {
  765.             return 1;
  766.             }
  767.         }
  768.     return 0;
  769. }
  770. public istMediccar(carid)
  771. {
  772.         for(new i = 0; i < sizeof(MedicCars); i++)
  773.         {
  774.             if(carid == MedicCars[i])
  775.             {
  776.             return 1;
  777.             }
  778.         }
  779.     return 0;
  780. }
  781. public istVagoscar(carid)
  782. {
  783.         for(new i = 0; i < sizeof(VagosCars); i++)
  784.         {
  785.             if(carid == VagosCars[i])
  786.             {
  787.             return 1;
  788.             }
  789.         }
  790.     return 0;
  791. }
  792. stock isPlayerInFrakt(playerid,fraktid)
  793. {
  794.     if(GetPVarInt(playerid,"Fraktion")==fraktid)return 1;
  795.     return 0;
  796. }
  797.  
  798. stock isPlayerAnAdmin(playerid,rang)
  799. {
  800.     if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
  801.     return 0;
  802. }
  803. stock strget(strx[], pos, search = ' ') {
  804.     new arg, ret[128], idxx;
  805.     for (new i = 0; i < strlen(strx); i++) {
  806.         if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
  807.             arg++;
  808.             if (arg == pos + 1){
  809.                 ret[i-idxx] = EOS;
  810.                 return ret;
  811.             } else if (arg == pos)
  812.                 idxx= i+1;
  813.         }
  814.         else if (arg == pos)
  815.                 ret[i - idxx] = strx[i];
  816.     }
  817.     return ret;
  818. }
  819. /*strtok(const string[], &index)
  820. {
  821.     new length = strlen(string);
  822.     while ((index < length) && (string[index] <= ' '))
  823.     {
  824.         index++;
  825.     }
  826.  
  827.     new offset = index;
  828.     new result[20];
  829.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  830.     {
  831.         result[index - offset] = string[index];
  832.         index++;
  833.     }
  834.     result[index - offset] = EOS;
  835.     return result;
  836. }*/
  837.  
  838. stock sscanf(sstring[], format[], {Float,_}:...)
  839. {
  840.     #if defined isnull
  841.         if (isnull(sstring))
  842.     #else
  843.         if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
  844.     #endif
  845.         {
  846.             return format[0];
  847.         }
  848.     #pragma tabsize 4
  849.     new
  850.         formatPos = 0,
  851.         sstringPos = 0,
  852.         paramPos = 2,
  853.         paramCount = numargs(),
  854.         delim = ' ';
  855.     while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
  856.     {
  857.         sstringPos++;
  858.     }
  859.     while (paramPos < paramCount && sstring[sstringPos])
  860.     {
  861.         switch (format[formatPos++])
  862.         {
  863.             case '\0':
  864.             {
  865.                 return 0;
  866.             }
  867.             case 'i', 'd':
  868.             {
  869.                 new
  870.                     neg = 1,
  871.                     num = 0,
  872.                     ch = sstring[sstringPos];
  873.                 if (ch == '-')
  874.                 {
  875.                     neg = -1;
  876.                     ch = sstring[++sstringPos];
  877.                 }
  878.                 do
  879.                 {
  880.                     sstringPos++;
  881.                     if ('0' <= ch <= '9')
  882.                     {
  883.                         num = (num * 10) + (ch - '0');
  884.                     }
  885.                     else
  886.                     {
  887.                         return -1;
  888.                     }
  889.                 }
  890.                 while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  891.                 setarg(paramPos, 0, num * neg);
  892.             }
  893.             case 'h', 'x':
  894.             {
  895.                 new
  896.                     num = 0,
  897.                     ch = sstring[sstringPos];
  898.                 do
  899.                 {
  900.                     sstringPos++;
  901.                     switch (ch)
  902.                     {
  903.                         case 'x', 'X':
  904.                         {
  905.                             num = 0;
  906.                             continue;
  907.                         }
  908.                         case '0' .. '9':
  909.                         {
  910.                             num = (num << 4) | (ch - '0');
  911.                         }
  912.                         case 'a' .. 'f':
  913.                         {
  914.                             num = (num << 4) | (ch - ('a' - 10));
  915.                         }
  916.                         case 'A' .. 'F':
  917.                         {
  918.                             num = (num << 4) | (ch - ('A' - 10));
  919.                         }
  920.                         default:
  921.                         {
  922.                             return -1;
  923.                         }
  924.                     }
  925.                 }
  926.                 while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  927.                 setarg(paramPos, 0, num);
  928.             }
  929.             case 'c':
  930.             {
  931.                 setarg(paramPos, 0, sstring[sstringPos++]);
  932.             }
  933.             case 'f':
  934.             {
  935.  
  936.                 new changestr[16], changepos = 0, strpos = sstringPos;
  937.                 while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
  938.                 {
  939.                     changestr[changepos++] = sstring[strpos++];
  940.                     }
  941.                 changestr[changepos] = '\0';
  942.                 setarg(paramPos,0,_:floatstr(changestr));
  943.             }
  944.             case 'p':
  945.             {
  946.                 delim = format[formatPos++];
  947.                 continue;
  948.             }
  949.             case '\'':
  950.             {
  951.                 new
  952.                     end = formatPos - 1,
  953.                     ch;
  954.                 while ((ch = format[++end]) && ch != '\'') {}
  955.                 if (!ch)
  956.                 {
  957.                     return -1;
  958.                 }
  959.                 format[end] = '\0';
  960.                 if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
  961.                 {
  962.                     if (format[end + 1])
  963.                     {
  964.                         return -1;
  965.                     }
  966.                     return 0;
  967.                 }
  968.                 format[end] = '\'';
  969.                 sstringPos = ch + (end - formatPos);
  970.                 formatPos = end + 1;
  971.             }
  972.             case 'u':
  973.             {
  974.                 new
  975.                     end = sstringPos - 1,
  976.                     id = 0,
  977.                     bool:num = true,
  978.                     ch;
  979.                 while ((ch = sstring[++end]) && ch != delim)
  980.                 {
  981.                     if (num)
  982.                     {
  983.                         if ('0' <= ch <= '9')
  984.                         {
  985.                             id = (id * 10) + (ch - '0');
  986.                         }
  987.                         else
  988.                         {
  989.                             num = false;
  990.                         }
  991.                     }
  992.                 }
  993.                 if (num && IsPlayerConnected(id))
  994.                 {
  995.                     setarg(paramPos, 0, id);
  996.                 }
  997.                 else
  998.                 {
  999.                     #if !defined foreach
  1000.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1001.                         #define __SSCANF_FOREACH__
  1002.                     #endif
  1003.                     sstring[end] = '\0';
  1004.                     num = false;
  1005.                     new
  1006.                         name[MAX_PLAYER_NAME];
  1007.                     id = end - sstringPos;
  1008.                     foreach (Player, playerid)
  1009.                     {
  1010.                         GetPlayerName(playerid, name, sizeof (name));
  1011.                         if (!strcmp(name, sstring[sstringPos], true, id))
  1012.                         {
  1013.                             setarg(paramPos, 0, playerid);
  1014.                             num = true;
  1015.                             break;
  1016.                         }
  1017.                     }
  1018.                     if (!num)
  1019.                     {
  1020.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  1021.                     }
  1022.                     sstring[end] = ch;
  1023.                     #if defined __SSCANF_FOREACH__
  1024.                         #undef foreach
  1025.                         #undef __SSCANF_FOREACH__
  1026.                     #endif
  1027.                 }
  1028.                 sstringPos = end;
  1029.             }
  1030.             case 's', 'z':
  1031.             {
  1032.                 new
  1033.                     i = 0,
  1034.                     ch;
  1035.                 if (format[formatPos])
  1036.                 {
  1037.                     while ((ch = sstring[sstringPos++]) && ch != delim)
  1038.                     {
  1039.                         setarg(paramPos, i++, ch);
  1040.                     }
  1041.                     if (!i)
  1042.                     {
  1043.                         return -1;
  1044.                     }
  1045.                 }
  1046.                 else
  1047.                 {
  1048.                     while ((ch = sstring[sstringPos++]))
  1049.                     {
  1050.                         setarg(paramPos, i++, ch);
  1051.                     }
  1052.                 }
  1053.                 sstringPos--;
  1054.                 setarg(paramPos, i, '\0');
  1055.             }
  1056.             default:
  1057.             {
  1058.                 continue;
  1059.             }
  1060.         }
  1061.         while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
  1062.         {
  1063.             sstringPos++;
  1064.         }
  1065.         while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
  1066.         {
  1067.             sstringPos++;
  1068.         }
  1069.         paramPos++;
  1070.     }
  1071.     do
  1072.     {
  1073.         if ((delim = format[formatPos++]) > ' ')
  1074.         {
  1075.             if (delim == '\'')
  1076.             {
  1077.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  1078.             }
  1079.             else if (delim != 'z')
  1080.             {
  1081.                 return delim;
  1082.             }
  1083.         }
  1084.     }
  1085.     while (delim > ' ');
  1086.     return 0;
  1087. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement