Advertisement
Guest User

by DJ_Deagle

a guest
Jan 27th, 2013
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.95 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <ocmd>
  5.  
  6. #define DIALOG_ESSEN (1)
  7.  
  8. #define COLOR_LIGHTRED 0xFF6347AA
  9. #define COLOR_LIGHTBLUE 0x33CCFFAA
  10. #define COLOR_LIGHTGREEN 0x9ACD32AA
  11.  
  12. public OnFilterScriptInit()
  13. {
  14. print(" ");
  15. print(" DriveIn-System by DJ_Deagle!");
  16. print(" ");
  17. LoadBSN();
  18. CreatePickup(1239,1,1213.1361,-903.2743,42.6933);
  19. Create3DTextLabel("Tippe: /drivein",COLOR_LIGHTRED,1213.1361,-903.2743,42.6933,5,0);
  20. return 1;
  21. }
  22.  
  23. public OnFilterScriptExit()
  24. {
  25. return 1;
  26. }
  27.  
  28. ocmd:gotobsn(playerid,params[])
  29. {
  30. SetPlayerPos(playerid,1234.6999512,-932.7000122,42.4000015);
  31. return 1;
  32. }
  33.  
  34. ocmd:drivein(playerid,params[])
  35. {
  36. if(IsPlayerInAnyVehicle(playerid))
  37. {
  38. if(IsPlayerInRangeOfPoint(playerid,5,1213.1361,-903.2743,42.6933))
  39. {
  40. ShowPlayerDialog(playerid,DIALOG_ESSEN,DIALOG_STYLE_LIST,"BSN - DriveIn","Kleiner Hamburger (5$)\nKleiner Cheeseburger (5$)\nGroßer Hamburger (10$)\nGroßer Cheeseburger (10$)\nGroßer Hamburger mit Getränk (12$)\
  41. \nGroßer Cheeseburger mit Getränk (12$)\nGetränk (2$)","Kaufen","Abbrechen");
  42. }
  43. }
  44. return 1;
  45. }
  46.  
  47. ocmd:sethp(playerid,params[])
  48. {
  49. if(IsPlayerConnected(playerid))
  50. {
  51. new pID,hp;
  52. if(sscanf(params,"ui",pID,hp))return SendClientMessage(playerid,COLOR_LIGHTRED,"Benutze: /sethp [Spieler-ID] [Anzahl HP]");
  53. {
  54. new string[64];
  55. SetPlayerHealth(pID,hp);
  56. format(string,sizeof(string),"Du setzt deine HP auf %d!",hp);
  57. SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
  58. return 1;
  59. }
  60. }
  61. return 1;
  62. }
  63.  
  64. ocmd:givemoney(playerid,params[])
  65. {
  66. if(IsPlayerConnected(playerid))
  67. {
  68. new pID,money;
  69. if(sscanf(params,"ui",pID,money))return SendClientMessage(playerid,COLOR_LIGHTRED,"Benutze: /givemoney [Spieler-ID] [Betrag]");
  70. {
  71. GivePlayerMoney(pID,money);
  72. return 1;
  73. }
  74. }
  75. return 1;
  76. }
  77.  
  78. ocmd:myhealth(playerid,params[])
  79. {
  80. new string[64],Float:HP;
  81. GetPlayerHealth(playerid,HP);
  82. format(string,sizeof(string),"Du hast %f HP!",HP);
  83. SendClientMessage(playerid,COLOR_LIGHTGREEN,string);
  84. return 1;
  85. }
  86.  
  87. public OnPlayerRequestClass(playerid, classid)
  88. {
  89. return 1;
  90. }
  91.  
  92. public OnPlayerConnect(playerid)
  93. {
  94. RemoveBuildings(playerid);
  95. return 1;
  96. }
  97.  
  98. public OnPlayerDisconnect(playerid, reason)
  99. {
  100. return 1;
  101. }
  102.  
  103. public OnPlayerSpawn(playerid)
  104. {
  105. return 1;
  106. }
  107.  
  108. public OnPlayerDeath(playerid, killerid, reason)
  109. {
  110. return 1;
  111. }
  112.  
  113. public OnVehicleSpawn(vehicleid)
  114. {
  115. return 1;
  116. }
  117.  
  118. public OnVehicleDeath(vehicleid, killerid)
  119. {
  120. return 1;
  121. }
  122.  
  123. public OnPlayerText(playerid, text[])
  124. {
  125. return 1;
  126. }
  127.  
  128. public OnPlayerCommandText(playerid, cmdtext[])
  129. {
  130. return 1;
  131. }
  132.  
  133. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  134. {
  135. return 1;
  136. }
  137.  
  138. public OnPlayerExitVehicle(playerid, vehicleid)
  139. {
  140. return 1;
  141. }
  142.  
  143. public OnPlayerStateChange(playerid, newstate, oldstate)
  144. {
  145. return 1;
  146. }
  147.  
  148. public OnPlayerEnterCheckpoint(playerid)
  149. {
  150. return 1;
  151. }
  152.  
  153. public OnPlayerLeaveCheckpoint(playerid)
  154. {
  155. return 1;
  156. }
  157.  
  158. public OnPlayerEnterRaceCheckpoint(playerid)
  159. {
  160. return 1;
  161. }
  162.  
  163. public OnPlayerLeaveRaceCheckpoint(playerid)
  164. {
  165. return 1;
  166. }
  167.  
  168. public OnRconCommand(cmd[])
  169. {
  170. return 1;
  171. }
  172.  
  173. public OnPlayerRequestSpawn(playerid)
  174. {
  175. return 1;
  176. }
  177.  
  178. public OnObjectMoved(objectid)
  179. {
  180. return 1;
  181. }
  182.  
  183. public OnPlayerObjectMoved(playerid, objectid)
  184. {
  185. return 1;
  186. }
  187.  
  188. public OnPlayerPickUpPickup(playerid, pickupid)
  189. {
  190. return 1;
  191. }
  192.  
  193. public OnVehicleMod(playerid, vehicleid, componentid)
  194. {
  195. return 1;
  196. }
  197.  
  198. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  199. {
  200. return 1;
  201. }
  202.  
  203. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  204. {
  205. return 1;
  206. }
  207.  
  208. public OnPlayerSelectedMenuRow(playerid, row)
  209. {
  210. return 1;
  211. }
  212.  
  213. public OnPlayerExitedMenu(playerid)
  214. {
  215. return 1;
  216. }
  217.  
  218. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  219. {
  220. return 1;
  221. }
  222.  
  223. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  224. {
  225. return 1;
  226. }
  227.  
  228. public OnRconLoginAttempt(ip[], password[], success)
  229. {
  230. return 1;
  231. }
  232.  
  233. public OnPlayerUpdate(playerid)
  234. {
  235. return 1;
  236. }
  237.  
  238. public OnPlayerStreamIn(playerid, forplayerid)
  239. {
  240. return 1;
  241. }
  242.  
  243. public OnPlayerStreamOut(playerid, forplayerid)
  244. {
  245. return 1;
  246. }
  247.  
  248. public OnVehicleStreamIn(vehicleid, forplayerid)
  249. {
  250. return 1;
  251. }
  252.  
  253. public OnVehicleStreamOut(vehicleid, forplayerid)
  254. {
  255. return 1;
  256. }
  257.  
  258. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  259. {
  260. if(dialogid == DIALOG_ESSEN)
  261. {
  262. if(response)
  263. {
  264. switch(listitem)
  265. {
  266. case 0://Kleiner Hamburger
  267. {
  268. if(GetPlayerMoney(playerid) == 5 || GetPlayerMoney(playerid) >= 5)
  269. {
  270. GivePlayerHealth(playerid,6);
  271. SendClientMessage(playerid,COLOR_LIGHTGREEN,"Mitarbeiter: Vielen Dank für deine Bestellung!");
  272. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast dir einen kleinen Hamburger gekauft!");
  273. GivePlayerMoney(playerid,-5);
  274. return 1;
  275. }
  276. else
  277. {
  278. SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast zu wenig Geld!");
  279. SendClientMessage(playerid,COLOR_LIGHTRED,"Du benötigst mindestens 5$ um diese Speise zu kaufen!");
  280. }
  281. }
  282. case 1://Kleine Cheeseburger
  283. {
  284. if(GetPlayerMoney(playerid) == 5 || GetPlayerMoney(playerid) >= 5)
  285. {
  286. GivePlayerHealth(playerid,6);
  287. SendClientMessage(playerid,COLOR_LIGHTGREEN,"Mitarbeiter: Vielen Dank für deine Bestellung!");
  288. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast dir einen kleinen Cheeseburger gekauft!");
  289. GivePlayerMoney(playerid,-5);
  290. return 1;
  291. }
  292. else
  293. {
  294. SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast zu wenig Geld!");
  295. SendClientMessage(playerid,COLOR_LIGHTRED,"Du benötigst mindestens 5$ um diese Speise zu kaufen!");
  296. }
  297. }
  298. case 2://Großer Hamburger
  299. {
  300. if(GetPlayerMoney(playerid) == 10 || GetPlayerMoney(playerid) >= 10)
  301. {
  302. GivePlayerHealth(playerid,12);
  303. SendClientMessage(playerid,COLOR_LIGHTGREEN,"Mitarbeiter: Vielen Dank für deine Bestellung!");
  304. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast dir einen großen Hamburger gekauft!");
  305. GivePlayerMoney(playerid,-10);
  306. return 1;
  307. }
  308. else
  309. {
  310. SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast zu wenig Geld!");
  311. SendClientMessage(playerid,COLOR_LIGHTRED,"Du benötigst mindestens 10$ um diese Speise zu kaufen!");
  312. }
  313. }
  314. case 3://Großer Cheeseburger
  315. {
  316. if(GetPlayerMoney(playerid) == 10 || GetPlayerMoney(playerid) >= 10)
  317. {
  318. GivePlayerHealth(playerid,12);
  319. SendClientMessage(playerid,COLOR_LIGHTGREEN,"Mitarbeiter: Vielen Dank für deine Bestellung!");
  320. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast dir einen großen Cheeseburger gekauft!");
  321. GivePlayerMoney(playerid,-10);
  322. return 1;
  323. }
  324. else
  325. {
  326. SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast zu wenig Geld!");
  327. SendClientMessage(playerid,COLOR_LIGHTRED,"Du benötigst mindestens 10$ um diese Speise zu kaufen!");
  328. }
  329. }
  330. case 4://Großer Hamburger mit Getränk
  331. {
  332. if(GetPlayerMoney(playerid) == 12 || GetPlayerMoney(playerid) >= 12)
  333. {
  334. GivePlayerHealth(playerid,18);
  335. SendClientMessage(playerid,COLOR_LIGHTGREEN,"Mitarbeiter: Vielen Dank für deine Bestellung!");
  336. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast dir einen großen Hamburger mit Getränk gekauft!");
  337. GivePlayerMoney(playerid,-12);
  338. return 1;
  339. }
  340. else
  341. {
  342. SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast zu wenig Geld!");
  343. SendClientMessage(playerid,COLOR_LIGHTRED,"Du benötigst mindestens 12$ um diese Speise zu kaufen!");
  344. }
  345. }
  346. case 5://Großer Cheeseburger mit Getränk
  347. {
  348. if(GetPlayerMoney(playerid) == 12 || GetPlayerMoney(playerid) >= 12)
  349. {
  350. GivePlayerHealth(playerid,18);
  351. SendClientMessage(playerid,COLOR_LIGHTGREEN,"Mitarbeiter: Vielen Dank für deine Bestellung!");
  352. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast dir einen großen Cheeseburger mit Getränk gekauft!");
  353. GivePlayerMoney(playerid,-12);
  354. return 1;
  355. }
  356. else
  357. {
  358. SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast zu wenig Geld!");
  359. SendClientMessage(playerid,COLOR_LIGHTRED,"Du benötigst mindestens 12$ um diese Speise zu kaufen!");
  360. }
  361. }
  362. case 6://Getränk
  363. {
  364. if(GetPlayerMoney(playerid) == 2 || GetPlayerMoney(playerid) >= 2)
  365. {
  366. GivePlayerHealth(playerid,5);
  367. SendClientMessage(playerid,COLOR_LIGHTGREEN,"Mitarbeiter: Vielen Dank für deine Bestellung!");
  368. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du hast dir ein Getränk gekauft!");
  369. GivePlayerMoney(playerid,-2);
  370. return 1;
  371. }
  372. else
  373. {
  374. SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast zu wenig Geld!");
  375. SendClientMessage(playerid,COLOR_LIGHTRED,"Du benötigst mindestens 2$ um dir ein Getränk zu kaufen!");
  376. }
  377. }
  378. }
  379. }
  380. else
  381. {
  382. return 1;
  383. }
  384. }
  385. return 1;
  386. }
  387.  
  388. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  389. {
  390. return 1;
  391. }
  392.  
  393. stock LoadBSN()
  394. {
  395. CreateVehicle(415,1234.6999512,-932.7000122,42.4000015,0.0000000,255,255,9999999999999999999999999);
  396. CreateObject(979,1215.3000488,-919.7000122,42.7999992,0.0000000,0.0000000,322.5000000);
  397. CreateObject(979,1215.3000488,-919.7000122,42.7999992,0.0000000,0.0000000,142.4981689);
  398. CreateObject(1318,1216.0000000,-926.2999878,41.9000015,0.0000000,90.0000000,280.0000000);
  399. CreateObject(1318,1214.1999512,-922.5000000,41.9000015,0.0000000,90.0000000,327.9975586);
  400. CreateObject(1318,1209.9000244,-922.0999756,41.9000015,0.0000000,90.0000000,9.5000000);
  401. CreateObject(1318,1218.8000488,-922.7999878,44.4000015,90.0000000,180.0000000,280.0000000);
  402. CreateObject(1318,1219.0000000,-922.0999756,44.4000015,90.0000000,0.0000000,279.9975586);
  403. CreateObject(973,1219.9000244,-903.4000244,42.7000008,0.0000000,0.0000000,97.2500000);
  404. CreateObject(973,1219.9000244,-903.4000244,42.7000008,0.0000000,0.0000000,277.2455444);
  405. CreateObject(2643,1208.8000488,-906.7000122,44.0999985,0.0000000,0.0000000,96.0000000);
  406. CreateObject(3034,1208.5000000,-904.0999756,43.7999992,0.0000000,0.0000000,98.0000000);
  407. CreateObject(2642,1208.1999512,-901.9000244,43.0000000,0.0000000,0.0000000,96.0000000);
  408. CreateObject(3578,1214.0999756,-898.5000000,41.2000008,0.0000000,0.0000000,6.0000000);
  409. CreateObject(3578,1214.3000488,-900.9000244,41.2000008,0.0000000,0.0000000,5.9985352);
  410. CreateObject(3578,1214.5000000,-903.2999878,41.2000008,0.0000000,0.0000000,5.9985352);
  411. CreateObject(3578,1214.6999512,-905.4000244,41.2000008,0.0000000,0.0000000,5.9985352);
  412. CreateObject(3578,1214.9000244,-907.4000244,41.2000008,0.0000000,0.0000000,5.9985352);
  413. CreateObject(3578,1215.0999756,-909.4000244,41.2000008,0.0000000,0.0000000,5.9985352);
  414. CreateObject(618,1210.5999756,-925.5000000,42.7999992,0.0000000,0.0000000,0.0000000);
  415. CreateObject(618,1192.3000488,-928.4000244,42.7999992,0.0000000,0.0000000,0.0000000);
  416. CreateObject(618,1169.5999756,-932.2999878,42.7999992,0.0000000,0.0000000,0.0000000);
  417. CreateObject(618,1165.3000488,-877.5000000,42.7999992,0.0000000,0.0000000,0.0000000);
  418. CreateObject(634,1168.5000000,-898.0000000,42.4000015,0.0000000,0.0000000,0.0000000);
  419. CreateObject(634,1169.5000000,-909.9000244,42.4000015,0.0000000,0.0000000,0.0000000);
  420. CreateObject(1215,1183.0999756,-921.9000244,42.9000015,0.0000000,0.0000000,355.2500000);
  421. CreateObject(1215,1178.5000000,-908.4000244,42.9000015,0.0000000,0.0000000,355.2484131);
  422. CreateObject(1215,1176.3000488,-892.5000000,42.9000015,0.0000000,0.0000000,355.2484131);
  423. CreateObject(1215,1207.3000488,-888.0999756,42.5999985,0.0000000,0.0000000,355.2484131);
  424. CreateObject(1215,1219.0000000,-897.5999756,42.5000000,0.0000000,0.0000000,355.2484131);
  425. CreateObject(1215,1220.6999512,-909.7999878,42.5000000,0.0000000,0.0000000,355.2484131);
  426. CreateObject(1215,1211.8000488,-920.0000000,42.5999985,0.0000000,0.0000000,355.2484131);
  427. CreateObject(2942,1193.6999512,-916.4000244,42.7999992,0.0000000,0.0000000,7.0000000);
  428. CreateObject(1215,1218.5000000,-919.2999878,42.7000008,0.0000000,0.0000000,355.2484131);
  429. CreateObject(1290,1212.5000000,-939.9000244,47.7000008,0.0000000,0.0000000,278.0000000);
  430. CreateObject(1290,1197.6999512,-942.5999756,47.7999992,0.0000000,0.0000000,277.9980469);
  431. CreateObject(1290,1182.0999756,-945.2999878,47.7999992,0.0000000,0.0000000,277.9980469);
  432. CreateObject(3460,1175.8000488,-901.0999756,46.5000000,0.0000000,0.0000000,90.0000000);
  433. CreateObject(3460,1216.3000488,-892.0999756,46.0999985,0.0000000,0.0000000,90.0000000);
  434. CreateObject(3460,1203.4000244,-875.2000122,46.2000008,0.0000000,0.0000000,186.0000000);
  435. CreateObject(3460,1203.3994141,-875.1992188,46.2000008,0.0000000,0.0000000,185.9985352);
  436. CreateObject(3460,1185.5999756,-878.2999878,46.2999992,0.0000000,0.0000000,185.9985352);
  437. CreateObject(3934,1202.0999756,-901.7000122,47.0999985,0.0000000,0.0000000,6.7500000);
  438. CreateObject(3934,1191.6999512,-902.9000244,47.0999985,0.0000000,0.0000000,6.7456055);
  439. CreateObject(5130,1193.9000244,-887.2999878,44.0699997,0.0000000,0.0000000,52.0000000);
  440. CreateObject(1215,1196.3000488,-893.2000122,47.5999985,0.0000000,0.0000000,355.2484131);
  441. CreateObject(1215,1193.0000000,-893.5999756,47.5999985,0.0000000,0.0000000,355.2484131);
  442. CreateObject(1215,1225.0999756,-922.5000000,42.5000000,0.0000000,0.0000000,355.2484131);
  443. CreateObject(1290,1221.9000244,-938.0000000,47.5999985,0.0000000,0.0000000,277.9980469);
  444. CreateObject(1290,1230.0000000,-936.5000000,47.5999985,0.0000000,0.0000000,277.9980469);
  445. CreateObject(1290,1240.3000488,-934.5999756,47.5000000,0.0000000,0.0000000,277.9980469);
  446. return 1;
  447. }
  448.  
  449. stock RemoveBuildings(playerid)
  450. {
  451. RemoveBuildingForPlayer(playerid, 1294, 1161.7422, -914.2656, 46.2734, 0.25);
  452. RemoveBuildingForPlayer(playerid, 1294, 1188.1797, -953.2734, 46.2188, 0.25);
  453. RemoveBuildingForPlayer(playerid, 1294, 1198.7969, -933.1250, 46.4297, 0.25);
  454. RemoveBuildingForPlayer(playerid, 1294, 1226.4297, -946.3281, 46.2188, 0.25);
  455. return 1;
  456. }
  457.  
  458. stock GivePlayerHealth(playerid, Float:health)
  459. {
  460. new Float:Current;
  461. GetPlayerHealth(playerid, Current);
  462. if((Current)+(health) > 100) return SetPlayerHealth(playerid, 100);
  463. SetPlayerHealth(playerid, ((Current)+(health)));
  464. return 1;
  465. }
  466.  
  467. stock sscanf(string[], format[], {Float,_}:...)
  468. {
  469. #if defined isnull
  470. if (isnull(string))
  471. #else
  472. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  473. #endif
  474. {
  475. return format[0];
  476. }
  477. #pragma tabsize 4
  478. new
  479. formatPos = 0,
  480. stringPos = 0,
  481. paramPos = 2,
  482. paramCount = numargs(),
  483. delim = ' ';
  484. while (string[stringPos] && string[stringPos] <= ' ')
  485. {
  486. stringPos++;
  487. }
  488. while (paramPos < paramCount && string[stringPos])
  489. {
  490. switch (format[formatPos++])
  491. {
  492. case '\0':
  493. {
  494. return 0;
  495. }
  496. case 'i', 'd':
  497. {
  498. new
  499. neg = 1,
  500. num = 0,
  501. ch = string[stringPos];
  502. if (ch == '-')
  503. {
  504. neg = -1;
  505. ch = string[++stringPos];
  506. }
  507. do
  508. {
  509. stringPos++;
  510. if ('0' <= ch <= '9')
  511. {
  512. num = (num * 10) + (ch - '0');
  513. }
  514. else
  515. {
  516. return -1;
  517. }
  518. }
  519. while ((ch = string[stringPos]) > ' ' && ch != delim);
  520. setarg(paramPos, 0, num * neg);
  521. }
  522. case 'h', 'x':
  523. {
  524. new
  525. num = 0,
  526. ch = string[stringPos];
  527. do
  528. {
  529. stringPos++;
  530. switch (ch)
  531. {
  532. case 'x', 'X':
  533. {
  534. num = 0;
  535. continue;
  536. }
  537. case '0' .. '9':
  538. {
  539. num = (num << 4) | (ch - '0');
  540. }
  541. case 'a' .. 'f':
  542. {
  543. num = (num << 4) | (ch - ('a' - 10));
  544. }
  545. case 'A' .. 'F':
  546. {
  547. num = (num << 4) | (ch - ('A' - 10));
  548. }
  549. default:
  550. {
  551. return -1;
  552. }
  553. }
  554. }
  555. while ((ch = string[stringPos]) > ' ' && ch != delim);
  556. setarg(paramPos, 0, num);
  557. }
  558. case 'c':
  559. {
  560. setarg(paramPos, 0, string[stringPos++]);
  561. }
  562. case 'f':
  563. {
  564.  
  565. new changestr[16], changepos = 0, strpos = stringPos;
  566. while(changepos < 16 && string[strpos] && string[strpos] != delim)
  567. {
  568. changestr[changepos++] = string[strpos++];
  569. }
  570. changestr[changepos] = '\0';
  571. setarg(paramPos,0,_:floatstr(changestr));
  572. }
  573. case 'p':
  574. {
  575. delim = format[formatPos++];
  576. continue;
  577. }
  578. case '\'':
  579. {
  580. new
  581. end = formatPos - 1,
  582. ch;
  583. while ((ch = format[++end]) && ch != '\'') {}
  584. if (!ch)
  585. {
  586. return -1;
  587. }
  588. format[end] = '\0';
  589. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  590. {
  591. if (format[end + 1])
  592. {
  593. return -1;
  594. }
  595. return 0;
  596. }
  597. format[end] = '\'';
  598. stringPos = ch + (end - formatPos);
  599. formatPos = end + 1;
  600. }
  601. case 'u':
  602. {
  603. new
  604. end = stringPos - 1,
  605. id = 0,
  606. bool:num = true,
  607. ch;
  608. while ((ch = string[++end]) && ch != delim)
  609. {
  610. if (num)
  611. {
  612. if ('0' <= ch <= '9')
  613. {
  614. id = (id * 10) + (ch - '0');
  615. }
  616. else
  617. {
  618. num = false;
  619. }
  620. }
  621. }
  622. if (num && IsPlayerConnected(id))
  623. {
  624. setarg(paramPos, 0, id);
  625. }
  626. else
  627. {
  628. #if !defined foreach
  629. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  630. #define __SSCANF_FOREACH__
  631. #endif
  632. string[end] = '\0';
  633. num = false;
  634. new
  635. name[MAX_PLAYER_NAME];
  636. id = end - stringPos;
  637. foreach (Player, playerid)
  638. {
  639. GetPlayerName(playerid, name, sizeof (name));
  640. if (!strcmp(name, string[stringPos], true, id))
  641. {
  642. setarg(paramPos, 0, playerid);
  643. num = true;
  644. break;
  645. }
  646. }
  647. if (!num)
  648. {
  649. setarg(paramPos, 0, INVALID_PLAYER_ID);
  650. }
  651. string[end] = ch;
  652. #if defined __SSCANF_FOREACH__
  653. #undef foreach
  654. #undef __SSCANF_FOREACH__
  655. #endif
  656. }
  657. stringPos = end;
  658. }
  659. case 's', 'z':
  660. {
  661. new
  662. i = 0,
  663. ch;
  664. if (format[formatPos])
  665. {
  666. while ((ch = string[stringPos++]) && ch != delim)
  667. {
  668. setarg(paramPos, i++, ch);
  669. }
  670. if (!i)
  671. {
  672. return -1;
  673. }
  674. }
  675. else
  676. {
  677. while ((ch = string[stringPos++]))
  678. {
  679. setarg(paramPos, i++, ch);
  680. }
  681. }
  682. stringPos--;
  683. setarg(paramPos, i, '\0');
  684. }
  685. default:
  686. {
  687. continue;
  688. }
  689. }
  690. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  691. {
  692. stringPos++;
  693. }
  694. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  695. {
  696. stringPos++;
  697. }
  698. paramPos++;
  699. }
  700. do
  701. {
  702. if ((delim = format[formatPos++]) > ' ')
  703. {
  704. if (delim == '\'')
  705. {
  706. while ((delim = format[formatPos++]) && delim != '\'') {}
  707. }
  708. else if (delim != 'z')
  709. {
  710. return delim;
  711. }
  712. }
  713. }
  714. while (delim > ' ');
  715. return 0;
  716. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement