Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: None  |  size: 31.60 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. //DM-Selfmade Script by Addi und Revolution Copyright (c): 2012
  2.  
  3. //Includes
  4. #include <a_samp>
  5. #include <dini>
  6. #include <dutils>
  7. #include <ocmd>
  8.  
  9. //Defines
  10. #define DIALOG_NAVI 1
  11. #define DIALOG_REGISTER 2
  12. #define DIALOG_LOGIN 3
  13.  
  14. //Farben
  15. #define GELB 0xFFFF00FF
  16. #define ROT 0xFF2800FF
  17. #define BLAU 0x000FFFFF
  18. #define WHITE 0xF0F0F0FF
  19. #define GRAU 0xB4B4B4FF
  20. #define GRUEN 0x00FF14FF
  21. #define LILA 0x9300E1FF
  22. #define WEINROT 0x730000FF
  23. #define HELLGRUEN 0x00FFAAFF
  24. #define PINK 0xFF00C3FF
  25.  
  26.  
  27. //Enter
  28. new ammu_enter;
  29.  
  30. //exit
  31. new ammu_exit;
  32.  
  33. //Waffeb zum Kaufen
  34.  
  35. new ak_buypoint;
  36. new granaten_buypoint;
  37. new shotgun_buypoint;
  38.  
  39. //Textdraws
  40. new Text:Army;
  41. new Text:Gangster;
  42. new Text:ArmyPunkteText;
  43. new Text:GangsterPunkteText;
  44. new Text:DMServer;
  45.  
  46. //TeamNamen
  47. #define fraktname1 "Army"
  48. #define fraktname2 "Gangster"
  49.  
  50. //Spawns für Teams
  51. #define armyspawn 1758.7849,-2056.2927,13.5837
  52. #define gangsterspawn 1955.8729,-1120.7222,26.8482
  53.  
  54. //Team Variabeln
  55. new GangsterPunkte;
  56. new ArmyPunkte;
  57. new pTeam[MAX_PLAYERS];
  58.  
  59. //gangzonen
  60. new gangsterzone;
  61. new armyzone;
  62.  
  63. main()
  64. {
  65.         print("\n----------------------------------");
  66.         print(" Selfmade Script erfolgreich geladen");
  67.         print("----------------------------------\n");
  68. }
  69.  
  70. public OnGameModeInit()
  71. {
  72.     EnableStuntBonusForAll(0);
  73.         DisableInteriorEnterExits();
  74.         UsePlayerPedAnims();
  75.        
  76.         SetGameModeText("Army vs. Gangster");
  77.         AddPlayerClass(287, 1758.7849,-2056.2927,13.5837,183.6016, 4, 1, 24, 500, 31, 500);
  78.         AddPlayerClass(195, 1955.8729,-1120.7222,26.8482,184.2518, 4, 1, 24, 500, 31, 500);
  79.        
  80.         SetVehicleNumberPlate(CreateVehicle(560,1948.0400,-1130.2969,25.3039,90.2663,86,86,-1),"Gangster"); // Gangcar1
  81.         SetVehicleNumberPlate(CreateVehicle(560,1936.1384,-1130.4186,25.0040,90.4356,86,86,-1),"Gangster"); // Gangcar2
  82.         SetVehicleNumberPlate(CreateVehicle(560,1953.4805,-1141.5166,25.4382,89.5188,86,86,-1),"Gangster"); // Gangcar3
  83.         AddStaticVehicle(522,1934.7457,-1120.6115,26.0490,176.4532,86,86); // Bike1
  84.         AddStaticVehicle(522,1934.0336,-1120.1554,26.0546,180.1703,86,86); // Bike2
  85.         AddStaticVehicle(522,1933.2983,-1120.4703,26.0321,177.1304,86,86); // Bike3
  86.         AddStaticVehicle(522,1932.0663,-1120.1274,26.0245,185.6915,86,86); // Bike4
  87.         SetVehicleNumberPlate(CreateVehicle(534,1943.3193,-1141.4978,25.2023,89.9912,86,86,-1),"Gangster"); // Mafiacarremington1
  88.         SetVehicleNumberPlate(CreateVehicle(534,1930.7102,-1141.4480,24.8885,90.0011,86,86,-1),"Gangster"); // Mafiacarremingto
  89.        
  90.     SetVehicleNumberPlate(CreateVehicle(470,1767.9241,-2047.2307,13.7226,272.7265,102,102,-1),"Army"); // Armycar1
  91.     SetVehicleNumberPlate(CreateVehicle(470,1767.9366,-2050.8274,13.7254,273.5568,102,102,-1),"Army"); // Armycar2
  92.         SetVehicleNumberPlate(CreateVehicle(470,1767.8763,-2029.8669,13.7078,272.2804,102,102,-1),"Army"); // Armycar3
  93.         SetVehicleNumberPlate(CreateVehicle(470,1768.0295,-2034.2953,13.6922,270.7253,102,102,-1),"Army"); // Armycar4
  94.         SetVehicleNumberPlate(CreateVehicle(596,1787.6991,-2023.7115,13.1997,184.0959,102,102,-1),"Army"); // Armycar5
  95.         SetVehicleNumberPlate(CreateVehicle(596,1791.4160,-2023.7178,13.2076,182.5806,102,102,-1),"Army"); // Armycar6
  96.         SetVehicleNumberPlate(CreateVehicle(596,1794.8503,-2023.7588,13.2176,183.9254,102,102,-1),"Army"); // Armycar7
  97.         SetVehicleNumberPlate(CreateVehicle(433,1795.2089,-2048.4185,14.0012,1.3927,102,102,-1),"Army"); // Armycar8
  98.         SetVehicleNumberPlate(CreateVehicle(433,1801.1534,-2048.3909,13.9984,358.0598,102,102,-1),"Army"); // Armycar9
  99.        
  100.         //Eingang/Ausgang
  101.         ammu_enter = CreatePickup(1318,1,1367.8815,-1279.8875,13.5469);
  102.         ammu_exit = CreatePickup(1318,1,285.4834,-41.0168,1001.5156);
  103.         //Waffen
  104.         ak_buypoint = CreatePickup(1274,1,285.0804,-32.2296,1001.5156);
  105.         granaten_buypoint = CreatePickup(1274,1,285.0814,-38.6484,1001.5156);
  106.         shotgun_buypoint = CreatePickup(1274,1,295.5020,-34.5908,1001.5156);
  107.  
  108.  
  109.         //Army Base
  110.     CreateObject(17542,1886.59997559,-1160.40002441,27.29999924,0.00000000,0.00000000,270.00000000);
  111.         CreateObject(9314,1809.50000000,-1585.80004883,14.80000019,0.00000000,0.00000000,56.00000000);
  112.         CreateObject(1337,1938.48925781,-1123.92089844,26.13171768,0.00000000,0.00000000,0.00000000);
  113.         CreateObject(3884,1764.19995117,-2052.10009766,19.60000038,0.00000000,0.00000000,251.99998474);
  114.         CreateObject(3884,1763.40002441,-2019.50000000,19.60000038,0.00000000,0.00000000,269.99890137);
  115.         CreateObject(3884,1780.80004883,-2008.00000000,19.60000038,0.00000000,0.00000000,291.99450684);
  116.         CreateObject(3279,1809.59997559,-2024.40002441,12.50000000,0.00000000,0.00000000,270.00000000);
  117.         CreateObject(2985,1811.09997559,-2023.00000000,28.60000038,0.00000000,0.00000000,40.00000000);
  118.         CreateObject(2985,1811.19995117,-2026.00000000,28.60000038,0.00000000,0.00000000,315.99572754);
  119.  
  120.         Army = TextDrawCreate(25,424,"Army vs. Gangster");
  121.         TextDrawLetterSize(Army,0.500000,1.000000);
  122.         TextDrawAlignment(Army,0);
  123.         TextDrawBackgroundColor(Army,0x000000FF);
  124.         TextDrawFont(Army,0);
  125.         TextDrawUseBox(Army,0);
  126.         TextDrawSetOutline(Army,0);
  127.         TextDrawSetProportional(Army,1);
  128.         TextDrawSetShadow(Army,1);
  129.         TextDrawShowForAll(Army);
  130.  
  131.         Gangster = TextDrawCreate(64,436,"2012");
  132.         TextDrawLetterSize(Gangster,0.500000,1.000000);
  133.         TextDrawAlignment(Gangster,0);
  134.         TextDrawBackgroundColor(Gangster,0x000000FF);
  135.         TextDrawFont(Gangster,0);
  136.         TextDrawUseBox(Gangster,0);
  137.         TextDrawSetOutline(Gangster,0);
  138.         TextDrawSetProportional(Gangster,1);
  139.         TextDrawSetShadow(Gangster,1);
  140.         TextDrawShowForAll(Gangster);
  141.        
  142.         ArmyPunkteText = TextDrawCreate(43,299,"Army:");
  143.         TextDrawLetterSize(ArmyPunkteText,0.500000,1.000000);
  144.         TextDrawAlignment(ArmyPunkteText,0);
  145.         TextDrawBackgroundColor(ArmyPunkteText,0x000000FF);
  146.         TextDrawFont(ArmyPunkteText,0);
  147.         TextDrawUseBox(ArmyPunkteText,1);
  148.         TextDrawBoxColor(ArmyPunkteText,0x00000066);
  149.         TextDrawTextSize(ArmyPunkteText,150.000000,309.000000);
  150.         TextDrawSetOutline(ArmyPunkteText,0);
  151.         TextDrawSetProportional(ArmyPunkteText,1);
  152.         TextDrawSetShadow(ArmyPunkteText,1);
  153.        
  154.         GangsterPunkteText = TextDrawCreate(43,314,"Gangster:");
  155.         TextDrawLetterSize(GangsterPunkteText,0.500000,1.000000);
  156.         TextDrawAlignment(GangsterPunkteText,0);
  157.         TextDrawBackgroundColor(GangsterPunkteText,0x000000FF);
  158.         TextDrawFont(GangsterPunkteText,0);
  159.         TextDrawUseBox(GangsterPunkteText,1);
  160.         TextDrawBoxColor(GangsterPunkteText,0x00000066);
  161.         TextDrawTextSize(GangsterPunkteText,150.000000,324.000000);
  162.         TextDrawSetOutline(GangsterPunkteText,0);
  163.         TextDrawSetProportional(GangsterPunkteText,1);
  164.         TextDrawSetShadow(GangsterPunkteText,1);
  165.        
  166.         DMServer = TextDrawCreate(507,3,"Beta Version");
  167.         TextDrawLetterSize(DMServer,0.500000,1.000000);
  168.         TextDrawAlignment(DMServer,0);
  169.         TextDrawBackgroundColor(DMServer,0x000000FF);
  170.         TextDrawFont(DMServer,0);
  171.         TextDrawUseBox(DMServer,1);
  172.         TextDrawBoxColor(DMServer,0x00000066);
  173.         TextDrawTextSize(DMServer,639.000000,12.000000);
  174.         TextDrawSetOutline(DMServer,0);
  175.         TextDrawSetProportional(DMServer,1);
  176.         TextDrawSetShadow(DMServer,1);
  177.        
  178.     gangsterzone = GangZoneCreate(1862.543, -1251.558, 2064.094, -1141.021);
  179.     armyzone = GangZoneCreate(1683.81, -2084.531, 1816.909, -1966.099);
  180.     return 1;
  181. }
  182.  
  183. public OnGameModeExit()
  184. {
  185.         return 1;
  186. }
  187.  
  188. public OnPlayerRequestClass(playerid, classid)
  189. {
  190.         SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  191.         SetPlayerCameraPos(playerid, 1961.8634,1342.7668,15.3746);
  192.         SetPlayerCameraLookAt(playerid, 1961.6160,1342.9456,15.3746);
  193.         return 1;
  194. }
  195.  
  196. public OnPlayerConnect(playerid)
  197. {
  198.     TextDrawShowForPlayer(playerid,Army);
  199.     TextDrawShowForPlayer(playerid,Gangster);
  200.     TextDrawShowForPlayer(playerid,ArmyPunkteText);
  201.     TextDrawShowForPlayer(playerid,GangsterPunkteText);
  202.     TextDrawShowForPlayer(playerid,DMServer);
  203.    
  204.     PlayAudioStreamForPlayer(playerid,"http://kibitzers.files.wordpress.com/2011/06/cobra-starship-you-make-me-feel-feat-sabi.mp3");
  205.  
  206.     if(IsPlayerNPC(playerid))return 1;
  207.     new Spielerdatei[64];
  208.         new name[MAX_PLAYER_NAME];
  209.         GetPlayerName(playerid,name,sizeof(name));
  210.         format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  211.         if(dini_Exists(Spielerdatei))
  212.         {
  213.             ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in der Datenbank gefunden. Bitte Logge dich ein.","Login","Abbrechen");
  214.         }
  215.         else
  216.         {
  217.                 ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
  218.         }
  219.         return 1;
  220. }
  221.  
  222. public OnPlayerDisconnect(playerid, reason)
  223. {
  224.         if(GetPVarInt(playerid,"loggedin")==1)
  225.         {
  226.                 SpielerSpeichern(playerid);
  227.         }
  228.         return 1;
  229. }
  230.  
  231. public OnPlayerSpawn(playerid)
  232. {
  233.     TextDrawShowForPlayer(playerid,Army);
  234.     TextDrawShowForPlayer(playerid,Gangster);
  235.     TextDrawShowForPlayer(playerid,ArmyPunkteText);
  236.     TextDrawShowForPlayer(playerid,GangsterPunkteText);
  237.     TextDrawShowForPlayer(playerid,DMServer);
  238.    
  239.     StopAudioStreamForPlayer(playerid);
  240.  
  241.     new SkinID = GetPlayerSkin(playerid);
  242.     if(SkinID == 287 ||SkinID == 282 || SkinID == 288)
  243.     {
  244.                 pTeam[playerid] = 1;
  245.         }
  246.     else if(SkinID == 195 ||SkinID == 115 ||SkinID == 110)
  247.     {
  248.                 pTeam[playerid] = 2;
  249.         }
  250.        
  251.     GangZoneShowForPlayer(playerid, gangsterzone, 0x80000096);
  252.     GangZoneShowForPlayer(playerid, armyzone, 0x00FF0096);
  253.         return 1;
  254. }
  255. public OnPlayerDeath(playerid, killerid, reason)
  256. {
  257.         new TextString[52];
  258.         if(pTeam[playerid] == pTeam[killerid])
  259.         {
  260.        
  261.         }
  262.         else if(pTeam[playerid] == 1 && pTeam[killerid] == 2)
  263.         {
  264.             GangsterPunkte += 1;
  265.                 format(TextString,sizeof(TextString),"Gangster: %d",GangsterPunkte);
  266.                 TextDrawSetString(GangsterPunkteText,TextString);
  267.         }
  268.         else if(pTeam[playerid] == 2 && pTeam[killerid] == 1)
  269.         {
  270.             ArmyPunkte += 1;
  271.                 format(TextString,sizeof(TextString),"Army: %d",ArmyPunkte);
  272.                 TextDrawSetString(ArmyPunkteText,TextString);
  273.         }
  274.         GivePlayerMoney(killerid, 1000);
  275.         GivePlayerMoney(playerid, -500);
  276.         new score;
  277.         score = GetPlayerScore(playerid);
  278.         SetPlayerScore(playerid,score-1);
  279.         SetPlayerScore(killerid,2);
  280.        
  281.         SendDeathMessage(killerid, playerid, reason);
  282.         return 1;
  283. }
  284.  
  285. public OnVehicleSpawn(vehicleid)
  286. {
  287.         return 1;
  288. }
  289.  
  290. public OnVehicleDeath(vehicleid, killerid)
  291. {
  292.         return 1;
  293. }
  294.  
  295. public OnPlayerText(playerid, text[])
  296. {
  297.         return 1;
  298. }
  299. ocmd:navi(playerid,params[])
  300. {
  301.         #pragma unused params
  302.         if(IsPlayerInAnyVehicle(playerid))
  303.         {
  304.             ShowPlayerDialog(playerid,DIALOG_NAVI,DIALOG_STYLE_LIST,"Navigation","Army Base\nWaffenladen\nGang Base","Auswählen","Abbrechen");
  305.             return 1;
  306.         }
  307.         else
  308.         {
  309.             SendClientMessage(playerid,0xFF0005FF,"Du bist in keinem Fahrzeug");
  310.         }
  311.         return 1;
  312. }
  313. ocmd:tban(playerid,params[])
  314. {
  315.     if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Rang zu Niedrig.");
  316.     new pID, time, grund[128];
  317.     if(sscanf(params,"uis",pID,time,grund))return SendClientMessage(playerid,BLAU,"/tban [playerid] [zeit] [grund]");
  318.         if(IsPlayerConnected(pID))
  319.         {
  320.             if(time>0&&time<1000)
  321.             {
  322.                 new string[128];
  323.                 format(string,sizeof(string),"[Admin-Befehl] %s wurde von %s für %i Minuten gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),time,grund);
  324.                         SendClientMessageToAll(ROT,string);
  325.                         new wert;
  326.  
  327.                         wert=gettime()+(60*time);
  328.  
  329.                         SetPVarInt(pID,"timeban",wert);
  330.  
  331.                         Kick(pID);
  332.                         return 1;
  333.                 }
  334.             SendClientMessage(playerid,ROT,"Ungültige Zeit.");
  335.                 return 1;
  336.         }
  337.         SendClientMessage(playerid,ROT,"Spieler ist nicht online.");
  338.         return 1;
  339. }
  340.  
  341. ocmd:ban(playerid,params[])
  342. {
  343.     if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
  344.         new pID, reason[128],string[128];
  345.         if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"/ban [id] [grund]");
  346.         format(string,sizeof(string),"[Admin-Befehl] %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
  347.         SendClientMessageToAll(ROT,string);
  348.         SetPVarInt(pID,"Baned",1);
  349.         Kick(pID);
  350.         return 1;
  351. }
  352.  
  353. ocmd:makeadmin(playerid,params[])
  354. {
  355.     if(!isPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
  356.     new pID, rank;
  357.     if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,ROT,"/makeadmin [spieler] [level]");
  358.     if(rank<1||rank>5)return SendClientMessage(playerid,ROT,"Bitte gültigen Rang angeben.");
  359.     SetPVarInt(pID,"Adminlevel",rank);
  360.     SpielerSpeichern(pID);
  361.         SendClientMessage(playerid,GRAU,"Du hast den Spieler erfolgreich als Admin gemacht.");
  362.         return 1;
  363. }
  364.  
  365. ocmd:setskin(playerid, params[])
  366. {
  367.         if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Rank zu niedrig");
  368.         new pID,skinid;
  369.         if(sscanf(params,"ud",pID,skinid))
  370.         {
  371.                 return SendClientMessage(playerid,BLAU,"INFO: /setskin [playerid] [0 - 299]*");
  372.         }
  373.         if(!IsPlayerConnected(pID))
  374.         {
  375.             return SendClientMessage(playerid,ROT,"Spieler ID nicht gefunden");
  376.         }
  377.         if(skinid<0||skinid>299)return SendClientMessage(playerid,ROT,"Diese Skin ID gibt es nicht");
  378.         new string[128],string2[128],aname[MAX_PLAYER_NAME],name[MAX_PLAYER_NAME];
  379.         SetPlayerSkin(pID,skinid);
  380.         GetPlayerName(playerid,aname,sizeof(aname));
  381.         GetPlayerName(pID,name,sizeof(name));
  382.         format(string,sizeof(string),"Du hast den Skin von %s in folgende SkinID %d gewechselt.",name,skinid);
  383.     format(string2,sizeof(string2),"Admin %s hat deinen Skin zur SkinID %d gewechselt.",aname,skinid);
  384.     SendClientMessage(playerid,ROT,string);
  385.     SendClientMessage(pID,ROT,string2);
  386.         return 1;
  387. }
  388.  
  389. ocmd:kick(playerid,params[])
  390. {
  391.         if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du bist kein Admin.");
  392.         new pID, reason[128],string[128];
  393.         if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"/kick [id] [grund]");
  394.         format(string,sizeof(string),"[Admin-Befehl] %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
  395.         SendClientMessageToAll(ROT,string);
  396.         Kick(pID);
  397.         return 1;
  398. }
  399.  
  400. public OnPlayerCommandText(playerid, cmdtext[])
  401. {
  402.         if(strcmp("/ah", cmdtext, true, 10) == 0)
  403.     if(isPlayerAnAdmin(playerid,1))
  404.         {
  405.             SendClientMessage(playerid,0xFFE600FF,"***Admin Help**");
  406.             SendClientMessage(playerid,0xFFE600FF,"/tban /goto /ban /kick");
  407.             SendClientMessage(playerid,0xFFE600FF,"/setskin /makeadmin");
  408.             return 1;
  409.         }
  410.         if(strcmp("/goto", cmdtext, true, 10) == 0)
  411.     if(isPlayerAnAdmin(playerid,1))
  412.         {
  413.             SendClientMessage(playerid,0xFFA000FF,"/gotosh (Waffenladen) | /gotoab (Army Base) | /gotogb (Gang Base)");
  414.             return 1;
  415.         }
  416.         if(strcmp("/gotosh", cmdtext, true, 10) == 0)
  417.     if(isPlayerAnAdmin(playerid,1))
  418.         {
  419.             SetPlayerPos(playerid,1364.9344,-1279.8146,13.5469);
  420.             SendClientMessage(playerid,0xFFA000FF,"Du hast dich zum Waffenladen Teleportiert");
  421.             return 1;
  422.         }
  423.         if(strcmp("/gotoab", cmdtext, true, 10) == 0)
  424.     if(isPlayerAnAdmin(playerid,1))
  425.         {
  426.             SetPlayerPos(playerid,1783.5627,-2055.5825,13.5880);
  427.             SendClientMessage(playerid,0xFFA000FF,"Du hast dich zur Army Base Teleportiert");
  428.             return 1;
  429.         }
  430.         if(strcmp("/gotogb", cmdtext, true, 10) == 0)
  431.     if(isPlayerAnAdmin(playerid,1))
  432.         {
  433.             SetPlayerPos(playerid,1933.6818,-1127.1844,25.3246);
  434.             SendClientMessage(playerid,0xFFA000FF,"Du hast dich zur Gang Base Teleportiert");
  435.             return 1;
  436.         }
  437.         if(strcmp(cmdtext,"/gmx",true)==0)
  438.         {
  439.             if(isPlayerAnAdmin(playerid,5))
  440.             {
  441.                 SendRconCommand("gmx");
  442.                 return 1;
  443.                 }
  444.                 SendClientMessage(playerid,ROT,"Du bist kein Admin.");
  445.             return 1;
  446.         }
  447.         if(strcmp(cmdtext,"/dm",true)==0)
  448.         {
  449.        new string[128];
  450.            format(string,sizeof(string),"%s hat sich zur DM Arena teleportiert (/dm).",SpielerName(playerid));
  451.            SendClientMessageToAll(0x00FFFFFF,string);
  452.            SetPlayerInterior(playerid,18);
  453.            SendClientMessage(playerid,0xFF8C00FF,"Tippe /dmquit,um die DM-Arena zu verlassen");
  454.            SetPlayerPos(playerid,1710.433715,-1669.379272,20.225049);
  455.            return 1;
  456.                 }
  457.         if(strcmp(cmdtext,"/dmhotel",true)==0)
  458.         {
  459.        new string[128];
  460.            format(string,sizeof(string),"%s hat sich zum DM-Hotel teleportiert (/dmhotel).",SpielerName(playerid));
  461.            SendClientMessageToAll(0x00FFFFFF,string);
  462.            SetPlayerInterior(playerid,15);
  463.            SendClientMessage(playerid,0xFF8C00FF,"Tippe /dmhotelq,um das DM-Hotel zu verlassen");
  464.            SetPlayerPos(playerid,2215.454833,-1147.475585,1025.796875);
  465.            return 1;
  466.                 }
  467.         if(strcmp(cmdtext,"/deagle",true)==0)
  468.         {
  469.            new string[128];
  470.            format(string,sizeof(string),"%s hat sich zur Deagle Arena teleportiert (/deagle).",SpielerName(playerid));
  471.            SendClientMessageToAll(0x00FFFFFF,string);
  472.            SendClientMessage(playerid,0xFF8C00FF,"Tippe /deaglequit,um die Deagle Arena zu verlassen");
  473.            SetPlayerPos(playerid,1532.5612,-1368.1470,329.4609);
  474.            ResetPlayerWeapons(playerid);
  475.            GivePlayerWeapon(playerid,24,500);
  476.            return 1;
  477.         }
  478.         if(strcmp(cmdtext,"/deaglequit",true)==0)
  479.         {
  480.            SendClientMessage(playerid,GRAU,"Du hast die Deagle Arena verlassen.");
  481.  
  482.            if(pTeam[playerid] == 1)
  483.            {
  484.            SetPlayerPos(playerid,1758.7849,-2056.2927,13.5837);
  485.            GivePlayerWeapon(playerid,4,1);
  486.            GivePlayerWeapon(playerid,24,500);
  487.            GivePlayerWeapon(playerid,31,500);
  488.        }
  489.        else if(pTeam[playerid] == 2)
  490.        {
  491.        SetPlayerInterior(playerid,0);
  492.        SetPlayerPos(playerid,1955.8729,-1120.7222,26.8482);
  493.        }
  494.            return 1;
  495.         }
  496.         if(strcmp(cmdtext,"/dmquit",true)==0)
  497.         {
  498.            SendClientMessage(playerid,GRAU,"Du hast die DM Arena verlassen.");
  499.  
  500.            if(pTeam[playerid] == 1)
  501.            {
  502.        SetPlayerInterior(playerid,0);
  503.        SetPlayerPos(playerid,1758.7849,-2056.2927,13.5837);
  504.        }
  505.        else if(pTeam[playerid] == 2)
  506.        {
  507.        SetPlayerInterior(playerid,0);
  508.        SetPlayerPos(playerid,1955.8729,-1120.7222,26.8482);
  509.        }
  510.        return 1;
  511.     }
  512.         if(strcmp(cmdtext,"/dmhotelq",true)==0)
  513.         {
  514.            SendClientMessage(playerid,GRAU,"Du hast das DM-Hotel verlassen.");
  515.  
  516.            if(pTeam[playerid] == 1)
  517.            {
  518.        SetPlayerInterior(playerid,0);
  519.        SetPlayerPos(playerid,1758.7849,-2056.2927,13.5837);
  520.        }
  521.        else if(pTeam[playerid] == 2)
  522.        {
  523.        SetPlayerInterior(playerid,0);
  524.        SetPlayerPos(playerid,1955.8729,-1120.7222,26.8482);
  525.        }
  526.        return 1;
  527.     }
  528.         if(strcmp(cmdtext,"/news",true)==0)
  529.         {
  530.            SendClientMessage(playerid,LILA,"***Server News***");
  531.            SendClientMessage(playerid,LILA,"Momentan gibt es keine News");
  532.            return 1;
  533.         }
  534.         if(strcmp(cmdtext,"/help",true)==0)
  535.         {
  536.            SendClientMessage(playerid,0xFFA000FF,"*** Server-Befehle ***");
  537.            SendClientMessage(playerid,0xFFA000FF," /navi /news /dm /dmquit");
  538.            SendClientMessage(playerid,0xFFA000FF,"/deagle /deaglequit /serverinfo");
  539.            SendClientMessage(playerid,0xFFA000FF,"/report /dmhotel /dmhotelq");
  540.            return 1;
  541.         }
  542.         if(strcmp(cmdtext,"/serverinfo",true)==0)
  543.         {
  544.            SendClientMessage(playerid,GRAU,"****Server Infos ****");
  545.            SendClientMessage(playerid,ROT,"Server Owner: Revolution");
  546.            SendClientMessage(playerid,ROT,"Teamspeak Besitzer: Revolution");
  547.            return 1;
  548.         }
  549.         return SendClientMessage(playerid,WHITE,"Der Befehl ist nicht verfügbar.");
  550. }
  551.  
  552. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  553. {
  554.         return 1;
  555. }
  556.  
  557. public OnPlayerExitVehicle(playerid, vehicleid)
  558. {
  559.         return 1;
  560. }
  561.  
  562. public OnPlayerStateChange(playerid, newstate, oldstate)
  563. {
  564.         DisablePlayerCheckpoint(playerid);
  565.         return 1;
  566. }
  567.  
  568. public OnPlayerEnterCheckpoint(playerid)
  569. {
  570.         return 1;
  571. }
  572.  
  573. public OnPlayerLeaveCheckpoint(playerid)
  574. {
  575.         return 1;
  576. }
  577.  
  578. public OnPlayerEnterRaceCheckpoint(playerid)
  579. {
  580.         return 1;
  581. }
  582.  
  583. public OnPlayerLeaveRaceCheckpoint(playerid)
  584. {
  585.         return 1;
  586. }
  587.  
  588. public OnRconCommand(cmd[])
  589. {
  590.         return 1;
  591. }
  592.  
  593. public OnPlayerRequestSpawn(playerid)
  594. {
  595.         return 1;
  596. }
  597.  
  598. public OnObjectMoved(objectid)
  599. {
  600.         return 1;
  601. }
  602.  
  603. public OnPlayerObjectMoved(playerid, objectid)
  604. {
  605.         return 1;
  606. }
  607.  
  608. public OnPlayerPickUpPickup(playerid, pickupid)
  609.         {
  610.         if(pickupid==shotgun_buypoint)
  611.         {
  612.             if(GetPlayerMoney(playerid)>3999)
  613.                 {
  614.             GivePlayerMoney(playerid,-4000);
  615.                 SendClientMessage(playerid,0x2DFF00FF,"Waffe erfolgreich gekauft (Shotgun).");
  616.                 GivePlayerWeapon(playerid,27,200);
  617.                 }
  618.                 else
  619.                 {
  620.                 SendClientMessage(playerid,0xFF000FFF,"Du hast nicht genug Geld für die Shotgun (4000)");
  621.                 }
  622.         }
  623.         if(pickupid==granaten_buypoint)
  624.         {
  625.             if(GetPlayerMoney(playerid)>2999)
  626.                 {
  627.             GivePlayerMoney(playerid,-5000);
  628.                 SendClientMessage(playerid,0x2DFF00FF,"Waffe erfolgreich gekauft (Granaten).");
  629.                 GivePlayerWeapon(playerid,16,15);
  630.                 }
  631.                 else
  632.                 {
  633.                 SendClientMessage(playerid,0xFF000FFF,"Du hast nicht genug Geld für die Granaten (3000)");
  634.                 }
  635.         }
  636.         if(pickupid==ammu_enter)
  637.         {
  638.             SetPlayerInterior(playerid,1);
  639.             SetPlayerPos(playerid,286.148986,-40.644397,1001.515625);
  640.             GameTextForPlayer(playerid,"Willkommen im~n~~y~Ammunation",3000,6);
  641.         }
  642.         if(pickupid==ammu_exit)
  643.         {
  644.             SetPlayerInterior(playerid,0);
  645.             SetPlayerPos(playerid,1364.3545,-1280.5421,13.5469);
  646.             SetPlayerFacingAngle(playerid,90);
  647.        
  648.         }
  649.         if(pickupid==ak_buypoint)
  650.         {
  651.             if(GetPlayerMoney(playerid)>4999)
  652.                 {
  653.             GivePlayerMoney(playerid,-5000);
  654.                 SendClientMessage(playerid,0x2DFF00FF,"Waffe erfolgreich gekauft (Deagle).");
  655.                 GivePlayerWeapon(playerid,30,500);
  656.                 }
  657.                 else
  658.                 {
  659.                 SendClientMessage(playerid,0xFF000FFF,"Du hast nicht genug Geld für die Deagle (5000)");
  660.                 }
  661.         }
  662.         return 1;
  663. }
  664.  
  665. public OnVehicleMod(playerid, vehicleid, componentid)
  666. {
  667.         return 1;
  668. }
  669.  
  670. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  671. {
  672.         return 1;
  673. }
  674.  
  675. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  676. {
  677.         return 1;
  678. }
  679.  
  680. public OnPlayerSelectedMenuRow(playerid, row)
  681. {
  682.         return 1;
  683. }
  684.  
  685. public OnPlayerExitedMenu(playerid)
  686. {
  687.         return 1;
  688. }
  689.  
  690. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  691. {
  692.         return 1;
  693. }
  694.  
  695. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  696. {
  697.         return 1;
  698. }
  699.  
  700. public OnRconLoginAttempt(ip[], password[], success)
  701. {
  702.         return 1;
  703. }
  704.  
  705. public OnPlayerUpdate(playerid)
  706. {
  707.         return 1;
  708. }
  709.  
  710. public OnPlayerStreamIn(playerid, forplayerid)
  711. {
  712.         return 1;
  713. }
  714.  
  715. public OnPlayerStreamOut(playerid, forplayerid)
  716. {
  717.         return 1;
  718. }
  719.  
  720. public OnVehicleStreamIn(vehicleid, forplayerid)
  721. {
  722.         return 1;
  723. }
  724.  
  725. public OnVehicleStreamOut(vehicleid, forplayerid)
  726. {
  727.         return 1;
  728. }
  729.  
  730. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  731. {
  732.         switch(dialogid)
  733.         {
  734.             case DIALOG_NAVI:
  735.             {
  736.                 if(!response)
  737.                  {
  738.                     SendClientMessage(playerid,0xFF0005FF,"Navi Ausgeschaltet");
  739.                     return 1;
  740.                  }
  741.                         switch(listitem)
  742.                  {
  743.                     case 0:
  744.                     {
  745.                         SetPlayerCheckpoint(playerid,1783.5627,-2055.5825,13.5880,5);
  746.                     }
  747.                     case 1:
  748.                     {
  749.                         SetPlayerCheckpoint(playerid,1364.9344,-1279.8146,13.5469,5);
  750.                     }
  751.                     case 2:
  752.                     {
  753.                         SetPlayerCheckpoint(playerid,1933.6818,-1127.1844,25.3246,5);
  754.                     }
  755.                  }
  756.             }
  757.         }
  758.         if(dialogid==DIALOG_LOGIN)
  759.         {
  760.             if(response==0)
  761.             {
  762.                 SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
  763.                 Kick(playerid);
  764.                 return 1;
  765.             }
  766.             if(response==1)
  767.             {
  768.                 if(!strlen(inputtext))
  769.                 {
  770.                     SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
  771.                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Die Datenbank hat deine Accountdaten gefunden. Bitte logge dich nun ein.","Login","Abbrechen");
  772.                     return 1;
  773.                 }
  774.                 else
  775.                 {
  776.                         Login(playerid,inputtext);
  777.                         return 1;
  778.                         }
  779.             }
  780.         }
  781.         if(dialogid==DIALOG_REGISTER)
  782.         {
  783.             if(response==0)
  784.             {
  785.                 SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
  786.                 Kick(playerid);
  787.                 return 1;
  788.             }
  789.             if(response==1)
  790.             {
  791.                 if(!strlen(inputtext))
  792.                 {
  793.                     SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
  794.                     ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registrieren","Die Datenbank hat deine Accountdaten nicht gefunden bitte Registriere dich.","Register","Abbrechen");
  795.                     return 1;
  796.                 }
  797.                 else
  798.                 {
  799.                         Register(playerid,inputtext);
  800.                         return 1;
  801.                         }
  802.             }
  803.         }
  804.         return 1;
  805. }
  806.  
  807. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  808. {
  809.         return 1;
  810. }
  811.  
  812. stock SpielerName(playerid)
  813. {
  814.         new name[MAX_PLAYER_NAME];
  815.         GetPlayerName(playerid,name,sizeof(name));
  816.         return name;
  817. }
  818.  
  819. stock Register(playerid,key[])
  820. {
  821.         new Spielerdatei[64];
  822.         new name[MAX_PLAYER_NAME];
  823.         GetPlayerName(playerid,name,sizeof(name));
  824.         format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  825.         dini_Create(Spielerdatei);
  826.         dini_Set(Spielerdatei,"Passwort",key);
  827.         SendClientMessage(playerid,GRUEN,"Erfolgreich registriert.");
  828.         SetPlayerScore(playerid,0);
  829.         SetPVarInt(playerid,"loggedin",1);
  830.         return 1;
  831. }
  832.  
  833. stock Login(playerid,key[])
  834. {
  835.     new Spielerdatei[64];
  836.         new name[MAX_PLAYER_NAME];
  837.         GetPlayerName(playerid,name,sizeof(name));
  838.         format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  839.  
  840.         if(gettime()<dini_Int(Spielerdatei,"timeban"))
  841.         {
  842.             SendClientMessage(playerid,ROT,"Du bist gebannt überlege dir warum.");
  843.             Kick(playerid);
  844.             return 1;
  845.         }
  846.  
  847.         if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
  848.         {
  849.             LoadAccount(playerid);
  850.             new string[128];
  851.                 format(string,sizeof(string),"Herzlich Willkommen %s auf Army vs. Gangster",SpielerName(playerid));
  852.                 SendClientMessage(playerid,GRAU,string);
  853.             return 1;
  854.         }
  855.         else
  856.         {
  857.             SendClientMessage(playerid,BLAU,"Falsches Passwort.");
  858.             ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Die Datenbank hat deine Accountdaten gefunden. Bitte logge dich nun ein.","Login","Abbrechen");
  859.             return 1;
  860.         }
  861. }
  862.  
  863. stock LoadAccount(playerid)
  864. {
  865.     new Spielerdatei[64];
  866.         new name[MAX_PLAYER_NAME];
  867.         GetPlayerName(playerid,name,sizeof(name));
  868.         format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  869.         SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
  870.         GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
  871.         SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
  872.         SetPVarInt(playerid,"Team",dini_Int(Spielerdatei,"Team"));
  873.         SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
  874.         if(GetPVarInt(playerid,"Baned")==1)
  875.         {
  876.                 SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
  877.             Kick(playerid);
  878.         }
  879.         SetPVarInt(playerid,"loggedin",1);
  880.         return 1;
  881. }
  882.  
  883. stock SpielerSpeichern(playerid)
  884. {
  885.     if(GetPVarInt(playerid,"loggedin")==1)
  886.         {
  887.             new Spielerdatei[64];
  888.                 new name[MAX_PLAYER_NAME];
  889.                 GetPlayerName(playerid,name,sizeof(name));
  890.                 format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
  891.                 dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
  892.                 dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
  893.                 dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
  894.                 dini_IntSet(Spielerdatei,"Team",GetPVarInt(playerid,"Team"));
  895.                 dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
  896.                 dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
  897.         }
  898.         return 1;
  899. }
  900.  
  901. stock isPlayerAnAdmin(playerid,rang)
  902. {
  903.         if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
  904.         return 0;
  905. }
  906.  
  907. stock sscanf(sstring[], format[], {Float,_}:...)
  908. {
  909.         #if defined isnull
  910.                 if (isnull(sstring))
  911.         #else
  912.                 if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
  913.         #endif
  914.                 {
  915.                         return format[0];
  916.                 }
  917.         #pragma tabsize 4
  918.         new
  919.                 formatPos = 0,
  920.                 sstringPos = 0,
  921.                 paramPos = 2,
  922.                 paramCount = numargs(),
  923.                 delim = ' ';
  924.         while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
  925.         {
  926.                 sstringPos++;
  927.         }
  928.         while (paramPos < paramCount && sstring[sstringPos])
  929.         {
  930.                 switch (format[formatPos++])
  931.                 {
  932.                         case '\0':
  933.                         {
  934.                                 return 0;
  935.                         }
  936.                         case 'i', 'd':
  937.                         {
  938.                                 new
  939.                                         neg = 1,
  940.                                         num = 0,
  941.                                         ch = sstring[sstringPos];
  942.                                 if (ch == '-')
  943.                                 {
  944.                                         neg = -1;
  945.                                         ch = sstring[++sstringPos];
  946.                                 }
  947.                                 do
  948.                                 {
  949.                                         sstringPos++;
  950.                                         if ('0' <= ch <= '9')
  951.                                         {
  952.                                                 num = (num * 10) + (ch - '0');
  953.                                         }
  954.                                         else
  955.                                         {
  956.                                                 return -1;
  957.                                         }
  958.                                 }
  959.                                 while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  960.                                 setarg(paramPos, 0, num * neg);
  961.                         }
  962.                         case 'h', 'x':
  963.                         {
  964.                                 new
  965.                                         num = 0,
  966.                                         ch = sstring[sstringPos];
  967.                                 do
  968.                                 {
  969.                                         sstringPos++;
  970.                                         switch (ch)
  971.                                         {
  972.                                                 case 'x', 'X':
  973.                                                 {
  974.                                                         num = 0;
  975.                                                         continue;
  976.                                                 }
  977.                                                 case '0' .. '9':
  978.                                                 {
  979.                                                         num = (num << 4) | (ch - '0');
  980.                                                 }
  981.                                                 case 'a' .. 'f':
  982.                                                 {
  983.                                                         num = (num << 4) | (ch - ('a' - 10));
  984.                                                 }
  985.                                                 case 'A' .. 'F':
  986.                                                 {
  987.                                                         num = (num << 4) | (ch - ('A' - 10));
  988.                                                 }
  989.                                                 default:
  990.                                                 {
  991.                                                         return -1;
  992.                                                 }
  993.                                         }
  994.                                 }
  995.                                 while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  996.                                 setarg(paramPos, 0, num);
  997.                         }
  998.                         case 'c':
  999.                         {
  1000.                                 setarg(paramPos, 0, sstring[sstringPos++]);
  1001.                         }
  1002.                         case 'f':
  1003.                         {
  1004.  
  1005.                                 new changestr[16], changepos = 0, strpos = sstringPos;
  1006.                                 while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
  1007.                                 {
  1008.                                         changestr[changepos++] = sstring[strpos++];
  1009.                                 }
  1010.                                 changestr[changepos] = '\0';
  1011.                                 setarg(paramPos,0,_:floatstr(changestr));
  1012.                         }
  1013.                         case 'p':
  1014.                         {
  1015.                                 delim = format[formatPos++];
  1016.                                 continue;
  1017.                         }
  1018.                         case '\'':
  1019.                         {
  1020.                                 new
  1021.                                         end = formatPos - 1,
  1022.                                         ch;
  1023.                                 while ((ch = format[++end]) && ch != '\'') {}
  1024.                                 if (!ch)
  1025.                                 {
  1026.                                         return -1;
  1027.                                 }
  1028.                                 format[end] = '\0';
  1029.                                 if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
  1030.                                 {
  1031.                                         if (format[end + 1])
  1032.                                         {
  1033.                                                 return -1;
  1034.                                         }
  1035.                                         return 0;
  1036.                                 }
  1037.                                 format[end] = '\'';
  1038.                                 sstringPos = ch + (end - formatPos);
  1039.                                 formatPos = end + 1;
  1040.                         }
  1041.                         case 'u':
  1042.                         {
  1043.                                 new
  1044.                                         end = sstringPos - 1,
  1045.                                         id = 0,
  1046.                                         bool:num = true,
  1047.                                         ch;
  1048.                                 while ((ch = sstring[++end]) && ch != delim)
  1049.                                 {
  1050.                                         if (num)
  1051.                                         {
  1052.                                                 if ('0' <= ch <= '9')
  1053.                                                 {
  1054.                                                         id = (id * 10) + (ch - '0');
  1055.                                                 }
  1056.                                                 else
  1057.                                                 {
  1058.                                                         num = false;
  1059.                                                 }
  1060.                                         }
  1061.                                 }
  1062.                                 if (num && IsPlayerConnected(id))
  1063.                                 {
  1064.                                         setarg(paramPos, 0, id);
  1065.                                 }
  1066.                                 else
  1067.                                 {
  1068.                                         #if !defined foreach
  1069.                                                 #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1070.                                                 #define __SSCANF_FOREACH__
  1071.                                         #endif
  1072.                                         sstring[end] = '\0';
  1073.                                         num = false;
  1074.                                         new
  1075.                                                 name[MAX_PLAYER_NAME];
  1076.                                         id = end - sstringPos;
  1077.                                         foreach (Player, playerid)
  1078.                                         {
  1079.                                                 GetPlayerName(playerid, name, sizeof (name));
  1080.                                                 if (!strcmp(name, sstring[sstringPos], true, id))
  1081.                                                 {
  1082.                                                         setarg(paramPos, 0, playerid);
  1083.                                                         num = true;
  1084.                                                         break;
  1085.                                                 }
  1086.                                         }
  1087.                                         if (!num)
  1088.                                         {
  1089.                                                 setarg(paramPos, 0, INVALID_PLAYER_ID);
  1090.                                         }
  1091.                                         sstring[end] = ch;
  1092.                                         #if defined __SSCANF_FOREACH__
  1093.                                                 #undef foreach
  1094.                                                 #undef __SSCANF_FOREACH__
  1095.                                         #endif
  1096.                                 }
  1097.                                 sstringPos = end;
  1098.                         }
  1099.                         case 's', 'z':
  1100.                         {
  1101.                                 new
  1102.                                         i = 0,
  1103.                                         ch;
  1104.                                 if (format[formatPos])
  1105.                                 {
  1106.                                         while ((ch = sstring[sstringPos++]) && ch != delim)
  1107.                                         {
  1108.                                                 setarg(paramPos, i++, ch);
  1109.                                         }
  1110.                                         if (!i)
  1111.                                         {
  1112.                                                 return -1;
  1113.                                         }
  1114.                                 }
  1115.                                 else
  1116.                                 {
  1117.                                         while ((ch = sstring[sstringPos++]))
  1118.                                         {
  1119.                                                 setarg(paramPos, i++, ch);
  1120.                                         }
  1121.                                 }
  1122.                                 sstringPos--;
  1123.                                 setarg(paramPos, i, '\0');
  1124.                         }
  1125.                         default:
  1126.                         {
  1127.                                 continue;
  1128.                         }
  1129.                 }
  1130.                 while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
  1131.                 {
  1132.                         sstringPos++;
  1133.                 }
  1134.                 while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
  1135.                 {
  1136.                         sstringPos++;
  1137.                 }
  1138.                 paramPos++;
  1139.         }
  1140.         do
  1141.         {
  1142.                 if ((delim = format[formatPos++]) > ' ')
  1143.                 {
  1144.                         if (delim == '\'')
  1145.                         {
  1146.                                 while ((delim = format[formatPos++]) && delim != '\'') {}
  1147.                         }
  1148.                         else if (delim != 'z')
  1149.                         {
  1150.                                 return delim;
  1151.                         }
  1152.                 }
  1153.         }
  1154.         while (delim > ' ');
  1155.         return 0;
  1156. }