Guest User

Selfmade by GamerHerz

a guest
Nov 11th, 2013
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 66.43 KB | None | 0 0
  1. /*
  2. - Copyright by GamerHerz
  3. Sa-mp Selfmade Script
  4.  
  5. */
  6. #include <a_samp>
  7. #include <dini>
  8. #include <md5>
  9. //Adminnichtwarnung
  10. #define Adminbefehl SendClientMessage(playerid,COLOR_ROT,"Du bist dazu nicht berechtigt!")
  11. //DCMD
  12. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  13. //Farben
  14. #define COLOR_ROT       0xD70000FF
  15. #define COLOR_GELB      0xFFFA00FF
  16. #define COLOR_WEISS     0xFAFAFAFF
  17. //Enum
  18. #define MAX_FRAKTION 18
  19. enum spielermini
  20. {
  21.     spielerpunkt,
  22.     schusswarn,
  23.     istnochjail,
  24.     SpielerSupporter,
  25.     SpielerReporter,
  26.     HatReport,
  27.     HatGesendet,
  28.     BigEar,
  29.     spieleruber,
  30.     Fesseln,
  31.     hatload,
  32.     gPlayerUsingLoopingAnim,
  33.     AnH,
  34.     Text:Bank,
  35.     Text:Hygiene,
  36.     Text:Harndrang,
  37.     Text:Box1,
  38.     fertig,
  39.     beantragt
  40. }
  41. new PInfo[MAX_PLAYERS][spielermini];
  42. enum spielerdaten
  43. {
  44.     pName[MAX_PLAYER_NAME],
  45.     pAutojail,
  46.     pPayday,
  47.     pAdmin,
  48.     pGeld,
  49.     pBankkonto,
  50.     pLeader,
  51.     pMember,
  52.     pKnast,
  53.     pKnastzeit,
  54.     pHarndrang,
  55.     pHygiene,
  56.     pHotel,
  57.     pRegistriert,
  58.     pAlter,
  59.     pGeschlecht,
  60.     pLand,
  61.     pPerso,
  62.     pArl
  63. }
  64. new SInfo[MAX_PLAYERS][spielerdaten];
  65.  
  66. //Variabeln
  67. new str[285],
  68. pname[MAX_PLAYER_NAME],
  69. Datei[64];
  70. new realchat = 1;
  71. //Dialoge
  72. #define DIALOG_REGISTRIEREN     0
  73. #define DIALOG_EINLOGGEN        1
  74. #define DIALOG_REPORT           2
  75. #define DIALOG_BANK             3
  76. #define DIALOG_BANK1            4
  77. #define DIALOG_BANK2            5
  78. #define DIALOG_BANK3            6
  79. #define DIALOG_BANK4            7
  80. #define DIALOG_BANK5            8
  81. #define DIALOG_DIENST           9
  82. #define DIALOG_REGI1            10
  83. #define DIALOG_REGI2            11
  84. #define DIALOG_REGI3            12
  85. #define DIALOG_REGI4            13
  86. #define DIALOG_SH               14
  87. #define DIALOG_SH1              15
  88. #define DIALOG_SH2              16
  89. #define DIALOG_SH3              17
  90. #define DIALOG_SH4              18
  91. #define DIALOG_SH5              19
  92. #define DIALOG_SH6              20
  93.  
  94.  
  95. //Hotelsytem
  96. #define Hotelspawn 318.4961,1114.7618,1083.8828
  97. #define Hotelint 5
  98. #define MAX_HOTEL 80
  99. enum Hoteldaten
  100. {
  101.     hname[MAX_PLAYER_NAME],
  102.     hotelid,
  103.     Float:hx,
  104.     Float:hy,
  105.     Float:hz,
  106.     mietpreis,
  107.     pickup,
  108.     Text3D:label,
  109.     world
  110. }
  111. new Hotel[MAX_HOTEL][Hoteldaten];
  112.  
  113. main()
  114. {
  115.     print("\n----------------------------------");
  116.     print("Selfmade by GamerHerz");
  117.     print("----------------------------------\n");
  118. }
  119.  
  120. public OnGameModeInit()
  121. {
  122.     Hotelsystemladen();
  123.     //2Türen am Autojail
  124.     CreateObject(1533, 2565.55127, -1300.38989, 1030.41101,   0.00000, 0.00000, 270.00000);
  125.     CreateObject(1533, 2565.55127, -1301.88953, 1030.41101,   0.00000, 0.00000, 270.00000);
  126.    
  127.     //Pickups
  128.     CreatePickup(1318, 1, 1555.5006,-1675.5295,16.1953,0);          //lspd außen
  129.     CreatePickup(1318, 1, 238.9209,140.3700,1003.0234,0);           //lspdinnen
  130.     CreatePickup(1318, 1, 1481.1169,-1772.2240,18.7958,0);          //Stadthalle außen
  131.     CreatePickup(1318, 1, 390.4371,173.8042,1008.3828,0);           //Stadthalle innen
  132.     CreatePickup(1239, 1, 362.2354,173.6494,1008.3828,-1);          //stadthalle icon
  133.     //3D Text Label
  134.     Create3DTextLabel("Drücke Enter um raus zu kommen.", COLOR_WEISS, 238.9209,140.3700,1003.0234,10.0,0);                 //lspd innen
  135.     Create3DTextLabel("Drücke Enter um rein zu kommen.", COLOR_WEISS, 1555.5006,-1675.5295,16.1953,10.0,0);                        //lspd außen
  136.     Create3DTextLabel("Drücke Enter um raus zu kommen.", COLOR_WEISS, 390.4371,173.8042,1008.3828,10.0,0);                 //stadthalle innen
  137.     Create3DTextLabel("Drücke Enter um rein zu kommen.", COLOR_WEISS, 1481.1169,-1772.2240,18.7958,10.0,0);                        //stadthalle außen
  138.     Create3DTextLabel("/stadthalle", 0x0041FFFF, 362.2354,173.6494,1008.3828,40.0,0);///stadthalle icon
  139.     //Textdraws
  140.  
  141.     DisableInteriorEnterExits();
  142.     EnableStuntBonusForAll(0);
  143.     ShowPlayerMarkers(1);
  144.     SetNameTagDrawDistance(20.0);
  145.     SetGameModeText("German Reallife");
  146.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  147.     SetTimer("spielerp",60000,1);
  148.     return 1;
  149. }
  150.  
  151. public OnGameModeExit()
  152. {
  153.     for(new i = 0; i < MAX_PLAYERS ; i++)
  154.     {
  155.         SavePlayer(i);
  156.     }
  157.     return 1;
  158. }
  159.  
  160. public OnPlayerRequestClass(playerid, classid)
  161. {
  162.     SetPlayerColor(playerid,0xF0F0F0FF);
  163.     SetSpawnInfo(playerid,0,0,1958.33, 1343.12, 15.36,0,0,0,0,0,0,0);
  164.     SpawnPlayer(playerid);
  165.     return 1;
  166. }
  167.  
  168. public OnPlayerConnect(playerid)
  169. {
  170.     //Textdraws
  171.     PInfo[playerid][Box1] = TextDrawCreate(497.000000, 119.000000,"_");
  172.     TextDrawUseBox(PInfo[playerid][Box1],1);
  173.     TextDrawBoxColor(PInfo[playerid][Box1],68);
  174.     TextDrawTextSize(PInfo[playerid][Box1],621.000000, 230.000000);
  175.     TextDrawAlignment(PInfo[playerid][Box1],0);
  176.     TextDrawBackgroundColor(PInfo[playerid][Box1],255);
  177.     TextDrawFont(PInfo[playerid][Box1],1);
  178.     TextDrawLetterSize(PInfo[playerid][Box1],0.500000, 5.300000);
  179.     TextDrawSetOutline(PInfo[playerid][Box1],1);
  180.     TextDrawSetProportional(PInfo[playerid][Box1],1);
  181.     TextDrawSetShadow(PInfo[playerid][Box1],1);
  182.  
  183.     PInfo[playerid][Bank] = TextDrawCreate(500.000000,121.000000," ");
  184.     TextDrawAlignment(PInfo[playerid][Bank],0);
  185.     TextDrawBackgroundColor(PInfo[playerid][Bank],0x000000ff);
  186.     TextDrawFont(PInfo[playerid][Bank],1);
  187.     TextDrawLetterSize(PInfo[playerid][Bank],0.260000,1.200000);
  188.     TextDrawColor(PInfo[playerid][Bank],0xffffffff);
  189.     TextDrawSetOutline(PInfo[playerid][Bank],1);
  190.     TextDrawSetProportional(PInfo[playerid][Bank],1);
  191.     TextDrawSetShadow(PInfo[playerid][Bank],1);
  192.  
  193.     PInfo[playerid][Hygiene] = TextDrawCreate(500.000000,135.000000," ");
  194.     TextDrawAlignment(PInfo[playerid][Hygiene],0);
  195.     TextDrawBackgroundColor(PInfo[playerid][Hygiene],0x000000ff);
  196.     TextDrawFont(PInfo[playerid][Hygiene],1);
  197.     TextDrawLetterSize(PInfo[playerid][Hygiene],0.260000,1.200000);
  198.     TextDrawColor(PInfo[playerid][Hygiene],0xffffffff);
  199.     TextDrawSetOutline(PInfo[playerid][Hygiene],1);
  200.     TextDrawSetProportional(PInfo[playerid][Hygiene],1);
  201.     TextDrawSetShadow(PInfo[playerid][Hygiene],1);
  202.  
  203.     PInfo[playerid][Harndrang] = TextDrawCreate(500.000000,149.000000," ");
  204.     TextDrawAlignment(PInfo[playerid][Harndrang],1);
  205.     TextDrawBackgroundColor(PInfo[playerid][Harndrang],0x000000ff);
  206.     TextDrawFont(PInfo[playerid][Harndrang],1);
  207.     TextDrawLetterSize(PInfo[playerid][Harndrang],0.260000,1.200000);
  208.     TextDrawColor(PInfo[playerid][Harndrang],0xffffffff);
  209.     TextDrawSetOutline(PInfo[playerid][Harndrang],1);
  210.     TextDrawSetProportional(PInfo[playerid][Harndrang],1);
  211.     TextDrawSetShadow(PInfo[playerid][Harndrang],1);
  212.    
  213.     PInfo[playerid][gPlayerUsingLoopingAnim] = 0;
  214.     PInfo[playerid][hatload] = 0;
  215.     PInfo[playerid][BigEar] = 0;
  216.     return 1;
  217. }
  218.  
  219. public OnPlayerDisconnect(playerid, reason)
  220. {
  221.     TextDrawDestroy(PInfo[playerid][Bank]);
  222.     TextDrawDestroy(PInfo[playerid][Box1]);
  223.     TextDrawDestroy(PInfo[playerid][Harndrang]);
  224.     TextDrawDestroy(PInfo[playerid][Hygiene]);
  225.     SavePlayer(playerid);
  226.     return 1;
  227. }
  228.  
  229. public OnPlayerSpawn(playerid)
  230. {
  231.     if(GetPVarInt(playerid,"Eingeloggt") == 0)
  232.     {
  233.         SetPlayerPos(playerid,415.0832,-1549.5360,30.0781);
  234.         SetPlayerCameraPos(playerid, 415.6310,-1550.0592,29.5921);
  235.         SetPlayerCameraLookAt(playerid, 420.8031,-1568.3004,27.5681);
  236.         GetPlayerName(playerid,pname,sizeof(pname));
  237.         format(Datei,sizeof(Datei),"/Spieler/%s.ini",pname);
  238.         Zeilekillen(playerid);
  239.         if(!fexist(Datei))
  240.         {
  241.             ShowPlayerDialog(playerid,DIALOG_REGISTRIEREN,DIALOG_STYLE_INPUT,"Registrieren","Gebe nun zum registrieren dein gewünschtes Passwort ein:","Registrieren","Abbrechen");
  242.         }
  243.         else
  244.         {
  245.             ShowPlayerDialog(playerid,DIALOG_EINLOGGEN,DIALOG_STYLE_INPUT,"Login","Logge dich mit deinem Passwort ein:","Einloggen","Abbrechen");
  246.         }
  247.     }
  248.     else if(GetPVarInt(playerid,"Eingeloggt") == 1)
  249.     {
  250.         SetSpielerSpawn(playerid);
  251.     }
  252.     return 1;
  253. }
  254. stock SetSpielerSpawn(playerid)
  255. {
  256.     if(SInfo[playerid][pRegistriert] == 1)
  257.     {
  258.         if(PInfo[playerid][hatload] == 0)
  259.         {
  260.             TextDrawShowForPlayer(playerid,PInfo[playerid][Box1]);
  261.             TextDrawShowForPlayer(playerid,PInfo[playerid][Bank]);
  262.             TextDrawShowForPlayer(playerid,PInfo[playerid][Harndrang]);
  263.             TextDrawShowForPlayer(playerid,PInfo[playerid][Hygiene]);
  264.             PInfo[playerid][hatload] = 1;
  265.         }
  266.         if(SInfo[playerid][pAutojail] > 0)
  267.         {
  268.             PInfo[playerid][istnochjail] = 1;
  269.             ResetPlayerWeapons(playerid);
  270.             SetPlayerPos(playerid,2543.462646,-1308.379882,1026.728393);
  271.             SetPlayerInterior(playerid,2);
  272.             SendClientMessage(playerid,COLOR_ROT,"Du bist noch im Autojail, also zurück rein in den Jail!");
  273.         }
  274.         if(SInfo[playerid][pHotel] > 0)
  275.         {
  276.             SetPlayerPos(playerid,Hotelspawn);
  277.             SetPlayerInterior(playerid,Hotelint);
  278.             SetPlayerVirtualWorld(playerid,Hotel[SInfo[playerid][pHotel]][world]);
  279.  
  280.         }
  281.         else
  282.         {
  283.             SetPlayerPos(playerid,1465.0757,-1743.2452,13.5469);
  284.             SetPlayerInterior(playerid,0);
  285.         }
  286.         SetTimerEx("Stati", 2500, 1, "i", playerid);
  287.         SetTimerEx("Stati2", 30000*5, 1, "d", playerid);
  288.     }
  289.     else{
  290.         ShowPlayerDialog(playerid,DIALOG_REGI1,DIALOG_STYLE_INPUT,"Registrieren 1/4","{F0F0F0}Gebe hier ein Alter an: \n\n{CD0000}Beispiel: 16","Weiter","Weiter");
  291.     }
  292.     return 1;
  293. }
  294. forward Stati(playerid);
  295. public Stati(playerid)
  296. {
  297.     new Banks[64], Hygienes[64], Hangdrans[64];
  298.     format(Banks,sizeof(Banks),        "~y~Bank:     ~w~   \t%d$",SInfo[playerid][pBankkonto]);
  299.     format(Hangdrans,sizeof(Hangdrans),"~y~Harndrang:  ~w~ \t%d%",SInfo[playerid][pHarndrang]);
  300.     format(Hygienes,sizeof(Hygienes),  "~y~Hygiene:   ~w~  \t%d%",SInfo[playerid][pHygiene]);
  301.     if(SInfo[playerid][pHarndrang] > 0)
  302.     {
  303.         format(Hangdrans,sizeof(Hangdrans),"~y~Harndrang:  ~w~ \t%d%",SInfo[playerid][pHarndrang]);
  304.     }else{
  305.         format(Hangdrans,sizeof(Hangdrans),"~y~Harndrang:  ~r~ \tGeh Pissen!");
  306.     }
  307.     if(SInfo[playerid][pHygiene] > 0)
  308.     {
  309.         format(Hygienes,sizeof(Hygienes),  "~y~Hygiene:   ~w~  \t%d%",SInfo[playerid][pHygiene]);
  310.     }else{
  311.         format(Hygienes,sizeof(Hygienes),  "~y~Hygiene:   ~r~  \tWasch dich!",SInfo[playerid][pHygiene]);
  312.     }
  313.    
  314.     TextDrawSetString(PInfo[playerid][Hygiene], Hygienes);
  315.     TextDrawSetString(PInfo[playerid][Bank], Banks);
  316.     TextDrawSetString(PInfo[playerid][Harndrang], Hangdrans);
  317.     return 1;
  318. }
  319. forward Stati2(playerid);
  320. public Stati2(playerid)
  321. {
  322.     new Float:HP;
  323.     if(SInfo[playerid][pHarndrang] > 0)
  324.     {
  325.         SInfo[playerid][pHarndrang] --;
  326.     }
  327.     else
  328.     {
  329.         GetPlayerHealth(playerid,HP);
  330.         SetPlayerHealth(playerid,HP-1);
  331.     }
  332.     if(SInfo[playerid][pHygiene] > 0)
  333.     {
  334.         SInfo[playerid][pHygiene] --;
  335.     }
  336.     else
  337.     {
  338.         GetPlayerHealth(playerid,HP);
  339.         SetPlayerHealth(playerid,HP-1);
  340.     }
  341.  
  342.     return 1;
  343. }
  344. public OnPlayerDeath(playerid, killerid, reason)
  345. {
  346.     return 1;
  347. }
  348.  
  349. public OnVehicleSpawn(vehicleid)
  350. {
  351.     return 1;
  352. }
  353.  
  354. public OnVehicleDeath(vehicleid, killerid)
  355. {
  356.     return 1;
  357. }
  358.  
  359. public OnPlayerText(playerid, text[])
  360. {
  361.     if(PInfo[playerid][HatReport] == 1)
  362.     {
  363.         GetPlayerName(playerid,pname,sizeof(pname));
  364.         format(str,sizeof(str),"[Ticketsystem]%s sagt: %s",pname,text);
  365.         SendClientMessage(PInfo[playerid][SpielerSupporter],COLOR_GELB,str);
  366.         format(str,sizeof(str),"[Ticketsystem]%s sagt: %s",pname,text);
  367.         SendClientMessage(PInfo[playerid][SpielerReporter],COLOR_GELB,str);
  368.         return 0;
  369.     }
  370.     if (realchat)
  371.     {
  372.         if(PInfo[playerid][HatReport] == 0)
  373.         {
  374.             new string[300];
  375.             new Namevo[MAX_PLAYER_NAME];
  376.             GetPlayerName(playerid, Namevo, sizeof(Namevo));
  377.             format(string, sizeof(string), "%s sagt: %s", Namevo, text);
  378.             ProxDetector(20.0, playerid, string,0xFAFAFAFF,0xFAFAFAFF,0xFAFAFAFF,0xFAFAFAFF,0xFAFAFAFF);
  379.         }
  380.         return 0;
  381.     }
  382.     return 1;
  383. }
  384.  
  385. public OnPlayerCommandText(playerid, cmdtext[])
  386. {
  387.     dcmd(stadthalle,10,cmdtext);
  388.     dcmd(veh,3,cmdtext);
  389.     dcmd(killhotel,9,cmdtext);
  390.     dcmd(enter,5,cmdtext);
  391.     dcmd(exit,4,cmdtext);
  392.     dcmd(rentout,7,cmdtext);
  393.     dcmd(chotel,6,cmdtext);
  394.     dcmd(renthotel,9,cmdtext);
  395.     dcmd(waschen,7,cmdtext);
  396.     dcmd(machadmin,9,cmdtext);
  397.     dcmd(dienst,6,cmdtext);
  398.     dcmd(tazer,5,cmdtext);
  399.     dcmd(machleader,10,cmdtext);
  400.     dcmd(ban,3,cmdtext);
  401.     dcmd(an,2,cmdtext);
  402.     dcmd(ca,2,cmdtext);
  403.     dcmd(kick,4,cmdtext);
  404.     dcmd(goto,4,cmdtext);
  405.     dcmd(report,6,cmdtext);
  406.     dcmd(gethere,7,cmdtext);
  407.     dcmd(spawn,5,cmdtext);
  408.     dcmd(geldgeben,9,cmdtext);
  409.     dcmd(gebewaffe,9,cmdtext);
  410.     dcmd(ahilfe,6,cmdtext);
  411.     dcmd(bank,4,cmdtext);
  412.     dcmd(einsperren,10,cmdtext);
  413.     dcmd(reinziehen,10,cmdtext);
  414.     dcmd(pinkeln,7,cmdtext);
  415.     return SendClientMessage(playerid,COLOR_ROT,"Dieser Befehel existiert nicht!");
  416. }
  417.  
  418. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  419. {
  420.     return 1;
  421. }
  422.  
  423. public OnPlayerExitVehicle(playerid, vehicleid)
  424. {
  425.     return 1;
  426. }
  427.  
  428. public OnPlayerStateChange(playerid, newstate, oldstate)
  429. {
  430.     return 1;
  431. }
  432.  
  433. public OnPlayerEnterCheckpoint(playerid)
  434. {
  435.     return 1;
  436. }
  437.  
  438. public OnPlayerLeaveCheckpoint(playerid)
  439. {
  440.     return 1;
  441. }
  442.  
  443. public OnPlayerEnterRaceCheckpoint(playerid)
  444. {
  445.     return 1;
  446. }
  447.  
  448. public OnPlayerLeaveRaceCheckpoint(playerid)
  449. {
  450.     return 1;
  451. }
  452.  
  453. public OnRconCommand(cmd[])
  454. {
  455.     return 1;
  456. }
  457.  
  458. public OnPlayerRequestSpawn(playerid)
  459. {
  460.     return 1;
  461. }
  462.  
  463. public OnObjectMoved(objectid)
  464. {
  465.     return 1;
  466. }
  467.  
  468. public OnPlayerObjectMoved(playerid, objectid)
  469. {
  470.     return 1;
  471. }
  472.  
  473. public OnPlayerPickUpPickup(playerid, pickupid)
  474. {
  475.     return 1;
  476. }
  477.  
  478. public OnVehicleMod(playerid, vehicleid, componentid)
  479. {
  480.     return 1;
  481. }
  482.  
  483. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  484. {
  485.     return 1;
  486. }
  487.  
  488. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  489. {
  490.     return 1;
  491. }
  492.  
  493. public OnPlayerSelectedMenuRow(playerid, row)
  494. {
  495.     return 1;
  496. }
  497.  
  498. public OnPlayerExitedMenu(playerid)
  499. {
  500.     return 1;
  501. }
  502.  
  503. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  504. {
  505.     return 1;
  506. }
  507.  
  508. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  509. {
  510.     if(newkeys == KEY_SECONDARY_ATTACK)
  511.     {
  512.         if(IsPlayerInRangeOfPoint(playerid,4.0,1555.5006,-1675.5295,16.1953))//LSPDEnter
  513.         {
  514.             SetPlayerPos(playerid,238.9209,140.3700,1003.0234);
  515.             SetPlayerInterior(playerid,3);
  516.             SetPlayerFacingAngle(playerid,92.3491);
  517.         }
  518.         else if (IsPlayerInRangeOfPoint(playerid,4.0,238.9209,140.3700,1003.0234))//LSPDExit
  519.         {
  520.             SetPlayerPos(playerid,1555.5006,-1675.5295,16.1953);
  521.             SetPlayerInterior(playerid,0);
  522.             SetPlayerFacingAngle(playerid,357.5767);
  523.         }
  524.         else if (IsPlayerInRangeOfPoint(playerid,4.0,1481.1169,-1772.2240,18.7958))//StadtHalle Enter
  525.         {
  526.             SetPlayerPos(playerid,390.4371,173.8042,1008.3828);
  527.             SetPlayerInterior(playerid,3);
  528.             SetPlayerFacingAngle(playerid,357.5767);
  529.         }
  530.         else if (IsPlayerInRangeOfPoint(playerid,4.0,390.4371,173.8042,1008.3828))//StadtHalle Exit
  531.         {
  532.             SetPlayerPos(playerid,1481.1169,-1772.2240,18.7958);
  533.             SetPlayerInterior(playerid,0);
  534.             SetPlayerFacingAngle(playerid,357.5767);
  535.         }
  536.     }
  537.     return 1;
  538. }
  539.  
  540. public OnRconLoginAttempt(ip[], password[], success)
  541. {
  542.     return 1;
  543. }
  544.  
  545. public OnPlayerUpdate(playerid)
  546. {
  547.     return 1;
  548. }
  549.  
  550. public OnPlayerStreamIn(playerid, forplayerid)
  551. {
  552.     return 1;
  553. }
  554.  
  555. public OnPlayerStreamOut(playerid, forplayerid)
  556. {
  557.     return 1;
  558. }
  559.  
  560. public OnVehicleStreamIn(vehicleid, forplayerid)
  561. {
  562.     return 1;
  563. }
  564.  
  565. public OnVehicleStreamOut(vehicleid, forplayerid)
  566. {
  567.     return 1;
  568. }
  569.  
  570. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  571. {
  572.     if(dialogid == DIALOG_SH)
  573.     {
  574.         if(response)
  575.         {
  576.             if(listitem == 0)
  577.             {
  578.                 if(SInfo[playerid][pPerso] == 0 && PInfo[playerid][beantragt] == 0 && PInfo[playerid][fertig] == 0)
  579.                 {
  580.                     SetTimerEx("Perso", 60000*10, 1, "i", playerid);
  581.                     PInfo[playerid][beantragt] = 1;
  582.                     ShowPlayerDialog(playerid,DIALOG_SH2,DIALOG_STYLE_MSGBOX,"Stadthalle","{FAFAFA}Du hast deinen Personalausweis erfolgreich beantragt.\n\n{A50000}In 10 Minuten bekommst du eine Meldung zum abholen!","Ok","Ok");
  583.                 }
  584.                 else if(SInfo[playerid][pPerso] == 0 && PInfo[playerid][beantragt] == 1 && PInfo[playerid][fertig] == 0)
  585.                 {
  586.                     ShowPlayerDialog(playerid,DIALOG_SH3,DIALOG_STYLE_MSGBOX,"Stadthalle","{A50000}Dein Personalausweis ist noch nicht fertig!","Ok","Ok");
  587.                 }
  588.                 else if(SInfo[playerid][pPerso] == 0 && PInfo[playerid][beantragt] == 1 && PInfo[playerid][fertig] == 1)
  589.                 {
  590.                     ShowPlayerDialog(playerid,DIALOG_SH4,DIALOG_STYLE_MSGBOX,"Stadthalle","{00890A}Hier ist dein Personalausweis, zeigen kannst du ihn mit /showperso [ID]!","Ok","Ok");
  591.                 }
  592.                 else{
  593.                     ShowPlayerDialog(playerid,DIALOG_SH5,DIALOG_STYLE_MSGBOX,"Stadthalle","{A50000}Du hast bereits einen Personalausweis!","Ok","Ok");
  594.                 }
  595.             }
  596.         }
  597.     }
  598.  
  599.     if(dialogid == DIALOG_REGI1)
  600.     {
  601.         if(response)
  602.         {
  603.             format(str,sizeof(str),"{F0F0F0}Inordnung, du bist %d Jahre jung.\n\n{CD0000}Wähle nun dein Geschlecht aus:",strval(inputtext));
  604.             ShowPlayerDialog(playerid,DIALOG_REGI2,DIALOG_STYLE_MSGBOX,"Registrieren 2/4",str,"Männlich","Weiblich");
  605.             SInfo[playerid][pAlter] = strval(inputtext);
  606.         }
  607.         else
  608.         {
  609.             format(str,sizeof(str),"{F0F0F0}Inordnung, du bist %d Jahre jung.\n\n{CD0000}Wähle nun dein Geschlecht aus:",strval(inputtext));
  610.             ShowPlayerDialog(playerid,DIALOG_REGI2,DIALOG_STYLE_MSGBOX,"Registrieren 2/4",str,"Männlich","Weiblich");
  611.             SInfo[playerid][pAlter] = strval(inputtext);
  612.         }
  613.     }
  614.     if(dialogid == DIALOG_REGI2)
  615.     {
  616.         if(response)
  617.         {
  618.             format(str,sizeof(str),"{F0F0F0}Inordnung, du bist Männlich.\n\n{CD0000}Gebe nun dein Land ein:");
  619.             ShowPlayerDialog(playerid,DIALOG_REGI3,DIALOG_STYLE_INPUT,"Registrieren 3/4",str,"Weiter","Weiter");
  620.             SInfo[playerid][pGeschlecht] = 1;
  621.         }
  622.         else
  623.         {
  624.             format(str,sizeof(str),"{F0F0F0}Inordnung, du bist Weiblich.\n\n{CD0000}Gebe nun dein Land ein:");
  625.             ShowPlayerDialog(playerid,DIALOG_REGI3,DIALOG_STYLE_INPUT,"Registrieren 3/4",str,"Weiter","Weiter");
  626.             SInfo[playerid][pGeschlecht] = 2;
  627.         }
  628.     }
  629.     if(dialogid == DIALOG_REGI3)
  630.     {
  631.         if(response)
  632.         {
  633.             format(str,sizeof(str),"{F0F0F0}Indordnung, du kommst also aus %s\n\n{007332}Vielen dank für deine eingegebenen Daten, Account wird gespeichert!",inputtext);
  634.             ShowPlayerDialog(playerid,DIALOG_REGI4,DIALOG_STYLE_MSGBOX,"Registrieren 4/4",str,"Spielen","Spielen");
  635.             format(SInfo[playerid][pLand], 24, inputtext);
  636.         }
  637.         else
  638.         {
  639.             format(str,sizeof(str),"{F0F0F0}Indordnung, du kommst also aus %s{007332}Vielen dank für deine eingegebenen Daten, Account wird gespeichert!",inputtext);
  640.             ShowPlayerDialog(playerid,DIALOG_REGI4,DIALOG_STYLE_MSGBOX,"Registrieren 4/4",str,"Spielen","Spielen");
  641.             format(SInfo[playerid][pLand], 24, inputtext);
  642.         }
  643.     }
  644.     if(dialogid == DIALOG_REGI4)
  645.     {
  646.         if(response)
  647.         {
  648.             SInfo[playerid][pRegistriert] = 1;
  649.             SpawnPlayer(playerid);
  650.         }
  651.         else
  652.         {
  653.             SInfo[playerid][pRegistriert] = 1;
  654.             SpawnPlayer(playerid);
  655.         }
  656.     }
  657.     if(dialogid == DIALOG_BANK)
  658.     {
  659.         if(response)
  660.         {
  661.             if(listitem == 0)
  662.             {
  663.                 ShowPlayerDialog(playerid,DIALOG_BANK1,DIALOG_STYLE_INPUT,"Bankkonto einzahlen","{FAFAFA}Gebe hier den Betrag ein, den du einzahlen möchtest:","Einzahlen","Abbrechen");
  664.             }
  665.             if(listitem == 1)
  666.             {
  667.                 format(str,sizeof(str),"{D70000}[Info]:{FAFAFA} Auf deinem Konto sind noch %i$!\nGebe hier den Betrag ein, den du auszahlen möchtest:",SInfo[playerid][pBankkonto]);
  668.                 ShowPlayerDialog(playerid,DIALOG_BANK2,DIALOG_STYLE_INPUT,"Bankkonto auszahlen",str,"Auszahlen","Abbrechen");
  669.             }
  670.             if(listitem == 2)
  671.             {
  672.                 new string[156];
  673.                 format(string,sizeof(string),"{FAFAFA}Gebe hier die Spieler ID ein, dem du das Geld überweisen möchtest:",SInfo[playerid][pBankkonto]);
  674.                 ShowPlayerDialog(playerid,DIALOG_BANK3,DIALOG_STYLE_INPUT,"Bankkonto Überweisung",string,"Weiter","Abbrechen");
  675.             }
  676.             if(listitem == 3)
  677.             {
  678.                 new string[156];
  679.                 format(string,sizeof(string),"{D70000}[Info]:{FAFAFA} Dein Kontostand beträgt %i$.",SInfo[playerid][pBankkonto]);
  680.                 ShowPlayerDialog(playerid,DIALOG_BANK4,DIALOG_STYLE_MSGBOX,"Bankkonto Kontostand",string,"Abbrechen","");
  681.             }
  682.         }
  683.     }
  684.     if(dialogid == DIALOG_BANK3)
  685.     {
  686.         if(response)
  687.         {
  688.             new ein = strval(inputtext);
  689.             if(IsNumeric(inputtext))
  690.             {
  691.                 if(IsPlayerConnected(ein))
  692.                 {
  693.                     new bname[MAX_PLAYER_NAME];
  694.                     GetPlayerName(ein,bname,sizeof(bname));
  695.                     PInfo[playerid][spieleruber] = ein;
  696.                     format(str,sizeof(str),"{FAFAFA}Wie viel Geld willst du %s überweisen?\n{D70000}[Info]: {FAFAFA}Aktueller Kontostand: %d$",bname,SInfo[playerid][pBankkonto]);
  697.                     ShowPlayerDialog(playerid,DIALOG_BANK5,DIALOG_STYLE_INPUT,"Bankkonto Überweisung",str,"Weiter","Abbrechen");
  698.                 }
  699.                 else
  700.                 {
  701.                     SendClientMessage(playerid,COLOR_ROT,"Diesen Spieler gibt es nicht!");
  702.                 }
  703.             }
  704.             else
  705.             {
  706.                 SendClientMessage(playerid,COLOR_ROT,"Ungültige Spieler ID!");
  707.             }
  708.         }
  709.     }
  710.     if(dialogid == DIALOG_BANK5)
  711.     {
  712.         if(response)
  713.         {
  714.             if(IsNumeric(inputtext))
  715.             {
  716.                 new ein = strval(inputtext);
  717.                 if(ein <= SInfo[playerid][pBankkonto])
  718.                 {
  719.                     if(ein < 0)
  720.                     {
  721.                         SendClientMessage(playerid, COLOR_ROT, "Du kannst nicht - überweisen!");
  722.                         return 1;
  723.                     }
  724.                     GetPlayerName(playerid,pname,sizeof(pname));
  725.                     new bname[MAX_PLAYER_NAME];
  726.                     GetPlayerName(PInfo[playerid][spieleruber],bname,sizeof(bname));
  727.                     SInfo[playerid][pBankkonto] -= ein;
  728.                     SInfo[PInfo[playerid][spieleruber]][pBankkonto] += ein;
  729.                     format(str,sizeof(str),"Du hast %s %d$ überwießen.",bname,ein);
  730.                     SendClientMessage(playerid,COLOR_GELB,str);
  731.                     format(str,sizeof(str),"%s hat dir %d$ auf dein Konto überwießen.",pname,ein);
  732.                     SendClientMessage(PInfo[playerid][spieleruber],COLOR_GELB,str);
  733.                     PInfo[playerid][spieleruber] = -1;
  734.                 }
  735.                 else
  736.                 {
  737.                     SendClientMessage(playerid,COLOR_ROT,"Du hast nicht soviel Geld!");
  738.                 }
  739.             }
  740.             else
  741.             {
  742.                 SendClientMessage(playerid,COLOR_ROT,"Du kannst bloß Zahlen verwenden!");
  743.             }
  744.         }
  745.     }
  746.     if(dialogid == DIALOG_BANK1)
  747.     {
  748.         if(response)
  749.         {
  750.             if(IsNumeric(inputtext))
  751.             {
  752.                 new ein = strval(inputtext);
  753.                 if(GetPlayerMoney(playerid) >= ein)
  754.                 {
  755.                     if(ein < 0)
  756.                     {
  757.                         SendClientMessage(playerid, COLOR_ROT, "Du kannst nicht - einzahlen!");
  758.                         return 1;
  759.                     }
  760.                     SInfo[playerid][pBankkonto] += ein;
  761.                     GivePlayerMoney(playerid,-ein);
  762.                     format(str,sizeof(str),"Du hast %i$ eingezahlt. Dein neuer Kontostand: %i$",ein,SInfo[playerid][pBankkonto]);
  763.                     SendClientMessage(playerid,COLOR_GELB,str);
  764.                 }
  765.                 else
  766.                 {
  767.                     SendClientMessage(playerid,COLOR_ROT,"Du hast nicht soviel Geld!");
  768.                 }
  769.             }
  770.             else
  771.             {
  772.                 SendClientMessage(playerid,COLOR_ROT,"Du kannst bloß Zahlen verwenden!");
  773.             }
  774.         }
  775.     }
  776.     if(dialogid == DIALOG_BANK2)
  777.     {
  778.         if(response)
  779.         {
  780.             if(IsNumeric(inputtext))
  781.             {
  782.                 new ein = strval(inputtext);
  783.                 if(ein <= SInfo[playerid][pBankkonto])
  784.                 {
  785.                     if(ein < 0)
  786.                     {
  787.                         SendClientMessage(playerid, COLOR_ROT, "Du kannst nicht - einzahlen!");
  788.                         return 1;
  789.                     }
  790.                     SInfo[playerid][pBankkonto] -= ein;
  791.                     GivePlayerMoney(playerid,ein);
  792.                     format(str,sizeof(str),"Du hast %i$ ausgezahlt. Dein neuer Kontostand: %i$",ein,SInfo[playerid][pBankkonto]);
  793.                     SendClientMessage(playerid,COLOR_GELB,str);
  794.                 }
  795.                 else
  796.                 {
  797.                     SendClientMessage(playerid,COLOR_ROT,"Du hast nicht soviel Geld!");
  798.                 }
  799.             }
  800.             else
  801.             {
  802.                 SendClientMessage(playerid,COLOR_ROT,"Du kannst bloß Zahlen verwenden!");
  803.             }
  804.         }
  805.     }
  806.     if(dialogid == DIALOG_REPORT)
  807.     {
  808.         if(response)
  809.         {
  810.             new reportstring[255];
  811.             format(str,sizeof(str),"Du hast dein Ticket abgesendet! [%s]",inputtext);
  812.             SendClientMessage(playerid,COLOR_GELB,str);
  813.             GetPlayerName(playerid,pname,sizeof(pname));
  814.             PInfo[playerid][HatGesendet] = 1;
  815.             format(reportstring,sizeof(reportstring),"[ID:%d]%s hat ein Ticket eingesendet! [%s]",playerid,pname,inputtext);
  816.             for(new i = 0; i < MAX_PLAYERS; i++)
  817.             {
  818.                 if(IsPlayerConnected(i) && SInfo[i][pAdmin] >= 1)
  819.                 {
  820.                     SendClientMessage(i,0xFF1400FF,reportstring);
  821.                     SendClientMessage(i,COLOR_ROT,"Nehm den Report mit /an [ID] an!");
  822.                 }
  823.             }
  824.         }
  825.     }
  826.     if(dialogid == DIALOG_DIENST)
  827.     {
  828.         if(response)
  829.         {
  830.             switch(listitem)
  831.             {
  832.                 case 0:{GivePlayerWeapon(playerid,3,1); ShowPlayerDialog(playerid,DIALOG_DIENST,DIALOG_STYLE_LIST,"Ausrüstung","Schlagstock\nDesert Eagle\nM4\nMP5\nLeben + Weste","Nehmen","Abbrechen");}
  833.                 case 1:{GivePlayerWeapon(playerid,24,400); ShowPlayerDialog(playerid,DIALOG_DIENST,DIALOG_STYLE_LIST,"Ausrüstung","Schlagstock\nDesert Eagle\nM4\nMP5\nLeben + Weste","Nehmen","Abbrechen");}
  834.                 case 2:{GivePlayerWeapon(playerid,31,600); ShowPlayerDialog(playerid,DIALOG_DIENST,DIALOG_STYLE_LIST,"Ausrüstung","Schlagstock\nDesert Eagle\nM4\nMP5\nLeben + Weste","Nehmen","Abbrechen");}
  835.                 case 3:{GivePlayerWeapon(playerid,29,600); ShowPlayerDialog(playerid,DIALOG_DIENST,DIALOG_STYLE_LIST,"Ausrüstung","Schlagstock\nDesert Eagle\nM4\nMP5\nLeben + Weste","Nehmen","Abbrechen");}
  836.                 case 4:{SetPlayerHealth(playerid,100); SetPlayerArmour(playerid,100); ShowPlayerDialog(playerid,DIALOG_DIENST,DIALOG_STYLE_LIST,"Ausrüstung","Schlagstock\nDesert Eagle\nM4\nMP5\nLeben + Weste","Nehmen","Abbrechen");}
  837.             }
  838.         }
  839.     }
  840.     switch (dialogid)
  841.     {
  842.         case DIALOG_REGISTRIEREN:
  843.         {
  844.             if(response == 0)
  845.             {
  846.                 Zeilekillen(playerid);
  847.                 SendClientMessage(playerid,COLOR_ROT,"Da du den Vorgang abgebrochen hast, kannst du nicht hier spielen.");
  848.                 Kick(playerid);
  849.                 return 1;
  850.             }
  851.             else if(response == 1)
  852.             {
  853.                 if(strlen(inputtext) > 5)
  854.                 {
  855.                     if(!strlen(inputtext))
  856.                     {
  857.                         Zeilekillen(playerid);
  858.                         ShowPlayerDialog(playerid,DIALOG_REGISTRIEREN,DIALOG_STYLE_INPUT,"Registrieren","Dein Passwort war nicht lang genug:","Registrieren","Abbrechen");
  859.                         return 1;
  860.                     }
  861.                     else
  862.                     {
  863.                          CreateAccount(playerid,inputtext);
  864.                          Zeilekillen(playerid);
  865.                          ShowPlayerDialog(playerid,DIALOG_EINLOGGEN,DIALOG_STYLE_PASSWORD,"Login","Logge dich in deinen Account ein:","Einloggen","Abbrechen");
  866.                          return 1;
  867.                     }
  868.                 }
  869.                 else
  870.                 {
  871.                     Zeilekillen(playerid);
  872.                     ShowPlayerDialog(playerid,DIALOG_REGISTRIEREN,DIALOG_STYLE_INPUT,"Registrieren","Dein Passwort braucht mindestens 6 Buchstaben/Zahlen:","Registrieren","Abbrechen");
  873.                     return 1;
  874.                 }
  875.             }
  876.         }
  877.         case DIALOG_EINLOGGEN:
  878.         {
  879.             if(response == 0)
  880.             {
  881.                 Zeilekillen(playerid);
  882.                 SendClientMessage(playerid,0x5A5A5AFF,"Da du den Vorgang abgebrochen hast, kannst du nicht hier spielen.");
  883.                 Kick(playerid);
  884.                 return 1;
  885.             }
  886.             else if(response == 1)
  887.             {
  888.                 if(strlen(inputtext))
  889.                 {
  890.                     GetPlayerName(playerid,pname,sizeof(pname));
  891.                     format(Datei,sizeof(Datei),"/Spieler/%s.ini",pname);
  892.                     if(strcmp(MD5_Hash(inputtext),dini_Get(Datei,"Passwort")) == 0)
  893.                     {
  894.                         SpawnPlayer(playerid);
  895.                         Spielerladen(playerid);
  896.                         SetPVarInt(playerid,"Eingeloggt",1);
  897.                         return 1;
  898.                     }
  899.                     else
  900.                     {
  901.                         Zeilekillen(playerid);
  902.                         SendClientMessage(playerid,0x5A5A5AFF,"==> Dein eingegebenes Passwort war nicht korrekt.");
  903.                         ShowPlayerDialog(playerid,DIALOG_EINLOGGEN,DIALOG_STYLE_PASSWORD,"Login","Bitte gebe dein Passwort ein:","Einloggen","Abbrechen");
  904.                         return 1;
  905.                     }
  906.                 }
  907.                 else
  908.                 {
  909.                     Zeilekillen(playerid);
  910.                     SendClientMessage(playerid,0x5A5A5AFF,"==> Dein eingegebenes Passwort war nicht korrekt.");
  911.                     ShowPlayerDialog(playerid,DIALOG_EINLOGGEN,DIALOG_STYLE_PASSWORD,"Login","Bitte gebe dein Passwort ein:","Einloggen","Abbrechen");
  912.                     return 1;
  913.                 }
  914.             }
  915.         }
  916.     }
  917.     return 1;
  918. }
  919.  
  920. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  921. {
  922.     return 1;
  923. }
  924.  
  925. //public, stocks
  926.  
  927. forward Zeilekillen(playerid);
  928. public Zeilekillen(playerid)
  929. {
  930.     SendClientMessage(playerid,COLOR_ROT," ");
  931.     SendClientMessage(playerid,COLOR_ROT," ");
  932.     SendClientMessage(playerid,COLOR_ROT," ");
  933.     SendClientMessage(playerid,COLOR_ROT," ");
  934.     SendClientMessage(playerid,COLOR_ROT," ");
  935.     SendClientMessage(playerid,COLOR_ROT," ");
  936.     SendClientMessage(playerid,COLOR_ROT," ");
  937.     SendClientMessage(playerid,COLOR_ROT," ");
  938.     SendClientMessage(playerid,COLOR_ROT," ");
  939.     SendClientMessage(playerid,COLOR_ROT," ");
  940.     SendClientMessage(playerid,COLOR_ROT," ");
  941.     SendClientMessage(playerid,COLOR_ROT," ");
  942.     SendClientMessage(playerid,COLOR_ROT," ");
  943.     SendClientMessage(playerid,COLOR_ROT," ");
  944.     SendClientMessage(playerid,COLOR_ROT," ");
  945.     SendClientMessage(playerid,COLOR_ROT," ");
  946.     SendClientMessage(playerid,COLOR_ROT," ");
  947.     SendClientMessage(playerid,COLOR_ROT," ");
  948.     SendClientMessage(playerid,COLOR_ROT," ");
  949.     SendClientMessage(playerid,COLOR_ROT," ");
  950.     SendClientMessage(playerid,COLOR_ROT," ");
  951.     SendClientMessage(playerid,COLOR_ROT," ");
  952.     SendClientMessage(playerid,COLOR_ROT," ");
  953.     SendClientMessage(playerid,COLOR_ROT," ");
  954.     return 1;
  955. }
  956.  
  957. stock CreateAccount(playerid,passwort[])
  958. {
  959.     GetPlayerName(playerid,pname,sizeof(pname));
  960.     format(Datei,sizeof(Datei),"/Spieler/%s.ini",pname);
  961.     dini_Create(Datei);
  962.     dini_Set(Datei,"Passwort",MD5_Hash(passwort));
  963.     dini_IntSet(Datei,"Harndrang",100);
  964.     dini_IntSet(Datei,"Hygiene",100);
  965.     TogglePlayerControllable(playerid,1);
  966.     return 1;
  967. }
  968. stock Spielerladen(playerid)
  969. {
  970.     GetPlayerName(playerid,pname,sizeof(pname));
  971.     format(Datei,sizeof(Datei),"/Spieler/%s.ini",pname);
  972.     SInfo[playerid][pAutojail] = dini_Int(Datei,"Autojail");
  973.     SInfo[playerid][pPayday] = dini_Int(Datei,"Payday");
  974.     SInfo[playerid][pAdmin] = dini_Int(Datei,"Admin");
  975.     SInfo[playerid][pGeld] = dini_Int(Datei,"Geld");
  976.     SInfo[playerid][pBankkonto] = dini_Int(Datei,"Bank");
  977.     SInfo[playerid][pLeader] = dini_Int(Datei,"Leader");
  978.     SInfo[playerid][pMember] = dini_Int(Datei,"Member");
  979.     SInfo[playerid][pKnast] = dini_Int(Datei,"Knast");
  980.     SInfo[playerid][pKnastzeit] = dini_Int(Datei,"Knastzeit");
  981.     SInfo[playerid][pHarndrang] = dini_Int(Datei,"Harndrang");
  982.     SInfo[playerid][pHygiene] = dini_Int(Datei,"Hygiene");
  983.     SInfo[playerid][pHotel] = dini_Int(Datei,"Hotel");
  984.     SInfo[playerid][pRegistriert] = dini_Int(Datei,"Registriert");
  985.     SInfo[playerid][pAlter] = dini_Int(Datei,"Alter");
  986.     SInfo[playerid][pGeschlecht] = dini_Int(Datei,"Geschlecht");
  987.     format(SInfo[playerid][pLand], 24, dini_Get(Datei,"Land"));
  988.     SInfo[playerid][pPerso] = dini_Int(Datei,"pPerso");
  989.     SInfo[playerid][pArl] = dini_Int(Datei,"pArl");
  990.     GivePlayerMoney(playerid,SInfo[playerid][pGeld]);
  991.     return 1;
  992. }
  993. stock SavePlayer(playerid)
  994. {
  995.     if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
  996.     {
  997.         if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
  998.         {
  999.             GetPlayerName(playerid,pname,sizeof(pname));
  1000.             format(Datei,sizeof(Datei),"/Spieler/%s.ini",pname);
  1001.             dini_IntSet(Datei,"Autojail",SInfo[playerid][pAutojail]);
  1002.             dini_IntSet(Datei,"Payday",SInfo[playerid][pPayday]);
  1003.             dini_IntSet(Datei,"Admin",SInfo[playerid][pAdmin]);
  1004.             dini_IntSet(Datei,"Geld",GetPlayerMoney(playerid));
  1005.             dini_IntSet(Datei,"Leader",SInfo[playerid][pLeader]);
  1006.             dini_IntSet(Datei,"Member",SInfo[playerid][pMember]);
  1007.             dini_IntSet(Datei,"Bank",SInfo[playerid][pBankkonto]);
  1008.             dini_IntSet(Datei,"Knast",SInfo[playerid][pKnast]);
  1009.             dini_IntSet(Datei,"Knastzeit",SInfo[playerid][pKnastzeit]);
  1010.             dini_IntSet(Datei,"Hygiene",SInfo[playerid][pHygiene]);
  1011.             dini_IntSet(Datei,"Harndrang",SInfo[playerid][pHarndrang]);
  1012.             dini_IntSet(Datei,"Hotel",SInfo[playerid][pHotel]);
  1013.             dini_IntSet(Datei,"Registriert",SInfo[playerid][pRegistriert]);
  1014.             dini_IntSet(Datei,"Alter",SInfo[playerid][pAlter]);
  1015.             dini_IntSet(Datei,"Geschlecht",SInfo[playerid][pGeschlecht]);
  1016.             dini_Set(Datei,"Land",SInfo[playerid][pLand]);
  1017.             dini_Set(Datei,"pPerso",SInfo[playerid][pPerso]);
  1018.             dini_Set(Datei,"pArl",SInfo[playerid][pArl]);
  1019.         }
  1020.     }
  1021.     return 1;
  1022. }
  1023. stock HatWaffen(playerid)
  1024. {
  1025.     new weapons[13][2];
  1026.     for (new i = 0; i < 13; i++)
  1027.     {
  1028.         GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
  1029.     }
  1030.     return weapons;
  1031. }
  1032. stock IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
  1033. {
  1034.     new Float:pX,Float:pY,Float:pZ;
  1035.     GetPlayerPos(playerid,pX,pY,pZ);
  1036.     if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
  1037.     else return 0;
  1038. }
  1039. forward spielerp(playerid);
  1040. public spielerp(playerid)
  1041. {
  1042.     for(new i=0; i<MAX_PLAYERS; i++)
  1043.     {
  1044.         if(!IsPlayerConnected(i))continue;
  1045.         if(GetPVarInt(i,"Eingeloggt") == 1)
  1046.         {
  1047.             Updating(i);
  1048.         }
  1049.     }
  1050.     return 1;
  1051. }
  1052. forward Updating(playerid);
  1053. public Updating(playerid)
  1054. {
  1055.     PInfo[playerid][spielerpunkt] += 60;
  1056.     Payday(playerid);
  1057.     return 1;
  1058. }
  1059. forward Payday(playerid);
  1060. public Payday(playerid)
  1061. {
  1062.     if(SInfo[playerid][pPayday] >= 60)
  1063.     {
  1064.         SInfo[playerid][pPayday] = 0;
  1065.         new Pstring1[125],Pstring2[125],Pstring3[125], Lohn;
  1066.         if(PInfo[playerid][spielerpunkt] == 60)
  1067.         {
  1068.             SendClientMessage(playerid,0xFF1400FF,"|==============PayDay==============|");/*Muss ganz oben stehen! */
  1069.             format(Pstring1,sizeof(Pstring1),"Alter Kontostand: %d$",SInfo[playerid][pBankkonto]);/*Muss ganz oben stehen unter Überschrift! */
  1070.             SendClientMessage(playerid,COLOR_WEISS,Pstring1);
  1071.             if(SInfo[playerid][pArl] == 1)
  1072.             {
  1073.                 SInfo[playerid][pBankkonto] += 580;
  1074.                 Lohn = 580;
  1075.             }
  1076.             format(Pstring2,sizeof(Pstring2),"Lohn/Arbeitslosengeld: %d",Lohn);
  1077.             format(Pstring3,sizeof(Pstring3),"Neuer Kontostand: %d$",SInfo[playerid][pBankkonto]);
  1078.             SendClientMessage(playerid,COLOR_WEISS,Pstring2);
  1079.             SendClientMessage(playerid,COLOR_WEISS,Pstring3);
  1080.             PInfo[playerid][spielerpunkt] = 0;
  1081.         }
  1082.     }
  1083.     else
  1084.     {
  1085.         SInfo[playerid][pPayday] ++;
  1086.         if(SInfo[playerid][pKnast] == 1 && SInfo[playerid][pKnastzeit] > 0)
  1087.         {
  1088.             SInfo[playerid][pKnastzeit] --;
  1089.         }
  1090.         else if(SInfo[playerid][pKnast] == 1 && SInfo[playerid][pKnastzeit] == 0)
  1091.         {
  1092.             SInfo[playerid][pKnastzeit] = 0;
  1093.             SInfo[playerid][pKnast] = 0;
  1094.             SpawnPlayer(playerid);
  1095.         }
  1096.         if(SInfo[playerid][pAutojail] > 0)
  1097.         {
  1098.             SInfo[playerid][pAutojail] --;
  1099.         }
  1100.         if(SInfo[playerid][pAutojail] == 0 && PInfo[playerid][istnochjail] == 1)
  1101.         {
  1102.             PInfo[playerid][istnochjail] = 0;
  1103.             SInfo[playerid][pAutojail] = 0;
  1104.             SpawnPlayer(playerid);
  1105.         }
  1106.  
  1107.     }
  1108.    
  1109. }
  1110.  
  1111. dcmd_stadthalle(playerid,params[])
  1112. {
  1113.     if(IsPlayerInRangeOfPoint(playerid,5.0,362.2354,173.6494,1008.3828))
  1114.     {
  1115.         ShowPlayerDialog(playerid,DIALOG_SH,DIALOG_STYLE_LIST,"Stadthalle","Personalausweis beantragen\nArbeitslosengeld beantragen","Absenden","Abbrechen");
  1116.     }
  1117.     else{SendClientMessage(playerid,COLOR_ROT,"Befehl hier nicht möglich!");}
  1118.     return 1;
  1119. }
  1120. dcmd_enter(playerid,params[])
  1121. {
  1122.     #pragma unused params
  1123.     if(AnHotel(playerid))
  1124.     {
  1125.         if(PInfo[playerid][AnH] == SInfo[playerid][pHotel])
  1126.         {
  1127.             SetPlayerPos(playerid,Hotelspawn);
  1128.             SetPlayerInterior(playerid,Hotelint);
  1129.             SetPlayerVirtualWorld(playerid,Hotel[SInfo[playerid][pHotel]][world]);
  1130.         }
  1131.     }
  1132.     return 1;
  1133. }
  1134. dcmd_exit(playerid,params[])
  1135. {
  1136.     #pragma unused params
  1137.     if(IsPlayerInRangeOfPoint(playerid,5.0,Hotelspawn))
  1138.     {
  1139.         SetPlayerPos(playerid,Hotel[SInfo[playerid][pHotel]][hx],Hotel[SInfo[playerid][pHotel]][hy],Hotel[SInfo[playerid][pHotel]][hz]);
  1140.         SetPlayerInterior(playerid,0);
  1141.         SetPlayerVirtualWorld(playerid,0);
  1142.     }
  1143.     return 1;
  1144. }
  1145. dcmd_dienst(playerid,params[])
  1146. {
  1147.     if(Polizist(playerid)){
  1148.         #pragma unused params
  1149.         if(IsPlayerInRangeOfPoint(playerid,5.0,217.7840,184.7054,1003.0313))
  1150.         {
  1151.             ShowPlayerDialog(playerid,DIALOG_DIENST,DIALOG_STYLE_LIST,"Ausrüstung","Schlagstock\nDesert Eagle\nM4\nMP5\nLeben + Weste","Nehmen","Abbrechen");
  1152.         }
  1153.         else{SendClientMessage(playerid,COLOR_ROT,"Dieser Befehl ist hier nicht möglich!");}}
  1154.     return 1;
  1155. }
  1156. dcmd_bank(playerid,params[])
  1157. {
  1158.     #pragma unused params
  1159.     ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Bankkonto","Einzahlen\nAuszahlen\nÜberweisen\nKontostand","Auswählen","Abbrechen");
  1160.     return 1;
  1161. }
  1162. dcmd_ahilfe(playerid,params[])
  1163. {
  1164.     #pragma unused params
  1165.     if(SInfo[playerid][pAdmin] == 1)
  1166.     {
  1167.         SendClientMessage(playerid,COLOR_GELB,"|________________Adminhilfe Rang 1________________|");
  1168.         SendClientMessage(playerid,COLOR_WEISS,"/kick /goto /spawn ");
  1169.         SendClientMessage(playerid,COLOR_WEISS,"Report: /an /ca");
  1170.     }
  1171.     else if(SInfo[playerid][pAdmin] == 2)
  1172.     {
  1173.         SendClientMessage(playerid,COLOR_GELB,"|________________Adminhilfe Rang 2________________|");
  1174.         SendClientMessage(playerid,COLOR_WEISS,"/kick /goto /spawn /ban /gethere");
  1175.         SendClientMessage(playerid,COLOR_WEISS,"Report: /an /ca");
  1176.     }
  1177.     else if(SInfo[playerid][pAdmin] == 3)
  1178.     {
  1179.         SendClientMessage(playerid,COLOR_GELB,"|________________Adminhilfe Rang 3________________|");
  1180.         SendClientMessage(playerid,COLOR_WEISS,"/kick /goto /spawn /ban /gethere /veh /dveh");
  1181.         SendClientMessage(playerid,COLOR_WEISS,"Report: /an /ca");
  1182.     }
  1183.     else if(SInfo[playerid][pAdmin] == 4)
  1184.     {
  1185.         SendClientMessage(playerid,COLOR_GELB,"|________________Adminhilfe Rang 4________________|");
  1186.         SendClientMessage(playerid,COLOR_WEISS,"/kick /goto /spawn /ban /gethere /geldgeben");
  1187.         SendClientMessage(playerid,COLOR_WEISS,"/waffegeben /machleader /chotel /killhotel /veh");
  1188.         SendClientMessage(playerid,COLOR_WEISS,"Report: /an /ca");
  1189.     }
  1190.     else if(SInfo[playerid][pAdmin] == 5)
  1191.     {
  1192.         SendClientMessage(playerid,COLOR_GELB,"|________________Adminhilfe Rang 5________________|");
  1193.         SendClientMessage(playerid,COLOR_WEISS,"/kick /goto /spawn /ban /gethere /geldgeben");
  1194.         SendClientMessage(playerid,COLOR_WEISS,"/gebewaffe /machadmin /machleader /chotel /killhotel ");
  1195.         SendClientMessage(playerid,COLOR_WEISS,"/gebewaffe /machadmin /machleader /veh ");
  1196.         SendClientMessage(playerid,COLOR_WEISS,"Report: /an /ca");
  1197.     }
  1198.     return 1;
  1199. }
  1200. dcmd_veh(playerid,params[])
  1201. {
  1202.     new Float:vehx,Float:vehy,Float:vehz;
  1203.     new vehid,cc1,cc2,string[128];
  1204.     new vehicleid = GetPlayerVehicleID(playerid);
  1205.     if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid,COLOR_ROT,"[Benutze]: /veh [VehicleID][Farbe1][Farbe2]");
  1206.     if(SInfo[playerid][pAdmin] >= 3)
  1207.     {
  1208.         GetPlayerPos(playerid,vehx,vehy,vehz);
  1209.         new carid = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,-1);
  1210.         SetVehicleNumberPlate(carid,"~>Support<~");
  1211.         PutPlayerInVehicle(playerid, carid, 0);
  1212.         format(string,sizeof(string),"Du hast ein Admincar gespawnt! (FahrzeugID :%d)",GetVehicleModel(GetPlayerVehicleID(playerid)));
  1213.         SendClientMessage(playerid,COLOR_ROT,string);
  1214.         PutPlayerInVehicle(playerid, carid, 0);
  1215.         SetVehicleHealth(carid ,10000.0);
  1216.     }
  1217.  
  1218.     return 1;
  1219. }
  1220. dcmd_killhotel(playerid,params[])
  1221. {
  1222.     #pragma unused params
  1223.     if(SInfo[playerid][pAdmin] >= 4)
  1224.     {
  1225.         if(AnHotel(playerid))
  1226.         {
  1227.             new ho = PInfo[playerid][AnH];
  1228.             format(Datei,sizeof(Datei),"/Hotel/%d.ini",Hotel[ho][hotelid]);
  1229.             if(!fexist(Datei))
  1230.             {
  1231.             }
  1232.             else
  1233.             {
  1234.  
  1235.                 dini_Remove(Datei);
  1236.                 DestroyPickup(Hotel[ho][pickup]);
  1237.                 Delete3DTextLabel(Hotel[ho][label]);
  1238.                 SendClientMessage(playerid,COLOR_ROT,"Du hast ein Hotel Zimmer gelöscht!");
  1239.                 return 1;
  1240.             }
  1241.         }
  1242.         else
  1243.         {
  1244.             SendClientMessage(playerid,COLOR_ROT,"Du bist an keinem Hotel Zimmer!");
  1245.         }
  1246.         return 1;
  1247.     }
  1248.     return Adminbefehl;
  1249. }
  1250. dcmd_chotel(playerid,params[])
  1251. {
  1252.     new  mp, vw;
  1253.     if(SInfo[playerid][pAdmin] >= 4)
  1254.     {
  1255.         if(sscanf(params,"dd",vw,mp))return SendClientMessage(playerid,COLOR_ROT,"Benutze: /chotel [Virtual World] [Mietpreis]");
  1256.         for(new i = 1; i<MAX_HOTEL;i++)
  1257.         {
  1258.                 format(Datei,sizeof(Datei),"/Hotel/%d.ini",i);
  1259.                 if(!fexist(Datei))
  1260.                 {
  1261.                     new Float:x,Float:y,Float:z;
  1262.                     GetPlayerPos(playerid,x,y,z);
  1263.                     Hotel[i][hx] = x;
  1264.                     format(Hotel[i][hname],MAX_PLAYER_NAME,"Hotelsystem");
  1265.                     Hotel[i][hotelid] = i;
  1266.                     Hotel[i][hy] = y;
  1267.                     Hotel[i][hz] = z;
  1268.                     Hotel[i][mietpreis] = mp;
  1269.                     Hotel[i][world] = vw;
  1270.                     Hotel[i][pickup] = CreatePickup(1272,1,x,y,z,-1);
  1271.                     Hotel[i][label] = Create3DTextLabel("Wird ersellt",COLOR_ROT,x,y,z,20,-1);
  1272.                     Hotelspeichern(i);
  1273.                     Hotelupdate(i);
  1274.                 }
  1275.         }
  1276.         return 1;
  1277.     }
  1278.     return Adminbefehl;
  1279. }
  1280. dcmd_rentout(playerid,params[])
  1281. {
  1282.     #pragma unused params
  1283.     if(SInfo[playerid][pHotel] > 0)
  1284.     {
  1285.         if(AnHotel(playerid))
  1286.         {
  1287.             new ho = PInfo[playerid][AnH];
  1288.             GetPlayerName(playerid,pname,sizeof(pname));
  1289.             if(strcmp(Hotel[ho][hname],pname,true) == 0)
  1290.             {
  1291.                 SInfo[playerid][pHotel] = 0;
  1292.                 format(Hotel[ho][hname],MAX_PLAYER_NAME,"Hotelsystem");
  1293.                 Hotelspeichern(ho);
  1294.                 Hotelupdate(ho);
  1295.             }
  1296.             else
  1297.             {
  1298.                 SendClientMessage(playerid,COLOR_ROT,"Dieses Zimmer ist leider besetzt!");
  1299.             }
  1300.  
  1301.         }
  1302.         else{
  1303.             SendClientMessage(playerid,COLOR_ROT,"Hier kannst du kein Zimmer mieten!");
  1304.         }
  1305.     }
  1306.     else
  1307.     {
  1308.         SendClientMessage(playerid,COLOR_ROT,"Du mietest schon wo, miete dich mit /rentout aus!");
  1309.     }
  1310.     return 1;
  1311. }
  1312. dcmd_renthotel(playerid,params[])
  1313. {
  1314.     #pragma unused params
  1315.     if(SInfo[playerid][pHotel] == 0)
  1316.     {
  1317.         if(AnHotel(playerid))
  1318.         {
  1319.             new ho = PInfo[playerid][AnH];
  1320.             if(strcmp("Hotelsystem",Hotel[ho][hname],true) == 0)
  1321.             {
  1322.                 SInfo[playerid][pHotel] = ho;
  1323.                 GivePlayerMoney(playerid, -Hotel[ho][mietpreis]);
  1324.                 GetPlayerName(playerid,pname,sizeof(pname));
  1325.                 format(Hotel[ho][hname],MAX_PLAYER_NAME,"%s",pname);
  1326.                 Hotelspeichern(ho);
  1327.                 Hotelupdate(ho);
  1328.             }
  1329.             else
  1330.             {
  1331.                 SendClientMessage(playerid,COLOR_ROT,"Dieses Zimmer ist leider besetzt!");
  1332.             }
  1333.            
  1334.         }
  1335.         else{
  1336.             SendClientMessage(playerid,COLOR_ROT,"Hier kannst du kein Zimmer mieten!");
  1337.         }
  1338.     }
  1339.     else
  1340.     {
  1341.         SendClientMessage(playerid,COLOR_ROT,"Du mietest schon wo, miete dich mit /rentout aus!");
  1342.     }
  1343.     return 1;
  1344. }
  1345. forward AnHotel(playerid);
  1346. public AnHotel(playerid)
  1347. {
  1348.     for(new i = 1; i<MAX_HOTEL;i++)
  1349.     {
  1350.         if(IsPlayerInRangeOfPoint(playerid,3,Hotel[i][hx],Hotel[i][hy],Hotel[i][hz]))
  1351.         {
  1352.             PInfo[playerid][AnH] = i;
  1353.             return 1;
  1354.         }
  1355.     }
  1356.     return 0;
  1357. }
  1358. dcmd_einsperren(playerid,params[])
  1359. {
  1360.     new pID, zeit;
  1361.     if(sscanf(params,"ud",pID,zeit))return SendClientMessage(playerid,COLOR_ROT,"[Benutze]: /einsperren [playerid][Zeit]");
  1362.     if(Polizist(playerid))
  1363.     {
  1364.         if(IsPlayerInRangeOfPoint(playerid,5.0,1562.3579,-1696.6687,5.8970))
  1365.         {
  1366.             GetPlayerName(playerid,pname,sizeof(pname));
  1367.             new bname[MAX_PLAYER_NAME];
  1368.             GetPlayerName(pID,bname,sizeof(bname));
  1369.             SInfo[pID][pKnast] = 1;
  1370.             SInfo[pID][pKnastzeit] = zeit;
  1371.             GivePlayerMoney(playerid,zeit*100);
  1372.             GivePlayerMoney(pID,-zeit*100);
  1373.             format(str,sizeof(str),"Du hast %s für %d Minuten eingesperrt! Dafür bekommst du: %d$",bname,zeit,zeit*100);
  1374.             SendClientMessage(playerid,COLOR_GELB,str);
  1375.             format(str,sizeof(str),"%s hat dich für %d Minuten eingesperrt! Dazu musst du %d$ zahlen!",pname,zeit,zeit*100);
  1376.             SendClientMessage(playerid,COLOR_GELB,str);
  1377.             SpawnPlayer(pID);
  1378.         }
  1379.         else
  1380.         {
  1381.             SendClientMessage(playerid,COLOR_ROT,"Hier kannst du den Befehl nicht ausführen!");
  1382.         }
  1383.     }
  1384.     return 1;
  1385. }
  1386. dcmd_gebewaffe(playerid,params[])
  1387. {
  1388.     new pID,ammo,waffe, pnameb[MAX_PLAYER_NAME];
  1389.     if(sscanf(params,"udd",pID,waffe,ammo))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /gebewaffe [playerid][Waffen-ID][Ammo]");
  1390.     if(SInfo[playerid][pAdmin] >= 4)
  1391.     {
  1392.         GetPlayerName(playerid,pname,sizeof(pname));
  1393.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1394.         format(str,sizeof(str),"Du hast %s eine Waffe gegeben.",pnameb);
  1395.         SendClientMessage(playerid,COLOR_GELB,str);
  1396.         format(str,sizeof(str),"%s hat dir eine Waffe gegeben.",pname);
  1397.         SendClientMessage(pID,COLOR_GELB,str);
  1398.         GivePlayerWeapon(pID,waffe,ammo);
  1399.         return 1;
  1400.     }
  1401.     return Adminbefehl;
  1402. }
  1403. dcmd_geldgeben(playerid,params[])
  1404. {
  1405.     new pID,geld, pnameb[MAX_PLAYER_NAME];
  1406.     if(sscanf(params,"ui",pID,geld))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /geldgeben [playerid][Anzahl]");
  1407.     if(SInfo[playerid][pAdmin] >= 4)
  1408.     {
  1409.         GetPlayerName(playerid,pname,sizeof(pname));
  1410.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1411.         format(str,sizeof(str),"Du hast %s %i$ Geld gegeben.",pnameb,geld);
  1412.         SendClientMessage(playerid,COLOR_GELB,str);
  1413.         format(str,sizeof(str),"%s hat dir %i$ Geld gegeben.",pname,geld);
  1414.         SendClientMessage(pID,COLOR_GELB,str);
  1415.         GivePlayerMoney(pID,geld);
  1416.         return 1;
  1417.     }
  1418.     return Adminbefehl;
  1419. }
  1420. dcmd_spawn(playerid,params[])
  1421. {
  1422.     new pID, pnameb[MAX_PLAYER_NAME];
  1423.     if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /spawn [playerid]");
  1424.     if(SInfo[playerid][pAdmin] >= 1)
  1425.     {
  1426.         GetPlayerName(playerid,pname,sizeof(pname));
  1427.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1428.         format(str,sizeof(str),"Du hast %s gespawnt.",pnameb);
  1429.         SendClientMessage(playerid,COLOR_GELB,str);
  1430.         format(str,sizeof(str),"%s hat dich gespawnt.",pname);
  1431.         SendClientMessage(pID,COLOR_GELB,str);
  1432.         SpawnPlayer(pID);
  1433.         return 1;
  1434.     }
  1435.     return Adminbefehl;
  1436. }
  1437. dcmd_waschen(playerid,params[])
  1438. {
  1439.     #pragma unused params
  1440.     if(SInfo[playerid][pHygiene] < 30)
  1441.     {
  1442.         SetTimerEx("Waschen", 300, 0, "i", playerid);
  1443.         TogglePlayerControllable(playerid, 0);
  1444.         LoopingAnim(playerid, "ON_LOOKERS", "wave_loop", 4.0, 1, 0, 0, 0, 0); // Wave
  1445.     }
  1446.     else{SendClientMessage(playerid,COLOR_ROT,"Du musst dich noch nicht waschen!");}
  1447.     return 1;
  1448. }
  1449. forward Waschen(playerid);
  1450. public Waschen(playerid)
  1451. {
  1452.     if(SInfo[playerid][pHygiene] == 100)
  1453.     {
  1454.         ClearAnimations(playerid);
  1455.         SInfo[playerid][pHygiene] = 100;
  1456.         TogglePlayerControllable(playerid, 1);
  1457.     }
  1458.     else
  1459.     {
  1460.         SetTimerEx("Waschen", 300, 0, "i", playerid);
  1461.         SInfo[playerid][pHygiene] ++;
  1462.     }
  1463.     return 1;
  1464. }
  1465. dcmd_pinkeln(playerid,params[])
  1466. {
  1467.     #pragma unused params
  1468.     if(SInfo[playerid][pHarndrang] < 30)
  1469.     {
  1470.         SetTimerEx("Pinkeln", 300, 0, "i", playerid);
  1471.         TogglePlayerControllable(playerid, 0);
  1472.         SetPlayerSpecialAction(playerid, 68);
  1473.     }
  1474.     else{SendClientMessage(playerid,COLOR_ROT,"Du musst noch nicht Pinkeln!");}
  1475.     return 1;
  1476. }
  1477. forward Pinkeln(playerid);
  1478. public Pinkeln(playerid)
  1479. {
  1480.     if(SInfo[playerid][pHarndrang] == 100)
  1481.     {
  1482.         ClearAnimations(playerid);
  1483.         SInfo[playerid][pHarndrang] = 100;
  1484.         TogglePlayerControllable(playerid, 1);
  1485.     }
  1486.     else
  1487.     {
  1488.         SetTimerEx("Pinkeln", 300, 0, "i", playerid);
  1489.         SInfo[playerid][pHarndrang] ++;
  1490.     }
  1491.     return 1;
  1492. }
  1493. dcmd_gethere(playerid,params[])
  1494. {
  1495.     new pID, pnameb[MAX_PLAYER_NAME];
  1496.     if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /goto [playerid]");
  1497.     if(SInfo[playerid][pAdmin] >= 2)
  1498.     {
  1499.         GetPlayerName(playerid,pname,sizeof(pname));
  1500.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1501.         format(str,sizeof(str),"Du hast %s zu dir teleportiert.",pnameb);
  1502.         SendClientMessage(playerid,COLOR_GELB,str);
  1503.         format(str,sizeof(str),"%s hat dich zu sich teleportiert.",pname);
  1504.         SendClientMessage(pID,COLOR_GELB,str);
  1505.         new Float:x,Float:y,Float:z;
  1506.         GetPlayerPos(playerid,x,y,z);
  1507.         SetPlayerInterior(pID,GetPlayerInterior(playerid));
  1508.         SetPlayerVirtualWorld(pID,GetPlayerVirtualWorld(playerid));
  1509.         SetPlayerPos(pID,x+1,y+1,z);
  1510.         return 1;
  1511.     }
  1512.     return Adminbefehl;
  1513. }
  1514. dcmd_goto(playerid,params[])
  1515. {
  1516.     new pID, pnameb[MAX_PLAYER_NAME];
  1517.     if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /goto [playerid]");
  1518.     if(SInfo[playerid][pAdmin] >= 1)
  1519.     {
  1520.         GetPlayerName(playerid,pname,sizeof(pname));
  1521.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1522.         format(str,sizeof(str),"Du hast dich zu %s teleportiert.",pnameb);
  1523.         SendClientMessage(playerid,COLOR_GELB,str);
  1524.         format(str,sizeof(str),"%s hat sich zu dir teleportiert.",pname);
  1525.         SendClientMessage(pID,COLOR_GELB,str);
  1526.         new Float:x,Float:y,Float:z;
  1527.         GetPlayerPos(pID,x,y,z);
  1528.         SetPlayerInterior(playerid,GetPlayerInterior(pID));
  1529.         SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(pID));
  1530.         SetPlayerPos(playerid,x+1,y+1,z);
  1531.         return 1;
  1532.     }
  1533.     return Adminbefehl;
  1534. }
  1535. dcmd_ban(playerid,params[])
  1536. {
  1537.     new pID, grund[64], pnameb[MAX_PLAYER_NAME];
  1538.     if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /ban [playerid][Grund]");
  1539.     if(SInfo[playerid][pAdmin] >= 2)
  1540.     {
  1541.         GetPlayerName(playerid,pname,sizeof(pname));
  1542.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1543.         format(str,sizeof(str),"Administrator %s hat %s gebannt. Grund: %s",pname,pnameb,grund);
  1544.         SendClientMessageToAll(COLOR_ROT,str);
  1545.         Ban(pID);
  1546.         return 1;
  1547.     }
  1548.     return Adminbefehl;
  1549. }
  1550. dcmd_kick(playerid,params[])
  1551. {
  1552.     new pID, grund[64], pnameb[MAX_PLAYER_NAME];
  1553.     if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /kick [playerid][Grund]");
  1554.     if(SInfo[playerid][pAdmin] >= 1)
  1555.     {
  1556.         GetPlayerName(playerid,pname,sizeof(pname));
  1557.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1558.         format(str,sizeof(str),"Administrator %s hat %s gekickt. Grund: %s",pname,pnameb,grund);
  1559.         SendClientMessageToAll(COLOR_ROT,str);
  1560.         Kick(pID);
  1561.         return 1;
  1562.     }
  1563.     return Adminbefehl;
  1564. }
  1565. dcmd_machleader(playerid,params[])
  1566. {
  1567.     new pID, rang, pnameb[MAX_PLAYER_NAME];
  1568.     if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /machleader [playerid][Fraktion]");
  1569.     if(SInfo[playerid][pAdmin] >= 4)
  1570.     {
  1571.         GetPlayerName(playerid,pname,sizeof(pname));
  1572.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1573.         SInfo[pID][pLeader] = rang;
  1574.         format(str,sizeof(str),"Administrator %s hat %s zur Fraktion %d hinzugefügt.",pname,pnameb,rang);
  1575.         SendClientMessageToAll(COLOR_GELB,str);
  1576.         return 1;
  1577.     }
  1578.     return Adminbefehl;
  1579. }
  1580. dcmd_machadmin(playerid,params[])
  1581. {
  1582.     new pID, rang, pnameb[MAX_PLAYER_NAME];
  1583.     if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /machadmin [playerid][Rang]");
  1584.     if(SInfo[playerid][pAdmin] >= 5)
  1585.     {
  1586.         GetPlayerName(playerid,pname,sizeof(pname));
  1587.         GetPlayerName(pID,pnameb,sizeof(pnameb));
  1588.         SInfo[pID][pAdmin] = rang;
  1589.         format(str,sizeof(str),"Administrator %s hat %s zu Adminrang %d befördert.",pname,pnameb,rang);
  1590.         SendClientMessageToAll(COLOR_GELB,str);
  1591.         return 1;
  1592.     }
  1593.     return Adminbefehl;
  1594. }
  1595. dcmd_ca(playerid,params[])
  1596. {
  1597.     new pID;
  1598.     if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /ca [playerid]");
  1599.     if(SInfo[playerid][pAdmin] >= 1)
  1600.     {
  1601.         if(PInfo[playerid][HatReport] == 1 && PInfo[pID][HatReport] == 1)
  1602.         {
  1603.             PInfo[playerid][HatReport] = 0;
  1604.             PInfo[pID][HatReport] = 0;
  1605.             PInfo[playerid][SpielerSupporter] = 0;
  1606.             PInfo[playerid][SpielerReporter] = 0;
  1607.             PInfo[pID][SpielerSupporter] = 0;
  1608.             PInfo[pID][SpielerReporter] = 0;
  1609.             SendClientMessage(playerid,0xFF4600FF,"[Ticketsystem]Der Live-Support wurde beendet!");
  1610.             SendClientMessage(pID,0xFF4600FF,"[Ticketsystem]Der Live-Support wurde beendet!");
  1611.             return 1;
  1612.         }
  1613.         else{SendClientMessage(playerid,COLOR_ROT,"Du oder der andere Spieler sind in keinem Report!"); return 1;}
  1614.     }
  1615.     return Adminbefehl;
  1616. }
  1617. dcmd_reinziehen(playerid,params[])
  1618. {
  1619.     new pID;
  1620.     if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /reinziehen [playerid]");
  1621.     if(Polizist(playerid))
  1622.     {
  1623.         if(IsPlayerInAnyVehicle(playerid))
  1624.         {
  1625.             if(!IsPlayerInAnyVehicle(pID))
  1626.             {
  1627.                 new bname[MAX_PLAYER_NAME];
  1628.                 GetPlayerName(pID,bname,sizeof(bname));
  1629.                 GetPlayerName(playerid,pname,sizeof(pname));
  1630.                 PutPlayerInVehicle(pID,GetPlayerVehicleID(playerid),3);
  1631.                 format(str,sizeof(str),"Du hast %s ins Auto gezogen.",bname);
  1632.                 SendClientMessage(playerid,COLOR_GELB,str);
  1633.                 format(str,sizeof(str),"Du wurdest von %s ins Auto gezogen.",pname);
  1634.                 SendClientMessage(playerid,COLOR_GELB,str);
  1635.             }
  1636.             else
  1637.             {
  1638.                 SendClientMessage(playerid, COLOR_ROT, "Der Verbrecher darf in keinem Auto sitzen!");
  1639.             }
  1640.         }
  1641.         else
  1642.         {
  1643.             SendClientMessage(playerid, COLOR_ROT, "Du musst in einem Auto sein!");
  1644.         }
  1645.     }
  1646.     return 1;
  1647. }
  1648. dcmd_tazer(playerid,params[])
  1649. {
  1650.     #pragma unused params
  1651.     if(Polizist(playerid))
  1652.     {
  1653.         GivePlayerWeapon(playerid,23,10);
  1654.     }
  1655.     else
  1656.     {
  1657.         SendClientMessage(playerid,COLOR_ROT,"Das darfst du nicht!");
  1658.     }
  1659.     return 1;
  1660. }
  1661. dcmd_report(playerid,params[])
  1662. {
  1663.     #pragma unused params
  1664.     ShowPlayerDialog(playerid,DIALOG_REPORT,DIALOG_STYLE_INPUT,"Report System","Gebe hier deine Frage ein:","Absenden","Abbrechen");
  1665.     return 1;
  1666. }
  1667. dcmd_an(playerid,params[])
  1668. {
  1669.     new pID;
  1670.     if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_ROT,"Befehl: /an [playerid]");
  1671.     if(SInfo[playerid][pAdmin] >= 1)
  1672.     {
  1673.         if(PInfo[playerid][HatReport] == 0)
  1674.         {
  1675.             if(PInfo[pID][HatGesendet] == 1)
  1676.             {
  1677.                 PInfo[pID][HatGesendet] = 0;
  1678.                 PInfo[playerid][HatReport] = 1;
  1679.                 PInfo[pID][HatReport] = 1;
  1680.                 PInfo[pID][SpielerSupporter] = playerid;
  1681.                 PInfo[pID][SpielerReporter] = pID;
  1682.                 PInfo[playerid][SpielerSupporter] = playerid;
  1683.                 PInfo[playerid][SpielerReporter] = pID;
  1684.                 new repname[MAX_PLAYER_NAME];
  1685.                 GetPlayerName(pID,repname,sizeof(repname));
  1686.                 GetPlayerName(playerid,pname,sizeof(pname));
  1687.                 format(str,sizeof(str),"[Ticketsystem]Du hast den Report mit %s geöffnet, schreibe nun mit ihm im Live-Support! Schließen kannst du ihn per /ca [ID]",repname);
  1688.                 SendClientMessage(playerid,COLOR_GELB,str);
  1689.                 format(str,sizeof(str),"[Ticketsystem]%s hat den Report von dir angenommen, schreibe mit ihm im Live-Support!",pname);
  1690.                 SendClientMessage(pID,COLOR_GELB,str);
  1691.                 format(str,sizeof(str),"[Ticketsystem]%s hat den Report von %s angenommen!",pname,repname);
  1692.                 SendAdminMessage(COLOR_GELB,str,1);
  1693.                 return 1;
  1694.  
  1695.             }
  1696.             else{SendClientMessage(playerid,COLOR_ROT,"Der Spieler hat keinen Report geschrieben!");}
  1697.         }
  1698.         else{SendClientMessage(playerid,COLOR_ROT,"Du hast bereits einen Report offen!");return 1;}
  1699.     }
  1700.     return Adminbefehl;
  1701. }
  1702. forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
  1703. public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
  1704. {
  1705.     if(IsPlayerConnected(playerid))
  1706.     {
  1707.         new Float:posx, Float:posy, Float:posz;
  1708.         new Float:oldposx, Float:oldposy, Float:oldposz;
  1709.         new Float:tempposx, Float:tempposy, Float:tempposz;
  1710.         GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  1711.         for(new i = 0; i < MAX_PLAYERS; i++)
  1712.         {
  1713.             if(IsPlayerConnected(i))
  1714.             {
  1715.                 if(!PInfo[i][BigEar])
  1716.                 {
  1717.                     GetPlayerPos(i, posx, posy, posz);
  1718.                     tempposx = (oldposx -posx);
  1719.                     tempposy = (oldposy -posy);
  1720.                     tempposz = (oldposz -posz);
  1721.                     //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
  1722.                     if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
  1723.                     {
  1724.                         SendClientMessage(i, col1, string);
  1725.                     }
  1726.                     else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
  1727.                     {
  1728.                         SendClientMessage(i, col2, string);
  1729.                     }
  1730.                     else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
  1731.                     {
  1732.                         SendClientMessage(i, col3, string);
  1733.                     }
  1734.                     else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
  1735.                     {
  1736.                         SendClientMessage(i, col4, string);
  1737.                     }
  1738.                     else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  1739.                     {
  1740.                         SendClientMessage(i, col5, string);
  1741.                     }
  1742.                 }
  1743.                 else
  1744.                 {
  1745.                     SendClientMessage(i, col1, string);
  1746.                 }
  1747.             }
  1748.         }
  1749.     }
  1750.     return 1;
  1751. }
  1752. forward SendAdminMessage(color,const string[], level);
  1753. public SendAdminMessage(color,const string[],level)
  1754. {
  1755.     for(new i = 0; i < MAX_PLAYERS; i++)
  1756.     {
  1757.         if(IsPlayerConnected(i))
  1758.         {
  1759.             if (SInfo[i][pAdmin] >= level)
  1760.             {
  1761.                 SendClientMessage(i, color, string);
  1762.             }
  1763.         }
  1764.     }
  1765.     printf("%s",string);
  1766.     return 1;
  1767. }
  1768. stock Polizist(playerid)
  1769. {
  1770.     if(IsPlayerConnected(playerid))
  1771.     {
  1772.         new leader = SInfo[playerid][pLeader];
  1773.         new member = SInfo[playerid][pMember];
  1774.         if(member == 1)
  1775.         {
  1776.             return 1;
  1777.         }
  1778.         else if(leader == 1)
  1779.         {
  1780.             return 1;
  1781.         }
  1782.     }
  1783.     return 0;
  1784. }
  1785. stock antilswaffen(playerid)
  1786. {
  1787.     new weaponID = GetPlayerWeapon(playerid);
  1788.  
  1789.     if(weaponID == 16 || weaponID == 18 || weaponID == 22 || weaponID == 24 || weaponID == 25 || weaponID == 26 || weaponID == 27 ||
  1790.     weaponID == 28 || weaponID == 29 || weaponID == 30 || weaponID == 31 || weaponID == 32 || weaponID == 33 || weaponID == 34 || weaponID == 35 ||
  1791.     weaponID == 36 || weaponID == 37 || weaponID == 38 || weaponID == 39 || weaponID == 40 || weaponID == 44 || weaponID == 45)
  1792.     {
  1793.         return 1;
  1794.     }
  1795.     return 0;
  1796. }
  1797. stock IsNumeric(const string[])
  1798. {
  1799.     new length = strlen(string);
  1800.     for (new i=0; i<length; i++)
  1801.     {
  1802.         if (!((string[i] <= '9' && string[i] >= '0') || (i==0 && (string[i]=='-' || string[i]=='+'))))
  1803.         {
  1804.             return false;
  1805.         }
  1806.     }
  1807.     return 1;
  1808. }
  1809. public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
  1810. {
  1811.     if(weaponid == 23)
  1812.     {
  1813.         if(Polizist(playerid))
  1814.         {
  1815.             new opfername[MAX_PLAYER_NAME];
  1816.             GetPlayerName(playerid,pname,sizeof(pname));
  1817.             GetPlayerName(damagedid,opfername,sizeof(opfername));
  1818.             format(str,sizeof(str),"Du hast %s mit deinem Tazer getroffen!",opfername);
  1819.             SendClientMessage(playerid,COLOR_GELB,str);
  1820.             format(str,sizeof(str),"Polizist %s hat dich geschockt!",pname);
  1821.             SendClientMessage(damagedid,COLOR_GELB,str);
  1822.             TogglePlayerControllable(damagedid, 0);
  1823.             PInfo[damagedid][Fesseln] = 1;
  1824.         }
  1825.     }
  1826.     return 1;
  1827. }
  1828. LoopingAnim(playerid,animlib[],animname[], Float:Speed, looping, lockx, locky, lockz, lp)
  1829. {
  1830.     PInfo[playerid][gPlayerUsingLoopingAnim] = 1;
  1831.     ApplyAnimation(playerid, animlib, animname, Speed, looping, lockx, locky, lockz, lp);
  1832. }
  1833.            
  1834. stock Hotelsystemladen()
  1835. {
  1836.     new Hoteleddd;
  1837.     for(new i = 1; i<MAX_HOTEL;i++)
  1838.     {
  1839.         format(Datei,sizeof(Datei),"/Hotel/%d.ini",i);
  1840.         if(!fexist(Datei))
  1841.         {
  1842.         }
  1843.         else
  1844.         {
  1845.             Hotel[i][hotelid] = i;
  1846.             Hotel[i][hx] = dini_Float(Datei,"hx");
  1847.             Hotel[i][hy] = dini_Float(Datei,"hy");
  1848.             Hotel[i][hz] = dini_Float(Datei,"hz");
  1849.             Hotel[i][mietpreis] = dini_Int(Datei,"mietpreis");
  1850.             Hotel[i][world] = dini_Int(Datei,"world");
  1851.             format(Hotel[i][hname],MAX_PLAYER_NAME,"%s",dini_Get(Datei,"hname"));
  1852.             Hotel[i][label] = Create3DTextLabel("Wird geladen",0xFAFAFAFF,Hotel[i][hx],Hotel[i][hy],Hotel[i][hz]+1.5,20.0,0,0);
  1853.             if(strcmp("Hotelsystem",Hotel[i][hname],true) == 0)
  1854.             {
  1855.                 format(str,sizeof(str),"{FAFAFA}Zimmer: %d\n{00C3FF}Mieter: {FAFAFA}%s\n{00C3FF}Mietpreis: {FAFAFA}%d$\n{00C3FF}Status: {FAFAFA}Frei\nMieten mit /renthotel",i,Hotel[i][hname],Hotel[i][mietpreis]);
  1856.                 Hotel[i][pickup] = CreatePickup(1272,1,Hotel[i][hx],Hotel[i][hy],Hotel[i][hz],0);
  1857.             }
  1858.             else
  1859.             {
  1860.                 Hotel[i][pickup] = CreatePickup(1272,1,Hotel[i][hx],Hotel[i][hy],Hotel[i][hz],0);
  1861.                 format(str,sizeof(str),"{FAFAFA}Zimmer: %d\n{00C3FF}Mieter: {FAFAFA}%s\n{00C3FF}Mietpreis: {FAFAFA}%d$\n{00C3FF}Status: {FAFAFA}Besetzt",i,Hotel[i][hname],Hotel[i][mietpreis]);
  1862.             }
  1863.             Update3DTextLabelText(Hotel[i][label], 0xFAFAFAFF,str);
  1864.             Hoteleddd += 1;
  1865.         }
  1866.     }
  1867.     printf("%d Hotels wurden geladen",Hoteleddd);
  1868.     return 1;
  1869. }
  1870. stock Hotelupdate(id)
  1871. {
  1872.     format(Datei,sizeof(Datei),"/Hotel/%d.ini",id);
  1873.     if(fexist(Datei))
  1874.     {
  1875.         if(strcmp("Hotelsystem",Hotel[id][hname],true) == 0)
  1876.         {
  1877.             format(str,sizeof(str),"{FAFAFA}Zimmer: %d\n{00C3FF}Mieter: {FAFAFA}%s\n{00C3FF}Mietpreis: {FAFAFA}%d$\n{00C3FF}Status: {FAFAFA}Frei\nMieten mit /renthotel",id,Hotel[id][hname],Hotel[id][mietpreis]);
  1878.         }
  1879.         else
  1880.         {
  1881.             format(str,sizeof(str),"{FAFAFA}Zimmer: %d\n{00C3FF}Mieter: {FAFAFA}%s\n{00C3FF}Mietpreis: {FAFAFA}%d$\n{00C3FF}Status: {FAFAFA}Besetzt",id,Hotel[id][hname],Hotel[id][mietpreis]);
  1882.         }
  1883.         Update3DTextLabelText(Hotel[id][label], 0xFAFAFAFF,str);
  1884.     }
  1885.     return 0;
  1886. }
  1887. stock Hotelspeichern(id)
  1888. {
  1889.     format(Datei,sizeof(Datei),"/Hotel/%d.ini",Hotel[id][hotelid]);
  1890.     if(!fexist(Datei))
  1891.     {
  1892.         dini_Create(Datei);
  1893.         Hotelspeichern(id);
  1894.         return 1;
  1895.     }
  1896.     else
  1897.     {
  1898.         dini_FloatSet(Datei,"hx",Hotel[id][hx]);
  1899.         dini_FloatSet(Datei,"hy",Hotel[id][hy]);
  1900.         dini_FloatSet(Datei,"hz",Hotel[id][hz]);
  1901.         dini_IntSet(Datei,"mietpreis",Hotel[id][mietpreis]);
  1902.         dini_IntSet(Datei,"world",Hotel[id][world]);
  1903.         dini_Set(Datei,"hname",Hotel[id][hname]);
  1904.     }
  1905.     return 1;
  1906. }
  1907. forward Perso(playerid);
  1908. public Perso(playerid)
  1909. {
  1910.     PInfo[playerid][fertig] = 1;
  1911.     ShowPlayerDialog(playerid,DIALOG_SH6,DIALOG_STYLE_MSGBOX,"Stadthalle","{00890A}Du kannst deinen Personalausweis nun abholen.","Ok","Ok");
  1912.     return 1;
  1913. }
  1914. stock sscanf(string[], format[], {Float,_}:...)
  1915. {
  1916.     #if defined isnull
  1917.         if (isnull(string))
  1918.     #else
  1919.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1920.     #endif
  1921.         {
  1922.             return format[0];
  1923.         }
  1924.     #pragma tabsize 4
  1925.     new
  1926.         formatPos = 0,
  1927.         stringPos = 0,
  1928.         paramPos = 2,
  1929.         paramCount = numargs(),
  1930.         delim = ' ';
  1931.     while (string[stringPos] && string[stringPos] <= ' ')
  1932.     {
  1933.         stringPos++;
  1934.     }
  1935.     while (paramPos < paramCount && string[stringPos])
  1936.     {
  1937.         switch (format[formatPos++])
  1938.         {
  1939.             case '\0':
  1940.             {
  1941.                 return 0;
  1942.             }
  1943.             case 'i', 'd':
  1944.             {
  1945.                 new
  1946.                     neg = 1,
  1947.                     num = 0,
  1948.                     ch = string[stringPos];
  1949.                 if (ch == '-')
  1950.                 {
  1951.                     neg = -1;
  1952.                     ch = string[++stringPos];
  1953.                 }
  1954.                 do
  1955.                 {
  1956.                     stringPos++;
  1957.                     if ('0' <= ch <= '9')
  1958.                     {
  1959.                         num = (num * 10) + (ch - '0');
  1960.                     }
  1961.                     else
  1962.                     {
  1963.                         return -1;
  1964.                     }
  1965.                 }
  1966.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1967.                 setarg(paramPos, 0, num * neg);
  1968.             }
  1969.             case 'h', 'x':
  1970.             {
  1971.                 new
  1972.                     num = 0,
  1973.                     ch = string[stringPos];
  1974.                 do
  1975.                 {
  1976.                     stringPos++;
  1977.                     switch (ch)
  1978.                     {
  1979.                         case 'x', 'X':
  1980.                         {
  1981.                             num = 0;
  1982.                             continue;
  1983.                         }
  1984.                         case '0' .. '9':
  1985.                         {
  1986.                             num = (num << 4) | (ch - '0');
  1987.                         }
  1988.                         case 'a' .. 'f':
  1989.                         {
  1990.                             num = (num << 4) | (ch - ('a' - 10));
  1991.                         }
  1992.                         case 'A' .. 'F':
  1993.                         {
  1994.                             num = (num << 4) | (ch - ('A' - 10));
  1995.                         }
  1996.                         default:
  1997.                         {
  1998.                             return -1;
  1999.                         }
  2000.                     }
  2001.                 }
  2002.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  2003.                 setarg(paramPos, 0, num);
  2004.             }
  2005.             case 'c':
  2006.             {
  2007.                 setarg(paramPos, 0, string[stringPos++]);
  2008.             }
  2009.             case 'f':
  2010.             {
  2011.  
  2012.                 new changestr[16], changepos = 0, strpos = stringPos;
  2013.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  2014.                 {
  2015.                     changestr[changepos++] = string[strpos++];
  2016.                     }
  2017.                 changestr[changepos] = '\0';
  2018.                 setarg(paramPos,0,_:floatstr(changestr));
  2019.             }
  2020.             case 'p':
  2021.             {
  2022.                 delim = format[formatPos++];
  2023.                 continue;
  2024.             }
  2025.             case '\'':
  2026.             {
  2027.                 new
  2028.                     end = formatPos - 1,
  2029.                     ch;
  2030.                 while ((ch = format[++end]) && ch != '\'') {}
  2031.                 if (!ch)
  2032.                 {
  2033.                     return -1;
  2034.                 }
  2035.                 format[end] = '\0';
  2036.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  2037.                 {
  2038.                     if (format[end + 1])
  2039.                     {
  2040.                         return -1;
  2041.                     }
  2042.                     return 0;
  2043.                 }
  2044.                 format[end] = '\'';
  2045.                 stringPos = ch + (end - formatPos);
  2046.                 formatPos = end + 1;
  2047.             }
  2048.             case 'u':
  2049.             {
  2050.                 new
  2051.                     end = stringPos - 1,
  2052.                     id = 0,
  2053.                     bool:num = true,
  2054.                     ch;
  2055.                 while ((ch = string[++end]) && ch != delim)
  2056.                 {
  2057.                     if (num)
  2058.                     {
  2059.                         if ('0' <= ch <= '9')
  2060.                         {
  2061.                             id = (id * 10) + (ch - '0');
  2062.                         }
  2063.                         else
  2064.                         {
  2065.                             num = false;
  2066.                         }
  2067.                     }
  2068.                 }
  2069.                 if (num && IsPlayerConnected(id))
  2070.                 {
  2071.                     setarg(paramPos, 0, id);
  2072.                 }
  2073.                 else
  2074.                 {
  2075.                     #if !defined foreach
  2076.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  2077.                         #define __SSCANF_FOREACH__
  2078.                     #endif
  2079.                     string[end] = '\0';
  2080.                     num = false;
  2081.                     new
  2082.                         name[MAX_PLAYER_NAME];
  2083.                     id = end - stringPos;
  2084.                     foreach (Player, playerid)
  2085.                     {
  2086.                         GetPlayerName(playerid, name, sizeof (name));
  2087.                         if (!strcmp(name, string[stringPos], true, id))
  2088.                         {
  2089.                             setarg(paramPos, 0, playerid);
  2090.                             num = true;
  2091.                             break;
  2092.                         }
  2093.                     }
  2094.                     if (!num)
  2095.                     {
  2096.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  2097.                     }
  2098.                     string[end] = ch;
  2099.                     #if defined __SSCANF_FOREACH__
  2100.                         #undef foreach
  2101.                         #undef __SSCANF_FOREACH__
  2102.                     #endif
  2103.                 }
  2104.                 stringPos = end;
  2105.             }
  2106.             case 's', 'z':
  2107.             {
  2108.                 new
  2109.                     i = 0,
  2110.                     ch;
  2111.                 if (format[formatPos])
  2112.                 {
  2113.                     while ((ch = string[stringPos++]) && ch != delim)
  2114.                     {
  2115.                         setarg(paramPos, i++, ch);
  2116.                     }
  2117.                     if (!i)
  2118.                     {
  2119.                         return -1;
  2120.                     }
  2121.                 }
  2122.                 else
  2123.                 {
  2124.                     while ((ch = string[stringPos++]))
  2125.                     {
  2126.                         setarg(paramPos, i++, ch);
  2127.                     }
  2128.                 }
  2129.                 stringPos--;
  2130.                 setarg(paramPos, i, '\0');
  2131.             }
  2132.             default:
  2133.             {
  2134.                 continue;
  2135.             }
  2136.         }
  2137.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  2138.         {
  2139.             stringPos++;
  2140.         }
  2141.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  2142.         {
  2143.             stringPos++;
  2144.         }
  2145.         paramPos++;
  2146.     }
  2147.     do
  2148.     {
  2149.         if ((delim = format[formatPos++]) > ' ')
  2150.         {
  2151.             if (delim == '\'')
  2152.             {
  2153.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  2154.             }
  2155.             else if (delim != 'z')
  2156.             {
  2157.                 return delim;
  2158.             }
  2159.         }
  2160.     }
  2161.     while (delim > ' ');
  2162.     return 0;
  2163. }
Advertisement
Add Comment
Please, Sign In to add comment