Advertisement
Guest User

Untitled

a guest
Aug 11th, 2013
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.06 KB | None | 0 0
  1. #include <a_samp>
  2. #define MAX_GERICHTE 200/*Die Maximale Anzahl an Gerichten die erstellt werden kann (Fischburger, Hamburger ...) je größer desto Ressourcen fressender/langsamer
  3. Maximale Anzahl aller gerichte für alle Restaurants 10 Gerichte pro Restaurant bei 10 Restaurants = 100 Gerichte Insgesamt*/
  4. #define MAX_BSN 10//Die Maximale Anzahl BSN's die gespeichert/geladen/erstellt werden kann je größer desto Ressourcen fressender/langsamer
  5. //Wichtig! beachte das im scriptfiles Ordner ein Ordner mit dem Namen BSN und ein Ordner mit dem Namen Gerichte existiert
  6. //Farbe
  7. #define weiss 0xFFFFFFFF
  8. //Dialoge bitte nichts verändern wenn man nicht weis was man tut
  9. #define DIALOG_BSNS 1293
  10. #define DIALOG_BSNNAMEN 1294
  11. #define DIALOG_BSNPOS 1295
  12. #define DIALOG_BSNPICKUP 1296
  13. #define DIALOG_BSNS2 1297
  14. #define DIALOG_BSNS3 1298
  15. #define DIALOG_BESSEN 1299
  16. #define DIALOG_EBCONFIG 1300
  17. #define DIALOG_EBGGEL 1301
  18. #define DIALOG_EBNAME 1302
  19. #define DIALOG_EBGERI 1303
  20. #define DIALOG_EBCONFIG3 1304
  21. #define DIALOG_EBCONFIG2 1305
  22. #define DIALOG_EBCONFIG4 1306
  23. #define DIALOG_EBCONFIG5 1307
  24. #define DIALOG_EBGHP 1308
  25. #define DIALOG_EBGEDIT 1309
  26. #define DIALOG_EBGDEL 1310
  27. #define DIALOG_EBPICK 1311
  28. /*
  29. //Ausklammern und ausfüllen für ressourcen schohnung
  30. #undef MAX_PLAYERS
  31. #define MAX_PLAYERS dieanzahldeinermaximalenspielerslots
  32. */
  33. //Credits bitte drin lassen Danke.
  34. enum bs {
  35. Float:bx,
  36. Float:by,
  37. Float:bz,
  38. bname[50],
  39. bpickid,
  40. bpick
  41. };
  42. new BSN[MAX_BSN][bs],bpreis[MAX_BSN][MAX_GERICHTE],Float:bhp[MAX_BSN][MAX_GERICHTE],bgericht[50][MAX_BSN][MAX_GERICHTE],bearbeiten[MAX_PLAYERS],bearbeiten2[MAX_PLAYERS],essen[MAX_PLAYERS],bsn,bstimer,pause[MAX_PLAYERS];
  43. public OnFilterScriptInit()
  44. {
  45. print("\n--------------------------------------");
  46. print("DT_DynamicRestaurant wurde geladen Script by midomen");
  47. print("--------------------------------------\n");
  48. bstimer = SetTimer("bsnladen",2000,true);
  49. bsn = -1;
  50. return 1;
  51. }
  52. public OnFilterScriptExit()
  53. {
  54. for(new i=0;i<MAX_BSN;i++)
  55. {
  56. SaveBSN(i);
  57. }
  58. return 1;
  59. }
  60. public OnGameModeExit()
  61. {
  62. return 1;
  63. }
  64. public OnPlayerCommandText(playerid, cmdtext[])
  65. {
  66. if(strcmp(cmdtext,"/dtbsn",true)==0)
  67. {
  68. if(IsPlayerAdmin(playerid))
  69. {
  70. ShowPlayerDialog(playerid,DIALOG_BSNS,DIALOG_STYLE_LIST,"Restaurant Menü","Restaurant Erstellen\nRestaurant bearbeiten\nRestaurant löschen","Auswählen","Abbrechen");
  71. }
  72. else
  73. {
  74. SendClientMessage(playerid,weiss,"Sie müssen als RCON Admin eingeloggt sein um diesen Befehl nutzen zu können");
  75. }
  76. return 1;
  77. }
  78. return 0;
  79. }
  80. public OnPlayerPickUpPickup(playerid, pickupid)
  81. {
  82. if(pause[playerid] == 0)
  83. {
  84. for(new i;i<MAX_BSN;i++)
  85. {
  86. if(pickupid == BSN[i][bpick])
  87. {
  88. if(IsPlayerInRangeOfPoint(playerid,4.0,BSN[i][bx],BSN[i][by],BSN[i][bz]))
  89. {
  90. new string[50],string2[2048],pfad[50];
  91. format(string,50,"%s",BSN[i][bname]);
  92. for(new j;j<MAX_GERICHTE;j++)
  93. {
  94. format(pfad,50,"/Gerichte/%i %i.ini",j,i);
  95. if(fexist(pfad))
  96. {
  97. format(string2,2048,"%s\n%s %i$",string2,bgericht[i][j],bpreis[i][j]);
  98. }
  99. }
  100. essen[playerid] = i;
  101. ShowPlayerDialog(playerid,DIALOG_BESSEN,DIALOG_STYLE_LIST,string,string2,"Essen","Abbrechen");
  102. break;
  103. }
  104. }
  105. }
  106. pause[playerid] = 1;
  107. SetTimerEx("unpause",5000,false,"i",playerid);
  108. }
  109. return 1;
  110. }
  111. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  112. {
  113. if(dialogid == DIALOG_BESSEN)
  114. {
  115. if(response)
  116. {
  117. new zahl;
  118. for(new i;i<MAX_GERICHTE;i++)
  119. {
  120. new pfad[50];
  121. format(pfad,50,"/Gerichte/%i %i.ini",i,essen[playerid]);
  122. if(fexist(pfad))
  123. {
  124. new endzahl;
  125. if(listitem==0)
  126. {
  127. endzahl = 0;
  128. }
  129. else
  130. {
  131. endzahl = i-zahl;
  132. }
  133. if(listitem == endzahl)
  134. {
  135. if(GetPlayerMoney(playerid)>=bpreis[essen[playerid]][i])
  136. {
  137. new Float:leben;
  138. GetPlayerHealth(playerid,leben);
  139. SetPlayerHealth(playerid,leben+bhp[essen[playerid]][i]);
  140. if(leben+bhp[essen[playerid]][i]>100)
  141. {
  142. SetPlayerHealth(playerid,100);
  143. }
  144. GivePlayerMoney(playerid,-bpreis[essen[playerid]][i]);
  145. new string[128];
  146. format(string,128,"Sie haben sich %s für %i$ gekauft",bgericht[essen[playerid]][i],bpreis[essen[playerid]][i]);
  147. SendClientMessage(playerid,weiss,string);
  148. }
  149. break;
  150. }
  151. }
  152. else
  153. {
  154. if(i==MAX_GERICHTE-1)
  155. {
  156. i--;
  157. }
  158. zahl+=1;
  159. }
  160. }
  161. }
  162. }
  163. if(dialogid == DIALOG_BSNPICKUP)
  164. {
  165. if(response)
  166. {
  167. new pfad[50];
  168. format(pfad,50,"/BSN/%i.ini",bearbeiten[playerid]);
  169. if(fexist(pfad))
  170. {
  171. if(IsNumeric(inputtext))
  172. {
  173. new Float:pos[3];
  174. GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  175. BSN[bearbeiten[playerid]][bpick] = CreatePickup(strval(inputtext),1,pos[0],pos[1],pos[2],0);
  176. BSN[bearbeiten[playerid]][bpickid] = strval(inputtext);
  177. SendClientMessage(playerid,weiss,"Du hast das Restaurant erfolgreich erstellt");
  178. SaveBSN(bearbeiten[playerid]);
  179. ShowPlayerDialog(playerid,DIALOG_BSNS,DIALOG_STYLE_LIST,"Restaurant Menü","Restaurant Erstellen\nRestaurant bearbeiten\nRestaurant löschen","Auswählen","Zurück");
  180. }
  181. else
  182. {
  183. SendClientMessage(playerid,weiss,"Du musst eine Zahl eingeben versuche es erneut");
  184. ShowPlayerDialog(playerid,DIALOG_BSNPICKUP,DIALOG_STYLE_INPUT,"Pickup ID","Geben sie nun die Pickup ID ein\n(Tipp: ID 1582 = Pizza Box ID 1239 Informations Pickup/I Pickup)","Fertig","Zurück");
  185. }
  186. }
  187. }
  188. else
  189. {
  190. ShowPlayerDialog(playerid,DIALOG_BSNPOS,DIALOG_STYLE_MSGBOX,"Restaurant Menü","Sind sie sicher das sie an der richtigen Position stehen?","Ja","Nein");
  191. }
  192. }
  193. if(dialogid == DIALOG_BSNPOS)
  194. {
  195. if(response)
  196. {
  197. new pfad[50],Float:pos[3];
  198. format(pfad,50,"/BSN/%i.ini",bearbeiten[playerid]);
  199. GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  200. if(fexist(pfad))
  201. {
  202. BSN[bearbeiten[playerid]][bx] = pos[0];
  203. BSN[bearbeiten[playerid]][by] = pos[1];
  204. BSN[bearbeiten[playerid]][bz] = pos[2];
  205. ShowPlayerDialog(playerid,DIALOG_BSNPICKUP,DIALOG_STYLE_INPUT,"Pickup ID","Geben sie nun die Pickup ID ein\n(Tipp: ID 1582 = Pizza Box ID 1239 Informations Pickup/I Pickup)","Fertig","Zurück");
  206. }
  207. }
  208. else
  209. {
  210. ShowPlayerDialog(playerid,DIALOG_BSNNAMEN,DIALOG_STYLE_INPUT,"Restaurant Namen","Gebe nun den Namen des Restaurant's ein das erstellt werden soll","Weiter","Zurück");
  211. }
  212. }
  213. if(dialogid == DIALOG_BSNNAMEN)
  214. {
  215. if(response)
  216. {
  217. if(strlen(inputtext)>=3)
  218. {
  219. new pfad[50];
  220. format(pfad,50,"/BSN/%i.ini",bearbeiten[playerid]);
  221. if(fexist(pfad))
  222. {
  223. format(BSN[bearbeiten[playerid]][bname],50,"%s",inputtext);
  224. ShowPlayerDialog(playerid,DIALOG_BSNPOS,DIALOG_STYLE_MSGBOX,"Restaurant Menü","Sind sie sicher das sie an der richtigen Position stehen?","Ja","Nein");
  225. SaveBSN(bearbeiten[playerid]);
  226. }
  227. }
  228. else
  229. {
  230. SendClientMessage(playerid,weiss,"Der Name des Restaurants muss mindestens 3 Buchstaben/Zahlen enthalten versuche es bitte erneut");
  231. ShowPlayerDialog(playerid,DIALOG_BSNNAMEN,DIALOG_STYLE_INPUT,"Restaurant Namen","Gebe nun den Namen des Restaurant's ein das erstellt werden soll","Weiter","Zurück");
  232. }
  233. }
  234. else
  235. {
  236. ShowPlayerDialog(playerid,DIALOG_BSNS,DIALOG_STYLE_LIST,"Restaurant Menü","Restaurant Erstellen\nRestaurant bearbeiten\nRestaurant löschen","Auswählen","Abbrechen");
  237. new pfad[50];
  238. format(pfad,50,"/BSN/%i.ini",bearbeiten[playerid]);
  239. if(fexist(pfad))
  240. {
  241. format(BSN[bearbeiten[playerid]][bname],50,"Leer");
  242. SaveBSN(bearbeiten[playerid]);
  243. }
  244. }
  245. }
  246. if(dialogid == DIALOG_BSNS)
  247. {
  248. if(response)
  249. {
  250. if(listitem==0)
  251. {
  252. new pfad[50];
  253. for(new i;i<MAX_BSN;i++)
  254. {
  255. format(pfad,50,"/BSN/%i.ini",i);
  256. if(fexist(pfad))
  257. {
  258. if(strcmp(BSN[i][bname],"Leer",true)==0)
  259. {
  260. ShowPlayerDialog(playerid,DIALOG_BSNNAMEN,DIALOG_STYLE_INPUT,"Restaurant Namen","Gebe nun den Namen des Restaurant's ein das erstellt werden soll","Weiter","Zurück");
  261. bearbeiten[playerid] = i;
  262. break;
  263. }
  264. }
  265. }
  266. }
  267. if(listitem==1)
  268. {
  269. new pfad[50],string[1024];
  270. for(new i;i<MAX_BSN;i++)
  271. {
  272. format(pfad,50,"/BSN/%i.ini",i);
  273. if(fexist(pfad))
  274. {
  275. if(strcmp(BSN[i][bname],"Leer",true)==0)
  276. {
  277. }
  278. else
  279. {
  280. format(string,1024,"%s\n%s",string,BSN[i][bname]);
  281. }
  282. if(i==MAX_BSN-1)
  283. {
  284. ShowPlayerDialog(playerid,DIALOG_BSNS2,DIALOG_STYLE_LIST,"Restaurant Menü",string,"Auswählen","Zurück");
  285. }
  286. }
  287. }
  288. }
  289. if(listitem==2)
  290. {
  291. new pfad[50],string[1024];
  292. for(new i;i<MAX_BSN;i++)
  293. {
  294. format(pfad,50,"/BSN/%i.ini",i);
  295. if(fexist(pfad))
  296. {
  297. if(strcmp(BSN[i][bname],"Leer",true)==0)
  298. {
  299. }
  300. else
  301. {
  302. format(string,1024,"%s\n%s",string,BSN[i][bname]);
  303. }
  304. if(i==MAX_BSN-1)
  305. {
  306. ShowPlayerDialog(playerid,DIALOG_BSNS3,DIALOG_STYLE_LIST,"Restaurant Menü",string,"Löschen","Zurück");
  307. }
  308. }
  309. }
  310. }
  311. }
  312. }
  313. if(dialogid == DIALOG_BSNS3)
  314. {
  315. if(response)
  316. {
  317. new zahl;
  318. for(new i;i<MAX_BSN;i++)
  319. {
  320. new pfad[50];
  321. format(pfad,50,"/BSN/%i.ini",i);
  322. if(fexist(pfad))
  323. {
  324. if(strcmp(BSN[i][bname],"Leer",true)==0)
  325. {
  326. zahl += 1;
  327. }
  328. else
  329. {
  330. new endzahl;
  331. if(listitem==0)
  332. {
  333. endzahl = 0;
  334. }
  335. else
  336. {
  337. endzahl = i-zahl;
  338. }
  339. if(listitem == endzahl)
  340. {
  341. DestroyPickup(BSN[i][bpick]);
  342. format(BSN[i][bname],50,"Leer");
  343. new dpfad[50];
  344. for(new gericht;gericht<MAX_GERICHTE;gericht++)
  345. {
  346. format(dpfad,50,"/Gerichte/%i %i.ini",gericht,i);
  347. if(fexist(dpfad))
  348. {
  349. fremove(dpfad);
  350. }
  351. }
  352. SendClientMessage(playerid,weiss,"Das Restaurant wurde erfolgreich gelöscht");
  353. SaveBSN(i);
  354. break;
  355. }
  356. }
  357. }
  358. }
  359. }
  360. else
  361. {
  362. ShowPlayerDialog(playerid,DIALOG_BSNS,DIALOG_STYLE_LIST,"Restaurant Menü","Restaurant Erstellen\nRestaurant bearbeiten\nRestaurant löschen","Auswählen","Abbrechen");
  363. }
  364. }
  365. if(dialogid == DIALOG_BSNS2)
  366. {
  367. if(response)
  368. {
  369. new zahl;
  370. for(new i=0;i<MAX_BSN;i++)
  371. {
  372. new pfad[50];
  373. format(pfad,50,"/BSN/%i.ini",i);
  374. if(fexist(pfad))
  375. {
  376. if(strcmp(BSN[i][bname],"Leer",true)==0)
  377. {
  378. zahl += 1;
  379. }
  380. else
  381. {
  382. new endzahl;
  383. if(listitem==0)
  384. {
  385. endzahl = 0;
  386. }
  387. else
  388. {
  389. endzahl = i-zahl;
  390. }
  391. if(listitem == endzahl)
  392. {
  393. bearbeiten[playerid] = i;
  394. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  395. break;
  396. }
  397. }
  398. }
  399. }
  400. }
  401. else
  402. {
  403. ShowPlayerDialog(playerid,DIALOG_BSNS,DIALOG_STYLE_LIST,"Restaurant Menü","Restaurant Erstellen\nRestaurant bearbeiten\nRestaurant löschen","Auswählen","Abbrechen");
  404. }
  405. }
  406. if(dialogid == DIALOG_EBNAME)
  407. {
  408. if(response)
  409. {
  410. if(strlen(inputtext)>=3)
  411. {
  412. format(BSN[bearbeiten[playerid]][bname],50,"%s",inputtext);
  413. SaveBSN(bearbeiten[playerid]);
  414. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  415. SendClientMessage(playerid,weiss,"Sie haben den Namen erfolgreich geändert");
  416. }
  417. else
  418. {
  419. SendClientMessage(playerid,weiss,"Der Name ist zu kurz mindestens 3 Zeichen");
  420. }
  421. }
  422. else
  423. {
  424. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  425. }
  426. }
  427. if(dialogid == DIALOG_EBGGEL)
  428. {
  429. if(response)
  430. {
  431. if(IsNumeric(inputtext))
  432. {
  433. SendClientMessage(playerid,weiss,"Es wurde erfolgreich ein neues Gericht hinzugefügt");
  434. bpreis[bearbeiten[playerid]][bearbeiten2[playerid]] = strval(inputtext);
  435. new pfad[50];
  436. format(pfad,50,"/Gerichte/%i %i.ini",bearbeiten2[playerid],bearbeiten[playerid]);
  437. new File:datei=fopen(pfad,io_write);
  438. fclose(datei);
  439. SaveGericht(bearbeiten2[playerid],bearbeiten[playerid]);
  440. }
  441. else
  442. {
  443. ShowPlayerDialog(playerid,DIALOG_EBGGEL,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun den Preis an (ohne - vor der Zahl)","Fertigstellen","Zurück");
  444. SendClientMessage(playerid,weiss,"Sie müssen eine Zahl eingeben");
  445. }
  446. }
  447. else
  448. {
  449. ShowPlayerDialog(playerid,DIALOG_EBGHP,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun die Anzahl der HP an die der Spieler beim kauf erhalten soll","Weiter","Zurück");
  450. }
  451. }
  452. if(dialogid == DIALOG_EBGHP)
  453. {
  454. if(response)
  455. {
  456. if(IsNumeric(inputtext))
  457. {
  458. bhp[bearbeiten[playerid]][bearbeiten2[playerid]] = strval(inputtext);
  459. ShowPlayerDialog(playerid,DIALOG_EBGGEL,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun den Preis an (ohne - vor der Zahl)","Fertigstellen","Zurück");
  460. }
  461. else
  462. {
  463. ShowPlayerDialog(playerid,DIALOG_EBGHP,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun die Anzahl der HP an die der Spieler beim kauf erhalten soll","Weiter","Zurück");
  464. SendClientMessage(playerid,weiss,"Sie müssen eine Zahl eingeben");
  465. }
  466. }
  467. else
  468. {
  469. ShowPlayerDialog(playerid,DIALOG_EBGERI,DIALOG_STYLE_INPUT,"Gerichts Name","Geben sie nun den Namen des neuen Gerichts ein","Weiter","Zurück");
  470. }
  471. }
  472. if(dialogid == DIALOG_EBGERI)
  473. {
  474. if(response)
  475. {
  476. if(strlen(inputtext)>=3)
  477. {
  478. new pfad[50];
  479. for(new i;i<MAX_GERICHTE;i++)
  480. {
  481. format(pfad,50,"/Gerichte/%i %i.ini",i,bearbeiten[playerid]);
  482. if(fexist(pfad))
  483. {
  484. }
  485. else
  486. {
  487. format(bgericht[bearbeiten[playerid]][i],50,"%s",inputtext);
  488. ShowPlayerDialog(playerid,DIALOG_EBGHP,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun die Anzahl der HP an die der Spieler beim kauf erhalten soll","Weiter","Zurück");
  489. bearbeiten2[playerid]=i;
  490. }
  491. }
  492. }
  493. else
  494. {
  495. SendClientMessage(playerid,weiss,"Der Name ist zu kurz mindestens 3 Zeichen");
  496. ShowPlayerDialog(playerid,DIALOG_EBGERI,DIALOG_STYLE_INPUT,"Gerichts Name","Geben sie nun den Namen des neuen Gerichts ein","Weiter","Zurück");
  497. }
  498. }
  499. else
  500. {
  501. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  502. }
  503. }
  504. #error Lies die Lies mich Datei!
  505. if(dialogid == DIALOG_EBCONFIG3)
  506. {
  507. if(response)
  508. {
  509. if(strlen(inputtext)>=3)
  510. {
  511. format(bgericht[bearbeiten[playerid]][bearbeiten2[playerid]],50,"%s",inputtext);
  512. ShowPlayerDialog(playerid,DIALOG_EBCONFIG2,DIALOG_STYLE_LIST,"Restaurant Menü","Name ändern\nLeben ändern\nPreis ändern","Auswählen","Zurück");
  513. SaveBSN(bearbeiten[playerid]);
  514. }
  515. else
  516. {
  517. SendClientMessage(playerid,weiss,"Der Name ist zu kurz versuch es erneut");
  518. ShowPlayerDialog(playerid,DIALOG_EBCONFIG3,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun den neuen Namen des Gerichts ein","Umbenennen","Zurück");
  519. }
  520. }
  521. else
  522. {
  523. ShowPlayerDialog(playerid,DIALOG_EBCONFIG2,DIALOG_STYLE_LIST,"Restaurant Menü","Name ändern\nLeben ändern\nPreis ändern","Auswählen","Zurück");
  524. }
  525. }
  526. if(dialogid == DIALOG_EBCONFIG4)
  527. {
  528. if(response)
  529. {
  530. if(IsNumeric(inputtext))
  531. {
  532. bhp[bearbeiten[playerid]][bearbeiten2[playerid]] = strval(inputtext);
  533. ShowPlayerDialog(playerid,DIALOG_EBCONFIG2,DIALOG_STYLE_LIST,"Restaurant Menü","Name ändern\nLeben ändern\nPreis ändern","Auswählen","Zurück");
  534. SaveBSN(bearbeiten[playerid]);
  535. }
  536. else
  537. {
  538. SendClientMessage(playerid,weiss,"Sie müssen eine Zahl angeben");
  539. ShowPlayerDialog(playerid,DIALOG_EBCONFIG4,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun die neue Anzahl der leben an die dazu addiert werden soll","ändern","Zurück");
  540. }
  541. }
  542. else
  543. {
  544. ShowPlayerDialog(playerid,DIALOG_EBCONFIG2,DIALOG_STYLE_LIST,"Restaurant Menü","Name ändern\nLeben ändern\nPreis ändern","Auswählen","Zurück");
  545. }
  546. }
  547. if(dialogid == DIALOG_EBCONFIG5)
  548. {
  549. if(response)
  550. {
  551. if(IsNumeric(inputtext))
  552. {
  553. bpreis[bearbeiten[playerid]][bearbeiten2[playerid]] = strval(inputtext);
  554. ShowPlayerDialog(playerid,DIALOG_EBCONFIG2,DIALOG_STYLE_LIST,"Restaurant Menü","Name ändern\nLeben ändern\nPreis ändern","Auswählen","Zurück");
  555. SaveBSN(bearbeiten[playerid]);
  556. }
  557. else
  558. {
  559. SendClientMessage(playerid,weiss,"Sie müssen eine Zahl angeben");
  560. ShowPlayerDialog(playerid,DIALOG_EBCONFIG5,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun den neuen Preis des Gerichts an","ändern","Zurück");
  561. }
  562. }
  563. else
  564. {
  565. ShowPlayerDialog(playerid,DIALOG_EBCONFIG2,DIALOG_STYLE_LIST,"Restaurant Menü","Name ändern\nLeben ändern\nPreis ändern","Auswählen","Zurück");
  566. }
  567. }
  568. if(dialogid == DIALOG_EBCONFIG2)
  569. {
  570. if(response)
  571. {
  572. if(listitem == 0)
  573. {
  574. ShowPlayerDialog(playerid,DIALOG_EBCONFIG3,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun den neuen Namen des Gerichts ein","Umbenennen","Zurück");
  575. }
  576. if(listitem == 1)
  577. {
  578. ShowPlayerDialog(playerid,DIALOG_EBCONFIG4,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun die neue Anzahl der leben an die dazu addiert werden soll","ändern","Zurück");
  579. }
  580. if(listitem == 2)
  581. {
  582. ShowPlayerDialog(playerid,DIALOG_EBCONFIG5,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun den neuen Preis des Gerichts an","ändern","Zurück");
  583. }
  584. }
  585. else
  586. {
  587. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  588. }
  589. }
  590. if(dialogid == DIALOG_EBGEDIT)
  591. {
  592. if(response)
  593. {
  594. new zahl;
  595. for(new i;i<MAX_GERICHTE;i++)
  596. {
  597. new pfad[50];
  598. format(pfad,50,"/Gerichte/%i %i.ini",i,bearbeiten[playerid]);
  599. if(fexist(pfad))
  600. {
  601. new endzahl;
  602. if(listitem==0)
  603. {
  604. endzahl = 0;
  605. }
  606. else
  607. {
  608. endzahl = i-zahl;
  609. }
  610. if(listitem == endzahl)
  611. {
  612. bearbeiten2[playerid] = i;
  613. ShowPlayerDialog(playerid,DIALOG_EBCONFIG2,DIALOG_STYLE_LIST,"Restaurant Menü","Name ändern\nLeben ändern\nPreis ändern","Auswählen","Zurück");
  614. break;
  615. }
  616. }
  617. else
  618. {
  619. if(i==MAX_GERICHTE-1)
  620. {
  621. i--;
  622. }
  623. zahl+=1;
  624. }
  625. }
  626. }
  627. else
  628. {
  629. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  630. }
  631. }
  632. if(dialogid == DIALOG_EBGDEL)
  633. {
  634. if(response)
  635. {
  636. new zahl;
  637. for(new i;i<MAX_GERICHTE;i++)
  638. {
  639. new pfad[50];
  640. format(pfad,50,"/Gerichte/%i %i.ini",i,bearbeiten[playerid]);
  641. if(fexist(pfad))
  642. {
  643. new endzahl;
  644. if(listitem==0)
  645. {
  646. endzahl = 0;
  647. }
  648. else
  649. {
  650. endzahl = i-zahl;
  651. }
  652. if(listitem == endzahl)
  653. {
  654. fremove(pfad);
  655. SendClientMessage(playerid,weiss,"Gericht erfolgreich gelöscht");
  656. break;
  657. }
  658. }
  659. else
  660. {
  661. if(i==MAX_GERICHTE-1)
  662. {
  663. i--;
  664. }
  665. zahl+=1;
  666. }
  667. }
  668. }
  669. else
  670. {
  671. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  672. }
  673. }
  674. if(dialogid == DIALOG_EBPICK)
  675. {
  676. if(response)
  677. {
  678. if(IsNumeric(inputtext))
  679. {
  680. BSN[bearbeiten[playerid]][bpickid] = strval(inputtext);
  681. SaveBSN(bearbeiten[playerid]);
  682. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  683. }
  684. else
  685. {
  686. SendClientMessage(playerid,weiss,"Sie müssen eine Zahl angeben");
  687. ShowPlayerDialog(playerid,DIALOG_EBPICK,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun die Pickup ID ein\n(Tipp: ID 1582 = Pizza Box ID 1239 Informations Pickup/I Pickup)","ändern","Zurück");
  688. }
  689. }
  690. else
  691. {
  692. ShowPlayerDialog(playerid,DIALOG_EBCONFIG,DIALOG_STYLE_LIST,"Restaurant Menü","Namen ändern\nGericht hinzufügen\nGericht bearbeiten\nGericht löschen\nPosition ändern\nPickup ID ändern","Auswählen","Zurück");
  693. }
  694. }
  695. if(dialogid == DIALOG_EBCONFIG)
  696. {
  697. if(response)
  698. {
  699. if(listitem == 0)
  700. {
  701. ShowPlayerDialog(playerid,DIALOG_EBNAME,DIALOG_STYLE_INPUT,"Restaurant Name","Geben sie nun den neuen Namen ein","Umbenennen","Zurück");
  702. }
  703. if(listitem == 1)
  704. {
  705. ShowPlayerDialog(playerid,DIALOG_EBGERI,DIALOG_STYLE_INPUT,"Gerichts Name","Geben sie nun den Namen des neuen Gerichts ein","Weiter","Zurück");
  706. }
  707. if(listitem == 2)
  708. {
  709. new string[2048],pfad[50];
  710. for(new i;i<MAX_GERICHTE;i++)
  711. {
  712. format(pfad,50,"/Gerichte/%i %i.ini",i,bearbeiten[playerid]);
  713. if(fexist(pfad))
  714. {
  715. format(string,2048,"%s\n%s",string,bgericht[bearbeiten[playerid]][i]);
  716. }
  717. if(i==MAX_GERICHTE-1)
  718. {
  719. ShowPlayerDialog(playerid,DIALOG_EBGEDIT,DIALOG_STYLE_LIST,"Restaurant Menü",string,"Weiter","Zurück");
  720. }
  721. }
  722. }
  723. if(listitem == 3)
  724. {
  725. new string[2048],pfad[50];
  726. for(new i;i<MAX_GERICHTE;i++)
  727. {
  728. format(pfad,50,"/Gerichte/%i %i.ini",i,bearbeiten[playerid]);
  729. if(fexist(pfad))
  730. {
  731. format(string,2048,"%s\n%s",string,bgericht[bearbeiten[playerid]][i]);
  732. }
  733. if(i==MAX_GERICHTE-1)
  734. {
  735. ShowPlayerDialog(playerid,DIALOG_EBGDEL,DIALOG_STYLE_LIST,"Restaurant Menü",string,"Löschen","Zurück");
  736. }
  737. }
  738. }
  739. if(listitem == 4)
  740. {
  741. new Float:Pos[3];
  742. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  743. BSN[bearbeiten[playerid]][bx] = Pos[0];
  744. BSN[bearbeiten[playerid]][by] = Pos[1];
  745. BSN[bearbeiten[playerid]][bz] = Pos[2];
  746. DestroyPickup(BSN[bearbeiten[playerid]][bpick]);
  747. BSN[bearbeiten[playerid]][bpick] = CreatePickup(BSN[bearbeiten[playerid]][bpickid],1,BSN[bearbeiten[playerid]][bx],BSN[bearbeiten[playerid]][by],BSN[bearbeiten[playerid]][bz],0);
  748. SendClientMessage(playerid,weiss,"Position wurde geändert");
  749. SaveBSN(bearbeiten[playerid]);
  750. }
  751. if(listitem == 5)
  752. {
  753. ShowPlayerDialog(playerid,DIALOG_EBPICK,DIALOG_STYLE_INPUT,"Restaurant Menü","Geben sie nun die Pickup ID ein\n(Tipp: ID 1582 = Pizza Box ID 1239 Informations Pickup/I Pickup)","ändern","Zurück");
  754. }
  755. }
  756. else
  757. {
  758. new pfad[50],string[1024];
  759. for(new i;i<MAX_BSN;i++)
  760. {
  761. format(pfad,50,"/BSN/%i.ini",i);
  762. if(fexist(pfad))
  763. {
  764. if(strcmp(BSN[i][bname],"Leer",true)==0)
  765. {
  766. }
  767. else
  768. {
  769. format(string,1024,"%s\n%s",string,BSN[i][bname]);
  770. }
  771. if(i==MAX_BSN-1)
  772. {
  773. ShowPlayerDialog(playerid,DIALOG_BSNS2,DIALOG_STYLE_LIST,"Restaurant Menü",string,"Auswählen","Zurück");
  774. }
  775. }
  776. }
  777. }
  778. }
  779. return 1;
  780. }
  781. stock LoadBSN(bsnid)
  782. {
  783. new pfad[50];
  784. format(pfad,50,"/BSN/%i.ini",bsnid);
  785. if(fexist(pfad))
  786. {
  787. new string[3000],File:datei=fopen(pfad,io_read);
  788. fread(datei,string);
  789. fclose(datei);
  790. sscanf(string,"s[50] ",BSN[bsnid][bname]);
  791. if(strcmp(BSN[bsnid][bname],"Leer",true)==0)
  792. {
  793. }
  794. else
  795. {
  796. LoadBSN2(bsnid);
  797. }
  798. }
  799. else
  800. {
  801. new string2[600];
  802. format(string2,600,"0 0 0 0 Leer");
  803. new File:datei=fopen(pfad,io_write);
  804. fwrite(datei,string2);
  805. fclose(datei);
  806. LoadBSN2(bsnid);
  807. }
  808. return 1;
  809. }
  810. stock LoadBSN2(bsnid)
  811. {
  812. new pfad[50];
  813. format(pfad,50,"/BSN/%i.ini",bsnid);
  814. if(fexist(pfad))
  815. {
  816. new string[500],i,pfad2[50],File:datei=fopen(pfad,io_read);
  817. fread(datei,string);
  818. fclose(datei);
  819. sscanf(string,"fffis[50]",BSN[bsnid][bx],BSN[bsnid][by],BSN[bsnid][bz],BSN[bsnid][bpickid],BSN[bsnid][bname]);
  820. if(strcmp(BSN[bsnid][bname],"Leer",true)==0)
  821. {
  822. }
  823. else
  824. {
  825. BSN[bsnid][bpick] = CreatePickup(BSN[bsnid][bpickid],1,BSN[bsnid][bx],BSN[bsnid][by],BSN[bsnid][bz],0);
  826. if(strfind(BSN[bsnid][bname],"?")!=-1)
  827. {
  828. strins(BSN[bsnid][bname]," ",strfind(BSN[bsnid][bname],"?"));
  829. strdel(BSN[bsnid][bname],strfind(BSN[bsnid][bname],"?"),strfind(BSN[bsnid][bname],"?")+1);
  830. }
  831. for(;i<MAX_GERICHTE;i++)
  832. {
  833. format(pfad2,50,"/Gerichte/%i %i.ini",i,bsnid);
  834. if(fexist(pfad2))
  835. {
  836. LoadGericht(i,bsnid);
  837. }
  838. }
  839. }
  840. }
  841. return 1;
  842. }
  843. stock SaveBSN(bsnid)
  844. {
  845. new pfad[50];
  846. format(pfad,50,"/BSN/%i.ini",bsnid);
  847. if(fexist(pfad))
  848. {
  849. if(strfind(BSN[bsnid][bname]," ")!=-1)
  850. {
  851. strins(BSN[bsnid][bname],"?",strfind(BSN[bsnid][bname]," "));
  852. strdel(BSN[bsnid][bname],strfind(BSN[bsnid][bname]," "),strfind(BSN[bsnid][bname]," ")+1);
  853. }
  854. new string[200];
  855. format(string,200,"%f %f %f %i %s",BSN[bsnid][bx],BSN[bsnid][by],BSN[bsnid][bz],BSN[bsnid][bpickid],BSN[bsnid][bname]);
  856. new File:datei=fopen(pfad,io_write);
  857. fwrite(datei,string);
  858. fclose(datei);
  859. new pfad2[50],i;
  860. for(;i<MAX_GERICHTE;i++)
  861. {
  862. format(pfad2,50,"/Gerichte/%i %i.ini",i,bsnid);
  863. if(fexist(pfad2))
  864. {
  865. SaveGericht(i,bsnid);
  866. }
  867. }
  868. if(strfind(BSN[bsnid][bname],"?")!=-1)
  869. {
  870. strins(BSN[bsnid][bname]," ",strfind(BSN[bsnid][bname],"?"));
  871. strdel(BSN[bsnid][bname],strfind(BSN[bsnid][bname],"?"),strfind(BSN[bsnid][bname],"?")+1);
  872. }
  873. }
  874. return 1;
  875. }
  876. stock LoadGericht(gericht,bsnid)
  877. {
  878. new pfad[50];
  879. format(pfad,50,"/Gerichte/%i %i.ini",gericht,bsnid);
  880. if(fexist(pfad))
  881. {
  882. new string[200],File:datei=fopen(pfad,io_read);
  883. fread(datei,string);
  884. fclose(datei);
  885. sscanf(string,"fis",bhp[bsnid][gericht],bpreis[bsnid][gericht],bgericht[bsnid][gericht]);
  886. if(strfind(bgericht[bsnid][gericht],"?")!=-1)
  887. {
  888. strins(bgericht[bsnid][gericht]," ",strfind(bgericht[bsnid][gericht],"?"));
  889. strdel(bgericht[bsnid][gericht],strfind(bgericht[bsnid][gericht],"?"),strfind(bgericht[bsnid][gericht],"?")+1);
  890. }
  891. }
  892. return 1;
  893. }
  894. stock SaveGericht(gericht,bsnid)
  895. {
  896. new pfad[50];
  897. format(pfad,50,"/Gerichte/%i %i.ini",gericht,bsnid);
  898. if(fexist(pfad))
  899. {
  900. if(strfind(bgericht[bsnid][gericht]," ")!=-1)
  901. {
  902. strins(bgericht[bsnid][gericht],"?",strfind(bgericht[bsnid][gericht]," "));
  903. strdel(bgericht[bsnid][gericht],strfind(bgericht[bsnid][gericht]," "),strfind(bgericht[bsnid][gericht]," ")+1);
  904. }
  905. new string[200];
  906. format(string,200,"%f %i %s",bhp[bsnid][gericht],bpreis[bsnid][gericht],bgericht[bsnid][gericht]);
  907. new File:datei=fopen(pfad,io_write);
  908. fwrite(datei,string);
  909. fclose(datei);
  910. if(strfind(bgericht[bsnid][gericht],"?")!=-1)
  911. {
  912. strins(bgericht[bsnid][gericht]," ",strfind(bgericht[bsnid][gericht],"?"));
  913. strdel(bgericht[bsnid][gericht],strfind(bgericht[bsnid][gericht],"?"),strfind(bgericht[bsnid][gericht],"?")+1);
  914. }
  915. }
  916. return 1;
  917. }
  918. stock IsNumeric(const string[]) {
  919. new length=strlen(string);
  920. if (length==0) return false;
  921. for (new i = 0; i < length; i++) {
  922. if (
  923. (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')
  924. || (string[i]=='-' && i!=0) //
  925. || (string[i]=='+' && i!=0) //
  926. ) return false;
  927. }
  928. if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
  929. return true;
  930. }
  931. forward bsnladen();
  932. public bsnladen()
  933. {
  934. bsn += 1;
  935. if(bsn==MAX_BSN-1)
  936. {
  937. KillTimer(bstimer);
  938. }
  939. LoadBSN(bsn);
  940. }
  941. forward unpause(playerid);
  942. public unpause(playerid)
  943. {
  944. pause[playerid] = 0;
  945. }
  946. stock sscanf(string[], format[], {Float,_}:...)
  947. {
  948. #if defined isnull
  949. if (isnull(string))
  950. #else
  951. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  952. #endif
  953. {
  954. return format[0];
  955. }
  956. #pragma tabsize 4
  957. new
  958. formatPos = 0,
  959. stringPos = 0,
  960. paramPos = 2,
  961. paramCount = numargs(),
  962. delim = ' ';
  963. while (string[stringPos] && string[stringPos] <= ' ')
  964. {
  965. stringPos++;
  966. }
  967. while (paramPos < paramCount && string[stringPos])
  968. {
  969. switch (format[formatPos++])
  970. {
  971. case '\0':
  972. {
  973. return 0;
  974. }
  975. case 'i', 'd':
  976. {
  977. new
  978. neg = 1,
  979. num = 0,
  980. ch = string[stringPos];
  981. if (ch == '-')
  982. {
  983. neg = -1;
  984. ch = string[++stringPos];
  985. }
  986. do
  987. {
  988. stringPos++;
  989. if ('0' <= ch <= '9')
  990. {
  991. num = (num * 10) + (ch - '0');
  992. }
  993. else
  994. {
  995. return -1;
  996. }
  997. }
  998. while ((ch = string[stringPos]) > ' ' && ch != delim);
  999. setarg(paramPos, 0, num * neg);
  1000. }
  1001. case 'h', 'x':
  1002. {
  1003. new
  1004. num = 0,
  1005. ch = string[stringPos];
  1006. do
  1007. {
  1008. stringPos++;
  1009. switch (ch)
  1010. {
  1011. case 'x', 'X':
  1012. {
  1013. num = 0;
  1014. continue;
  1015. }
  1016. case '0' .. '9':
  1017. {
  1018. num = (num << 4) | (ch - '0');
  1019. }
  1020. case 'a' .. 'f':
  1021. {
  1022. num = (num << 4) | (ch - ('a' - 10));
  1023. }
  1024. case 'A' .. 'F':
  1025. {
  1026. num = (num << 4) | (ch - ('A' - 10));
  1027. }
  1028. default:
  1029. {
  1030. return -1;
  1031. }
  1032. }
  1033. }
  1034. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1035. setarg(paramPos, 0, num);
  1036. }
  1037. case 'c':
  1038. {
  1039. setarg(paramPos, 0, string[stringPos++]);
  1040. }
  1041. case 'f':
  1042. {
  1043.  
  1044. new changestr[16], changepos = 0, strpos = stringPos;
  1045. while(changepos < 16 && string[strpos] && string[strpos] != delim)
  1046. {
  1047. changestr[changepos++] = string[strpos++];
  1048. }
  1049. changestr[changepos] = '\0';
  1050. setarg(paramPos,0,_:floatstr(changestr));
  1051. }
  1052. case 'p':
  1053. {
  1054. delim = format[formatPos++];
  1055. continue;
  1056. }
  1057. case '\'':
  1058. {
  1059. new
  1060. end = formatPos - 1,
  1061. ch;
  1062. while ((ch = format[++end]) && ch != '\'') {}
  1063. if (!ch)
  1064. {
  1065. return -1;
  1066. }
  1067. format[end] = '\0';
  1068. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1069. {
  1070. if (format[end + 1])
  1071. {
  1072. return -1;
  1073. }
  1074. return 0;
  1075. }
  1076. format[end] = '\'';
  1077. stringPos = ch + (end - formatPos);
  1078. formatPos = end + 1;
  1079. }
  1080. case 'u':
  1081. {
  1082. new
  1083. end = stringPos - 1,
  1084. id = 0,
  1085. bool:num = true,
  1086. ch;
  1087. while ((ch = string[++end]) && ch != delim)
  1088. {
  1089. if (num)
  1090. {
  1091. if ('0' <= ch <= '9')
  1092. {
  1093. id = (id * 10) + (ch - '0');
  1094. }
  1095. else
  1096. {
  1097. num = false;
  1098. }
  1099. }
  1100. }
  1101. if (num && IsPlayerConnected(id))
  1102. {
  1103. setarg(paramPos, 0, id);
  1104. }
  1105. else
  1106. {
  1107. #if !defined foreach
  1108. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1109. #define __SSCANF_FOREACH__
  1110. #endif
  1111. string[end] = '\0';
  1112. num = false;
  1113. new
  1114. name[MAX_PLAYER_NAME];
  1115. id = end - stringPos;
  1116. foreach (Player, playerid)
  1117. {
  1118. GetPlayerName(playerid, name, sizeof (name));
  1119. if (!strcmp(name, string[stringPos], true, id))
  1120. {
  1121. setarg(paramPos, 0, playerid);
  1122. num = true;
  1123. break;
  1124. }
  1125. }
  1126. if (!num)
  1127. {
  1128. setarg(paramPos, 0, INVALID_PLAYER_ID);
  1129. }
  1130. string[end] = ch;
  1131. #if defined __SSCANF_FOREACH__
  1132. #undef foreach
  1133. #undef __SSCANF_FOREACH__
  1134. #endif
  1135. }
  1136. stringPos = end;
  1137. }
  1138. case 's', 'z':
  1139. {
  1140. new
  1141. i = 0,
  1142. ch;
  1143. if (format[formatPos])
  1144. {
  1145. while ((ch = string[stringPos++]) && ch != delim)
  1146. {
  1147. setarg(paramPos, i++, ch);
  1148. }
  1149. if (!i)
  1150. {
  1151. return -1;
  1152. }
  1153. }
  1154. else
  1155. {
  1156. while ((ch = string[stringPos++]))
  1157. {
  1158. setarg(paramPos, i++, ch);
  1159. }
  1160. }
  1161. stringPos--;
  1162. setarg(paramPos, i, '\0');
  1163. }
  1164. default:
  1165. {
  1166. continue;
  1167. }
  1168. }
  1169. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1170. {
  1171. stringPos++;
  1172. }
  1173. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1174. {
  1175. stringPos++;
  1176. }
  1177. paramPos++;
  1178. }
  1179. do
  1180. {
  1181. if ((delim = format[formatPos++]) > ' ')
  1182. {
  1183. if (delim == '\'')
  1184. {
  1185. while ((delim = format[formatPos++]) && delim != '\'') {}
  1186. }
  1187. else if (delim != 'z')
  1188. {
  1189. return delim;
  1190. }
  1191. }
  1192. }
  1193. while (delim > ' ');
  1194. return 0;
  1195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement