Advertisement
exod182

Script

May 9th, 2013
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 34.74 KB | None | 0 0
  1. //2Live Script by ArabBass V.0.0.1
  2. //Copyright 2013
  3. //Es ist strafbar die Credits zu Entfernen
  4.  
  5. //INCLUDES
  6. #include <a_samp>
  7. #include <dini>
  8. #include <MD5>
  9. #include <a_mysql>
  10.  
  11. //MYSQL
  12. #define SQL_HOST "127.0.0.1"
  13. #define SQL_USER "root"
  14. #define SQL_DB ""
  15. #define SQL_PASS ""
  16.  
  17. //ENUMS
  18. enum SpielerDaten
  19. {
  20.     Adminlevel,
  21.     Level,
  22.     Fraktion,
  23.     Team,
  24.     sLogin,
  25.     pName[MAX_PLAYER_NAME],
  26.     pLevel,
  27.     pGeld,
  28.     pKills,
  29.     pTode,
  30.     Float:pHealth
  31. }
  32.  
  33. new SpielerInfo[MAX_PLAYERS][SpielerDaten];
  34.  
  35. new sSpieler[MAX_PLAYERS][SpielerDaten];
  36.  
  37. //Fahrzeuge
  38. new lspdcar[6];
  39.  
  40. //TIMER
  41.  
  42. forward minute();
  43.  
  44. //DCMD
  45. #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
  46.  
  47.  
  48. //FARBEN
  49. #define GELB 0xFFFA00FF
  50. #define ROT 0xFF0000FF
  51. #define GRUEN 0x00FF0AFF
  52. #define LILA 0xB400FFFF
  53. #define ROSA 0xFF00C3FF
  54. #define ORANGE 0xFFA000FF
  55. #define GREEN 0x00BB65BE
  56. #define RED 0xB90000FF
  57. #define BLAU 0x0A00FFFF
  58. #define BLUE 0x00FFFFFF
  59.  
  60. //DEFINE_FRAKTIONEN
  61.  
  62. #define sFraktion1 "LSPD"
  63. #define sFraktion2 "SFPD"
  64. #define sFraktion3 "LVPD"
  65. #define sFraktion4 "Ordnungsamt"
  66. #define sFraktion5 "Sanitter"
  67. #define sFraktion6 "Transport-GmBH"
  68. #define sFraktion7 "SAN-NEWS Reporter"
  69. #define sFraktion8 "Feuerwehr"
  70. #define sFraktion9 "ADAC"
  71. #define sFraktion10 "Fahrschule"
  72. #define sFraktion11 "Auftragsmrder"
  73. #define sFraktion12 "Grove Street"
  74. #define sFraktion13 "Ballas"
  75. #define sFraktion14 "S.F Rifa"
  76. #define sFraktion15 "Los Chickos Malos"
  77. #define sFraktion16 "La Cosa Nostra"
  78. #define sFraktion17 "Yakuza"
  79.  
  80. //Dialoge
  81. #define DIALOG_REGISTER 1
  82. #define DIALOG_LOGIN 2
  83.  
  84. //Define
  85. #define STATS 3
  86.  
  87. //Variabelen
  88. new Variabele =1, Variabeleleer;
  89. new array[5];
  90.  
  91. //Betretbare gebuden
  92. new BSNein, BSNaus;
  93.  
  94.  
  95. //SCRIPT DEFINITION
  96. #if defined FILTERSCRIPT
  97.  
  98.  
  99. //SERVER_ANZEIGE_IM_CHAT_FENSTER
  100.  
  101. public OnFilterScriptInit()
  102. {
  103.     print("\n--------------------------------------");
  104.     print(" Gamemode 2L V.0.0.1");
  105.     print("--------------------------------------\n");
  106.     return 1;
  107. }
  108.  
  109. public OnFilterScriptExit()
  110. {
  111.     return 1;
  112. }
  113.  
  114. #else
  115.  
  116. main()
  117. {
  118.     print("\n----------------------------------");
  119.     print(" German/Roleplay");
  120.     print("----------------------------------\n");
  121. }
  122.  
  123. #endif
  124.  
  125. public OnGameModeInit()
  126. {
  127.  
  128.     //MYSQL
  129.     Connect_To_Database();
  130.     mysql_debug(1);
  131.  
  132.     //Geschfte nicht betretbar
  133.     DisableInteriorEnterExits();
  134.  
  135.     //ZIVI_SKINS
  136.     SetGameModeText("Blank Script");
  137.     AddPlayerClass(21,1761.2087,-1895.2740,13.5613,267.3274,0,0,0,0,0,0); // SPAWN
  138.     AddPlayerClass(22,1761.2087,-1895.2740,13.5613,267.3274,0,0,0,0,0,0); // SPAWN
  139.     AddPlayerClass(7,1761.2087,-1895.2740,13.5613,267.3274,0,0,0,0,0,0); // SPAWN
  140.  
  141.     //GEBUDEN BETRETBAR UND PICKUPS
  142.  
  143.     //Fahrzeuge
  144.     //LSPD_CARS
  145.     lspdcar[0]= AddStaticVehicle(596,1544.0330,-1659.3746,5.6110,90.1882,0,1); // LSPD Auto 0
  146.     lspdcar[1]= AddStaticVehicle(596,1570.2515,-1710.0615,5.6114,180.4794,0,1); // LSPD Auto 1
  147.     lspdcar[2]= AddStaticVehicle(596,1601.0912,-1688.1052,5.6121,269.1663,0,1); // LSPD Auto 2
  148.     lspdcar[3]= AddStaticVehicle(599,1591.5223,-1709.7393,6.0789,179.0553,0,1); // LSPD Ranger 3
  149.     lspdcar[4]= AddStaticVehicle(427,1529.1625,-1687.8181,6.0225,88.4949,0,1); // LSPD SWATWAGEN 4
  150.     lspdcar[5]= AddStaticVehicle(523,1586.1436,-1671.7510,5.4651,91.4611,0,0); // LSPD Motorrad 5
  151.  
  152.     //BSN
  153.     BSNein = CreatePickup(1239, 2,1199.3615,-919.6981,43.1108, -1);
  154.     BSNaus = CreatePickup(1239, 2,362.9138,-75.2113,1001.5078, -1);
  155.  
  156.     //3DTexte
  157.     Create3DTextLabel("Spawnpunkt:\n{FFFFFF}El Corona",GREEN, 1761.2087,-1895.2740,13.5613+0.5,40.0, 0, 0);
  158.  
  159.     printf("%d",Variabele);
  160.  
  161.     if(array[1] < array[2])
  162.     {
  163.         OnGameModeExit();
  164.     }
  165.     return 1;
  166. }
  167.  
  168. public minute()
  169. {
  170.  
  171.     return 1;
  172. }
  173.  
  174. public OnGameModeExit()
  175. {
  176.     return 1;
  177. }
  178.  
  179. public OnPlayerRequestClass(playerid, classid)
  180. {
  181.     if(GetPVarInt(playerid,"Eingeloggt") == 0) //Als erstes fragen wir ab ob der Spieler schon eingeloggt ist oder nicht, damit wir nicht bei jeder Skin Auswahl uns neu Einloggen mssen.
  182.     {
  183.         if(mysql_CheckAccount(playerid) == 0)//Wir berprfen ob der Account Existiert, falls nicht Zeigen wir den Dialog zum Registrieren.
  184.         {
  185.             SendClientMessage(playerid,BLUE,"________-> Willkommen auf auf meinem Server <-________");
  186.             SendClientMessage(playerid,ROT,"Dein Account wurde nicht gefunden, bitte Registriere dich!");
  187.             ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Bitte Gib ein Passwort an:","Register","Exit");
  188.         }
  189.         else if(mysql_CheckAccount(playerid) == 1)//Falls doch zeigen wir den Dialog zum Einloggen.
  190.         {
  191.             SendClientMessage(playerid,BLUE,"________-> Willkommen auf auf meinem Server <-________");
  192.             SendClientMessage(playerid,GELB,"Dein Account wurde gefunden, bitte Log dich nun ein!");
  193.             ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bitte gib dein Passwort ein:","Login","Abbrechen");
  194.         }
  195.     }
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerConnect(playerid)
  200. {
  201.     new Spielerdatei[64];
  202.     new name[MAX_PLAYER_NAME];
  203.     GetPlayerName(playerid,name,sizeof(name));
  204.     format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  205.     if(dini_Exists(Spielerdatei))
  206.     {
  207.         SendClientMessage(playerid,BLAU,"Herzlich willkommen zurck auf unserem Server");
  208.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden,bitte gib dein Passwort ein um dich Einzuloggen","LOGIN","Abbrechen");
  209.         return 1;
  210.     }
  211.     else
  212.     {
  213.     new string[100];
  214.     Variabeleleer =100;
  215.     SendClientMessage(playerid,GELB,"{00FF00}Herzlich {FEFEFE}Willkommen {FF000F}auf 2Live");
  216.     format(string,sizeof(string),"Wir sind mehr als %d. Spieler! ",Variabeleleer);
  217.     SendClientMessage(playerid,ROSA,string);
  218.     }
  219.     //Dialoge
  220.  
  221.     //Register/Login System
  222.     ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte whle dir ein Passwort um dir ein Account zu erstellen","Registrieren","Abbrechen");
  223.     return 1;
  224. }
  225.  
  226. public OnPlayerDisconnect(playerid, reason)
  227. {
  228.     SavePlayer(playerid);
  229.     DeletePVar(playerid,"Eigentloggt");
  230.     sSpieler[playerid][sLogin] = 0;
  231.     SpielerSpeichern(playerid);
  232.     return 1;
  233. }
  234.  
  235. public OnPlayerSpawn(playerid)
  236. {
  237.  
  238.  
  239.     if(IstSpielerInFraktion(playerid,17)) //Yakuza SPAWN
  240.     {
  241.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  242.         SetPlayerColor(playerid,BLAU);
  243.         SendClientMessage(playerid,BLAU,"Du bist als Gangster unterwegs");
  244.         GivePlayerWeapon(playerid,24,500);
  245.         return 1;
  246.     }
  247.  
  248.     if(IstSpielerInFraktion(playerid,16)) //La Cosa Nostra SPAWN
  249.     {
  250.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  251.         SetPlayerColor(playerid,BLAU);
  252.         SendClientMessage(playerid,BLAU,"Du bist als Gangster unterwegs");
  253.         GivePlayerWeapon(playerid,24,500);
  254.         return 1;
  255.     }
  256.  
  257.     if(IstSpielerInFraktion(playerid,15)) //Los Chickos Malos SPAWN
  258.     {
  259.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  260.         SetPlayerColor(playerid,BLAU);
  261.         SendClientMessage(playerid,BLAU,"Du bist als Gangster unterwegs");
  262.         GivePlayerWeapon(playerid,24,500);
  263.         return 1;
  264.     }
  265.  
  266.     if(IstSpielerInFraktion(playerid,14)) //S.F Rifa SPAWN
  267.     {
  268.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  269.         SetPlayerColor(playerid,BLAU);
  270.         SendClientMessage(playerid,BLAU,"Du bist als Gangster unterwegs");
  271.         GivePlayerWeapon(playerid,24,500);
  272.         return 1;
  273.     }
  274.  
  275.     if(IstSpielerInFraktion(playerid,13)) //Ballas SPAWN
  276.     {
  277.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  278.         SetPlayerColor(playerid,BLAU);
  279.         SendClientMessage(playerid,BLAU,"Du bist als Gangster unterwegs");
  280.         GivePlayerWeapon(playerid,24,500);
  281.         return 1;
  282.     }
  283.  
  284.     if(IstSpielerInFraktion(playerid,12)) //Grove Street SPAWN
  285.     {
  286.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  287.         SetPlayerColor(playerid,BLAU);
  288.         SendClientMessage(playerid,BLAU,"Du bist als Gangster unterwegs");
  289.         GivePlayerWeapon(playerid,24,500);
  290.         return 1;
  291.     }
  292.  
  293.     if(IstSpielerInFraktion(playerid,11)) //Auftragsmrder SPAWN
  294.     {
  295.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  296.         SetPlayerColor(playerid,BLAU);
  297.         SendClientMessage(playerid,BLAU,"Du bist als Auftragsmrder unterwegs");
  298.         GivePlayerWeapon(playerid,24,500);
  299.         return 1;
  300.     }
  301.  
  302.     if(IstSpielerInFraktion(playerid,10)) //Fahrschule SPAWN
  303.     {
  304.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  305.         SetPlayerColor(playerid,BLAU);
  306.         SendClientMessage(playerid,BLAU,"Du bist als Fahrschul-Lehrer unterwegs");
  307.         GivePlayerWeapon(playerid,24,500);
  308.         return 1;
  309.     }
  310.  
  311.     if(IstSpielerInFraktion(playerid,9)) //ADAC SPAWN
  312.     {
  313.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  314.         SetPlayerColor(playerid,BLAU);
  315.         SendClientMessage(playerid,BLAU,"Du bist als ADAC mitarbeiter unterwegs");
  316.         GivePlayerWeapon(playerid,24,500);
  317.         return 1;
  318.     }
  319.  
  320.     if(IstSpielerInFraktion(playerid,8)) //Feuerwehr SPAWN
  321.     {
  322.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  323.         SetPlayerColor(playerid,BLAU);
  324.         SendClientMessage(playerid,BLAU,"Du bist als Feuerwehrmann unterwegs");
  325.         GivePlayerWeapon(playerid,24,500);
  326.         return 1;
  327.     }
  328.  
  329.     if(IstSpielerInFraktion(playerid,7)) //SanNews-Reporter SPAWN
  330.     {
  331.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  332.         SetPlayerColor(playerid,BLAU);
  333.         SendClientMessage(playerid,BLAU,"Du bist als Reporter unterwegs");
  334.         GivePlayerWeapon(playerid,24,500);
  335.         return 1;
  336.     }
  337.  
  338.     if(IstSpielerInFraktion(playerid,6)) //Transport GmBH SPAWN
  339.     {
  340.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  341.         SetPlayerColor(playerid,BLAU);
  342.         SendClientMessage(playerid,BLAU,"Du bist als Trucker unterwegs");
  343.         GivePlayerWeapon(playerid,24,500);
  344.         return 1;
  345.     }
  346.  
  347.  
  348.     if(IstSpielerInFraktion(playerid,5)) //Sanitter SPAWN
  349.     {
  350.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  351.         SetPlayerColor(playerid,BLAU);
  352.         SendClientMessage(playerid,BLAU,"Du bist als Sanitter unterwegs");
  353.         GivePlayerWeapon(playerid,24,500);
  354.         return 1;
  355.     }
  356.  
  357.  
  358.     if(IstSpielerInFraktion(playerid,4)) //Ordnungsamt SPAWN
  359.     {
  360.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  361.         SetPlayerColor(playerid,BLAU);
  362.         SendClientMessage(playerid,BLAU,"Du bist als O-Amt unterwegs");
  363.         GivePlayerWeapon(playerid,24,500);
  364.         return 1;
  365.     }
  366.  
  367.  
  368.     if(IstSpielerInFraktion(playerid,3)) //LVPD SPAWN
  369.     {
  370.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  371.         SetPlayerColor(playerid,BLAU);
  372.         SendClientMessage(playerid,BLAU,"Du bist als LVPD unterwegs");
  373.         GivePlayerWeapon(playerid,24,500);
  374.         return 1;
  375.     }
  376.  
  377.  
  378.     if(IstSpielerInFraktion(playerid,2)) //SFPD SPAWN
  379.     {
  380.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  381.         SetPlayerColor(playerid,BLAU);
  382.         SendClientMessage(playerid,BLAU,"Du bist als SFPD unterwegs");
  383.         GivePlayerWeapon(playerid,24,500);
  384.         return 1;
  385.     }
  386.  
  387.  
  388.  
  389.     if(IstSpielerInFraktion(playerid,1)) //LSPD SPAWN
  390.     {
  391.         SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);
  392.         SetPlayerColor(playerid,BLAU);
  393.         SendClientMessage(playerid,BLAU,"Du bist als LSPD unterwegs");
  394.         GivePlayerWeapon(playerid,24,500);
  395.         return 1;
  396.     }
  397.  
  398.     //HIER IST DIE SPAWN CAMERA
  399.     SetPlayerVirtualWorld(playerid,0);
  400.     SetPlayerPos(playerid,1761.2087,-1895.2740,13.5613);//ZIVI SPAWN
  401.     SetPlayerFacingAngle(playerid,267.3274);//SPIELER SPAWNPUNKT RICHTUNG
  402.     return 1;
  403. }
  404.  
  405. public OnPlayerDeath(playerid, killerid, reason)
  406. {
  407.     SendClientMessage(playerid,ROT,"Du bist Tot");
  408.     return 1;
  409. }
  410.  
  411. public OnVehicleSpawn(vehicleid)
  412. {
  413.     return 1;
  414. }
  415.  
  416. public OnVehicleDeath(vehicleid, killerid)
  417. {
  418.     return 1;
  419. }
  420.  
  421. public OnPlayerText(playerid, text[])
  422. {
  423.     return 1;
  424. }
  425.  
  426. public OnPlayerCommandText(playerid, cmdtext[])
  427. {
  428.     //BEFEHLE
  429.     dcmd(heal,4,cmdtext);
  430.     dcmd(kick,4,cmdtext);
  431.     dcmd(makeadmin, 9, cmdtext);
  432.     dcmd(makeleader, 10, cmdtext);
  433.     return 1;
  434. }
  435. //DCMD BEFEHLE
  436. //Makeleader Befehl
  437. dcmd_makeleader(playerid,params[])
  438. {
  439.     new pid, frakid;
  440.     if(sscanf(params,"ud",pid,frakid))
  441.     {
  442.         return SendClientMessage(playerid,GELB,"Verwendung : /makeleader [ID] [Fraktions ID]");
  443.  
  444.     }
  445.     if(frakid > 17)
  446.     {
  447.        return SendClientMessage(playerid,ROT,"Es gibt nicht mehr als 17 Fraktionen");
  448.     }
  449.     if(IstSpielerAdmin(playerid, 5))
  450.     {
  451.     if(pid == INVALID_PLAYER_ID)
  452.     {
  453.         return SendClientMessage(playerid,ROT,"Ungltiger Spieler!");
  454.     }
  455.     if(IstSpielerInFraktion(pid,frakid) == frakid)
  456.     {
  457.         return SendClientMessage(playerid,ROT,"Der angegebene Spieler ist schon in der Fraktion!");
  458.     }
  459.     else
  460.     {
  461.         sSpieler[pid][Fraktion] = frakid;
  462.         SendClientMessage(pid,BLUE,"Du bist nun in einer Fraktion!");
  463.         SendClientMessage(pid,ORANGE,"Du hast den Spieler zu einer Fraktion eingeladen!");
  464.     }
  465.     }
  466.     else
  467.     {
  468.         return SendClientMessage(playerid,ROT,"Du bist kein Administrator!");
  469.     }
  470.     return 1;
  471. }
  472.  
  473. //Makeadmin Befehl
  474. dcmd_makeadmin(playerid, params[])
  475. {
  476.     new pid,level;
  477.     if(sscanf(params,"ud", pid, level))
  478.     {
  479.         return SendClientMessage(playerid, GELB,"Verwendung : /makeadmin [ID] [Level]");
  480.     }
  481.     if(IstSpielerAdmin(playerid, 5))
  482.     {
  483.     if(pid == INVALID_PLAYER_ID)
  484.     {
  485.         return SendClientMessage(playerid,ROT,"Ungltiger Spieler!");
  486.     }
  487.     if(IstSpielerAdmin(pid,level) == level)
  488.     {
  489.         return SendClientMessage(playerid, LILA,"Der Spieler hat schon das angegebene Adminlevel!");
  490.     }
  491.     else
  492.     {
  493.         sSpieler[pid][Adminlevel] = level;
  494.         SendClientMessage(pid, ORANGE, "Du bist nun ein Administrator!");
  495.         SendClientMessage(playerid,ROSA,"Du hast den angegeben Spieler zum Administrator gemacht!");
  496.     }
  497.     }
  498.     else
  499.     {
  500.         return SendClientMessage(playerid,ROT,"Du bist kein Administrator!");
  501.     }
  502.     return 1;
  503. }
  504.  
  505. //BEFEHL ZUM HEILEN
  506.  
  507.     dcmd_heal(playerid,params[])
  508.     {
  509.       new i;
  510.       if(strlen(params))
  511.           {
  512.               i = strval(params);
  513.               if(IsPlayerConnected(i))
  514.               {
  515.                   SetPlayerHealth(i,100.0);
  516.                   SendClientMessage(i,ROT,"Du wurdest geheilt");
  517.                   SendClientMessage(playerid,GREEN,"Du hast den Spieler erfolgreich geheilt");
  518.               }
  519.               else
  520.               {
  521.                  SendClientMessage(playerid,ROT,"Der spieler ist nicht Online");
  522.               }
  523.               }
  524.       return 1;
  525. }
  526.  
  527. //BEFEHL ZUM KICKEN
  528. dcmd_kick(playerid,params[])
  529. {
  530.     new pid, str[64];
  531.     if(sscanf(params, "uS(Kein Grund) [128]", pid, str))
  532.     return SendClientMessage(playerid,RED,"Befehl:/kick [id] [Grund]");
  533.     if(pid ==playerid) return SendClientMessage(playerid,ORANGE,"Du kannst dich nicht Selber kicken");
  534.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,ORANGE,"Der spieler ist nicht Online");
  535.     if(IsPlayerAdmin(playerid))
  536.     {
  537.     new Spieler[MAX_PLAYER_NAME], str2[128];
  538.     GetPlayerName(pid,Spieler,sizeof(Spieler));
  539.     format(str2,sizeof(str2),"%s wurde vom Server gekickt! Grund :%S",Spieler,str);
  540.     SendClientMessageToAll(ROT,str2);
  541.     Kick(pid);
  542.     }
  543.     else return SendClientMessage(playerid,RED,"Du bist kein Admin");
  544.     return 1;
  545. }
  546.  
  547. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  548. {
  549.     return 1;
  550. }
  551.  
  552. public OnPlayerExitVehicle(playerid, vehicleid)
  553. {
  554.     return 1;
  555. }
  556.  
  557. public OnPlayerStateChange(playerid, newstate, oldstate)
  558. {
  559.     if(newstate == PLAYER_STATE_DRIVER)
  560.     {
  561.     for(new i = 0; i<sizeof(lspdcar); i++)
  562.     {
  563.     if(GetPlayerVehicleID(playerid) == lspdcar[i])
  564.     {
  565.     if(IstSpielerInFraktion(playerid, 1))
  566.     {
  567.     }
  568.     else
  569.     {
  570.         RemovePlayerFromVehicle(playerid);
  571.         SendClientMessage(playerid,ROT,"Du bist kein Mitglied bei der LSPD");
  572.     }
  573.     }
  574.     }
  575.     }
  576.     return 1;
  577. }
  578.  
  579. public OnPlayerEnterCheckpoint(playerid)
  580. {
  581.     return 1;
  582. }
  583.  
  584. public OnPlayerLeaveCheckpoint(playerid)
  585. {
  586.     return 1;
  587. }
  588.  
  589. public OnPlayerEnterRaceCheckpoint(playerid)
  590. {
  591.     return 1;
  592. }
  593.  
  594. public OnPlayerLeaveRaceCheckpoint(playerid)
  595. {
  596.     return 1;
  597. }
  598.  
  599. public OnRconCommand(cmd[])
  600. {
  601.     return 1;
  602. }
  603.  
  604. public OnPlayerRequestSpawn(playerid)
  605. {
  606.     return 1;
  607. }
  608.  
  609. public OnObjectMoved(objectid)
  610. {
  611.     return 1;
  612. }
  613.  
  614. public OnPlayerObjectMoved(playerid, objectid)
  615. {
  616.     return 1;
  617. }
  618.  
  619. public OnPlayerPickUpPickup(playerid, pickupid)
  620. {
  621.     //SPAWNPUNKTE BEIM BETRETEN VOM GEBUDE
  622.  
  623.     //BSN
  624.     if(pickupid == BSNein)
  625.     {
  626.         SetPlayerPos(playerid,364.2925,-73.7120,1001.5078);
  627.         SetPlayerFacingAngle(playerid,309.6866);
  628.         SetPlayerInterior(playerid,10);
  629.     }
  630.     if(pickupid == BSNaus)
  631.     {
  632.         SetPlayerPos(playerid,1199.9718,-921.0089,43.1037);
  633.         SetPlayerFacingAngle(playerid,187.8334);
  634.         SetPlayerInterior(playerid,0);
  635.     }
  636.     return 1;
  637. }
  638.  
  639. public OnVehicleMod(playerid, vehicleid, componentid)
  640. {
  641.     return 1;
  642. }
  643.  
  644. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  645. {
  646.     return 1;
  647. }
  648.  
  649. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  650. {
  651.     return 1;
  652. }
  653.  
  654. public OnPlayerSelectedMenuRow(playerid, row)
  655. {
  656.     return 1;
  657. }
  658.  
  659. public OnPlayerExitedMenu(playerid)
  660. {
  661.     return 1;
  662. }
  663.  
  664. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  665. {
  666.     return 1;
  667. }
  668.  
  669. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  670. {
  671.     return 1;
  672. }
  673.  
  674. public OnRconLoginAttempt(ip[], password[], success)
  675. {
  676.     return 1;
  677. }
  678.  
  679. public OnPlayerUpdate(playerid)
  680. {
  681.     return 1;
  682. }
  683.  
  684. public OnPlayerStreamIn(playerid, forplayerid)
  685. {
  686.     return 1;
  687. }
  688.  
  689. public OnPlayerStreamOut(playerid, forplayerid)
  690. {
  691.     return 1;
  692. }
  693.  
  694. public OnVehicleStreamIn(vehicleid, forplayerid)
  695. {
  696.     return 1;
  697. }
  698.  
  699. public OnVehicleStreamOut(vehicleid, forplayerid)
  700. {
  701.     return 1;
  702. }
  703.  
  704. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  705. {
  706.     switch(dialogid)
  707.     {
  708.         case DIALOG_REGISTER:
  709.         {
  710.             if(response)
  711.             {
  712.                 if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
  713.                 {
  714.                     ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
  715.                     return 1;
  716.                 }
  717.                 else
  718.                 {
  719.                     CreateAccount(playerid, inputtext); //Account wird erstellt
  720.                     SetPVarInt(playerid,"Eingeloggt",1); //Die variable wird auf 1 gesetzt, damit wir nun die Skin Auswahl benutzen knnen ohne wieder nach unserem Passwort gefragt zu werden.
  721.                     SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
  722.                     return 1;
  723.                 }
  724.             }
  725.             else
  726.             {
  727.                 Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
  728.             }
  729.         }
  730.         case DIALOG_LOGIN:
  731.         {
  732.             if(response)
  733.             {
  734.                 if(strlen(inputtext) == 0)  // Wenn kein Passwort angegebene wurde
  735.                 {
  736.                     ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
  737.                     return 1;
  738.                 }
  739.                 else
  740.                 {
  741.                     new SpielerNamex[MAX_PLAYER_NAME];
  742.                     GetPlayerName(playerid, SpielerNamex, MAX_PLAYER_NAME);
  743.                     if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerNamex), true)) // Wir holen uns das Passwort aus der MySQL Datenbank und berprfen es mit dem angegebenen passwort.
  744.                     {
  745.                         SetPVarInt(playerid,"Eingeloggt",1); //Falls beide passwrter bereinstimmen wird die Variable auf 1 gesetzt damit wir die Skin auswahl benutzen knnen.
  746.                         LoadPlayer(playerid); //Der Spieler wird "geladen", speich es werden seine Daten aus der Datenbank geholt und in variablen gespeichert um diese im Skript zu verwenden.
  747.                         SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
  748.                         return 1;
  749.                     }
  750.                     else
  751.                     {
  752.                         //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt.
  753.                         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
  754.                         return 1;
  755.                     }
  756.                 }
  757.             }
  758.             else
  759.             {
  760.                 Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
  761.             }
  762.         }
  763.     }
  764.     if(dialogid == STATS)
  765.     {
  766.         if(response == 0)
  767.         {
  768.             return 1;
  769.         }
  770.         if(response == 1)
  771.         {
  772.             return 1;
  773.         }
  774.     }
  775.     //REGISTER SYSTEM
  776.     if(dialogid==DIALOG_LOGIN)
  777.     {
  778.         if(response==0)
  779.         {
  780.             SendClientMessage(playerid,BLAU,"Du hast den Login Vorgang abgebrochen");
  781.             Kick(playerid);
  782.             return 1;
  783.         }
  784.         if(response==1)
  785.         {
  786.             Login(playerid,MD5_Hash(inputtext));
  787.             return 1;
  788.         }
  789.     }
  790.     if(dialogid==DIALOG_REGISTER)
  791.     {
  792.         if(response==0)
  793.         {
  794.             SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen");
  795.             Kick(playerid);
  796.             return 1;
  797.         }
  798.         if(response==1)
  799.         {
  800.             if(!strlen(inputtext))
  801.             {
  802.                 SendClientMessage(playerid,BLAU,"Du hast kein Passwort eingegeben");
  803.                 ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte whle dir ein Passwort um dir ein Account zu erstellen","Registrieren","Abbrechen");
  804.                 return 1;
  805.             }
  806.             else
  807.             {
  808.                 Register(playerid,MD5_Hash(inputtext));
  809.                 return 1;
  810.             }
  811.         }
  812.     }
  813.  
  814.  
  815.     return 1;
  816. }
  817.  
  818. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  819. {
  820.     return 1;
  821. }
  822.  
  823. stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
  824. {
  825.     new query[128];
  826.     mysql_real_escape_string(Table, Table);
  827.     mysql_real_escape_string(Field, Field);
  828.     mysql_real_escape_string(Where, Where);
  829.     mysql_real_escape_string(Where2, Where2);
  830.     format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  831.     mysql_query(query);
  832.     return true;
  833. }
  834. stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
  835. {
  836.     new query[128];
  837.     mysql_real_escape_string(Table, Table);
  838.     mysql_real_escape_string(Field, Field);
  839.     mysql_real_escape_string(To, To);
  840.     mysql_real_escape_string(Where, Where);
  841.     mysql_real_escape_string(Where2, Where2);
  842.     format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  843.     mysql_query(query);
  844.     return true;
  845. }
  846. stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
  847. {
  848.     new query[128];
  849.     mysql_real_escape_string(Table, Table);
  850.     mysql_real_escape_string(Field, Field);
  851.     mysql_real_escape_string(Where, Where);
  852.     mysql_real_escape_string(Where2, Where2);
  853.     format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  854.     mysql_query(query);
  855.     return true;
  856. }
  857.  
  858.  
  859. stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
  860. {
  861.     new query[128], Float:sqlfloat;
  862.     mysql_real_escape_string(Table, Table);
  863.     mysql_real_escape_string(Field, Field);
  864.     mysql_real_escape_string(Where, Where);
  865.     mysql_real_escape_string(Is, Is);
  866.     format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  867.     mysql_query(query);
  868.     mysql_store_result();
  869.     mysql_fetch_float(sqlfloat);
  870.     mysql_free_result();
  871.     return sqlfloat;
  872. }
  873.  
  874. stock SpielerName(playerid)
  875. {
  876.     new name[MAX_PLAYER_NAME];
  877.     GetPlayerName(playerid,name,sizeof(name));
  878.     return name;
  879. }
  880.  
  881. // REGISTERPROGRAMM
  882. stock Register(playerid,key[])
  883. {
  884.     new Spielerdatei[64];
  885.     new name[MAX_PLAYER_NAME];
  886.     GetPlayerName(playerid,name,sizeof(name));
  887.     format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  888.     dini_Create(Spielerdatei);
  889.     dini_Set(Spielerdatei,"Passwort",key);
  890.     dini_IntSet(Spielerdatei,"Adminlevel",0);
  891.     dini_IntSet(Spielerdatei,"Level",0);
  892.     dini_IntSet(Spielerdatei,"Fraktion",0);
  893.     dini_IntSet(Spielerdatei,"Team",0);
  894.     SendClientMessage(playerid,BLAU,"Erfolgreich registriert");
  895.     SpielerReset(playerid);
  896.     SpawnPlayer(playerid);
  897.     return 1;
  898. }
  899.  
  900. stock Login(playerid,key[])
  901. {
  902.     new Spielerdatei[64];
  903.     new name[MAX_PLAYER_NAME];
  904.     GetPlayerName(playerid,name,sizeof(name));
  905.     format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  906.     if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
  907.     {
  908.         SendClientMessage(playerid,LILA,"Du hast dich erfolgreich eingeloggt");
  909.         SpielerLaden(playerid);
  910.     }
  911.     else
  912.     {
  913.         SendClientMessage(playerid,BLAU,"Du hast ein falsches Passwort eingegeben");
  914.         Kick(playerid);
  915.     }
  916.  
  917.     return 1;
  918. }
  919.  
  920. stock SpielerSpeichern(playerid)
  921. {
  922.     new Spieler[64];
  923.     new Sname[MAX_PLAYER_NAME];
  924.     GetPlayerName(playerid,Sname,sizeof(Sname));
  925.     format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
  926.     if(dini_Exists(Spieler))
  927.     {
  928.         dini_IntSet(Spieler,"Adminlevel",sSpieler[playerid][Adminlevel]);
  929.         dini_IntSet(Spieler,"Level",sSpieler[playerid][Level]);
  930.         dini_IntSet(Spieler,"Fraktion",sSpieler[playerid][Fraktion]);
  931.         dini_IntSet(Spieler,"Team",sSpieler[playerid][Team]);
  932.     }
  933.     return 1;
  934. }
  935.  
  936. stock SpielerLaden(playerid)
  937. {
  938.     new Spieler[64];
  939.     new Sname[MAX_PLAYER_NAME];
  940.     GetPlayerName(playerid,Sname,sizeof(Sname));
  941.     format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
  942.     SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
  943.     if(dini_Exists(Spieler))
  944.     {
  945.         SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
  946.         sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
  947.         sSpieler[playerid][Level] = dini_Int(Spieler,"Level");
  948.         sSpieler[playerid][Fraktion] = dini_Int(Spieler,"Fraktion");
  949.         sSpieler[playerid][Team] = dini_Int(Spieler,"Team");
  950.         sSpieler[playerid][sLogin] = 1;
  951.         SpawnPlayer(playerid);
  952.     }
  953.     return 1;
  954. }
  955.  
  956. stock SpielerReset(playerid)
  957. {
  958.     sSpieler[playerid][Adminlevel] = 0;
  959.     sSpieler[playerid][Level] = 0;
  960.     sSpieler[playerid][Fraktion] = 0;
  961.     sSpieler[playerid][Team] = 0;
  962.     return 1;
  963. }
  964.  
  965. //ADMIN_SYSTEM
  966.  
  967. stock IstSpielerAdmin(playerid,level)
  968. {
  969.     if(sSpieler[playerid][Adminlevel] >= level) return 1;
  970.     return 0;
  971. }
  972.  
  973.  
  974. //Fraktion
  975. stock IstSpielerInFraktion(playerid, fraktionsid)
  976. {
  977.     if(sSpieler[playerid][Fraktion] == fraktionsid) return 1;
  978.     return 0;
  979. }
  980.  
  981. //Login
  982.  
  983. stock IstSpielerLogged(playerid)
  984. {
  985.     if(sSpieler[playerid][sLogin] == 1) return 1;
  986.     return 0;
  987. }
  988.  
  989. //MYSQL
  990. stock Connect_To_Database()
  991. {
  992.     mysql_connect(SQL_HOST,SQL_USER,SQL_DB,SQL_PASS);
  993.     if(mysql_ping() == 1)
  994.     {
  995.         print("[MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
  996.         return true;
  997.     }
  998.     else
  999.     {
  1000.  
  1001.         print("[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  1002.         print("[MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
  1003.         mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
  1004.         if(mysql_ping() ==1)
  1005.         {
  1006.             print("[MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
  1007.             return true;
  1008.         }
  1009.         else
  1010.         {
  1011.             print("[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  1012.             print("[MYSQL] Der Server wird nun beendet!");
  1013.             SendRconCommand("exit");
  1014.             return true;
  1015.         }
  1016.     }
  1017. }
  1018.  
  1019. stock mysql_CheckAccount(playerid)
  1020. {
  1021.     new Query[128],Name[MAX_PLAYER_NAME];
  1022.     GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  1023.     mysql_real_escape_string(Name, Name);
  1024.     format(Query, sizeof(Query), "SELECT * FROM accounts WHERE Name = '%s'", Name);
  1025.     mysql_query(Query);
  1026.     mysql_store_result();
  1027.     return mysql_num_rows();
  1028. }
  1029.  
  1030. stock CreateAccount(playerid, Pass[])
  1031. {
  1032.     new query[256],Name[MAX_PLAYER_NAME];
  1033.     GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  1034.     mysql_real_escape_string(Name,Name);
  1035.     mysql_real_escape_string(Pass,Pass);
  1036.     format(query, sizeof(query),"INSERT INTO `accounts`(`Name`,`Passwort`) VALUES ('%s', '%s')", Name, Pass);
  1037.     mysql_query(query);
  1038.     return true;
  1039. }
  1040.  
  1041. stock mysql_ReturnPasswort(Name[])
  1042. {
  1043.     new query[130], Get[130];
  1044.     mysql_real_escape_string(Name, Name);
  1045.     format(query, 128, "SELECT `passwort` FROM `accounts`WHERE `Name`= '%s'", Name);
  1046.     mysql_query(query);
  1047.     mysql_store_result();
  1048.     mysql_fetch_row(Get);
  1049.     mysql_free_result();
  1050.     return Get;
  1051. }
  1052.  
  1053. stock LoadPlayer(playerid)
  1054. {
  1055.     if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
  1056.     {
  1057.         GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
  1058.         SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
  1059.         SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
  1060.         SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
  1061.         SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
  1062.     }
  1063.     return 1;
  1064. }
  1065.  
  1066. stock mysql_GetInt(Table[], Field[], Where[], Is[])
  1067. {
  1068.     new query[128];
  1069.     mysql_real_escape_string(Table, Table);
  1070.     mysql_real_escape_string(Field, Field);
  1071.     mysql_real_escape_string(Where, Where);
  1072.     mysql_real_escape_string(Is, Is);
  1073.     format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  1074.     mysql_query(query);
  1075.     mysql_store_result();
  1076.     new sqlint = mysql_fetch_int();
  1077.     mysql_free_result();
  1078.     return sqlint;
  1079. }
  1080.  
  1081. stock SavePlayer(playerid)
  1082. {
  1083.     if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir berprfen ob der Spieler berhaupt noch Connected ist und ob er nicht ein NPC ist.
  1084.     {
  1085.         if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
  1086.         {
  1087.             //Nun speichern wir die Daten in der Datenbank.
  1088.             mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
  1089.             mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
  1090.             mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
  1091.             mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
  1092.             mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
  1093.         }
  1094.     }
  1095.     return 1;
  1096. }
  1097.  
  1098.  
  1099. stock mysql_GetString(Table[], Field[], Where[], Is[])
  1100. {
  1101.     new query[128], Get[128];
  1102.     mysql_real_escape_string(Table, Table);
  1103.     mysql_real_escape_string(Field, Field);
  1104.     mysql_real_escape_string(Where, Where);
  1105.     mysql_real_escape_string(Is, Is);
  1106.     format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  1107.     mysql_query(query);
  1108.     mysql_store_result();
  1109.     mysql_fetch_row(Get);
  1110.     mysql_free_result();
  1111.     return Get;
  1112. }
  1113.  
  1114. //SSCANF BEFEHLE
  1115. stock sscanf(string[], format[], {Float,_}:...)
  1116. {
  1117.     #if defined isnull
  1118.         if (isnull(string))
  1119.     #else
  1120.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1121.     #endif
  1122.         {
  1123.             return format[0];
  1124.         }
  1125.     #pragma tabsize 4
  1126.     new
  1127.         formatPos = 0,
  1128.         stringPos = 0,
  1129.         paramPos = 2,
  1130.         paramCount = numargs(),
  1131.         delim = ' ';
  1132.     while (string[stringPos] && string[stringPos] <= ' ')
  1133.     {
  1134.         stringPos++;
  1135.     }
  1136.     while (paramPos < paramCount && string[stringPos])
  1137.     {
  1138.         switch (format[formatPos++])
  1139.         {
  1140.             case '\0':
  1141.             {
  1142.                 return 0;
  1143.             }
  1144.             case 'i', 'd':
  1145.             {
  1146.                 new
  1147.                     neg = 1,
  1148.                     num = 0,
  1149.                     ch = string[stringPos];
  1150.                 if (ch == '-')
  1151.                 {
  1152.                     neg = -1;
  1153.                     ch = string[++stringPos];
  1154.                 }
  1155.                 do
  1156.                 {
  1157.                     stringPos++;
  1158.                     if ('0' <= ch <= '9')
  1159.                     {
  1160.                         num = (num * 10) + (ch - '0');
  1161.                     }
  1162.                     else
  1163.                     {
  1164.                         return -1;
  1165.                     }
  1166.                 }
  1167.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1168.                 setarg(paramPos, 0, num * neg);
  1169.             }
  1170.             case 'h', 'x':
  1171.             {
  1172.                 new
  1173.                     num = 0,
  1174.                     ch = string[stringPos];
  1175.                 do
  1176.                 {
  1177.                     stringPos++;
  1178.                     switch (ch)
  1179.                     {
  1180.                         case 'x', 'X':
  1181.                         {
  1182.                             num = 0;
  1183.                             continue;
  1184.                         }
  1185.                         case '0' .. '9':
  1186.                         {
  1187.                             num = (num << 4) | (ch - '0');
  1188.                         }
  1189.                         case 'a' .. 'f':
  1190.                         {
  1191.                             num = (num << 4) | (ch - ('a' - 10));
  1192.                         }
  1193.                         case 'A' .. 'F':
  1194.                         {
  1195.                             num = (num << 4) | (ch - ('A' - 10));
  1196.                         }
  1197.                         default:
  1198.                         {
  1199.                             return -1;
  1200.                         }
  1201.                     }
  1202.                 }
  1203.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1204.                 setarg(paramPos, 0, num);
  1205.             }
  1206.             case 'c':
  1207.             {
  1208.                 setarg(paramPos, 0, string[stringPos++]);
  1209.             }
  1210.             case 'f':
  1211.             {
  1212.  
  1213.                 new changestr[16], changepos = 0, strpos = stringPos;
  1214.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  1215.                 {
  1216.                     changestr[changepos++] = string[strpos++];
  1217.                     }
  1218.                 changestr[changepos] = '\0';
  1219.                 setarg(paramPos,0,_:floatstr(changestr));
  1220.             }
  1221.             case 'p':
  1222.             {
  1223.                 delim = format[formatPos++];
  1224.                 continue;
  1225.             }
  1226.             case '\'':
  1227.             {
  1228.                 new
  1229.                     end = formatPos - 1,
  1230.                     ch;
  1231.                 while ((ch = format[++end]) && ch != '\'') {}
  1232.                 if (!ch)
  1233.                 {
  1234.                     return -1;
  1235.                 }
  1236.                 format[end] = '\0';
  1237.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1238.                 {
  1239.                     if (format[end + 1])
  1240.                     {
  1241.                         return -1;
  1242.                     }
  1243.                     return 0;
  1244.                 }
  1245.                 format[end] = '\'';
  1246.                 stringPos = ch + (end - formatPos);
  1247.                 formatPos = end + 1;
  1248.             }
  1249.             case 'u':
  1250.             {
  1251.                 new
  1252.                     end = stringPos - 1,
  1253.                     id = 0,
  1254.                     bool:num = true,
  1255.                     ch;
  1256.                 while ((ch = string[++end]) && ch != delim)
  1257.                 {
  1258.                     if (num)
  1259.                     {
  1260.                         if ('0' <= ch <= '9')
  1261.                         {
  1262.                             id = (id * 10) + (ch - '0');
  1263.                         }
  1264.                         else
  1265.                         {
  1266.                             num = false;
  1267.                         }
  1268.                     }
  1269.                 }
  1270.                 if (num && IsPlayerConnected(id))
  1271.                 {
  1272.                     setarg(paramPos, 0, id);
  1273.                 }
  1274.                 else
  1275.                 {
  1276.                     #if !defined foreach
  1277.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1278.                         #define __SSCANF_FOREACH__
  1279.                     #endif
  1280.                     string[end] = '\0';
  1281.                     num = false;
  1282.                     new
  1283.                         name[MAX_PLAYER_NAME];
  1284.                     id = end - stringPos;
  1285.                     foreach (Player, playerid)
  1286.                     {
  1287.                         GetPlayerName(playerid, name, sizeof (name));
  1288.                         if (!strcmp(name, string[stringPos], true, id))
  1289.                         {
  1290.                             setarg(paramPos, 0, playerid);
  1291.                             num = true;
  1292.                             break;
  1293.                         }
  1294.                     }
  1295.                     if (!num)
  1296.                     {
  1297.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  1298.                     }
  1299.                     string[end] = ch;
  1300.                     #if defined __SSCANF_FOREACH__
  1301.                         #undef foreach
  1302.                         #undef __SSCANF_FOREACH__
  1303.                     #endif
  1304.                 }
  1305.                 stringPos = end;
  1306.             }
  1307.             case 's', 'z':
  1308.             {
  1309.                 new
  1310.                     i = 0,
  1311.                     ch;
  1312.                 if (format[formatPos])
  1313.                 {
  1314.                     while ((ch = string[stringPos++]) && ch != delim)
  1315.                     {
  1316.                         setarg(paramPos, i++, ch);
  1317.                     }
  1318.                     if (!i)
  1319.                     {
  1320.                         return -1;
  1321.                     }
  1322.                 }
  1323.                 else
  1324.                 {
  1325.                     while ((ch = string[stringPos++]))
  1326.                     {
  1327.                         setarg(paramPos, i++, ch);
  1328.                     }
  1329.                 }
  1330.                 stringPos--;
  1331.                 setarg(paramPos, i, '\0');
  1332.             }
  1333.             default:
  1334.             {
  1335.                 continue;
  1336.             }
  1337.         }
  1338.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1339.         {
  1340.             stringPos++;
  1341.         }
  1342.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1343.         {
  1344.             stringPos++;
  1345.         }
  1346.         paramPos++;
  1347.     }
  1348.     do
  1349.     {
  1350.         if ((delim = format[formatPos++]) > ' ')
  1351.         {
  1352.             if (delim == '\'')
  1353.             {
  1354.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  1355.             }
  1356.             else if (delim != 'z')
  1357.             {
  1358.                 return delim;
  1359.             }
  1360.         }
  1361.     }
  1362.     while (delim > ' ');
  1363.     return 0;
  1364. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement