Advertisement
Guest User

Untitled

a guest
May 9th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 51.94 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 MYSQL_USER "root"
  14. #define MYSQL_DB ""
  15. #define MYSQL_PASS ""
  16. //DCMD
  17. #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
  18.  
  19. //ENUMS
  20. enum SpielerDaten
  21. {
  22. Adminlevel,
  23. Level,
  24. Fraktion,
  25. Team,
  26. sLogin,
  27. pName[MAX_PLAYER_NAME],
  28. pLevel,
  29. pGeld,
  30. pKills,
  31. pTode,
  32. Float:pHealth
  33. }
  34.  
  35. new SpielerInfo[MAX_PLAYERS][SpielerDaten];
  36.  
  37. new sSpieler[MAX_PLAYERS][SpielerDaten];
  38.  
  39. //Fahrzeuge
  40. new lspdcar[6];
  41.  
  42. //TIMER
  43.  
  44. forward minute();
  45.  
  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. if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName(playerid)), true)) // Wir holen uns das Passwort aus der MySQL Datenbank und berprfen es mit dem angegebenen passwort.
  742. {
  743. SetPVarInt(playerid,"Eingeloggt",1); //Falls beide passwrter bereinstimmen wird die Variable auf 1 gesetzt damit wir die Skin auswahl benutzen knnen.
  744. 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.
  745. SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
  746. return 1;
  747. }
  748. else
  749. {
  750. //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt.
  751. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
  752. return 1;
  753. }
  754. }
  755. }
  756. else
  757. {
  758. Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
  759. }
  760. }
  761. }
  762. return 1;
  763. }
  764.  
  765.  
  766.  
  767.  
  768. if(dialogid == STATS)
  769. {
  770. if(response == 0)
  771. {
  772. return 1;
  773. }
  774. if(response == 1)
  775. {
  776. return 1;
  777. }
  778. }
  779. //REGISTER SYSTEM
  780. if(dialogid==DIALOG_LOGIN)
  781. {
  782. if(response==0)
  783. {
  784. SendClientMessage(playerid,BLAU,"Du hast den Login Vorgang abgebrochen");
  785. Kick(playerid);
  786. return 1;
  787. }
  788. if(response==1)
  789. {
  790. Login(playerid,MD5_Hash(inputtext));
  791. return 1;
  792. }
  793. }
  794. if(dialogid==DIALOG_REGISTER)
  795. {
  796. if(response==0)
  797. {
  798. SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen");
  799. Kick(playerid);
  800. return 1;
  801. }
  802. if(response==1)
  803. {
  804. if(!strlen(inputtext))
  805. {
  806. SendClientMessage(playerid,BLAU,"Du hast kein Passwort eingegeben");
  807. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte whle dir ein Passwort um dir ein Account zu erstellen","Registrieren","Abbrechen");
  808. return 1;
  809. }
  810. else
  811. {
  812. Register(playerid,MD5_Hash(inputtext));
  813. return 1;
  814. }
  815. }
  816. }
  817. return 1;
  818. }
  819. }
  820.  
  821. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  822. {
  823. return 1;
  824. }
  825.  
  826. stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
  827. {
  828. new query[128];
  829. mysql_real_escape_string(Table, Table);
  830. mysql_real_escape_string(Field, Field);
  831. mysql_real_escape_string(Where, Where);
  832. mysql_real_escape_string(Where2, Where2);
  833. format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  834. mysql_query(query);
  835. return true;
  836. }
  837. stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
  838. {
  839. new query[128];
  840. mysql_real_escape_string(Table, Table);
  841. mysql_real_escape_string(Field, Field);
  842. mysql_real_escape_string(To, To);
  843. mysql_real_escape_string(Where, Where);
  844. mysql_real_escape_string(Where2, Where2);
  845. format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  846. mysql_query(query);
  847. return true;
  848. }
  849. stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
  850. {
  851. new query[128];
  852. mysql_real_escape_string(Table, Table);
  853. mysql_real_escape_string(Field, Field);
  854. mysql_real_escape_string(Where, Where);
  855. mysql_real_escape_string(Where2, Where2);
  856. format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  857. mysql_query(query);
  858. return true;
  859. }
  860.  
  861. // mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
  862.  
  863.  
  864. stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
  865. {
  866. new query[128], Float:sqlfloat;
  867. mysql_real_escape_string(Table, Table);
  868. mysql_real_escape_string(Field, Field);
  869. mysql_real_escape_string(Where, Where);
  870. mysql_real_escape_string(Is, Is);
  871. format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  872. mysql_query(query);
  873. mysql_store_result();
  874. mysql_fetch_float(sqlfloat);
  875. mysql_free_result();
  876. return sqlfloat;
  877. }
  878.  
  879. stock SpielerName(playerid)
  880. {
  881. new name[MAX_PLAYER_NAME];
  882. GetPlayerName(playerid,name,sizeof(name));
  883. return name;
  884. }
  885.  
  886. // REGISTERPROGRAMM
  887. stock Register(playerid,key[])
  888. {
  889. new Spielerdatei[64];
  890. new name[MAX_PLAYER_NAME];
  891. GetPlayerName(playerid,name,sizeof(name));
  892. format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  893. dini_Create(Spielerdatei);
  894. dini_Set(Spielerdatei,"Passwort",key);
  895. dini_IntSet(Spielerdatei,"Adminlevel",0);
  896. dini_IntSet(Spielerdatei,"Level",0);
  897. dini_IntSet(Spielerdatei,"Fraktion",0);
  898. dini_IntSet(Spielerdatei,"Team",0);
  899. SendClientMessage(playerid,BLAU,"Erfolgreich registriert");
  900. SpielerReset(playerid);
  901. SpawnPlayer(playerid);
  902. return 1;
  903. }
  904.  
  905. stock Login(playerid,key[])
  906. {
  907. new Spielerdatei[64];
  908. new name[MAX_PLAYER_NAME];
  909. GetPlayerName(playerid,name,sizeof(name));
  910. format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  911. if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
  912. {
  913. SendClientMessage(playerid,LILA,"Du hast dich erfolgreich eingeloggt");
  914. SpielerLaden(playerid);
  915. }
  916. else
  917. {
  918. SendClientMessage(playerid,BLAU,"Du hast ein falsches Passwort eingegeben");
  919. Kick(playerid);
  920. }
  921.  
  922. return 1;
  923. }
  924.  
  925. stock SpielerSpeichern(playerid)
  926. {
  927. new Spieler[64];
  928. new Sname[MAX_PLAYER_NAME];
  929. GetPlayerName(playerid,Sname,sizeof(Sname));
  930. format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
  931. if(dini_Exists(Spieler))
  932. {
  933. dini_IntSet(Spieler,"Adminlevel",sSpieler[playerid][Adminlevel]);
  934. dini_IntSet(Spieler,"Level",sSpieler[playerid][Level]);
  935. dini_IntSet(Spieler,"Fraktion",sSpieler[playerid][Fraktion]);
  936. dini_IntSet(Spieler,"Team",sSpieler[playerid][Team]);
  937. }
  938. return 1;
  939. }
  940.  
  941. stock SpielerLaden(playerid)
  942. {
  943. new Spieler[64];
  944. new Sname[MAX_PLAYER_NAME];
  945. GetPlayerName(playerid,Sname,sizeof(Sname));
  946. format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
  947. SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
  948. if(dini_Exists(Spieler))
  949. {
  950. SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
  951. sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
  952. sSpieler[playerid][Level] = dini_Int(Spieler,"Level");
  953. sSpieler[playerid][Fraktion] = dini_Int(Spieler,"Fraktion");
  954. sSpieler[playerid][Team] = dini_Int(Spieler,"Team");
  955. sSpieler[playerid][sLogin] = 1;
  956. SpawnPlayer(playerid);
  957. }
  958. return 1;
  959. }
  960.  
  961. stock SpielerReset(playerid)
  962. {
  963. sSpieler[playerid][Adminlevel] = 0;
  964. sSpieler[playerid][Level] = 0;
  965. sSpieler[playerid][Fraktion] = 0;
  966. sSpieler[playerid][Team] = 0;
  967. return 1;
  968. }
  969.  
  970. //ADMIN_SYSTEM
  971.  
  972. stock IstSpielerAdmin(playerid,level)
  973. {
  974. if(sSpieler[playerid][Adminlevel] >= level) return 0;
  975. return 0;
  976. }
  977.  
  978.  
  979. //Fraktion
  980. stock IstSpielerInFraktion(playerid, fraktionsid)
  981. {
  982. if(sSpieler[playerid][Fraktion] == fraktionsid) return 0;
  983. return 0;
  984. }
  985.  
  986. //Login
  987.  
  988. stock IstSpielerLogged(playerid)
  989. {
  990. if(sSpieler[playerid][sLogin] == 1) return 1;
  991. return 0;
  992. }
  993.  
  994. //MYSQL
  995. stock Connect_To_Database()
  996. {
  997. mysql_connect(SQL_HOST,SQL_USER,SQL_DATE,SQL_PASS);
  998. if(mysql_ping() == 1)
  999. {
  1000. print("[MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
  1001. return true;
  1002. }
  1003. else
  1004. {
  1005.  
  1006. print("[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  1007. print("[MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
  1008. mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
  1009. if(mysql_ping() ==1)
  1010. {
  1011. print("[MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
  1012. return true;
  1013. }
  1014. else
  1015. {
  1016. print"[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  1017. print"[MYSQL] Der Server wird nun beendet!");
  1018. SendRconCommand("exit");
  1019. return true;
  1020. }
  1021. }
  1022. }
  1023.  
  1024. stock mysql_CheckAccount(playerid)
  1025. {
  1026. new Query[128],Name[MAX_PLAYER_NAME],count;
  1027. GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  1028. mysql_real_escape_string(Name, Name);
  1029. format(Query, sizeof(Query), "SELECT * FROM `accounts`WHERE `Name` = '%s'", Name);
  1030. mysql_query(Query);
  1031. mysql_store_result();
  1032. count = mysql_num_row();
  1033. mysql_fre_result();
  1034. return count;
  1035.  
  1036. }
  1037.  
  1038. stock CreateAccount(playerid, Pass[])
  1039. {
  1040. new query[256],Name[MAX_PLAYER_NAME];
  1041. GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  1042. mysql_real_escape_string(Name,Name);
  1043. mysql_real_escape_string(pass,pass);
  1044. format(query, sizeof(query),"INSERT INTO `accounts`(`Name`,`Passwort`) VALUES ('%s', '%s')", Name, pass);
  1045. mysql_query(query);
  1046. return true;
  1047. }
  1048.  
  1049. stock mysql_ReturnPasswort(Name[])
  1050. {
  1051. new query[130], Get[130];
  1052. mysql_real_escape_string(Name, Name);
  1053. format(query, 128, "SELECT `passwort` FROM `accounts`WHERE `Name`= '%s'", Name);
  1054. mysql_query(query);
  1055. mysql_store_result();
  1056. mysql_fetch_row(Get);
  1057. mysql_free_result();
  1058. return Get;
  1059. }
  1060.  
  1061. stock LoadPlayer(playerid)
  1062. {
  1063. if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
  1064. {
  1065. GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
  1066. SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
  1067. SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
  1068. SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
  1069. SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
  1070. }
  1071. return 1;
  1072. }
  1073.  
  1074. stock mysql_GetInt(Table[], Field[], Where[], Is[])
  1075. {
  1076. new query[128];
  1077. mysql_real_escape_string(Table, Table);
  1078. mysql_real_escape_string(Field, Field);
  1079. mysql_real_escape_string(Where, Where);
  1080. mysql_real_escape_string(Is, Is);
  1081. format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  1082. mysql_query(query);
  1083. mysql_store_result();
  1084. new sqlint = mysql_fetch_int();
  1085. mysql_free_result();
  1086. return sqlint;
  1087. }
  1088. mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
  1089.  
  1090. stock SavePlayer(playerid)
  1091. {
  1092. if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir berprfen ob der Spieler berhaupt noch Connected ist und ob er nicht ein NPC ist.
  1093. {
  1094. if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
  1095. {
  1096. //Nun speichern wir die Daten in der Datenbank.
  1097. mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
  1098. mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
  1099. mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
  1100. mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
  1101. mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
  1102. }
  1103. }
  1104. return 1;
  1105. }
  1106.  
  1107.  
  1108. stock mysql_GetString(Table[], Field[], Where[], Is[])
  1109. {
  1110. new query[128], Get[128];
  1111. mysql_real_escape_string(Table, Table);
  1112. mysql_real_escape_string(Field, Field);
  1113. mysql_real_escape_string(Where, Where);
  1114. mysql_real_escape_string(Is, Is);
  1115. format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  1116. mysql_query(query);
  1117. mysql_store_result();
  1118. mysql_fetch_row(Get);
  1119. mysql_free_result();
  1120. return Get;
  1121. }
  1122.  
  1123. //SSCANF BEFEHLE
  1124. stock sscanf(string[], format[], {Float,_}:...)
  1125. {
  1126. #if defined isnull
  1127. if (isnull(string))
  1128. #else
  1129. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1130. #endif
  1131. {
  1132. return format[0];
  1133. }
  1134. #pragma tabsize 4
  1135. new
  1136. formatPos = 0,
  1137. stringPos = 0,
  1138. paramPos = 2,
  1139. paramCount = numargs(),
  1140. delim = ' ';
  1141. while (string[stringPos] && string[stringPos] <= ' ')
  1142. {
  1143. stringPos++;
  1144. }
  1145. while (paramPos < paramCount && string[stringPos])
  1146. {
  1147. switch (format[formatPos++])
  1148. {
  1149. case '\0':
  1150. {
  1151. return 0;
  1152. }
  1153. case 'i', 'd':
  1154. {
  1155. new
  1156. neg = 1,
  1157. num = 0,
  1158. ch = string[stringPos];
  1159. if (ch == '-')
  1160. {
  1161. neg = -1;
  1162. ch = string[++stringPos];
  1163. }
  1164. do
  1165. {
  1166. stringPos++;
  1167. if ('0' <= ch <= '9')
  1168. {
  1169. num = (num * 10) + (ch - '0');
  1170. }
  1171. else
  1172. {
  1173. return -1;
  1174. }
  1175. }
  1176. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1177. setarg(paramPos, 0, num * neg);
  1178. }
  1179. case 'h', 'x':
  1180. {
  1181. new
  1182. num = 0,
  1183. ch = string[stringPos];
  1184. do
  1185. {
  1186. stringPos++;
  1187. switch (ch)
  1188. {
  1189. case 'x', 'X':
  1190. {
  1191. num = 0;
  1192. continue;
  1193. }
  1194. case '0' .. '9':
  1195. {
  1196. num = (num << 4) | (ch - '0');
  1197. }
  1198. case 'a' .. 'f':
  1199. {
  1200. num = (num << 4) | (ch - ('a' - 10));
  1201. }
  1202. case 'A' .. 'F':
  1203. {
  1204. num = (num << 4) | (ch - ('A' - 10));
  1205. }
  1206. default:
  1207. {
  1208. return -1;
  1209. }
  1210. }
  1211. }
  1212. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1213. setarg(paramPos, 0, num);
  1214. }
  1215. case 'c':
  1216. {
  1217. setarg(paramPos, 0, string[stringPos++]);
  1218. }
  1219. case 'f':
  1220. {
  1221.  
  1222. new changestr[16], changepos = 0, strpos = stringPos;
  1223. while(changepos < 16 && string[strpos] && string[strpos] != delim)
  1224. {
  1225. changestr[changepos++] = string[strpos++];
  1226. }
  1227. changestr[changepos] = '\0';
  1228. setarg(paramPos,0,_:floatstr(changestr));
  1229. }
  1230. case 'p':
  1231. {
  1232. delim = format[formatPos++];
  1233. continue;
  1234. }
  1235. case '\'':
  1236. {
  1237. new
  1238. end = formatPos - 1,
  1239. ch;
  1240. while ((ch = format[++end]) && ch != '\'') {}
  1241. if (!ch)
  1242. {
  1243. return -1;
  1244. }
  1245. format[end] = '\0';
  1246. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1247. {
  1248. if (format[end + 1])
  1249. {
  1250. return -1;
  1251. }
  1252. return 0;
  1253. }
  1254. format[end] = '\'';
  1255. stringPos = ch + (end - formatPos);
  1256. formatPos = end + 1;
  1257. }
  1258. case 'u':
  1259. {
  1260. new
  1261. end = stringPos - 1,
  1262. id = 0,
  1263. bool:num = true,
  1264. ch;
  1265. while ((ch = string[++end]) && ch != delim)
  1266. {
  1267. if (num)
  1268. {
  1269. if ('0' <= ch <= '9')
  1270. {
  1271. id = (id * 10) + (ch - '0');
  1272. }
  1273. else
  1274. {
  1275. num = false;
  1276. }
  1277. }
  1278. }
  1279. if (num && IsPlayerConnected(id))
  1280. {
  1281. setarg(paramPos, 0, id);
  1282. }
  1283. else
  1284. {
  1285. #if !defined foreach
  1286. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1287. #define __SSCANF_FOREACH__
  1288. #endif
  1289. string[end] = '\0';
  1290. num = false;
  1291. new
  1292. name[MAX_PLAYER_NAME];
  1293. id = end - stringPos;
  1294. foreach (Player, playerid)
  1295. {
  1296. GetPlayerName(playerid, name, sizeof (name));
  1297. if (!strcmp(name, string[stringPos], true, id))
  1298. {
  1299. setarg(paramPos, 0, playerid);
  1300. num = true;
  1301. break;
  1302. }
  1303. }
  1304. if (!num)
  1305. {
  1306. setarg(paramPos, 0, INVALID_PLAYER_ID);
  1307. }
  1308. string[end] = ch;
  1309. #if defined __SSCANF_FOREACH__
  1310. #undef foreach
  1311. #undef __SSCANF_FOREACH__
  1312. #endif
  1313. }
  1314. stringPos = end;
  1315. }
  1316. case 's', 'z':
  1317. {
  1318. new
  1319. i = 0,
  1320. ch;
  1321. if (format[formatPos])
  1322. {
  1323. while ((ch = string[stringPos++]) && ch != delim)
  1324. {
  1325. setarg(paramPos, i++, ch);
  1326. }
  1327. if (!i)
  1328. {
  1329. return -1;
  1330. }
  1331. }
  1332. else
  1333. {
  1334. while ((ch = string[stringPos++]))
  1335. {
  1336. setarg(paramPos, i++, ch);
  1337. }
  1338. }
  1339. stringPos--;
  1340. setarg(paramPos, i, '\0');
  1341. }
  1342. default:
  1343. {
  1344. continue;
  1345. }
  1346. }
  1347. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1348. {
  1349. stringPos++;
  1350. }
  1351. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1352. {
  1353. stringPos++;
  1354. }
  1355. paramPos++;
  1356. }
  1357. do
  1358. {
  1359. if ((delim = format[formatPos++]) > ' ')
  1360. {
  1361. if (delim == '\'')
  1362. {
  1363. while ((delim = format[formatPos++]) && delim != '\'') {}
  1364. }
  1365. else if (delim != 'z')
  1366. {
  1367. return delim;
  1368. }
  1369. }
  1370. }
  1371. while (delim > ' ');
  1372. return 0;
  1373. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement