Advertisement
Guest User

Rainbow Reload

a guest
Sep 26th, 2013
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 66.05 KB | None | 0 0
  1. #include <a_samp>
  2. #include <ocmd>
  3. #include <Dini>
  4.  
  5. #define REGISTER 1
  6. #define LOGIN 2
  7. #define AUSWEISEN 3
  8. #define AUSWAHL 4
  9. #define INFO 5
  10.  
  11. #define COLOR_GREY 0x969696FF
  12. #define COLOR_RED 0xFF0005FF
  13. #define COLOR_GREEN 0x00FF14FF
  14. #define COLOR_WHITE 0xFAFAFAFF
  15. #define COLOR_BLUE 0x00CDFFFF
  16. #define COLOR_PICKUP 0xFF7DFFDD
  17. #define COLOR_ADMINCHAT 0x8782FFFF
  18. #define COLOR_FRAKTION 0x00FFE6FF
  19.  
  20. #define SCM SendClientMessage
  21. #define SCMA SendClientMessageToAll
  22.  
  23. #define TutorialPickup 2604.1316,49.8872,26.4022
  24. #define TutorialText "Hier kannst du das Tutorial starten.\nDas Tutorial kannst du nur mit Level 1 absolvieren und somit\neinen schnellen Spielvorteil sichern.\nNutze /tutorial"
  25.  
  26. #define AusweisPickup 2443.2563,60.6045,28.4416
  27. #define AusweisText "Bürgermeister:\n/ausweis"
  28.  
  29. #define tutPunkt1 2570.7417,41.6072,26.3359
  30. #define tutPunkt2 2512.1597,41.6980,26.3359
  31. #define tutPunkt3 2443.2563,60.6045,28.4416
  32.  
  33. #define cpunkt1 1894.8854,181.4516,36.7254
  34. #define cpunkt2 1677.7045,245.6753,14.3652
  35. #define cpunkt3 1562.7231,257.6557,15.6507
  36. #define cpunkt4 1407.3323,213.0474,19.1814
  37. #define cpunkt5 1191.4622,304.4551,19.5741
  38. #define cpunkt6 1052.8013,191.7807,32.9835
  39. #define cpunkt7 871.6202,217.6895,29.3588
  40. #define cpunkt8 536.1204,160.1346,24.6069
  41. #define cpunkt9 351.8760,104.0669,4.7702
  42. #define cpunkt10 -83.1265,1.6818,3.2319
  43.  
  44. #define faqKoksPickup -84.3639,-7.0715,2.8424
  45. #define faqKoksText "Was ist die Koksfarm?\nAn der Koksfarm werden Drogen für die Fbanken hergestellt.\nSie ist illegal und daher ein verbotener Ort."
  46.  
  47. #define MAX_FRACS 30
  48. #define MAX_FCARS 100
  49. #define MAX_AUTOHAUS 50
  50. #define MAX_AHCARS 500
  51.  
  52. enum SpielerDaten
  53. {
  54. pName[MAX_PLAYER_NAME],
  55. pLevel,
  56. pFraktion,
  57. pAdminlevel,
  58. pGeld,
  59. pPasswort[64],
  60. pDuty,
  61. pZivi,
  62. pAusweis,
  63. pDrogen,
  64. pRang,
  65. pMats,
  66. pLeader,
  67. pDeckname[64],
  68. pTot,
  69. Float:ptX,
  70. Float:ptY,
  71. Float:ptZ
  72. }
  73. enum AHCarDaten
  74. {
  75. ahModel,
  76. ahFarbe1,
  77. ahFarbe2,
  78. Float:ahX,
  79. Float:ahY,
  80. Float:ahZ,
  81. Float:ahA,
  82. ahBesitzer[64],
  83. ahId,
  84. ahPreis,
  85. Text3D:ahText
  86. }
  87. enum FcarDaten
  88. {
  89. vId,
  90. vFid,
  91. Float:vX,
  92. Float:vY,
  93. Float:vZ,
  94. Float:vA,
  95. vModel,
  96. vColor1,
  97. vColor2,
  98. vLocked,
  99. vSchild[128]
  100. }
  101. enum FraktionsDaten
  102. {
  103. fName[64],
  104. fMats,
  105. fDrogen,
  106. fID,
  107. fGeld,
  108. Float:fX,
  109. Float:fY,
  110. Float:fZ,
  111. fInterior,
  112. fPickup
  113. }
  114. enum AutohausDaten
  115. {
  116. aName[64],
  117. aBesitzer[64],
  118. aInhalt,
  119. Float:aX,
  120. Float:aY,
  121. Float:aZ,
  122. aPickup,
  123. Text3D:aText
  124. }
  125. new ACar[MAX_AHCARS][AHCarDaten];
  126. new AH[MAX_AUTOHAUS][AutohausDaten];
  127. new Frak[MAX_FRACS][FraktionsDaten];
  128. new Spieler[MAX_PLAYERS][SpielerDaten];
  129. new Fcar[MAX_FCARS][FcarDaten];
  130.  
  131. new tutChecks[MAX_PLAYERS] = 0;
  132. new crackChecks[MAX_PLAYERS] = 0;
  133. new Maske[MAX_PLAYERS] = 0;
  134.  
  135. new CrackVehicles[3];
  136.  
  137. new maxping = 300;
  138.  
  139. new Text:LOGINSCREEN;
  140.  
  141. forward pKickTimer(playerid);
  142. forward SpawnTimer(playerid);
  143. forward SekundenTimer(playerid);
  144. forward DeathTimer(playerid);
  145.  
  146. main()
  147. {
  148. print("-> Der Server startet gerade und öffnet alle Dateien.");
  149. print("-> Sollte der Server nicht richtig starten, wenden sie sich");
  150. print("-> bitte an den Scripter oder an Sa-Mp.com.");
  151. }
  152.  
  153. public OnGameModeInit()
  154. {
  155. UsePlayerPedAnims();
  156. ShowPlayerMarkers(0);
  157. DisableInteriorEnterExits();
  158. SetGameModeText("Ra|nb0w Reallife by [rBr]");
  159. AddPlayerClass(132, 2599.6543,50.0564,26.4170, 270.9263, 0, 0, 0, 0, 0, 0);
  160.  
  161. //Pickups//
  162. CreatePickup(1239,1,TutorialPickup,0);
  163. Create3DTextLabel(TutorialText,COLOR_PICKUP,TutorialPickup,40.0,0,0);
  164. CreatePickup(1239,1,AusweisPickup,0);
  165. Create3DTextLabel(AusweisText,COLOR_PICKUP,AusweisPickup,40.0,0,0);
  166. CreatePickup(1239,1,faqKoksPickup,0);
  167. Create3DTextLabel(faqKoksText,COLOR_PICKUP,faqKoksPickup,40.0,0,0);
  168.  
  169. CrackVehicles[0]=AddStaticVehicle(414,1901.9596,164.7366,37.2389,337.7972,72,1); // CrackFahrzeug1
  170. CrackVehicles[1]=AddStaticVehicle(418,1948.1162,154.2859,37.0325,320.7083,108,108); // CrackFahrzeug2
  171. CrackVehicles[2]=AddStaticVehicle(440,1925.1139,171.3081,37.4154,73.7354,110,110); // CrackFahrzeug3
  172.  
  173. //Ladeszenen
  174. for(new i=1; i<MAX_FRACS; i++)
  175. {
  176. fLaden(i);
  177. }
  178. for(new i=1; i<MAX_FCARS; i++)
  179. {
  180. vLaden(i);
  181. }
  182. for(new i=1; i<MAX_AUTOHAUS; i++)
  183. {
  184. ahLaden(i);
  185. }
  186. for(new i=1; i<MAX_AHCARS; i++)
  187. {
  188. acarLaden(i);
  189. }
  190.  
  191. LOGINSCREEN = TextDrawCreate(0.00000,0.000000,"loadsc8:loadsc8");
  192. TextDrawBackgroundColor(LOGINSCREEN,255);
  193. TextDrawFont(LOGINSCREEN,4);
  194. TextDrawLetterSize(LOGINSCREEN,0.759999,1.000000);
  195. TextDrawColor(LOGINSCREEN,-1);
  196. TextDrawSetOutline(LOGINSCREEN,0);
  197. TextDrawSetProportional(LOGINSCREEN,1);
  198. TextDrawSetShadow(LOGINSCREEN,1);
  199. TextDrawUseBox(LOGINSCREEN,1);
  200. TextDrawBoxColor(LOGINSCREEN,255);
  201. TextDrawTextSize(LOGINSCREEN,640.000000,448.000000);
  202.  
  203. return 1;
  204. }
  205.  
  206. public OnGameModeExit()
  207. {
  208. for(new i=0; i<MAX_PLAYERS; i++)
  209. {
  210. if(IsPlayerConnected(i))
  211. {
  212. pSpeichern(i);
  213. }
  214. }
  215. for(new i=1; i<MAX_FRACS; i++)
  216. {
  217. fSpeichern(i);
  218. }
  219. for(new i=1; i<MAX_AUTOHAUS; i++)
  220. {
  221. ahSpeichern(i);
  222. }
  223. print(" ");
  224. print("Der Server wurde heruntergefahren und sollte alle Daten gespeichert haben.");
  225. print("Sollten Daten verloren gegangen sein, wenden sie sich bitte an den Scripter.");
  226. return 1;
  227. }
  228.  
  229. public OnPlayerRequestClass(playerid, classid)
  230. {
  231. SetTimerEx("SpawnTimer",500,0,"i",playerid);
  232. return 1;
  233. }
  234.  
  235. public SekundenTimer(playerid)
  236. {
  237. if(Maske[playerid] == 1){
  238. SetPlayerAttachedObject(playerid,2,19036,2,0.073, 0.029, 0, 88, 75, 0);
  239. new Float:hp, Float:arm, string[128];
  240. GetPlayerHealth(playerid,hp);
  241. GetPlayerArmour(playerid,arm);
  242. format(string,sizeof(string),"{00FF0A}%s\n{FAFAFA}L: %.0f R: %.0f",Spieler[playerid][pDeckname],hp,arm);
  243. SetPlayerChatBubble(playerid,string,COLOR_WHITE,25,6000);}
  244. else{
  245. RemovePlayerAttachedObject(playerid,2);
  246. maskeAbsetzen(playerid);}
  247. new ping = GetPlayerPing(playerid);
  248. if(ping > maxping)
  249. {
  250. new string[128];
  251. format(string,sizeof(string),"[Anti-HP] %s wurde wegen einem hohen Ping (>= %i) gekickt.",GetName(playerid),maxping);
  252. SCMA(COLOR_RED,string);
  253. pKick(playerid);
  254. }
  255. return 1;
  256. }
  257.  
  258. public OnPlayerConnect(playerid)
  259. {
  260. TextDrawShowForPlayer(playerid, LOGINSCREEN);
  261. SetTimerEx("SekundenTimer",5000,1,"i",playerid);
  262. SetPlayerColor(playerid,COLOR_WHITE);
  263. SetPlayerCameraPos(playerid,2516.8420,40.2955,37.4091);
  264. SetPlayerCameraLookAt(playerid,2547.6743,54.1618,26.9840);
  265. new pfad[128];
  266. format(pfad,sizeof(pfad),"/Rainbow/Spieler/%s.ini",GetName(playerid));
  267. GetPlayerName(playerid,Spieler[playerid][pName],MAX_PLAYER_NAME);
  268. if(dini_Exists(pfad))
  269. {
  270. ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"-> Login auf Rainbow Reallife","Wilkommen zurück auf Rainbow Reallife!\nHier kannst du nun das Passwort eingeben, dass du bei der Registrierung gewählt hast.\nSolltest du das Passwort vergessen haben, wende dich an einen Admin.","Annehmen","Abbrechen");
  271. }
  272. else
  273. {
  274. ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_PASSWORD,"-> Registrierung auf Rainbow Reallife","In diesem Schritt musst du dein Passwort eingeben, damit du spielen kannst.\nDu solltest dein Passwort NIE weitergeben, da du deine Gegenstände\n nicht erstattet bekommst. Somit: VORSICHT!","Annehmen","Abbrechen");
  275. }
  276. return 1;
  277. }
  278.  
  279. public OnPlayerDisconnect(playerid, reason)
  280. {
  281. if(Maske[playerid] == 1){
  282. SetPlayerName(playerid,Spieler[playerid][pName]);}
  283. pSpeichern(playerid);
  284. return 1;
  285. }
  286.  
  287. public OnPlayerSpawn(playerid)
  288. {
  289. TextDrawHideForPlayer(playerid,LOGINSCREEN);
  290. if(Maske[playerid] == 1){
  291. ShowPlayerNameTagForPlayer(playerid,playerid,false);}
  292. else{
  293. ShowPlayerNameTagForPlayer(playerid,playerid,true);}
  294. if(Spieler[playerid][pTot] == 1){
  295. SetPlayerPos(playerid,Spieler[playerid][ptX],Spieler[playerid][ptY],Spieler[playerid][ptZ]);
  296. TogglePlayerControllable(playerid,0);
  297. SetPlayerHealth(playerid,20);
  298. ApplyAnimation(playerid,"CRACK", "crckdeth2",4.0,1,0,0,0,0);
  299. }
  300. return 1;
  301. }
  302.  
  303. public DeathTimer(playerid)
  304. {
  305. Spieler[playerid][pTot] = 0;
  306. ClearAnimations(playerid);
  307. TogglePlayerControllable(playerid,1);
  308. SpawnIt(playerid);
  309. return 1;
  310. }
  311.  
  312. public OnPlayerDeath(playerid, killerid, reason)
  313. {
  314. Spieler[playerid][pTot] = 1;
  315. SetTimerEx("DeathTimer",1000*60*3,0,"i",playerid);
  316. GetPlayerPos(playerid,Spieler[playerid][ptX],Spieler[playerid][ptY],Spieler[playerid][ptZ]);
  317. SCM(playerid,COLOR_RED,"[Info] Du bist gestorben. Du liegst nun 3 Minuten auf dem Boden.");
  318. return 1;
  319. }
  320.  
  321. public OnVehicleSpawn(vehicleid)
  322. {
  323. printf("Fahrzeug %d mit dem Model %d gespawnt.",vehicleid,GetVehicleModel(vehicleid));
  324. return 1;
  325. }
  326.  
  327. public OnVehicleDeath(vehicleid, killerid)
  328. {
  329. return 1;
  330. }
  331.  
  332. public OnPlayerText(playerid, text[])
  333. {
  334. new string[128];
  335. format(string,sizeof(string),"%s sagt: %s",GetName(playerid),text);
  336. rChat(playerid,string);
  337. return 0;
  338. }
  339.  
  340. public OnPlayerCommandText(playerid, cmdtext[])
  341. {
  342. if (strcmp("/tutorial", cmdtext, true, 10) == 0)
  343. {
  344. if(Spieler[playerid][pLevel] > 1)return ErrorMsg(playerid,"Fehler: Dein Level ist ist höher als 1.");
  345. if(tutChecks[playerid] >= 1)return ErrorMsg(playerid,"Fehler: Du bist bereits im Tutorial.");
  346. SetPlayerCheckpoint(playerid,tutPunkt1,5.0);
  347. tutChecks[playerid] = 1;
  348. SCM(playerid,COLOR_GREEN,"===> Du hast das Tutorial gestartet. Gehe zum Checkpoint.");
  349. return 1;
  350. }
  351. if(strcmp("/ausweis",cmdtext,true,10)==0)
  352. {
  353. ShowPlayerDialog(playerid,AUSWEISEN,DIALOG_STYLE_LIST,"Wähle deine Kategorie:","Ausweis kündigen\nNeuen Ausweis beantragen","Auswählen","Abbrechen");
  354. return 1;
  355. }
  356. return ErrorMsg(playerid,"Fehler: Dieser Befehl wurde nicht gefunden.");
  357. }
  358.  
  359. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  360. {
  361. if(vehicleid == CrackVehicles[0] || vehicleid == CrackVehicles[1] || vehicleid == CrackVehicles[2])
  362. {
  363. crackChecks[playerid] = 1;
  364. SCM(playerid,COLOR_GREEN,"[Info] Du hast angefangen Drogen zu farmen.");
  365. SetPlayerCheckpoint(playerid,cpunkt1,5.0);
  366. }
  367. PlayerInCar(playerid,vehicleid);
  368. return 1;
  369. }
  370.  
  371. public OnPlayerExitVehicle(playerid, vehicleid)
  372. {
  373. if(vehicleid == CrackVehicles[0] || vehicleid == CrackVehicles[1] || vehicleid == CrackVehicles[2])
  374. {
  375. crackChecks[playerid] = 0;
  376. SCM(playerid,COLOR_RED,"[Info] Du hast aufgehört Drogen zu farmen.");
  377. DisablePlayerCheckpoint(playerid);
  378. }
  379. return 1;
  380. }
  381.  
  382. public OnPlayerStateChange(playerid, newstate, oldstate)
  383. {
  384. return 1;
  385. }
  386.  
  387. public OnPlayerEnterCheckpoint(playerid)
  388. {
  389. if(crackChecks[playerid] == 1){
  390. crackChecks[playerid] = 2;
  391. SetPlayerCheckpoint(playerid,cpunkt2,5.0);
  392. return 1;}
  393. if(crackChecks[playerid] == 2){
  394. crackChecks[playerid] = 3;
  395. SetPlayerCheckpoint(playerid,cpunkt3,5.0);
  396. return 1;}
  397. if(crackChecks[playerid] == 3){
  398. crackChecks[playerid] = 4;
  399. SetPlayerCheckpoint(playerid,cpunkt4,5.0);
  400. return 1;}
  401. if(crackChecks[playerid] == 4){
  402. crackChecks[playerid] = 5;
  403. SetPlayerCheckpoint(playerid,cpunkt5,5.0);
  404. return 1;}
  405. if(crackChecks[playerid] == 5){
  406. crackChecks[playerid] = 6;
  407. SetPlayerCheckpoint(playerid,cpunkt6,5.0);
  408. return 1;}
  409. if(crackChecks[playerid] == 6){
  410. crackChecks[playerid] = 7;
  411. SetPlayerCheckpoint(playerid,cpunkt7,5.0);
  412. return 1;}
  413. if(crackChecks[playerid] == 7){
  414. crackChecks[playerid] = 8;
  415. SetPlayerCheckpoint(playerid,cpunkt8,5.0);
  416. return 1;}
  417. if(crackChecks[playerid] == 8){
  418. crackChecks[playerid] = 9;
  419. SetPlayerCheckpoint(playerid,cpunkt9,5.0);
  420. return 1;}
  421. if(crackChecks[playerid] == 9){
  422. crackChecks[playerid] = 10;
  423. SetPlayerCheckpoint(playerid,cpunkt10,5.0);
  424. return 1;}
  425. if(crackChecks[playerid] == 10){
  426. crackChecks[playerid] = 1;
  427. SetPlayerCheckpoint(playerid,cpunkt1,5.0);
  428. Spieler[playerid][pDrogen] += 2;
  429. SCM(playerid,COLOR_GREEN,"Erfolgreich! Du hast 2Gramm Drogen gefarmt. Du brauchst 6 Gramm zum Healen.");
  430. return 1;}
  431. if(tutChecks[playerid] == 1){
  432. SetPlayerCheckpoint(playerid,tutPunkt2,5.0);
  433. tutChecks[playerid] = 2;
  434. SCM(playerid,COLOR_GREEN,"====================Wilkommen im Tutorial====================");
  435. SCM(playerid,COLOR_GREEN,"Einleitung: Wilkommen im Tutorial.");
  436. SCM(playerid,COLOR_GREEN,"Einleitung: Dies ist die Stadt, in der du ab sofort leben wirst.");
  437. SCM(playerid,COLOR_GREEN,"Einleitung: Gehe weiter in die Stadt hinein, um fortzufahren.");
  438. return 1;}
  439. if(tutChecks[playerid] == 2){
  440. SetPlayerCheckpoint(playerid,tutPunkt3,5.0);
  441. tutChecks[playerid] = 3;
  442. SCM(playerid,COLOR_GREEN,"====================Schritt 2 des Tutorial====================");
  443. SCM(playerid,COLOR_GREEN,"Schritt 2: Wie wir sehen, willst du das Tutorial fortsetzen.");
  444. SCM(playerid,COLOR_GREEN,"Schritt 2: Gehe erstmal zum Bürgermeister, damit du in der Stadt registriert wirst.");
  445. SCM(playerid,COLOR_GREEN,"Schritt 2: Sobald du dort bist, kannst du /ausweis eingeben und ihn beantragen.");
  446. return 1;}
  447. if(tutChecks[playerid] == 3){
  448. tutChecks[playerid] = 0;
  449. SCM(playerid,COLOR_GREEN,"====================Ende des Tutorial====================");
  450. SCM(playerid,COLOR_GREEN,"Ende: Das Tutorial auf diesem Server war echt nicht lang und daher kann man es jedem empfehlen.");
  451. SCM(playerid,COLOR_GREEN,"Ende: Für den Abschluss des Tutorials bekommst du ebenfalls einen großen Startbonus.");
  452. SCM(playerid,COLOR_GREEN,"Ende: Wenn du eine Fraktion suchst, kannst du dich im Forum bewerben,");
  453. SCM(playerid,COLOR_GREEN,"Ende: einen Leader im TeamSpeak 3 ansprechen oder einen /report schreiben und dich weiter erkundigen.");
  454. SCM(playerid,COLOR_RED,"Erfolg: Du hast Level 2, 1.200$ bekommen und das Tutorial abgeschlossen.");
  455. GebGeld(playerid,1200);
  456. SetScore(playerid,2);
  457. pSpeichern(playerid);
  458. DisablePlayerCheckpoint(playerid);
  459. return 1;}
  460. return 1;
  461. }
  462.  
  463. public OnPlayerLeaveCheckpoint(playerid)
  464. {
  465. return 1;
  466. }
  467.  
  468. public OnPlayerEnterRaceCheckpoint(playerid)
  469. {
  470. return 1;
  471. }
  472.  
  473. public OnPlayerLeaveRaceCheckpoint(playerid)
  474. {
  475. return 1;
  476. }
  477.  
  478. public OnRconCommand(cmd[])
  479. {
  480. return 1;
  481. }
  482.  
  483. public OnPlayerRequestSpawn(playerid)
  484. {
  485. return 1;
  486. }
  487.  
  488. public OnObjectMoved(objectid)
  489. {
  490. return 1;
  491. }
  492.  
  493. public OnPlayerObjectMoved(playerid, objectid)
  494. {
  495. return 1;
  496. }
  497.  
  498. public OnPlayerPickUpPickup(playerid, pickupid)
  499. {
  500. return 1;
  501. }
  502.  
  503. public OnVehicleMod(playerid, vehicleid, componentid)
  504. {
  505. return 1;
  506. }
  507.  
  508. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  509. {
  510. return 1;
  511. }
  512.  
  513. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  514. {
  515. return 1;
  516. }
  517.  
  518. public OnPlayerSelectedMenuRow(playerid, row)
  519. {
  520. return 1;
  521. }
  522.  
  523. public OnPlayerExitedMenu(playerid)
  524. {
  525. return 1;
  526. }
  527.  
  528. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  529. {
  530. return 1;
  531. }
  532.  
  533. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  534. {
  535. return 1;
  536. }
  537.  
  538. public OnRconLoginAttempt(ip[], password[], success)
  539. {
  540. return 1;
  541. }
  542.  
  543. public OnPlayerUpdate(playerid)
  544. {
  545. if(GetPlayerMoney(playerid) != Spieler[playerid][pGeld])
  546. {
  547. ResetGeld(playerid);
  548. GivePlayerMoney(playerid,Spieler[playerid][pGeld]);
  549. }
  550. return 1;
  551. }
  552.  
  553. public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
  554. {
  555. if(weaponid == 38){
  556. new string[128];
  557. format(string,sizeof(string),"[Anti-Hack] %s wurde wegen einer unerlaubten Waffe gekickt.",GetName(issuerid));
  558. SCMA(COLOR_RED,string);
  559. pKick(issuerid);}
  560. if(Maske[playerid] == 1){
  561. new Float:hp, Float:arm, string[128];
  562. GetPlayerHealth(playerid,hp);
  563. GetPlayerArmour(playerid,arm);
  564. format(string,sizeof(string),"{00FF0A}%s\n{FAFAFA}L: %.0f R: %.0f",Spieler[playerid][pDeckname],hp,arm);
  565. SetPlayerChatBubble(playerid,string,COLOR_WHITE,25,6000);}
  566. return 1;
  567. }
  568.  
  569. public OnPlayerStreamIn(playerid, forplayerid)
  570. {
  571. if(Maske[playerid] == 1){
  572. ShowPlayerNameTagForPlayer(forplayerid,playerid,false);}
  573. else{
  574. ShowPlayerNameTagForPlayer(forplayerid,playerid,true);}
  575. return 1;
  576. }
  577.  
  578. public OnPlayerStreamOut(playerid, forplayerid)
  579. {
  580. return 1;
  581. }
  582.  
  583. public OnVehicleStreamIn(vehicleid, forplayerid)
  584. {
  585. return 1;
  586. }
  587.  
  588. public OnVehicleStreamOut(vehicleid, forplayerid)
  589. {
  590. return 1;
  591. }
  592.  
  593. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  594. {
  595. switch(dialogid)
  596. {
  597. case 1:
  598. {
  599. if(response)
  600. {
  601. pErstellen(playerid,inputtext);
  602. }
  603. else
  604. {
  605. Kick(playerid);
  606. }
  607. }
  608. case 2:
  609. {
  610. if(response)
  611. {
  612. pLogin(playerid,inputtext);
  613. }
  614. else
  615. {
  616. Kick(playerid);
  617. }
  618. }
  619. case 3:
  620. {
  621. if(response)
  622. {
  623. if(listitem == 0)
  624. {
  625. Spieler[playerid][pAusweis] = 0;
  626. ShowPlayerDialog(playerid,INFO,DIALOG_STYLE_MSGBOX,"Ausweis von Rainbow Reallife","Du hast deinen Ausweis von Rukillas Dorf gekündigt.\nDu kannst dir aber auch für eine neue Stadt einen Ausweis beantragen lassen.","Alles klar!","");
  627. }
  628. if(listitem == 1)
  629. {
  630. ShowPlayerDialog(playerid,AUSWAHL,DIALOG_STYLE_LIST,"Such dir deine Stadt aus:","Rukillas Dorf\nLos Santos\nSan Fiero\nLas Venturas","Auswählen","Abbrechen");
  631. }
  632. }
  633. }
  634. case 4:
  635. {
  636. if(response)
  637. {
  638. if(listitem == 0)
  639. {
  640. Spieler[playerid][pAusweis] = 1;
  641. ShowPlayerDialog(playerid,INFO,DIALOG_STYLE_MSGBOX,"Ausweis von Rainbow Reallife","Du hast einen Ausweis für Rukillas Dorf beantragt.\nSolltest du umziehen, beantrage bitte einen neuen.","OK","");
  642. }
  643. if(listitem == 1)
  644. {
  645. Spieler[playerid][pAusweis] = 2;
  646. ShowPlayerDialog(playerid,INFO,DIALOG_STYLE_MSGBOX,"Ausweis von Rainbow Reallife","Du hast einen Ausweis für Los Santos beantragt.\nSolltest du umziehen, beantrage bitte einen neuen.","OK","");
  647. }
  648. if(listitem == 2)
  649. {
  650. Spieler[playerid][pAusweis] = 3;
  651. ShowPlayerDialog(playerid,INFO,DIALOG_STYLE_MSGBOX,"Ausweis von Rainbow Reallife","Du hast einen Ausweis für San Fiero beantragt.\nSolltest du umziehen, beantrage bitte einen neuen.","OK","");
  652. }
  653. if(listitem == 3)
  654. {
  655. Spieler[playerid][pAusweis] = 4;
  656. ShowPlayerDialog(playerid,INFO,DIALOG_STYLE_MSGBOX,"Ausweis von Rainbow Reallife","Du hast einen Ausweis für Las Venturas beantragt.\nSolltest du umziehen, beantrage bitte einen neuen.","OK","");
  657. }
  658. }
  659. }
  660. }
  661. return 1;
  662. }
  663.  
  664. stock pAusweisen(playerid)
  665. {
  666. new astadt[64];
  667. switch(Spieler[playerid][pAusweis])
  668. {
  669. case 0:{astadt="Nicht angemeldeter Bürger";}
  670. case 1:{astadt="Rukillas Dorf";}
  671. case 2:{astadt="Los Santos";}
  672. case 3:{astadt="San Fiero";}
  673. case 4:{astadt="Las Venturas";}
  674. }
  675. return astadt;
  676. }
  677.  
  678. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  679. {
  680. if(Spieler[playerid][pAdminlevel] >= 3){
  681. new Float:x, Float:y, Float:z;
  682. GetPlayerPos(clickedplayerid,x,y,z);
  683. SetPlayerPos(playerid,x,y,z+3);
  684. }
  685. return 1;
  686. }
  687.  
  688. ocmd:flock(playerid,params[])//Fraktionsfahrzeug abschließen
  689. {
  690. new veh = GetPlayerVehicleID(playerid);
  691. for(new i=1; i<MAX_FCARS; i++)
  692. {
  693. if(Fcar[i][vId] == veh)
  694. {
  695. if(Fcar[i][vFid] == Spieler[playerid][pFraktion])
  696. {
  697. switch(Fcar[i][vLocked])
  698. {
  699. case 0:{Fcar[i][vLocked] = 1;}
  700. case 1:{Fcar[i][vLocked] = 0;}
  701. }
  702. SCM(playerid,COLOR_GREEN,"Erfolgreich! DU hast das Fahrzeug auf/abgeschlossen.");
  703. return 1;
  704. }
  705. }
  706. }
  707. return 1;
  708. }
  709.  
  710. ocmd:setdeckname(playerid,params[])//Maskennamen setzen
  711. {
  712. if(Spieler[playerid][pLeader] == 0)return ErrorMsg(playerid,"Fehler: Du bist kein Leader.");
  713. if(Spieler[playerid][pFraktion] != 1)return ErrorMsg(playerid,"Fehler: Du bist kein Terrorist.");
  714. new pID, name[24], string[128];
  715. if(sscanf(params,"us",pID,name))return ErrorMsg(playerid,"Benutze: /setdeckname [SpielerName] [Deckname]");
  716. format(string,sizeof(string),"Leader %s hat %s den Decknamen %s gegeben.",GetName(playerid),GetName(pID),name);
  717. SFM(playerid,string);
  718. format(Spieler[pID][pDeckname],64,"%s",name);
  719. return 1;
  720. }
  721.  
  722. ocmd:maske(playerid,params[])//Maske auf & absetzen
  723. {
  724. if(Spieler[playerid][pFraktion] != 1)return ErrorMsg(playerid,"Fehler: Du bist nicht in der richtigen Fraktion.");
  725. if(!strcmp(Spieler[playerid][pDeckname],"Keiner",false))return ErrorMsg(playerid,"Fehler: Du hast noch keinen Decknamen.");
  726. if(Maske[playerid] == 0)
  727. {
  728. Maske[playerid] = 1;
  729. maskeAufsetzen(playerid);
  730. SetPlayerName(playerid,Spieler[playerid][pDeckname]);
  731. SCM(playerid,COLOR_RED,"Vorsicht! Du hast deine Maske aufgesetzt.");
  732. return 1;
  733. }
  734. else if(Maske[playerid] == 1)
  735. {
  736. Maske[playerid] = 0;
  737. maskeAbsetzen(playerid);
  738. SetPlayerName(playerid,Spieler[playerid][pName]);
  739. SCM(playerid,COLOR_RED,"Vorsicht! Du hast deine Maske abgenommen.");
  740. return 1;
  741. }
  742. return 1;
  743. }
  744.  
  745. ocmd:usedrugs(playerid,params[])//Nimmt Drogen
  746. {
  747. if(Spieler[playerid][pDrogen] < 6)return ErrorMsg(playerid,"Fehler: Du hast nicht genügend Gramm Drogen.");
  748. new Float:hp; GetPlayerHealth(playerid,hp);
  749. if(hp <= 10)return SetPlayerHealth(playerid,0);
  750. Spieler[playerid][pDrogen] -= 6;
  751. SetPlayerHealth(playerid,100);
  752. SetPlayerArmour(playerid,100);
  753. new string[128]; format(string,sizeof(string),"%s rollt 6 Gramm Drogen zusammen und raucht sie.",GetName(playerid));
  754. rChat(playerid,string);
  755. return 1;
  756. }
  757.  
  758. ocmd:fhelp(playerid,params[])//Fraktionshilfe
  759. {
  760. #pragma unused params
  761. if(Spieler[playerid][pFraktion] == 0)return 1;
  762. SCM(playerid,COLOR_WHITE,"=| Fraktions - Hilfe |=");
  763. SCM(playerid,COLOR_WHITE,"");
  764. SCM(playerid,COLOR_WHITE,"Benutze: /f um mit dem Mitgliedern zu schreiben.");
  765. SCM(playerid,COLOR_WHITE,"Benutze: /fbank um eure Fraktionsbank nachzuschauen.");
  766. SCM(playerid,COLOR_WHITE,"Benutze: /fauszahlen um etwas aus der Fbank zu nehmen.");
  767. SCM(playerid,COLOR_WHITE,"Benutze: /feinzahlen um etwas in die Fbank einzuzahlen.");
  768. SCM(playerid,COLOR_WHITE,"Benutze: /fmember um zu sehen, wer online ist.");
  769. SCM(playerid,COLOR_WHITE,"(Leader) Benutze: /fpark um Fahrzeug zu parken.");
  770. SCM(playerid,COLOR_WHITE,"");
  771. return 1;
  772. }
  773.  
  774. ocmd:ahelp(playerid,params[])//Adminhilfe
  775. {
  776. #pragma unused params
  777. if(Spieler[playerid][pAdminlevel] < 1)return 1;
  778. SCM(playerid,COLOR_WHITE,"=| Admin - Hilfe |=");
  779. SCM(playerid,COLOR_WHITE,"");
  780. SCM(playerid,COLOR_WHITE,"Benutze: /kick um Personen zu kicken. || /createah um ein Autohaus zu erstellen.");
  781. SCM(playerid,COLOR_WHITE,"Benutze: /ban um Spieler zu bannen. || /givemoney um einem Spieler Geld zu geben.");
  782. SCM(playerid,COLOR_WHITE,"Benutze: /createfrak um eine Fraktion zu erstellen. || /saveall um alles zu speichern.");
  783. SCM(playerid,COLOR_WHITE,"Benutze: /createfcar um ein Fraktionsfahrzeug zu erstellen. || /frakids um die Anzahl der Fraktionen zu sehen.");
  784. SCM(playerid,COLOR_WHITE,"Benutze: /importcar um ein Autohaus Fahrzeug zu erstellen. || /makeleader um einen Spieler zum Leader zu machen.");
  785. SCM(playerid,COLOR_WHITE,"Benutze: /spawnplayer um einen Spieler zu spawnen. || /restart um dem Server neu zu starten.");
  786. SCM(playerid,COLOR_WHITE,"Benutze: /delfrak um eine Fraktion zu löschen. || /delah um ein Autohaus zu löschen.");
  787. SCM(playerid,COLOR_WHITE,"Benutze: /delfcar um ein Fraktionscar zu löschen. || /setping um den Maximalen Ping zu setzen.");
  788. SCM(playerid,COLOR_WHITE,"Benutze: /delahcar um ein Autohausfahrzeug zu löschen.");
  789. return 1;
  790. }
  791.  
  792. ocmd:stats(playerid,params[])//STats einsehen
  793. {
  794. #pragma unused params
  795. ShowStats(playerid,playerid);
  796. return 1;
  797. }
  798.  
  799. ocmd:tasche(playerid,params[])//Tasche schauen
  800. {
  801. #pragma unused params
  802. new string[128];
  803. format(string,sizeof(string),"Drogen: %d\nMats: %i\nGeld: %d$",Spieler[playerid][pDrogen],Spieler[playerid][pMats],Spieler[playerid][pGeld]);
  804. ShowPlayerDialog(playerid,INFO,DIALOG_STYLE_MSGBOX,"Deine Tasche:",string,"Okey","");
  805. return 1;
  806. }
  807.  
  808. ocmd:sellah(playerid,params[])//Autohaus verkaufen
  809. {
  810. new name[MAX_PLAYER_NAME];
  811. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  812. for(new i=1; i<MAX_AUTOHAUS; i++)
  813. {
  814. if(IsPlayerInRangeOfPoint(playerid,5,AH[i][aX],AH[i][aY],AH[i][aZ]))
  815. {
  816. if(!strcmp(name,AH[i][aBesitzer],false))
  817. {
  818. new string[128], nummer2[128];
  819. format(string,sizeof(string),"[Info] Du hast dein Autohaus verkauft und %d$ bekommen.",AH[i][aInhalt]);
  820. SCM(playerid,COLOR_GREEN,string);
  821. format(AH[i][aBesitzer],64,"%s","Niemand");
  822. GebGeld(playerid,AH[i][aInhalt]);
  823. AH[i][aInhalt] = 0;
  824. format(nummer2,sizeof(nummer2),"Name: %s\nBesitzer: %s\nReichtum: %d$",AH[i][aName],AH[i][aBesitzer],AH[i][aInhalt]);
  825. Update3DTextLabelText(AH[i][aText],COLOR_PICKUP,nummer2);
  826. return 1;
  827. }
  828. }
  829. }
  830. return 1;
  831. }
  832.  
  833. ocmd:nameah(playerid,params[])//Autohaus umbenennen
  834. {
  835. new name[MAX_PLAYER_NAME], newname[64];
  836. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  837. if(GetPlayerMoney(playerid) < 10000)return ErrorMsg(playerid,"Fehler: Du hast keine 10.000$ auf der Hand.");
  838. if(sscanf(params,"s",newname))return ErrorMsg(playerid,"Benutze: /nameah [Neuer Name]");
  839. for(new i=1; i<MAX_AUTOHAUS; i++)
  840. {
  841. if(IsPlayerInRangeOfPoint(playerid,5,AH[i][aX],AH[i][aY],AH[i][aZ]))
  842. {
  843. if(!strcmp(AH[i][aBesitzer],name,false))
  844. {
  845. format(AH[i][aName],64,"%s",newname);
  846. SCM(playerid,COLOR_GREEN,"Erfolgreich! Du hast dein Autohaus umbenannt.");
  847. new string[128];
  848. GebGeld(playerid,-10000);
  849. format(string,sizeof(string),"Name: %s\nBesitzer: %s\nReichtum: %d$",AH[i][aName],AH[i][aBesitzer],AH[i][aInhalt]);
  850. Update3DTextLabelText(AH[i][aText],COLOR_PICKUP,string);
  851. return 1;
  852. }
  853. }
  854. }
  855. return 1;
  856. }
  857.  
  858. ocmd:buyah(playerid,params[])//Autohaus kaufen
  859. {
  860. for(new i=1; i<MAX_AUTOHAUS; i++)
  861. {
  862. if(IsPlayerInRangeOfPoint(playerid,5,AH[i][aX],AH[i][aY],AH[i][aZ]))
  863. {
  864. if(!strcmp(AH[i][aBesitzer],"Niemand",false))
  865. {
  866. if(GetPlayerMoney(playerid) < 1000000)return ErrorMsg(playerid,"Fehler: Du hast nicht genügend Geld.");
  867. format(AH[i][aBesitzer],64,"%s",GetName(playerid));
  868. GebGeld(playerid,-1000000);
  869. new string[128];
  870. format(string,sizeof(string),"Name: %s\nBesitzer: %s\nReichtum: %d$",AH[i][aName],AH[i][aBesitzer],AH[i][aInhalt]);
  871. SCM(playerid,COLOR_GREEN,"Erfolgreich! Du hast dieses Autohaus gekauft.");
  872. Update3DTextLabelText(AH[i][aText],COLOR_PICKUP,string);
  873. return 1;
  874. }
  875. }
  876. }
  877. return 1;
  878. }
  879.  
  880. ocmd:fauszahlen(playerid,params[])//Aus der Fbank auszahlen
  881. {
  882. if(Spieler[playerid][pRang] < 4)return ErrorMsg(playerid,"Fehler: Du hast nicht den richtigen Rang.");
  883. new anzahl, gegenstand[64], string[128];
  884. if(sscanf(params,"si",gegenstand,anzahl))return ErrorMsg(playerid,"Benutze: /fauszahlen [Was möchtest du einzahlen] [Anzahl]");
  885. for(new i=1; i<MAX_FRACS; i++)
  886. {
  887. if(Frak[i][fID] == Spieler[playerid][pFraktion])
  888. {
  889. if(!IsPlayerInRangeOfPoint(playerid,5,Frak[i][fX],Frak[i][fY],Frak[i][fZ]))return ErrorMsg(playerid,"Fehler: Du bist nicht in der Nähe deiner Fbank.");
  890. if(!strcmp(gegenstand,"Drogen",false) && Frak[i][fDrogen] >= anzahl)
  891. {
  892. Frak[i][fDrogen] -= anzahl;
  893. Spieler[playerid][pDrogen] += anzahl;
  894. format(string,sizeof(string),"[Fraktion] %s hat %i Drogen ausgezahlt.",GetName(playerid),anzahl);
  895. SFM(playerid,string);
  896. return 1;
  897. }
  898. else if(!strcmp(gegenstand,"Geld",false) && Frak[i][fGeld] >= anzahl)
  899. {
  900. Frak[i][fGeld] -= anzahl;
  901. GebGeld(playerid,anzahl);
  902. format(string,sizeof(string),"[Fraktion] %s hat %d$ ausgezahlt.",GetName(playerid),anzahl);
  903. SFM(playerid,string);
  904. return 1;
  905. }
  906. else if(!strcmp(gegenstand,"Mats",false) && Frak[i][fMats] >= anzahl)
  907. {
  908. Frak[i][fMats] -= anzahl;
  909. Spieler[playerid][pMats] += anzahl;
  910. format(string,sizeof(string),"[Fraktion] %s hat %d Mats ausgezahlt.",GetName(playerid),anzahl);
  911. SFM(playerid,string);
  912. return 1;
  913. }
  914. }
  915. }
  916. return 1;
  917. }
  918.  
  919. ocmd:feinzahlen(playerid,params[])//In die Fbank einzahlen
  920. {
  921. new anzahl, gegenstand[64], string[128];
  922. if(sscanf(params,"si",gegenstand,anzahl))return ErrorMsg(playerid,"Benutze: /feinzahlen [Was möchtest du einzahlen] [Anzahl]");
  923. for(new i=1; i<MAX_FRACS; i++)
  924. {
  925. if(Frak[i][fID] == Spieler[playerid][pFraktion])
  926. {
  927. if(!IsPlayerInRangeOfPoint(playerid,5,Frak[i][fX],Frak[i][fY],Frak[i][fZ]))return ErrorMsg(playerid,"Fehler: Du bist nicht in der Nähe deiner Fbank.");
  928. if(!strcmp(gegenstand,"Drogen",false) && Spieler[playerid][pDrogen] >= anzahl)
  929. {
  930. Frak[i][fDrogen] += anzahl;
  931. Spieler[playerid][pDrogen] -= anzahl;
  932. format(string,sizeof(string),"[Fraktion] %s hat %i Drogen eingezahlt.",GetName(playerid),anzahl);
  933. SFM(playerid,string);
  934. return 1;
  935. }
  936. else if(!strcmp(gegenstand,"Geld",false) && Spieler[playerid][pGeld] >= anzahl)
  937. {
  938. Frak[i][fGeld] += anzahl;
  939. GebGeld(playerid,-anzahl);
  940. format(string,sizeof(string),"[Fraktion] %s hat %d$ eingezahlt.",GetName(playerid),anzahl);
  941. SFM(playerid,string);
  942. return 1;
  943. }
  944. else if(!strcmp(gegenstand,"Mats",false) && Spieler[playerid][pMats] >= anzahl)
  945. {
  946. Frak[i][fMats] += anzahl;
  947. Spieler[playerid][pMats] -= anzahl;
  948. format(string,sizeof(string),"[Fraktion] %s hat %d Mats eingezahlt.",GetName(playerid),anzahl);
  949. SFM(playerid,string);
  950. return 1;
  951. }
  952. }
  953. }
  954. return 1;
  955. }
  956.  
  957. ocmd:fbank(playerid,params[])//Die Fbank anschauen
  958. {
  959. if(Spieler[playerid][pFraktion] == 0)return 1;
  960. new string[128];
  961. for(new i=1; i<MAX_FRACS; i++)
  962. {
  963. if(Frak[i][fID] == Spieler[playerid][pFraktion])
  964. {
  965. format(string,sizeof(string),"ID: %i\nName: %s\nDrogen: %i\nGeld: %d$\nMats: %i",Frak[i][fID],Frak[i][fName],Frak[i][fDrogen],Frak[i][fGeld],Frak[i][fMats]);
  966. ShowPlayerDialog(playerid,INFO,DIALOG_STYLE_MSGBOX,"Fbank deiner Fraktion:",string,"Okey","");
  967. }
  968. }
  969. return 1;
  970. }
  971.  
  972. ocmd:setpreis(playerid,params[])//Preise einstellen
  973. {
  974. new preis, name[MAX_PLAYER_NAME];
  975. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  976. if(!IsPlayerInAnyVehicle(playerid))return ErrorMsg(playerid,"Fehler: Du bist in keinem Fahrzeug.");
  977. new vid = GetPlayerVehicleID(playerid);
  978. if(sscanf(params,"i",preis))return ErrorMsg(playerid,"Benutze: /setpreis [Preis]");
  979. for(new i=1; i<MAX_AHCARS; i++)
  980. {
  981. if(ACar[i][ahId] == vid)
  982. {
  983. if(!strcmp(ACar[i][ahBesitzer],name,false))
  984. {
  985. Delete3DTextLabel(ACar[i][ahText]);
  986. new string[128];
  987. ACar[i][ahPreis] = preis;
  988. format(string,sizeof(string),"Model %i\nPreis %d$\nBesitzer %s",ACar[i][ahModel],ACar[i][ahPreis],ACar[i][ahBesitzer]);
  989. ACar[i][ahText] = Create3DTextLabel(string,COLOR_PICKUP,ACar[i][ahX],ACar[i][ahY],ACar[i][ahZ],30.0,0,1);
  990. Attach3DTextLabelToVehicle(ACar[i][ahText],ACar[i][ahId],0.0,0.0,2.0);
  991. SCM(playerid,COLOR_GREEN,"Erfolgreich! Du hast den Preis des Fahrzeuges geändert.");
  992. if(ACar[i][ahPreis] == 0)
  993. {
  994. Delete3DTextLabel(ACar[i][ahText]);
  995. }
  996. return 1;
  997. }
  998. }
  999. }
  1000. return 1;
  1001. }
  1002.  
  1003. ocmd:buycar(playerid,params[])//Autohausauto kaufen
  1004. {
  1005. new name[MAX_PLAYER_NAME], vid;
  1006. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  1007. vid = GetPlayerVehicleID(playerid);
  1008. if(!IsPlayerInAnyVehicle(playerid))return ErrorMsg(playerid,"Fehler: Du bist in keinem Fahrzeug.");
  1009. for(new i=1; i<MAX_AHCARS; i++)
  1010. {
  1011. if(ACar[i][ahId] == vid)
  1012. {
  1013. if(ACar[i][ahPreis] == 0)return 1;
  1014. if(GetPlayerMoney(playerid) < ACar[i][ahPreis])return ErrorMsg(playerid,"Fehler: Du hast nicht genügend Geld.");
  1015. GebGeld(playerid,-ACar[i][ahPreis]);
  1016. format(ACar[i][ahBesitzer],64,"%s",name);
  1017. Delete3DTextLabel(ACar[i][ahText]);
  1018. for(new o=1; o<MAX_AUTOHAUS; o++)
  1019. {
  1020. if(!strcmp(AH[o][aBesitzer],ACar[i][ahBesitzer],false))
  1021. {
  1022. AH[o][aInhalt] += ACar[i][ahPreis];
  1023. new string[128];
  1024. format(string,sizeof(string),"Name: %s\nBesitzer: %s\nReichtum: %d$",AH[o][aName],AH[o][aBesitzer],AH[o][aInhalt]);
  1025. Update3DTextLabelText(AH[o][aText],COLOR_PICKUP,string);
  1026. SCM(playerid,COLOR_GREEN,"Erfolgreich! Du hast dir dieses Fahrzeug gekauft.");
  1027. ACar[i][ahPreis] = 0;
  1028. return 1;
  1029. }
  1030. }
  1031. return 1;
  1032. }
  1033. }
  1034. return 1;
  1035. }
  1036.  
  1037. ocmd:ahpark(playerid,params[])//Biz Autos parken.
  1038. {
  1039. new Float:pos[4], name[MAX_PLAYER_NAME];
  1040. if(!IsPlayerInAnyVehicle(playerid))return ErrorMsg(playerid,"Fehler: Du befindest dich in keinem Fahrzeug.");
  1041. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  1042. for(new i=1; i<MAX_AHCARS; i++)
  1043. {
  1044. if(ACar[i][ahId] == GetPlayerVehicleID(playerid))
  1045. {
  1046. if(!strcmp(name,ACar[i][ahBesitzer],false))
  1047. {
  1048. GetVehiclePos(ACar[i][ahId],pos[0],pos[1],pos[2]);
  1049. GetVehicleZAngle(ACar[i][ahId],pos[3]);
  1050. ACar[i][ahX] = pos[0];
  1051. ACar[i][ahY] = pos[1];
  1052. ACar[i][ahZ] = pos[2];
  1053. ACar[i][ahA] = pos[3];
  1054. acarSpeichern(i);
  1055. SCM(playerid,COLOR_GREEN,"Erfolgreich! DU hast dieses Fahrzeug geparkt.");
  1056. printf("AHCar %i , Besitzer %s wurde geparkt.",i,ACar[i][ahBesitzer]);
  1057. return 1;
  1058. }
  1059. }
  1060. }
  1061. return 1;
  1062. }
  1063.  
  1064. ocmd:fpark(playerid,params[])//Fraktionsfahrzeug parken
  1065. {
  1066. new Float:pos[4];
  1067. if(!IsPlayerInAnyVehicle(playerid))return ErrorMsg(playerid,"Fehler: Du befindest dich nicht in einem Fahrzeug.");
  1068. if(Spieler[playerid][pLeader] == 0)return ErrorMsg(playerid,"Fehler: Du bist kein Leader.");
  1069. for(new i=1; i<MAX_FCARS; i++)
  1070. {
  1071. if(Fcar[i][vFid] == Spieler[playerid][pFraktion])
  1072. {
  1073. if(Fcar[i][vId] == GetPlayerVehicleID(playerid))
  1074. {
  1075. GetVehiclePos(Fcar[i][vId],pos[0],pos[1],pos[2]);
  1076. GetVehicleZAngle(Fcar[i][vId],pos[3]);
  1077. Fcar[i][vX] = pos[0];
  1078. Fcar[i][vY] = pos[1];
  1079. Fcar[i][vZ] = pos[2];
  1080. Fcar[i][vA] = pos[3];
  1081. vSpeichern(i);
  1082. SCM(playerid,COLOR_GREEN,"Erfolgreich! Du hast dieses Fahrzeug geparkt.");
  1083. printf("Fahrzeug %i mit FID %i geparkt.",i,Fcar[i][vFid]);
  1084. return 1;
  1085. }
  1086. }
  1087. else
  1088. {
  1089. print("Fahrzeug nicht geparkt.");
  1090. return 1;
  1091. }
  1092. }
  1093. return 1;
  1094. }
  1095.  
  1096. ocmd:fmember(playerid,params[])//Member einsehen
  1097. {
  1098. if(Spieler[playerid][pFraktion] == 0)return ErrorMsg(playerid,"Fehler: Du bist in keiner Fraktion.");
  1099. if(!IsPlayerConnected(playerid))return ErrorMsg(playerid,"Fehler: Du bist nicht eingeloggt.");
  1100. new diastring[256];
  1101. for(new i=0; i<MAX_PLAYERS; i++)
  1102. {
  1103. if(IsPlayerConnected(i) && Spieler[playerid][pFraktion] == Spieler[i][pFraktion])
  1104. {
  1105. format(diastring,sizeof(diastring),"%s\nRang: %i Name: %s",diastring,Spieler[i][pRang],GetName(i));
  1106. }
  1107. }
  1108. ShowPlayerDialog(playerid,INFO,DIALOG_STYLE_MSGBOX,"Fraktionsmitglieder:",diastring,"Okey","");
  1109. return 1;
  1110. }
  1111.  
  1112. ocmd:f(playerid,params[])//Im Fchat schreiben
  1113. {
  1114. new string[128], text[128];
  1115. if(Spieler[playerid][pFraktion] == 0)return ErrorMsg(playerid,"Fehler: Du bist in keiner Fraktion.");
  1116. if(sscanf(params,"s",text))return ErrorMsg(playerid,"Benutze: /f [Nachricht]");
  1117. format(string,sizeof(string),"Rang %d %s: %s",Spieler[playerid][pRang],GetName(playerid),text);
  1118. SFM(playerid,string);
  1119. return 1;
  1120. }
  1121.  
  1122. ocmd:ban(playerid,params[])//1 //Spieler bannen
  1123. {
  1124. new pID, grund[128], string[128];
  1125. if(Spieler[playerid][pAdminlevel] < 1)return ErrorMsg(playerid,"Fehler: Du hast nicht das passende Adminlevel.");
  1126. if(sscanf(params,"us",pID,grund))return ErrorMsg(playerid,"Benutze: /ban [SpielerName] [Grund]");
  1127. if(Spieler[pID][pAdminlevel] >= Spieler[playerid][pAdminlevel])return ErrorMsg(playerid,"Fehler: Du kannst keine Personen bannen, die das selbe Adminlevel wie du haben.");
  1128. format(string,sizeof(string),"[AdmCmd] Mitglied %s hat %s gebannt. Grund %s.",GetName(playerid),GetName(pID),grund);
  1129. SCMA(COLOR_RED,string);
  1130. Ban(pID);
  1131. return 1;
  1132. }
  1133.  
  1134. ocmd:frakids(playerid,params[])//2 //Fraktionen anschauen
  1135. {
  1136. if(Spieler[playerid][pAdminlevel] < 2)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1137. new pfad[128], fraks, string[64];
  1138. for(new i=1; i<MAX_FRACS; i++){
  1139. format(pfad,sizeof(pfad),"/Rainbow/Fraktionen/%i.ini",i);
  1140. if(dini_Exists(pfad))
  1141. {
  1142. fraks++;
  1143. }
  1144. }
  1145. format(string,sizeof(string),"Derzeitige Anzahl an Fraktionen: %d",fraks);
  1146. ErrorMsg(playerid,string);
  1147. return 1;
  1148. }
  1149.  
  1150. ocmd:kick(playerid,params[])//2 //Spieler kicken
  1151. {
  1152. new pID, grund[128], string[128];
  1153. if(Spieler[playerid][pAdminlevel] < 2)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1154. if(sscanf(params,"us",pID,grund))return ErrorMsg(playerid,"Benutze: /kick [SpielerName] [Grund]");
  1155. format(string,sizeof(string),"[AdmCmd] Mitglied %s hat %s mit dem Grund %s gekickt.",GetName(playerid),GetName(pID),grund);
  1156. SCMA(COLOR_RED,string);
  1157. pKick(pID);
  1158. return 1;
  1159. }
  1160.  
  1161. ocmd:spawnplayer(playerid,params[])//2 // Spieler Spawnen
  1162. {
  1163. new pID, string[128];
  1164. if(Spieler[playerid][pAdminlevel] < 2)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1165. if(sscanf(params,"u",pID))return ErrorMsg(playerid,"Benutze: /spawnplayer [SpielerName]");
  1166. format(string,sizeof(string),"[AdmCmd] Mitglied %s hat den Spieler %s gespawned.",GetName(playerid),GetName(pID));
  1167. SCMA(COLOR_RED,string);
  1168. SpawnIt(pID);
  1169. return 1;
  1170. }
  1171.  
  1172. ocmd:arevive(playerid,params[])//4 //Areviven
  1173. {
  1174. new pID, string[128];
  1175. if(Spieler[playerid][pAdminlevel] < 4)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1176. if(sscanf(params,"u",pID))return ErrorMsg(playerid,"Benutze: /arevive [SpielerName]");
  1177. if(!IsPlayerConnected(pID))return ErrorMsg(playerid,"Fehler: Der Spieler ist nicht online.");
  1178. format(string,sizeof(string),"[AdmCmd] Mitglied %s hat %s arevived.",GetName(playerid),GetName(pID));
  1179. SAM(string);
  1180. Spieler[pID][pTot] = 0;
  1181. ClearAnimations(pID);
  1182. TogglePlayerControllable(pID,1);
  1183. KillTimer(DeathTimer(pID));
  1184. return 1;
  1185. }
  1186.  
  1187. ocmd:setping(playerid,params[])//4 //Ping setzen
  1188. {
  1189. new neuerping, string[128];
  1190. if(Spieler[playerid][pAdminlevel] < 4)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1191. if(sscanf(params,"i",neuerping))return ErrorMsg(playerid,"Benutze: /setping [Neuer Ping]");
  1192. maxping = neuerping;
  1193. format(string,sizeof(string),"[AdmCmd] %s hat den maximalen Ping auf %i gesetzt.",GetName(playerid),neuerping);
  1194. SCMA(COLOR_RED,string);
  1195. return 1;
  1196. }
  1197.  
  1198. ocmd:importcar(playerid,params[])//8 // Fraktionscar erstellen
  1199. {
  1200. new Float:pos[4], model, name[64];
  1201. GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  1202. GetPlayerFacingAngle(playerid,pos[3]);
  1203. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1204. if(sscanf(params,"si",name,model))return ErrorMsg(playerid,"Benutze: /importcar [Besitzer] [ModelID]");
  1205. acarErstellen(pos[0],pos[1],pos[2],pos[3],name,model);
  1206. print("Es wird versucht ein Fahrzeug zu erstellen");
  1207. return 1;
  1208. }
  1209.  
  1210. ocmd:saveall(playerid,params[])//5 // Alles speichern
  1211. {
  1212. #pragma unused params
  1213. for(new i=0; i<200; i++)
  1214. {
  1215. pSpeichern(i);
  1216. vSpeichern(i);
  1217. ahSpeichern(i);
  1218. fSpeichern(i);
  1219. acarSpeichern(i);
  1220. }
  1221. SCMA(COLOR_RED,"[AdmCmd] Mitglied System hat ALLE Daten gespeichert.");
  1222. return 1;
  1223. }
  1224.  
  1225. ocmd:makeleader(playerid,params[])//5 //Spieler Leader machen
  1226. {
  1227. if(Spieler[playerid][pAdminlevel] < 5)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1228. if(!IsPlayerConnected(playerid))return ErrorMsg(playerid,"Fehler: Du bist nicht eingeloggt.");
  1229. new pID, frak, string[128];
  1230. if(sscanf(params,"ui",pID,frak))return ErrorMsg(playerid,"Benutze: /makeleader [Spieler] [FraktionsID]");
  1231. if(!IsPlayerConnected(pID))return ErrorMsg(playerid,"Fehler: Dieser Spieler ist zurzeit nicht online.");
  1232. Spieler[pID][pFraktion] = frak;
  1233. Spieler[pID][pRang] = 6;
  1234. Spieler[pID][pLeader] = 1;
  1235. format(string,sizeof(string),"[AdmCmd] %s hat %s zum Leader der Fraktion %s (%i) gemacht.",GetName(playerid),GetName(pID),rfraks(pID),frak);
  1236. SAM(string);
  1237. SetFactionSkin(pID);
  1238. SCM(pID,COLOR_ADMINCHAT,"Erfolgreich. Du wurdest zum Leader einer Fraktion gemacht.");
  1239. SpawnIt(pID);
  1240. return 1;
  1241. }
  1242.  
  1243. ocmd:restart(playerid,params[])//8 //Server neustarten
  1244. {
  1245. #pragma unused params
  1246. SendRconCommand("gmx");
  1247. return 1;
  1248. }
  1249.  
  1250. ocmd:givemoney(playerid,params[])//8 //Spieler Geld geben
  1251. {
  1252. new amount, pID, string[128];
  1253. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das passende Adminlevel.");
  1254. if(sscanf(params,"ui",pID,amount))return ErrorMsg(playerid,"Benutze: /givemoney [SpielerName] [Anzahl an Geld]");
  1255. if(!IsPlayerConnected(pID))return ErrorMsg(playerid,"Fehler: Spieler ist nicht online.");
  1256. format(string,sizeof(string),"[AdmCmd] Mitglied %s hat %s %d$ gegeben.",GetName(playerid),GetName(pID),amount);
  1257. SAM(string);
  1258. GebGeld(pID,amount);
  1259. return 1;
  1260. }
  1261.  
  1262. ocmd:delahcar(playerid,params[])//8 //Fraktionscar löschen
  1263. {
  1264. new pfad[128], string[128];
  1265. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1266. for(new i=1; i<MAX_AHCARS; i++)
  1267. {
  1268. if(ACar[i][ahId] == GetPlayerVehicleID(playerid))
  1269. {
  1270. if(!IsPlayerInAnyVehicle(playerid))return ErrorMsg(playerid,"Fehler: Du bist in keinem Fahrzeug.");
  1271. format(pfad,sizeof(pfad),"/Rainbow/AHCars/%i.ini",i);
  1272. if(!dini_Exists(pfad))return ErrorMsg(playerid,"Fehler: Das System spackt mal wieder rum.");
  1273. dini_Remove(pfad);
  1274. DestroyVehicle(GetPlayerVehicleID(playerid));
  1275. format(string,sizeof(string),"[AdmCmd] %s hat das Autohausfahrzug %i gelöscht.",GetName(playerid),i);
  1276. SAM(string);
  1277. return 1;
  1278. }
  1279. }
  1280. return 1;
  1281. }
  1282.  
  1283. ocmd:delfcar(playerid,params[])//8 //Fraktionscar löschen
  1284. {
  1285. new pfad[128], string[128];
  1286. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1287. for(new i=1; i<MAX_FCARS; i++)
  1288. {
  1289. if(Fcar[i][vId] == GetPlayerVehicleID(playerid))
  1290. {
  1291. if(!IsPlayerInAnyVehicle(playerid))return ErrorMsg(playerid,"Fehler: Du bist in keinem Fahrzeug.");
  1292. format(pfad,sizeof(pfad),"/Rainbow/Fcars/%i.ini",i);
  1293. if(!dini_Exists(pfad))return ErrorMsg(playerid,"Fehler: Das System spackt mal wieder rum.");
  1294. dini_Remove(pfad);
  1295. DestroyVehicle(GetPlayerVehicleID(playerid));
  1296. format(string,sizeof(string),"[AdmCmd] %s hat das Fraktionsfahrzug %i gelöscht.",GetName(playerid),i);
  1297. SAM(string);
  1298. return 1;
  1299. }
  1300. }
  1301. return 1;
  1302. }
  1303.  
  1304. ocmd:delah(playerid,params[])//8 //Autohaus löschen
  1305. {
  1306. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1307. new id, string[128], pfad[128];
  1308. if(sscanf(params,"i",id))return ErrorMsg(playerid,"Benutze: /delah [AutohausID]");
  1309. format(string,sizeof(string),"/Rainbow/Autohaus/%i.ini",id);
  1310. if(!dini_Exists(string))return ErrorMsg(playerid,"Fehler: Dieses Autohaus existiert nicht.");
  1311. new ahh[64];
  1312. format(ahh,64,"%s",dini_Get(string,"Name"));
  1313. format(pfad,sizeof(pfad),"[AdmCmd] %s hat das Autohaus %s gelöscht.",GetName(playerid),ahh);
  1314. SAM(pfad);
  1315. dini_Remove(string);
  1316. return 1;
  1317. }
  1318.  
  1319. ocmd:delfrak(playerid,params[])//8 // Fraktion löschen
  1320. {
  1321. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1322. if(!IsPlayerConnected(playerid))return ErrorMsg(playerid,"Fehler: Du bist nicht auf dem Server.");
  1323. new id, string[128], pfad[128];
  1324. if(sscanf(params,"i",id))return ErrorMsg(playerid,"Benutze: /delfrak [FraktionsID]");
  1325. format(string,sizeof(string),"[AdmCmd] %s hat die Fraktion %i gelöscht.",GetName(playerid),id);
  1326. format(pfad,sizeof(pfad),"/Rainbow/Fraktionen/%i.ini",id);
  1327. dini_Remove(pfad);
  1328. SAM(string);
  1329. DestroyPickup(Frak[id][fPickup]);
  1330. return 1;
  1331. }
  1332.  
  1333. ocmd:createfrak(playerid,params[])//8 //Fraktion erstellen
  1334. {
  1335. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1336. if(!IsPlayerConnected(playerid))return ErrorMsg(playerid,"Fehler: Du bist nicht auf dem Server.");
  1337. new id, name[64], pfad[128], skin;
  1338. if(sscanf(params,"isi",id,name,skin))return ErrorMsg(playerid,"Benutze: /createfrak [FrakID] [FrakName] [SkinID]");
  1339. format(pfad,sizeof(pfad),"/Rainbow/Fraktionen/%i.ini",id);
  1340. if(dini_Exists(pfad))return ErrorMsg(playerid,"Fehler: Diese Fraktions ID wird bereits genutzt.");
  1341. fErstellen(playerid,name,id,skin);
  1342. return 1;
  1343. }
  1344.  
  1345. ocmd:createah(playerid,params[])//8 //Autohaus erstellen
  1346. {
  1347. new Float:pos[3], name[64], besitzer[64], inhalt, string[128];
  1348. GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  1349. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1350. if(sscanf(params,"iss",inhalt,name,besitzer))return ErrorMsg(playerid,"Benutze: /createah [Kasse] [Name] [Besitzer]");
  1351. ahErstellen(pos[0],pos[1],pos[2],besitzer,name,inhalt);
  1352. format(string,sizeof(string),"Du hast ein Autohaus mit Name: %s | Besitzer: %s | Kasse: %d$ erstellt.",name,besitzer,inhalt);
  1353. SCM(playerid,COLOR_GREEN,string);
  1354. return 1;
  1355. }
  1356.  
  1357. ocmd:createfcar(playerid,params[])//8 // Fraktionscar erstellen
  1358. {
  1359. new Float:pos[4], model, f1, f2, fid;
  1360. GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  1361. GetPlayerFacingAngle(playerid,pos[3]);
  1362. if(Spieler[playerid][pAdminlevel] < 8)return ErrorMsg(playerid,"Fehler: Du hast nicht das richtige Adminlevel.");
  1363. if(sscanf(params,"iiii",model,f1,f2,fid))return ErrorMsg(playerid,"Benutze: /createfcar [ModelID] [Farbe1] [Farbe2] [FraktionsID]");
  1364. vErstellen(pos[0],pos[1],pos[2],pos[3],model,f1,f2,fid);
  1365. print("Es wird versucht ein Fahrzeug zu erstellen");
  1366. return 1;
  1367. }
  1368.  
  1369. stock ShowStats(playerid,pID) // Stats anzeigen
  1370. {
  1371. new string1[128];
  1372. new string2[256];
  1373. format(string1,sizeof(string1),"{FF004B}Privates Leben:{A0A0A0} Level = %i\nGeld = %d$ ~ Name = %s\nWohnort = %s ~ Skin: %i\nAdminlevel = %s",GetPlayerScore(playerid),Spieler[playerid][pGeld],GetName(playerid),pAusweisen(playerid),Spieler[playerid][pZivi],GetALevel(playerid));
  1374. format(string2,sizeof(string2),"%s\n\n\n{FF004B}Geschäftliches Leben:{A0A0A0} Fraktion = %s\n Rang = %i ~ Skin = %i\nLeader = %i",string1,rfraks(playerid),Spieler[playerid][pRang],Spieler[playerid][pDuty],Spieler[playerid][pLeader]);
  1375. ShowPlayerDialog(pID,INFO,DIALOG_STYLE_MSGBOX,"Einsehen der Stats",string2,"Alles klar!","");
  1376. return 1;
  1377. }
  1378.  
  1379. stock acarLaden(id) //Autohauscars Laden
  1380. {
  1381. new pfad[128], string[128];
  1382. format(pfad,sizeof(pfad),"/Rainbow/AHCars/%i.ini",id);
  1383. if(!dini_Exists(pfad))return 1;
  1384. print("Fahrzeug eines Autohauses geladen.");
  1385. ACar[id][ahModel] = dini_Int(pfad,"Model");
  1386. ACar[id][ahX] = dini_Float(pfad,"X");
  1387. ACar[id][ahY] = dini_Float(pfad,"Y");
  1388. ACar[id][ahZ] = dini_Float(pfad,"Z");
  1389. ACar[id][ahA] = dini_Float(pfad,"A");
  1390. ACar[id][ahFarbe1] = dini_Int(pfad,"Farbe1");
  1391. ACar[id][ahFarbe2] = dini_Int(pfad,"Farbe2");
  1392. ACar[id][ahPreis] = dini_Int(pfad,"Preis");
  1393. format(ACar[id][ahBesitzer],64,"%s",dini_Get(pfad,"Besitzer"));
  1394. ACar[id][ahId] = CreateVehicle(ACar[id][ahModel],ACar[id][ahX],ACar[id][ahY],ACar[id][ahZ],ACar[id][ahA],ACar[id][ahFarbe1],ACar[id][ahFarbe2],-1);
  1395. format(string,sizeof(string),"Model %i\nPreis %d$\nBesitzer %s",ACar[id][ahModel],ACar[id][ahPreis],ACar[id][ahBesitzer]);
  1396. ACar[id][ahText] = Create3DTextLabel(string,COLOR_PICKUP,ACar[id][ahX],ACar[id][ahY],ACar[id][ahZ],30.0,0,1);
  1397. Attach3DTextLabelToVehicle(ACar[id][ahText],ACar[id][ahId],0.0,0.0,2.0);
  1398. if(ACar[id][ahPreis] == 0)
  1399. {
  1400. Delete3DTextLabel(ACar[id][ahText]);
  1401. }
  1402. return 1;
  1403. }
  1404.  
  1405. stock acarSpeichern(id)//Autohauscars Speichern
  1406. {
  1407. new pfad[128];
  1408. format(pfad,sizeof(pfad),"/Rainbow/AHCars/%i.ini",id);
  1409. if(!dini_Exists(pfad))return 1;
  1410. dini_FloatSet(pfad,"X",ACar[id][ahX]);
  1411. dini_FloatSet(pfad,"Y",ACar[id][ahY]);
  1412. dini_FloatSet(pfad,"Z",ACar[id][ahZ]);
  1413. dini_FloatSet(pfad,"A",ACar[id][ahA]);
  1414. dini_IntSet(pfad,"Preis",ACar[id][ahPreis]);
  1415. dini_Set(pfad,"Besitzer",ACar[id][ahBesitzer]);
  1416. print("Fahrzeug gespeichert.");
  1417. return 1;
  1418. }
  1419.  
  1420. stock acarErstellen(Float:x,Float:y,Float:z,Float:a,besitzer[64],model)//Autohauscars ertsellen
  1421. {
  1422. new pfad[128];
  1423. for(new i=1; i<MAX_AHCARS; i++)
  1424. {
  1425. format(pfad,sizeof(pfad),"/Rainbow/AHCars/%i.ini",i);
  1426. if(dini_Exists(pfad))continue;
  1427. dini_Create(pfad);
  1428. printf("Ein Autohaus Fahrzeug wurde erstellt.");
  1429. dini_Set(pfad,"Besitzer",besitzer);
  1430. dini_FloatSet(pfad,"X",x);
  1431. dini_FloatSet(pfad,"Y",y);
  1432. dini_FloatSet(pfad,"Z",z);
  1433. dini_FloatSet(pfad,"A",a);
  1434. dini_IntSet(pfad,"Model",model);
  1435. dini_IntSet(pfad,"Farbe1",1);
  1436. dini_IntSet(pfad,"Farbe2",1);
  1437. dini_IntSet(pfad,"Preis",1000000);
  1438. return acarLaden(i);
  1439. }
  1440. return 1;
  1441. }
  1442.  
  1443. stock ahErstellen(Float:x,Float:y,Float:z,besitzer[64],name[64],inhalt)//Autohäuser erstellen
  1444. {
  1445. new pfad[128];
  1446. for(new i=1; i<MAX_AUTOHAUS; i++)
  1447. {
  1448. format(pfad,sizeof(pfad),"/Rainbow/Autohaus/%i.ini",i);
  1449. if(dini_Exists(pfad))continue;
  1450. dini_Create(pfad);
  1451. printf("Autohaus %i wurde erstellt.",i);
  1452. dini_Set(pfad,"Name",name);
  1453. dini_Set(pfad,"Besitzer",besitzer);
  1454. dini_IntSet(pfad,"Kasse",inhalt);
  1455. dini_FloatSet(pfad,"X",x);
  1456. dini_FloatSet(pfad,"Y",y);
  1457. dini_FloatSet(pfad,"Z",z);
  1458. return ahLaden(i);
  1459. }
  1460. return 1;
  1461. }
  1462.  
  1463. stock maskeAufsetzen(playerid)
  1464. {
  1465. for(new i=0; i<MAX_PLAYERS; i++)
  1466. {
  1467. if(IsPlayerConnected(i))
  1468. {
  1469. ShowPlayerNameTagForPlayer(i,playerid,false);
  1470. }
  1471. }
  1472. return 1;
  1473. }
  1474.  
  1475. stock maskeAbsetzen(playerid)
  1476. {
  1477. for(new i=0; i<MAX_PLAYERS; i++)
  1478. {
  1479. if(IsPlayerConnected(i))
  1480. {
  1481. ShowPlayerNameTagForPlayer(i,playerid,true);
  1482. }
  1483. }
  1484. return 1;
  1485. }
  1486.  
  1487. stock ahLaden(id)//Autohäuser laden
  1488. {
  1489. new pfad[128], text[128];
  1490. format(pfad,sizeof(pfad),"/Rainbow/Autohaus/%i.ini",id);
  1491. if(!dini_Exists(pfad))return 1;
  1492. printf("Autohaus %i geladen",id);
  1493. AH[id][aX] = dini_Float(pfad,"X");
  1494. AH[id][aY] = dini_Float(pfad,"Y");
  1495. AH[id][aZ] = dini_Float(pfad,"Z");
  1496. AH[id][aInhalt] = dini_Int(pfad,"Kasse");
  1497. format(AH[id][aBesitzer],64,"%s",dini_Get(pfad,"Besitzer"));
  1498. format(AH[id][aName],64,"%s",dini_Get(pfad,"Name"));
  1499. format(text,sizeof(text),"Name: %s\nBesitzer: %s\nReichtum: %d$",AH[id][aName],AH[id][aBesitzer],AH[id][aInhalt]);
  1500. AH[id][aPickup] = CreatePickup(1239,1,AH[id][aX],AH[id][aY],AH[id][aZ],-1);
  1501. AH[id][aText] = Create3DTextLabel(text,COLOR_PICKUP,AH[id][aX],AH[id][aY],AH[id][aZ],30.0,0,1);
  1502. return 1;
  1503. }
  1504.  
  1505. stock ahSpeichern(id)//Autohäuser speichern
  1506. {
  1507. new pfad[128];
  1508. format(pfad,sizeof(pfad),"/Rainbow/Autohaus/%i.ini",id);
  1509. if(!dini_Exists(pfad))return 1;
  1510. dini_IntSet(pfad,"Kasse",AH[id][aInhalt]);
  1511. dini_Set(pfad,"Name",AH[id][aName]);
  1512. dini_Set(pfad,"Besitzer",AH[id][aBesitzer]);
  1513. print("Autohaus gespeichert.");
  1514. return 1;
  1515. }
  1516.  
  1517. stock vErstellen(Float:x,Float:y,Float:z,Float:a,model,f1,f2,fraid)//Fahrzeug erstellen
  1518. {
  1519. new pfad[128];
  1520. for(new i=1; i<MAX_FCARS; i++){
  1521. format(pfad,sizeof(pfad),"/Rainbow/Fcars/%i.ini",i);
  1522. if(dini_Exists(pfad))continue;
  1523. dini_Create(pfad);
  1524. print("Fahrzeug erstellt");
  1525. dini_IntSet(pfad,"Model",model);
  1526. dini_Set(pfad,"Schild","-N/A-");
  1527. dini_IntSet(pfad,"Erste",f1);
  1528. dini_IntSet(pfad,"Zweite",f2);
  1529. dini_IntSet(pfad,"Fraktion",fraid);
  1530. dini_FloatSet(pfad,"X",x);
  1531. dini_FloatSet(pfad,"Y",y);
  1532. dini_FloatSet(pfad,"Z",z);
  1533. dini_FloatSet(pfad,"A",a);
  1534. return vLaden(i);
  1535. }
  1536. return 1;
  1537. }
  1538.  
  1539. stock rChat(playerid,speach[])//Reichweiten Nachricht
  1540. {
  1541. if(Spieler[playerid][pTot] == 1){
  1542. return ErrorMsg(playerid,"Fehler: Du bist tot und kannst nicht schreiben.");}
  1543. new Float:pos[3], string[128];
  1544. GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  1545. if(Maske[playerid] == 0){
  1546. format(string,sizeof(string),"%s sagt: %s",GetName(playerid),speach);}
  1547. else{
  1548. format(string,sizeof(string),"%s sagt: %s",Spieler[playerid][pDeckname],speach);}
  1549. for(new i=0; i<MAX_PLAYERS; i++)
  1550. {
  1551. if(IsPlayerInRangeOfPoint(i,20,pos[0],pos[1],pos[2]) && IsPlayerConnected(i))
  1552. {
  1553. SCM(i,COLOR_WHITE,speach);
  1554. }
  1555. }
  1556. return 1;
  1557. }
  1558.  
  1559. stock PlayerInCar(playerid,vehicleid)//Fraktionsfahrzeug abfrage
  1560. {
  1561. for(new i=1; i<MAX_FCARS; i++)
  1562. {
  1563. if(vehicleid == Fcar[i][vId])
  1564. {
  1565. if(Fcar[i][vLocked] == 1)
  1566. {
  1567. if(Fcar[i][vFid] != Spieler[playerid][pFraktion])
  1568. {
  1569. TogglePlayerControllable(playerid,0);
  1570. TogglePlayerControllable(playerid,1);
  1571. return 1;
  1572. }
  1573. }
  1574. }
  1575. }
  1576. return 1;
  1577. }
  1578.  
  1579. stock vSpeichern(id)//Fahrzeug speichern
  1580. {
  1581. new pfad[128];
  1582. format(pfad,sizeof(pfad),"/Rainbow/Fcars/%i.ini",id);
  1583. if(!dini_Exists(pfad))return 1;
  1584. dini_FloatSet(pfad,"X",Fcar[id][vX]);
  1585. dini_FloatSet(pfad,"Y",Fcar[id][vY]);
  1586. dini_FloatSet(pfad,"Z",Fcar[id][vZ]);
  1587. dini_FloatSet(pfad,"A",Fcar[id][vA]);
  1588. print("Fahrzeug gespeichert.");
  1589. return 1;
  1590. }
  1591.  
  1592. stock vLaden(id)//Fahrzeug laden
  1593. {
  1594. new pfad[128];
  1595. format(pfad,sizeof(pfad),"/Rainbow/Fcars/%i.ini",id);
  1596. if(!dini_Exists(pfad))return 1;
  1597. Fcar[id][vX] = dini_Float(pfad,"X");
  1598. Fcar[id][vY] = dini_Float(pfad,"Y");
  1599. Fcar[id][vZ] = dini_Float(pfad,"Z");
  1600. Fcar[id][vA] = dini_Float(pfad,"A");
  1601. Fcar[id][vModel] = dini_Int(pfad,"Model");
  1602. Fcar[id][vFid] = dini_Int(pfad,"Fraktion");
  1603. Fcar[id][vColor1] = dini_Int(pfad,"Erste");
  1604. Fcar[id][vColor2] = dini_Int(pfad,"Zweite");
  1605. format(Fcar[id][vSchild],128,"%s",dini_Get(pfad,"Schild"));
  1606. Fcar[id][vId] = CreateVehicle(Fcar[id][vModel],Fcar[id][vX],Fcar[id][vY],Fcar[id][vZ],Fcar[id][vA],Fcar[id][vColor1],Fcar[id][vColor2],-1);
  1607. SetVehicleNumberPlate(Fcar[id][vId],Fcar[id][vSchild]);
  1608. SetVehicleToRespawn(Fcar[id][vId]);
  1609. Fcar[id][vLocked] = 1;
  1610. print("Fahrzeug geladen.");
  1611. return 1;
  1612. }
  1613.  
  1614. stock fErstellen(playerid,name[],id,skin)//Fraktion erstellen
  1615. {
  1616. new Float:x,Float:y,Float:z;
  1617. GetPlayerPos(playerid,x,y,z);
  1618. new pfad[128];
  1619. new inttt = GetPlayerInterior(playerid);
  1620. format(pfad,sizeof(pfad),"/Rainbow/Fraktionen/%i.ini",id);
  1621. if(dini_Exists(pfad))return ErrorMsg(playerid,"Fehler: Diese FraktionsID existiert bereits.");
  1622. dini_Create(pfad);
  1623. dini_Set(pfad,"Name",name);
  1624. dini_IntSet(pfad,"ID",id);
  1625. dini_IntSet(pfad,"Mats",0);
  1626. dini_IntSet(pfad,"Drogen",0);
  1627. dini_IntSet(pfad,"Geld",0);
  1628. dini_FloatSet(pfad,"X",x);
  1629. dini_FloatSet(pfad,"Y",y);
  1630. dini_FloatSet(pfad,"Z",z);
  1631. dini_IntSet(pfad,"Skin",skin);
  1632. dini_IntSet(pfad,"Interior",inttt);
  1633. printf("Die Fraktion %s mit der ID %d wurde erstellt.",name,id);
  1634. return fLaden(id);
  1635. }
  1636.  
  1637. stock fSpeichern(id)//Fraktion speichern
  1638. {
  1639. new pfad[128];
  1640. format(pfad,sizeof(pfad),"/Rainbow/Fraktionen/%i.ini",id);
  1641. if(!dini_Exists(pfad))return 1;
  1642. dini_IntSet(pfad,"Mats",Frak[id][fMats]);
  1643. dini_IntSet(pfad,"Drogen",Frak[id][fDrogen]);
  1644. dini_IntSet(pfad,"Geld",Frak[id][fGeld]);
  1645. return 1;
  1646. }
  1647.  
  1648. stock SFM(playerid,string[])//Fraktionsnachricht
  1649. {
  1650. for(new i=0; i<MAX_PLAYERS; i++)
  1651. {
  1652. if(IsPlayerConnected(i) && Spieler[i][pFraktion] == Spieler[playerid][pFraktion])
  1653. {
  1654. SCM(i,COLOR_FRAKTION,string);
  1655. }
  1656. }
  1657. return 1;
  1658. }
  1659.  
  1660. stock fLaden(id)//Fraktion Laden
  1661. {
  1662. new pfad[128];
  1663. format(pfad,sizeof(pfad),"/Rainbow/Fraktionen/%i.ini",id);
  1664. if(!dini_Exists(pfad))return 1;
  1665. Frak[id][fMats] = dini_Int(pfad,"Mats");
  1666. Frak[id][fDrogen] = dini_Int(pfad,"Drogen");
  1667. Frak[id][fID] = dini_Int(pfad,"ID");
  1668. Frak[id][fGeld] = dini_Int(pfad,"Geld");
  1669. Frak[id][fX] = dini_Float(pfad,"X");
  1670. Frak[id][fY] = dini_Float(pfad,"Y");
  1671. Frak[id][fZ] = dini_Float(pfad,"Z");
  1672. Frak[id][fInterior] = dini_Int(pfad,"Interior");
  1673. format(Frak[id][fName],64,"%s",dini_Get(pfad,"Name"));
  1674. Frak[id][fPickup] = CreatePickup(1277,1,Frak[id][fX],Frak[id][fY],Frak[id][fZ],-1);
  1675. return 1;
  1676. }
  1677.  
  1678. stock pErstellen(playerid,key[])//Spieler erstellen
  1679. {
  1680. new pfad[128];
  1681. format(pfad,sizeof(pfad),"/Rainbow/Spieler/%s.ini",GetName(playerid));
  1682. if(dini_Exists(pfad))return Kick(playerid);
  1683. dini_Create(pfad);
  1684. dini_Set(pfad,"Passwort",key);
  1685. dini_IntSet(pfad,"Adminlevel",0);
  1686. dini_IntSet(pfad,"Level",1);
  1687. dini_IntSet(pfad,"Fraktion",0);
  1688. dini_IntSet(pfad,"Geld",0);
  1689. dini_IntSet(pfad,"Zivi",132);
  1690. dini_IntSet(pfad,"Duty",0);
  1691. dini_IntSet(pfad,"Ausweis",0);
  1692. dini_IntSet(pfad,"Drogen",0);
  1693. dini_IntSet(pfad,"Rang",0);
  1694. dini_IntSet(pfad,"Mats",0);
  1695. dini_IntSet(pfad,"Leader",0);
  1696. dini_IntSet(pfad,"Tot",0);
  1697. dini_FloatSet(pfad,"tX",0.0);
  1698. dini_FloatSet(pfad,"tY",0.0);
  1699. dini_FloatSet(pfad,"tZ",0.0);
  1700. dini_Set(pfad,"Deckname","Keiner");
  1701. pLaden(playerid);
  1702. return 1;
  1703. }
  1704.  
  1705. stock pKick(playerid)//Spieler kicken
  1706. {
  1707. SetTimerEx("pKickTimer",1000*5,0,"i",playerid);
  1708. return 1;
  1709. }
  1710.  
  1711. stock pSpeichern(playerid)//Spieler Speichern
  1712. {
  1713. new pfad[128];
  1714. format(pfad,sizeof(pfad),"/Rainbow/Spieler/%s.ini",GetName(playerid));
  1715. dini_Set(pfad,"Passwort",Spieler[playerid][pPasswort]);
  1716. dini_IntSet(pfad,"Adminlevel",Spieler[playerid][pAdminlevel]);
  1717. dini_IntSet(pfad,"Level",Spieler[playerid][pLevel]);
  1718. dini_IntSet(pfad,"Geld",Spieler[playerid][pGeld]);
  1719. dini_IntSet(pfad,"Fraktion",Spieler[playerid][pFraktion]);
  1720. dini_IntSet(pfad,"Duty",Spieler[playerid][pDuty]);
  1721. dini_IntSet(pfad,"Zivi",Spieler[playerid][pZivi]);
  1722. dini_IntSet(pfad,"Ausweis",Spieler[playerid][pAusweis]);
  1723. dini_IntSet(pfad,"Drogen",Spieler[playerid][pDrogen]);
  1724. dini_IntSet(pfad,"Rang",Spieler[playerid][pRang]);
  1725. dini_IntSet(pfad,"Mats",Spieler[playerid][pMats]);
  1726. dini_IntSet(pfad,"Leader",Spieler[playerid][pLeader]);
  1727. dini_Set(pfad,"Deckname",Spieler[playerid][pDeckname]);
  1728. dini_IntSet(pfad,"Tot",Spieler[playerid][pTot]);
  1729. dini_FloatSet(pfad,"tX",Spieler[playerid][ptX]);
  1730. dini_FloatSet(pfad,"tY",Spieler[playerid][ptY]);
  1731. dini_FloatSet(pfad,"tZ",Spieler[playerid][ptZ]);
  1732. return 1;
  1733. }
  1734.  
  1735. stock pLaden(playerid)//Spieler Laden
  1736. {
  1737. new pfad[128];
  1738. format(pfad,sizeof(pfad),"/Rainbow/Spieler/%s.ini",GetName(playerid));
  1739. format(Spieler[playerid][pPasswort],64,"%s",dini_Get(pfad,"Passwort"));
  1740. Spieler[playerid][pAdminlevel] = dini_Int(pfad,"Adminlevel");
  1741. Spieler[playerid][pFraktion] = dini_Int(pfad,"Fraktion");
  1742. Spieler[playerid][pLevel] = dini_Int(pfad,"Level");
  1743. Spieler[playerid][pGeld] = dini_Int(pfad,"Geld");
  1744. Spieler[playerid][pZivi] = dini_Int(pfad,"Zivi");
  1745. Spieler[playerid][pDuty] = dini_Int(pfad,"Duty");
  1746. Spieler[playerid][pAusweis] = dini_Int(pfad,"Ausweis");
  1747. Spieler[playerid][pDrogen] = dini_Int(pfad,"Drogen");
  1748. Spieler[playerid][pRang] = dini_Int(pfad,"Rang");
  1749. Spieler[playerid][pMats] = dini_Int(pfad,"Mats");
  1750. Spieler[playerid][pLeader] = dini_Int(pfad,"Leader");
  1751. Spieler[playerid][pTot] = dini_Int(pfad,"Tot");
  1752. Spieler[playerid][ptX] = dini_Float(pfad,"X");
  1753. Spieler[playerid][ptY] = dini_Float(pfad,"Y");
  1754. Spieler[playerid][ptZ] = dini_Float(pfad,"Z");
  1755. format(Spieler[playerid][pDeckname],64,"%s",dini_Get(pfad,"Deckname"));
  1756. return 1;
  1757. }
  1758.  
  1759. stock SpawnIt(playerid)//Spieler Spawnen
  1760. {
  1761. SpawnPlayer(playerid);
  1762. SetPlayerSkin(playerid,Spieler[playerid][pZivi]);
  1763. SetPlayerScore(playerid,Spieler[playerid][pLevel]);
  1764. GivePlayerMoney(playerid,Spieler[playerid][pGeld]);
  1765. if(Spieler[playerid][pTot] == 1)
  1766. {
  1767. SetPlayerPos(playerid,Spieler[playerid][ptX],Spieler[playerid][ptY],Spieler[playerid][ptZ]);
  1768. return 1;
  1769. }
  1770. if(Spieler[playerid][pFraktion] == 0)
  1771. {
  1772. SetPlayerPos(playerid,2598.424804,49.892829,26.414175);
  1773. return 1;
  1774. }
  1775. for(new i=0; i<MAX_FRACS; i++){
  1776. if(Frak[i][fID] == Spieler[playerid][pFraktion]){
  1777. SetPlayerPos(playerid,Frak[i][fX],Frak[i][fY],Frak[i][fZ]);
  1778. }
  1779. }
  1780. SetPlayerSkin(playerid,Spieler[playerid][pZivi]);
  1781. SetPlayerScore(playerid,Spieler[playerid][pLevel]);
  1782. GivePlayerMoney(playerid,Spieler[playerid][pGeld]);
  1783. return 1;
  1784. }
  1785.  
  1786. stock SetFactionSkin(playerid)//Fraktionsskin
  1787. {
  1788. switch(Spieler[playerid][pFraktion])
  1789. {
  1790. case 0:{Spieler[playerid][pZivi] = 132;}
  1791. case 1:{Spieler[playerid][pZivi] = 142;}
  1792. }
  1793. return 1;
  1794. }
  1795.  
  1796. stock pLogin(playerid,key[])//Spieler einloggen
  1797. {
  1798. new pfad[128];
  1799. format(pfad,sizeof(pfad),"/Rainbow/Spieler/%s.ini",GetName(playerid));
  1800. if(!dini_Exists(pfad))return Kick(playerid);
  1801. if(!strcmp(dini_Get(pfad,"Passwort"),key,false))
  1802. {
  1803. pLaden(playerid);
  1804. }
  1805. else
  1806. {
  1807. ErrorMsg(playerid,"Dein Passwort war falsch. Du wirst nun gekickt.");
  1808. pKick(playerid);
  1809. }
  1810. return 1;
  1811. }
  1812.  
  1813. stock rfraks(playerid)//Fraktionsnamen
  1814. {
  1815. new fraktionenstring[64];
  1816. switch(Spieler[playerid][pFraktion])
  1817. {
  1818. case 0:{fraktionenstring="Zivilist";}
  1819. case 1:{fraktionenstring="Terroristen";}
  1820. }
  1821. return fraktionenstring;
  1822. }
  1823.  
  1824. stock SAM(string[])//Adminnachricht
  1825. {
  1826. for(new i=0; i<MAX_PLAYERS; i++)
  1827. {
  1828. if(IsPlayerConnected(i) && Spieler[i][pAdminlevel] >= 1)
  1829. {
  1830. SCM(i,COLOR_ADMINCHAT,string);
  1831. }
  1832. }
  1833. return 1;
  1834. }
  1835.  
  1836. stock GetName(playerid)//Namen getten
  1837. {
  1838. new name[MAX_PLAYER_NAME];
  1839. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  1840. return name;
  1841. }
  1842.  
  1843. stock ErrorMsg(playerid,string[])//ErrorCode
  1844. {
  1845. SCM(playerid,COLOR_GREY,string);
  1846. return 1;
  1847. }
  1848.  
  1849. stock ResetGeld(playerid)//Geld resetten
  1850. {
  1851. GivePlayerMoney(playerid,-GetPlayerMoney(playerid));
  1852. return 1;
  1853. }
  1854.  
  1855. stock GebGeld(playerid,amount)//GivePlayerMoney
  1856. {
  1857. GivePlayerMoney(playerid,amount);
  1858. Spieler[playerid][pGeld] += amount;
  1859. return 1;
  1860. }
  1861.  
  1862. stock SetScore(playerid,level)//Level setzen
  1863. {
  1864. SetPlayerScore(playerid,level);
  1865. Spieler[playerid][pLevel] = level;
  1866. return 1;
  1867. }
  1868.  
  1869. stock GetALevel(playerid)//Adminrang
  1870. {
  1871. new aname[64];
  1872. switch(Spieler[playerid][pAdminlevel])
  1873. {
  1874. case 0:{aname="Normaler Spieler";}
  1875. case 1:{aname="Probe-Supporter";}
  1876. case 2:{aname="Supporter";}
  1877. case 3:{aname="Moderator";}
  1878. case 4:{aname="Administrator";}
  1879. case 5:{aname="Super-Administrator";}
  1880. case 6:{aname="Techniker";}
  1881. case 7:{aname="Server Manager";}
  1882. case 8:{aname="Die Leitung";}
  1883. case 9:{aname="System";}
  1884. }
  1885. return aname;
  1886. }
  1887.  
  1888. public pKickTimer(playerid)//Kick Timer
  1889. {
  1890. Kick(playerid);
  1891. return 1;
  1892. }
  1893.  
  1894. public SpawnTimer(playerid)//Spawn Timer
  1895. {
  1896. SpawnIt(playerid);
  1897. return 1;
  1898. }
  1899.  
  1900. stock sscanf(string[], format[], {Float,_}:...)
  1901. {
  1902. #if defined isnull
  1903. if (isnull(string))
  1904. #else
  1905. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1906. #endif
  1907. {
  1908. return format[0];
  1909. }
  1910. #pragma tabsize 4
  1911. new
  1912. formatPos = 0,
  1913. stringPos = 0,
  1914. paramPos = 2,
  1915. paramCount = numargs(),
  1916. delim = ' ';
  1917. while (string[stringPos] && string[stringPos] <= ' ')
  1918. {
  1919. stringPos++;
  1920. }
  1921. while (paramPos < paramCount && string[stringPos])
  1922. {
  1923. switch (format[formatPos++])
  1924. {
  1925. case '\0':
  1926. {
  1927. return 0;
  1928. }
  1929. case 'i', 'd':
  1930. {
  1931. new
  1932. neg = 1,
  1933. num = 0,
  1934. ch = string[stringPos];
  1935. if (ch == '-')
  1936. {
  1937. neg = -1;
  1938. ch = string[++stringPos];
  1939. }
  1940. do
  1941. {
  1942. stringPos++;
  1943. if ('0' <= ch <= '9')
  1944. {
  1945. num = (num * 10) + (ch - '0');
  1946. }
  1947. else
  1948. {
  1949. return -1;
  1950. }
  1951. }
  1952. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1953. setarg(paramPos, 0, num * neg);
  1954. }
  1955. case 'h', 'x':
  1956. {
  1957. new
  1958. num = 0,
  1959. ch = string[stringPos];
  1960. do
  1961. {
  1962. stringPos++;
  1963. switch (ch)
  1964. {
  1965. case 'x', 'X':
  1966. {
  1967. num = 0;
  1968. continue;
  1969. }
  1970. case '0' .. '9':
  1971. {
  1972. num = (num << 4) | (ch - '0');
  1973. }
  1974. case 'a' .. 'f':
  1975. {
  1976. num = (num << 4) | (ch - ('a' - 10));
  1977. }
  1978. case 'A' .. 'F':
  1979. {
  1980. num = (num << 4) | (ch - ('A' - 10));
  1981. }
  1982. default:
  1983. {
  1984. return -1;
  1985. }
  1986. }
  1987. }
  1988. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1989. setarg(paramPos, 0, num);
  1990. }
  1991. case 'c':
  1992. {
  1993. setarg(paramPos, 0, string[stringPos++]);
  1994. }
  1995. case 'f':
  1996. {
  1997.  
  1998. new changestr[16], changepos = 0, strpos = stringPos;
  1999. while(changepos < 16 && string[strpos] && string[strpos] != delim)
  2000. {
  2001. changestr[changepos++] = string[strpos++];
  2002. }
  2003. changestr[changepos] = '\0';
  2004. setarg(paramPos,0,_:floatstr(changestr));
  2005. }
  2006. case 'p':
  2007. {
  2008. delim = format[formatPos++];
  2009. continue;
  2010. }
  2011. case '\'':
  2012. {
  2013. new
  2014. end = formatPos - 1,
  2015. ch;
  2016. while ((ch = format[++end]) && ch != '\'') {}
  2017. if (!ch)
  2018. {
  2019. return -1;
  2020. }
  2021. format[end] = '\0';
  2022. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  2023. {
  2024. if (format[end + 1])
  2025. {
  2026. return -1;
  2027. }
  2028. return 0;
  2029. }
  2030. format[end] = '\'';
  2031. stringPos = ch + (end - formatPos);
  2032. formatPos = end + 1;
  2033. }
  2034. case 'u':
  2035. {
  2036. new
  2037. end = stringPos - 1,
  2038. id = 0,
  2039. bool:num = true,
  2040. ch;
  2041. while ((ch = string[++end]) && ch != delim)
  2042. {
  2043. if (num)
  2044. {
  2045. if ('0' <= ch <= '9')
  2046. {
  2047. id = (id * 10) + (ch - '0');
  2048. }
  2049. else
  2050. {
  2051. num = false;
  2052. }
  2053. }
  2054. }
  2055. if (num && IsPlayerConnected(id))
  2056. {
  2057. setarg(paramPos, 0, id);
  2058. }
  2059. else
  2060. {
  2061. #if !defined foreach
  2062. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  2063. #define __SSCANF_FOREACH__
  2064. #endif
  2065. string[end] = '\0';
  2066. num = false;
  2067. new
  2068. name[MAX_PLAYER_NAME];
  2069. id = end - stringPos;
  2070. foreach (Player, playerid)
  2071. {
  2072. GetPlayerName(playerid, name, sizeof (name));
  2073. if (!strcmp(name, string[stringPos], true, id))
  2074. {
  2075. setarg(paramPos, 0, playerid);
  2076. num = true;
  2077. break;
  2078. }
  2079. }
  2080. if (!num)
  2081. {
  2082. setarg(paramPos, 0, INVALID_PLAYER_ID);
  2083. }
  2084. string[end] = ch;
  2085. #if defined __SSCANF_FOREACH__
  2086. #undef foreach
  2087. #undef __SSCANF_FOREACH__
  2088. #endif
  2089. }
  2090. stringPos = end;
  2091. }
  2092. case 's', 'z':
  2093. {
  2094. new
  2095. i = 0,
  2096. ch;
  2097. if (format[formatPos])
  2098. {
  2099. while ((ch = string[stringPos++]) && ch != delim)
  2100. {
  2101. setarg(paramPos, i++, ch);
  2102. }
  2103. if (!i)
  2104. {
  2105. return -1;
  2106. }
  2107. }
  2108. else
  2109. {
  2110. while ((ch = string[stringPos++]))
  2111. {
  2112. setarg(paramPos, i++, ch);
  2113. }
  2114. }
  2115. stringPos--;
  2116. setarg(paramPos, i, '\0');
  2117. }
  2118. default:
  2119. {
  2120. continue;
  2121. }
  2122. }
  2123. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  2124. {
  2125. stringPos++;
  2126. }
  2127. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  2128. {
  2129. stringPos++;
  2130. }
  2131. paramPos++;
  2132. }
  2133. do
  2134. {
  2135. if ((delim = format[formatPos++]) > ' ')
  2136. {
  2137. if (delim == '\'')
  2138. {
  2139. while ((delim = format[formatPos++]) && delim != '\'') {}
  2140. }
  2141. else if (delim != 'z')
  2142. {
  2143. return delim;
  2144. }
  2145. }
  2146. }
  2147. while (delim > ' ');
  2148. return 0;
  2149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement