Advertisement
ErikSon_

Dynamisches Haussystem by ErikSon

Aug 1st, 2014
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 30.57 KB | None | 0 0
  1. /*                          Dynamisches Haussystem by ErikSon                                       */
  2.  
  3. #include <a_samp>
  4. #include <ocmd>
  5. #include <streamer>
  6.  
  7. /*  Settings    */
  8. #define MAX_HAUS    15                  // Maximale Anzahl der Häuser
  9. #define HAUS_FILE   "/Hauser.ini"       // Haus-Datei ( indem die Häuser gesaved werden )
  10. #define H_DIS       100                 // Ab wann die Map-Icons angezeigt werden sollen
  11. /*  Settings    */
  12.  
  13. enum
  14. {
  15.     DIALOG_INT_AUSWAHL = 8100,
  16.     DIALOG_INT_8_ZIMMER,
  17.     DIALOG_INT_6_ZIMMER,
  18.     DIALOG_INT_5_ZIMMER,
  19.     DIALOG_INT_4_ZIMMER,
  20.     DIALOG_INT_3_ZIMMER,
  21.     DIALOG_INT_2_ZIMMER,
  22.     DIALOG_INT_1_ZIMMER,
  23.     DIALOG_PREIS,
  24.     DIALOG_LEVEL,
  25.     DIALOG_HH,
  26.     dKasse,
  27.     dKasse_Aus,
  28.     dKasse_Ein,
  29. };
  30.  
  31. enum haus_info
  32. {
  33.     Float:haus_x,
  34.     Float:haus_y,
  35.     Float:haus_z,
  36.     Float:haus_xi,
  37.     Float:haus_yi,
  38.     Float:haus_zi,
  39.     haus_besitzer[32],
  40.     haus_preis,
  41.     haus_pickup,
  42.     haus_level,
  43.     haus_rooms,
  44.     haus_int,
  45.     haus_lock,
  46.     haus_vw,
  47.     Text3D:haus_label,
  48.     haus_vkt,
  49.     haus_id,
  50.     haus_heal,
  51.     haus_kasse,
  52.     haus_icon
  53. }
  54. new Haus[MAX_HAUS][haus_info];
  55.  
  56. enum ha
  57. {
  58.     Float:posx,
  59.     Float:posy,
  60.     Float:posz,
  61.     h_int,
  62. };
  63. new IntInfo[][ha] =
  64. {
  65.     { 1.200000,-3.400000,999.400024,2 }, // Trailer
  66.     { 244.500000,305.000000,999.099975,1 },// 'Bedsit'
  67.     { 267.100006,305.000000,999.099975,2 },// 'Bedsit'
  68.     { 301.299987,306.299987,1003.500000,4 },// 'Bedsit'
  69.     { 344.299987,305.200012,999.099975,6 },// 'Bedsit'
  70.     { 446.100006,507.899993,1001.400024,12 },// '2 Zimmer Apartment'
  71.     { -42.400001,1408.199951,1084.400024,8 },// '3 Zimmer Bungalow'
  72.     { 2464.100097,-1698.599975,1013.500000,2 },// '3 Zimmer Bungalow'
  73.     { 386.100006,1471.800048,1080.099975,15 },// '3 Zimmer Apartment'
  74.     { 221.600006,1143.599975,1082.599975,4 },// '3 Zimmer Apartment'
  75.     { 260.600006,1238.800048,1084.199951,9 },// '4 Zimmer Apartment'
  76.     { 261.000000,1286.000000,1080.199951,4 },// '4 Zimmer Haus'
  77.     { 745.299987,1437.699951,1102.699951,6 },// '4 Zimmer Apartment'
  78.     { 376.299987,1417.199951,1081.300048,15 },// '4 Zimmer Apartment'
  79.     { 27.100000,1341.099975,1084.300048,10 },// '4 Zimmer Haus'
  80.     { 2526.399902,-1679.000000,1015.400024,1 },// '4 Zimmer Bedsit'
  81.     { 222.800003,1288.699951,1082.099975,1 },// '4 Zimmer Apartment'
  82.     { 23.000000,1405.599975,1084.400024,5 },// '4 Zimmer Haus'
  83.     { 235.300003,1189.199951,1080.199951,3 },// '4 Zimmer Haus'
  84.     { 447.000000,1400.300048,1084.300048,2 },// '5 Zimmer Apartment'
  85.     { 234.199996,1064.900024,1084.199951,6 },// '5 Zimmer Haus'
  86.     { 327.899993,1478.300048,1084.400024,15 },// '5 Zimmer Slum'
  87.     { 295.399993,1473.199951,1080.199951,15 },// '5 Zimmer Apartment'
  88.     { 140.399993,1370.300048,1083.800048,5 },// '6 Zimmer Haus'
  89.     { 489.700012,1402.500000,1080.199951,2 },// '6 Zimmer Luxus'
  90.     { 83.300003,1324.699951,1083.800048,9 },// '6 Zimmer Haus'
  91.     { 231.399993,1114.099975,1080.900024,5 },// '7 Zimmer Luxus'
  92.     { 225.600006,1023.500000,1084.000000,7 },// '8 Zimmer Luxus'
  93.     { -285.899993,1470.800048,1084.300048,15 },// '4 Zimmer Luxus'
  94.     { -262.700012,1456.599975,1084.300048,4 },// '3 Zimmer Luxus'
  95.     { -68.800003,1354.699951,1080.199951,6 },// '2 Zimmer Luxus'
  96.     { 2254.300048,-1140.000000,1050.599975,9 },// '2 Zimmer Luxus'
  97.     { 2261.300048,-1135.900024,1050.599975,10 },// '3 Zimmer Luxus'
  98.     { 2324.399902,-1147.500000,1050.699951,12 }// '8 Zimmer Luxus'
  99. };
  100.  
  101. public OnFilterScriptInit()
  102. {
  103.     print("\n--------------------------------------");
  104.     print("Dynamisches Haussystem by ErikSon");
  105.     print("--------------------------------------\n");
  106.     return LoadHauser();
  107. }
  108.  
  109. public OnFilterScriptExit()
  110. {
  111.     for(new i=0;i<MAX_HAUS;i++)DestroyDynamic3DTextLabel(Haus[i][haus_label]),DestroyDynamicPickup(Haus[i][haus_pickup]),DestroyDynamicMapIcon(Haus[i][haus_icon]);
  112.     return SaveHauser();
  113. }
  114.  
  115. public OnPlayerDisconnect(playerid, reason)
  116. {
  117.     return DeletePVar(playerid,"ImHaus");
  118. }
  119. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
  120.     if(newkeys & KEY_SECONDARY_ATTACK){
  121.         if(NearestHaus(playerid) == -1 && NearestExit(playerid) == -1)return 1;
  122.         if(NearestExit(playerid) != -1 && Haus[GetPVarInt(playerid,"ImHaus")][haus_vw] == GetPlayerVirtualWorld(playerid)){
  123.             new ID = GetPVarInt(playerid,"ImHaus");
  124.             SetPlayerPos(playerid,Haus[ID][haus_x],Haus[ID][haus_y],Haus[ID][haus_z]);
  125.             SetPlayerInterior(playerid,0);
  126.             SetPlayerVirtualWorld(playerid,0);
  127.             SendClientMessage(playerid,-1,"Du hast das Haus verlassen.");
  128.             return DeletePVar(playerid,"ImHaus");
  129.         }
  130.         else if(NearestHaus(playerid) != -1 && !Haus[NearestHaus(playerid)][haus_lock]){
  131.             SetPlayerPos(playerid,Haus[NearestHaus(playerid)][haus_xi],Haus[NearestHaus(playerid)][haus_yi],Haus[NearestHaus(playerid)][haus_zi]);
  132.             SetPlayerInterior(playerid,Haus[NearestHaus(playerid)][haus_int]);
  133.             SetPlayerVirtualWorld(playerid,Haus[NearestHaus(playerid)][haus_vw]);
  134.             SetPVarInt(playerid,"ImHaus",NearestHaus(playerid));
  135.             return SendClientMessage(playerid,-1,"Du hast das Haus betreten.");
  136.         }
  137.         else if(Haus[NearestHaus(playerid)][haus_lock])return SendClientMessage(playerid,-1,"Dieses Haus ist abgeschlossen.");
  138.     }
  139.     return 1;
  140. }
  141.  
  142. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  143. {
  144.     switch(dialogid)
  145.     {
  146.         case DIALOG_INT_AUSWAHL:
  147.         {
  148.             if(response)
  149.             {
  150.                 switch(listitem)
  151.                 {
  152.                     case 0:return ShowPlayerDialog(playerid,DIALOG_INT_8_ZIMMER,DIALOG_STYLE_LIST,"8 Zimmer","Luxus_1","Auswählen","Abbrechen");
  153.                     case 1:return SetPVarInt(playerid,"CHAUS_INT",27),ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  154.                     case 2:return ShowPlayerDialog(playerid,DIALOG_INT_6_ZIMMER,DIALOG_STYLE_LIST,"6 Zimmer","Luxus\nHaus_1\nHaus_2","Auswählen","Abbrechen");
  155.                     case 3:return ShowPlayerDialog(playerid,DIALOG_INT_5_ZIMMER,DIALOG_STYLE_LIST,"5 Zimmer","Haus\nApartment_1\nApartment_2\nSlum","Auswählen","Abbrechen");
  156.                     case 4:return ShowPlayerDialog(playerid,DIALOG_INT_4_ZIMMER,DIALOG_STYLE_LIST,"4 Zimmer","Luxus\nHaus_1\nHaus_2\nHaus_3\nHaus_4\nApartment_1\nApartment_2\nApartment_3\nApartment_4\nBedsit","Auswählen","Abbrechen");
  157.                     case 5:return ShowPlayerDialog(playerid,DIALOG_INT_3_ZIMMER,DIALOG_STYLE_LIST,"3 Zimmer","Luxus_1\nLuxus_2\nApartment_1\nApartment_2\nBungalow_1\nBungalow_2","Auswählen","Abbrechen");
  158.                     case 6:return ShowPlayerDialog(playerid,DIALOG_INT_2_ZIMMER,DIALOG_STYLE_LIST,"2 Zimmer","Luxus_1\nLuxus_2\nApartment","Auswählen","Abbrechen");
  159.                     case 7:return ShowPlayerDialog(playerid,DIALOG_INT_1_ZIMMER,DIALOG_STYLE_LIST,"1 Zimmer","Bedsit_1\nBedsit_2\nBedsit_3\nBedsit_4\nWohnwagen","Auswählen","Abbrechen");
  160.                 }
  161.             }
  162.             else SetCameraBehindPlayer(playerid),SetPlayerInterior(playerid,0);
  163.         }
  164.         case DIALOG_INT_8_ZIMMER:
  165.         {
  166.             if(response)
  167.             {
  168.                 switch(listitem)
  169.                 {
  170.                     case 0:SetPVarInt(playerid,"CHAUS_INT",28);
  171.                     case 1:SetPVarInt(playerid,"CHAUS_INT",34);
  172.                 }
  173.                 return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  174.             }
  175.         }
  176.         case DIALOG_INT_6_ZIMMER:
  177.         {
  178.             if(response)
  179.             {
  180.                 switch(listitem)
  181.                 {
  182.                     case 0:SetPVarInt(playerid,"CHAUS_INT",25);
  183.                     case 1:SetPVarInt(playerid,"CHAUS_INT",24);
  184.                     case 2:SetPVarInt(playerid,"CHAUS_INT",26);
  185.                 }
  186.                 return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  187.             }
  188.         }
  189.         case DIALOG_INT_5_ZIMMER:
  190.         {
  191.             if(response)
  192.             {
  193.                 switch(listitem)
  194.                 {
  195.                     case 0:SetPVarInt(playerid,"CHAUS_INT",21);
  196.                     case 1:SetPVarInt(playerid,"CHAUS_INT",20);
  197.                     case 2:SetPVarInt(playerid,"CHAUS_INT",23);
  198.                     case 3:SetPVarInt(playerid,"CHAUS_INT",22);
  199.                 }
  200.                 return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  201.             }
  202.         }
  203.         case DIALOG_INT_4_ZIMMER:
  204.         {
  205.             if(response)
  206.             {
  207.                 switch(listitem)
  208.                 {
  209.                     case 0:SetPVarInt(playerid,"CHAUS_INT",29);
  210.                     case 1:SetPVarInt(playerid,"CHAUS_INT",12);
  211.                     case 2:SetPVarInt(playerid,"CHAUS_INT",15);
  212.                     case 3:SetPVarInt(playerid,"CHAUS_INT",18);
  213.                     case 4:SetPVarInt(playerid,"CHAUS_INT",19);
  214.                     case 5:SetPVarInt(playerid,"CHAUS_INT",11);
  215.                     case 6:SetPVarInt(playerid,"CHAUS_INT",13);
  216.                     case 7:SetPVarInt(playerid,"CHAUS_INT",14);
  217.                     case 8:SetPVarInt(playerid,"CHAUS_INT",17);
  218.                     case 9:SetPVarInt(playerid,"CHAUS_INT",15);
  219.                 }
  220.                 return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  221.             }
  222.         }
  223.         case DIALOG_INT_3_ZIMMER:
  224.         {
  225.             if(response)
  226.             {
  227.                 switch(listitem)
  228.                 {
  229.                     case 0:SetPVarInt(playerid,"CHAUS_INT",30);
  230.                     case 1:SetPVarInt(playerid,"CHAUS_INT",33);
  231.                     case 2:SetPVarInt(playerid,"CHAUS_INT",9);
  232.                     case 3:SetPVarInt(playerid,"CHAUS_INT",10);
  233.                     case 4:SetPVarInt(playerid,"CHAUS_INT",7);
  234.                     case 5:SetPVarInt(playerid,"CHAUS_INT",8);
  235.                 }
  236.                 return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  237.             }
  238.         }
  239.         case DIALOG_INT_2_ZIMMER:
  240.         {
  241.             if(response)
  242.             {
  243.                 switch(listitem)
  244.                 {
  245.                     case 0:SetPVarInt(playerid,"CHAUS_INT",31);
  246.                     case 1:SetPVarInt(playerid,"CHAUS_INT",32);
  247.                     case 2:SetPVarInt(playerid,"CHAUS_INT",6);
  248.                 }
  249.                 return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  250.             }
  251.         }
  252.         case DIALOG_INT_1_ZIMMER:
  253.         {
  254.             if(response)
  255.             {
  256.                 switch(listitem)
  257.                 {
  258.                     case 0:SetPVarInt(playerid,"CHAUS_INT",1);
  259.                     case 1:SetPVarInt(playerid,"CHAUS_INT",2);
  260.                     case 2:SetPVarInt(playerid,"CHAUS_INT",3);
  261.                     case 3:SetPVarInt(playerid,"CHAUS_INT",4);
  262.                     case 4:SetPVarInt(playerid,"CHAUS_INT",0);
  263.                 }
  264.                 return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  265.             }
  266.         }
  267.         case DIALOG_PREIS:
  268.         {
  269.             if(response)
  270.             {
  271.                 if(strval(inputtext) <= 0)return ShowPlayerDialog(playerid,DIALOG_PREIS,DIALOG_STYLE_INPUT,"Preis","Gebe einen Preis für das Haus ein.","Weiter","Abbrechen");
  272.                 SetPVarInt(playerid,"CHAUS_PREIS",strval(inputtext));
  273.                 return ShowPlayerDialog(playerid,DIALOG_LEVEL,DIALOG_STYLE_INPUT,"Level","Gebe das mindest-Level ein, das\n der Spieler besitzen muss,\n um das Haus zu kaufen.","Fertig","Abbrechen");
  274.             }
  275.         }
  276.         case DIALOG_LEVEL:
  277.         {
  278.             if(response)
  279.             {
  280.                 new Float:Pos[3],rooms;
  281.                 GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  282.                 new hi = GetPVarInt(playerid,"CHAUS_INT");
  283.                 if(strval(inputtext) <= 0)return ShowPlayerDialog(playerid,DIALOG_LEVEL,DIALOG_STYLE_INPUT,"Level","Gebe das mindest-Level ein, das\n der Spieler besitzen muss,\n um das Haus zu kaufen.","Fertig","Abbrechen");
  284.                 SetPVarInt(playerid,"CHAUS_LEVEL",strval(inputtext));
  285.                 SetCameraBehindPlayer(playerid),SetPlayerInterior(playerid,0);
  286.                 switch(hi)
  287.                 {
  288.                     case 1:(rooms = 1);
  289.                     case 2:(rooms = 1);
  290.                     case 3:(rooms = 1);
  291.                     case 4:(rooms = 1);
  292.                     case 0:(rooms = 1);
  293.                     case 31:(rooms = 2);
  294.                     case 32:(rooms = 2);
  295.                     case 6:(rooms = 2);
  296.                     case 30:(rooms = 3);
  297.                     case 33:(rooms = 3);
  298.                     case 9:(rooms = 3);
  299.                     case 10:(rooms = 3);
  300.                     case 7:(rooms = 3);
  301.                     case 8:(rooms = 3);
  302.                     case 29:(rooms = 4);
  303.                     case 12:(rooms = 4);
  304.                     case 15:(rooms = 4);
  305.                     case 18:(rooms = 4);
  306.                     case 19:(rooms = 4);
  307.                     case 11:(rooms = 4);
  308.                     case 13:(rooms = 4);
  309.                     case 14:(rooms = 4);
  310.                     case 17:(rooms = 4);
  311.                     case 21:(rooms = 5);
  312.                     case 20:(rooms = 5);
  313.                     case 23:(rooms = 5);
  314.                     case 22:(rooms = 5);
  315.                     case 25:(rooms = 6);
  316.                     case 24:(rooms = 6);
  317.                     case 26:(rooms = 6);
  318.                     case 27:(rooms = 7);
  319.                     case 28:(rooms = 8);
  320.                     case 34:(rooms = 8);
  321.                 }
  322.                 return CreateHaus(Pos[0],Pos[1],Pos[2],IntInfo[hi][posx],IntInfo[hi][posy],IntInfo[hi][posz],GetPVarInt(playerid,"CHAUS_PREIS"),GetPVarInt(playerid,"CHAUS_LEVEL"),IntInfo[hi][h_int],rooms);
  323.             }
  324.         }
  325.         case dKasse:{
  326.             if(!response)return 1;
  327.             switch(listitem){
  328.                 case 0:return ShowPlayerDialog(playerid,dKasse_Aus,DIALOG_STYLE_INPUT,"Hauskasse - Auszahlen","Gebe einen Betrag in Dollar ein,\nwie viel du von der Kasse abheben willst:","Auszahlen","Abbrechen");
  329.                 case 1:return ShowPlayerDialog(playerid,dKasse_Ein,DIALOG_STYLE_INPUT,"Hauskasse - Einzahlen","Gebe einen Betrag in Dollar ein,\nwie viel du in die Kasse einzahlen willst:","Einzahlen","Abbrechen");
  330.             }
  331.         }
  332.         case dKasse_Aus:{
  333.             if(!response)return ocmd_hauskasse(playerid);
  334.             else if(!strval(inputtext))return ocmd_hauskasse(playerid);
  335.             if(Haus[NearestExit(playerid)][haus_kasse] < strval(inputtext))return ocmd_hauskasse(playerid);
  336.             Haus[NearestExit(playerid)][haus_kasse] -= strval(inputtext);
  337.             GivePlayerMoney(playerid,strval(inputtext));
  338.             return ocmd_hauskasse(playerid);
  339.         }
  340.         case dKasse_Ein:{
  341.             if(!response)return ocmd_hauskasse(playerid);
  342.             else if(!strval(inputtext))return ocmd_hauskasse(playerid);
  343.             if(GetPlayerMoney(playerid) < strval(inputtext))return ocmd_hauskasse(playerid);
  344.             Haus[NearestExit(playerid)][haus_kasse] += strval(inputtext);
  345.             GivePlayerMoney(playerid,-strval(inputtext));
  346.             return ocmd_hauskasse(playerid);
  347.         }
  348.     }
  349.     return 0;
  350. }
  351.  
  352. ocmd:chaus(playerid)
  353. {
  354.     if(!IsPlayerAdmin(playerid))return 1;
  355.     new free = H_FreeSlot();
  356.     if(free == -1)return SendClientMessage(playerid,-1,"Es können keine Häuser mehr erstellt werden! Erhöhen Sie die 'MAX_HAUS'-Zahl im Script!");
  357.     return ShowPlayerDialog(playerid,DIALOG_INT_AUSWAHL,DIALOG_STYLE_LIST,"Haus erstellen - Interior","8 Zimmer\n7 Zimmer\n6 Zimmer\n5 Zimmer\n4 Zimmer\n3 Zimmer\n2 Zimmer\n1 Zimmer","Auswählen","Abbrechen");
  358. }
  359.  
  360. ocmd@3:dhaus,delhaus,deletehaus(playerid,p[])
  361. {
  362.     if(!IsPlayerAdmin(playerid))return 1;
  363.     if(NearestHaus(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
  364.     SendClientMessage(playerid,-1,"Du hast das Haus erfolgreich gelöscht.");
  365.     return DelHaus(NearestHaus(playerid));
  366. }
  367.  
  368. ocmd@2:hauskaufen,buyhaus(playerid,p[])
  369. {
  370.     if(NearestHaus(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
  371.     if(Haus[NearestHaus(playerid)][haus_vkt] == 1)return SendClientMessage(playerid,-1,"Dieses Haus wurde bereits gekauft!");
  372.     if(GetPlayerScore(playerid) < Haus[NearestHaus(playerid)][haus_level])return SendClientMessage(playerid,-1,"Dein Level ist zu niedrig!");
  373.     if(GetPlayerMoney(playerid) < Haus[NearestHaus(playerid)][haus_preis])return SendClientMessage(playerid,-1,"Du hast nicht genug Geld bei!");
  374.    
  375.     DestroyDynamicMapIcon(Haus[NearestHaus(playerid)][haus_icon]);
  376.     Haus[NearestHaus(playerid)][haus_icon] = CreateDynamicMapIcon(Haus[NearestHaus(playerid)][haus_x],Haus[NearestHaus(playerid)][haus_y],Haus[NearestHaus(playerid)][haus_z],32,-1,-1,-1,-1,H_DIS);
  377.     GivePlayerMoney(playerid,-Haus[NearestHaus(playerid)][haus_preis]);
  378.     new str[128]; format(Haus[NearestHaus(playerid)][haus_besitzer],MAX_PLAYER_NAME,Name(playerid));
  379.     DestroyDynamic3DTextLabel(Haus[NearestHaus(playerid)][haus_label]);
  380.     format(str,128,"Hausnummer: %i\nBesitzer: %s\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[NearestHaus(playerid)][haus_id],Name(playerid),Haus[NearestHaus(playerid)][haus_level],Haus[NearestHaus(playerid)][haus_preis],(Haus[NearestHaus(playerid)][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
  381.     CreateDynamic3DTextLabel(str,-1,Haus[NearestHaus(playerid)][haus_x],Haus[NearestHaus(playerid)][haus_y],Haus[NearestHaus(playerid)][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
  382.     return Haus[NearestHaus(playerid)][haus_vkt] = 1;
  383. }
  384. ocmd@2:hausverkaufen,sellhaus(playerid,p[])
  385. {
  386.     new str[128];
  387.     if(NearestHaus(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
  388.     if(strcmp(Haus[NearestHaus(playerid)][haus_besitzer],Name(playerid),false))return SendClientMessage(playerid,-1,"Dieses Haus gehört dir nicht!");
  389.    
  390.     GivePlayerMoney(playerid,Haus[NearestHaus(playerid)][haus_preis]);
  391.     format(Haus[NearestHaus(playerid)][haus_besitzer],MAX_PLAYER_NAME,"Niemand");
  392.     format(str,128,"Hausnummer: %i\nBesitzer: Niemand\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[NearestHaus(playerid)][haus_id],Haus[NearestHaus(playerid)][haus_level],Haus[NearestHaus(playerid)][haus_preis],(Haus[NearestHaus(playerid)][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
  393.     DestroyDynamic3DTextLabel(Haus[NearestHaus(playerid)][haus_label]),DestroyDynamicMapIcon(Haus[NearestHaus(playerid)][haus_icon]);
  394.     Haus[NearestHaus(playerid)][haus_icon] = CreateDynamicMapIcon(Haus[NearestHaus(playerid)][haus_x],Haus[NearestHaus(playerid)][haus_y],Haus[NearestHaus(playerid)][haus_z],31,-1,-1,-1,-1,H_DIS);
  395.     Haus[NearestHaus(playerid)][haus_label] = CreateDynamic3DTextLabel(str,-1,Haus[NearestHaus(playerid)][haus_x],Haus[NearestHaus(playerid)][haus_y],Haus[NearestHaus(playerid)][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
  396.     return Haus[NearestHaus(playerid)][haus_vkt] = 0;
  397. }
  398. ocmd:hauskasse(playerid)
  399. {
  400.     if(!GetPVarInt(playerid,"ImHaus"))return SendClientMessage(playerid,-1,"Du bist in keinem Haus!");
  401.     new ID = GetPVarInt(playerid,"ImHaus");
  402.     new string[128]; format(string,128,"Auszahlen: Es befinden sich '%d$' in der Kasse\nEinzahlen: Du hast gerade '%d$' dabei.",Haus[ID][haus_kasse],GetPlayerMoney(playerid));
  403.     return ShowPlayerDialog(playerid,dKasse,DIALOG_STYLE_LIST,"Hauskasse",string,"Auswählen","Abbrechen");
  404. }
  405.  
  406. ocmd:hheilen(playerid)
  407. {
  408.     if(!GetPVarInt(playerid,"ImHaus"))return SendClientMessage(playerid,-1,"Du bist in keinem Haus!");
  409.     new ID = GetPVarInt(playerid,"ImHaus");
  410.     if(Haus[ID][haus_heal] == 0)return SendClientMessage(playerid,-1,"Dieses Haus besitzt nicht das Heil-Upgrade! ( /heilupgrade )");
  411.     SetPlayerHealth(playerid,100),SetPlayerArmour(playerid,100);
  412.     return SendClientMessage(playerid,-1,"Du hast dich geheilt & dir eine Schutzweste angezogen.");
  413. }
  414.  
  415. ocmd:heilupgrade(playerid)
  416. {
  417.     if(!GetPVarInt(playerid,"ImHaus"))return SendClientMessage(playerid,-1,"Du bist in keinem Haus!");
  418.     new ID = GetPVarInt(playerid,"ImHaus");
  419.     if(strcmp(Haus[ID][haus_besitzer],Name(playerid),false))return SendClientMessage(playerid,-1,"Dieses Haus gehört dir nicht!");
  420.     if(Haus[ID][haus_heal])return SendClientMessage(playerid,-1,"Dieses Haus besitzt das Heil-Upgrade bereits!");
  421.     Haus[ID][haus_heal] = 1;
  422.     return SendClientMessage(playerid,-1,"Du hast dir das Heil-Upgrade gekauft. -> /hheilen");
  423. }
  424.  
  425. ocmd:haustuer(playerid)
  426. {
  427.     if(NearestHaus(playerid) == -1 && NearestExit(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
  428.     if(NearestHaus(playerid) != -1 && strcmp(Haus[NearestHaus(playerid)][haus_besitzer],Name(playerid),false))return SendClientMessage(playerid,-1,"Dieses Haus gehört dir nicht!");
  429.     else if(NearestExit(playerid) != -1 && strcmp(Haus[NearestExit(playerid)][haus_besitzer],Name(playerid),false))return SendClientMessage(playerid,-1,"Dieses Haus gehört dir nicht!");
  430.     new _i; if(NearestExit(playerid) != -1) _i = NearestExit(playerid);
  431.     else if(NearestHaus(playerid) != -1) _i = NearestHaus(playerid);
  432.     switch(Haus[_i][haus_lock])
  433.     {
  434.         case 0:Haus[_i][haus_lock] = 1,SendClientMessage(playerid,-1,"Du hast dein Haus abgeschlossen.");
  435.         case 1:Haus[_i][haus_lock] = 0,SendClientMessage(playerid,-1,"Du hast dein Haus aufgeschlossen.");
  436.     }
  437.     DestroyDynamic3DTextLabel(Haus[_i][haus_label]);
  438.     new str[128]; format(str,128,"Hausnummer: %i\nBesitzer: '%s'\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[_i][haus_id],Haus[_i][haus_besitzer],Haus[_i][haus_level],Haus[_i][haus_preis],(Haus[_i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
  439.     Haus[_i][haus_label] = CreateDynamic3DTextLabel(str,-1,Haus[_i][haus_x],Haus[_i][haus_y],Haus[_i][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
  440.     return 1;
  441. }
  442.  
  443. ocmd:haushilfe(playerid)
  444. {
  445.     new str[512]; format(str,sizeof(str)," -> /heilupgrade - Damit kannst du dir das Heil-Upgrade kaufen.\
  446.     \n -> /hheilen - Damit kannst du dich heilen, wenn du das Heil-Upgrade gekauft hast.\n -> /hauskasse - Damit kannst du gucken, wie viel Geld in der \
  447.     Hauskasse drin ist.\n -> /kaufehaus - Damit kannst du dir ein Haus kaufen.\n -> /verkaufehaus - Damit kannst du dein Haus verkaufen.\
  448.     \n -> /haustuer - damit kannst du dein Haus auf-/zuschließen.");
  449.     return ShowPlayerDialog(playerid,DIALOG_HH,DIALOG_STYLE_MSGBOX,"Haushilfe",str,"Weiter","Schließen");
  450. }
  451.  
  452. stock Name(playerid)
  453. {
  454.     new name[MAX_PLAYER_NAME];
  455.     GetPlayerName(playerid,name,sizeof(name));
  456.     return name;
  457. }
  458.  
  459. stock DelHaus(i)
  460. {
  461.     Haus[i][haus_id] = 0,
  462.     format(Haus[i][haus_besitzer],MAX_PLAYER_NAME,"Niemand");
  463.     Haus[i][haus_preis] = 0,
  464.     Haus[i][haus_x] = 0,
  465.     Haus[i][haus_y] = 0,
  466.     Haus[i][haus_z] = 0,
  467.     Haus[i][haus_xi] = 0,
  468.     Haus[i][haus_yi] = 0,
  469.     Haus[i][haus_zi] = 0,
  470.     Haus[i][haus_level] = 0,
  471.     Haus[i][haus_rooms] = 0,
  472.     Haus[i][haus_int] = 0,
  473.     Haus[i][haus_lock] = 0,
  474.     Haus[i][haus_vkt] = 0,
  475.     Haus[i][haus_heal] = 0,
  476.     Haus[i][haus_kasse] = 0;
  477.     DestroyDynamicPickup(Haus[i][haus_pickup]),DestroyDynamic3DTextLabel(Haus[i][haus_label]),DestroyDynamicMapIcon(Haus[i][haus_icon]);
  478.     return 1;
  479. }
  480.  
  481. stock LoadHauser(){
  482.     if(!fexist(HAUS_FILE)){
  483.         new File:tfFile=fopen(HAUS_FILE,io_write);
  484.         fclose(tfFile);
  485.     }
  486.     new File:fFile=fopen(HAUS_FILE,io_read),Content[128],i = 1,count = 0;
  487.     while(fread(fFile,Content)){
  488.         StripNewLine(Content);
  489.         sscanf(Content,"isiffffffiiiiiii",Haus[i][haus_id],Haus[i][haus_besitzer],Haus[i][haus_preis],Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],
  490.         Haus[i][haus_xi],Haus[i][haus_yi],Haus[i][haus_zi],Haus[i][haus_level],Haus[i][haus_rooms],Haus[i][haus_int],Haus[i][haus_lock],Haus[i][haus_vkt],
  491.         Haus[i][haus_heal],Haus[i][haus_kasse]);
  492.         switch(Haus[i][haus_vkt]){
  493.             case 0:format(Content,128,"Hausnummer: %i\nBesitzer: Niemand\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[i][haus_id],Haus[i][haus_level],Haus[i][haus_preis],(Haus[i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet")),Haus[i][haus_icon] = CreateDynamicMapIcon(Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],31,-1,-1,-1,-1,H_DIS);
  494.             case 1:format(Content,128,"Hausnummer: %i\nBesitzer: '%s'\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[i][haus_id],Haus[i][haus_besitzer],Haus[i][haus_level],Haus[i][haus_preis],(Haus[i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet")),Haus[i][haus_icon] = CreateDynamicMapIcon(Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],32,-1,-1,-1,-1,H_DIS);
  495.         }
  496.         DestroyDynamic3DTextLabel(Haus[i][haus_label]),DestroyDynamicPickup(Haus[i][haus_pickup]);
  497.         Haus[i][haus_pickup] = CreateDynamicPickup(1273 ,23,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],-1,-1,-1,20);
  498.         Haus[i][haus_label] = CreateDynamic3DTextLabel(Content,-1,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
  499.         i++, count ++;
  500.     }
  501.     fclose(fFile);
  502.     return printf("  '%d' Haus / Häuser wurden geladen & erstellt.",count);
  503. }
  504.  
  505. stock SaveHauser(){
  506.     if(fexist(HAUS_FILE))fremove(HAUS_FILE);
  507.     new File:fFile=fopen(HAUS_FILE,io_append),Content[128];
  508.     new i = 1;while(i<MAX_HAUS){
  509.         if(Haus[i][haus_id] > 0){
  510.             format(Content,sizeof(Content),"%i %s %i %f %f %f %f %f %f %i %i %i %i %i %i %i\r\n",Haus[i][haus_id],Haus[i][haus_besitzer],Haus[i][haus_preis],Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],
  511.             Haus[i][haus_xi],Haus[i][haus_yi],Haus[i][haus_zi],Haus[i][haus_level],Haus[i][haus_rooms],Haus[i][haus_int],Haus[i][haus_lock],Haus[i][haus_vkt],
  512.             Haus[i][haus_heal],Haus[i][haus_kasse]);
  513.             fwrite(fFile,Content);
  514.         }i++;
  515.     }return fclose(fFile);
  516. }
  517.  
  518. stock CreateHaus(Float:x,Float:y,Float:z,Float:xi,Float:yi,Float:zi,preis,level,int,rooms){
  519.     new i = H_FreeSlot();
  520.     Haus[i][haus_id] = i,
  521.     format(Haus[i][haus_besitzer],MAX_PLAYER_NAME,"Niemand");
  522.     Haus[i][haus_preis] = preis,
  523.     Haus[i][haus_x] = x,
  524.     Haus[i][haus_y] = y,
  525.     Haus[i][haus_z] = z,
  526.     Haus[i][haus_xi] = xi,
  527.     Haus[i][haus_yi] = yi,
  528.     Haus[i][haus_zi] = zi,
  529.     Haus[i][haus_level] = level,
  530.     Haus[i][haus_rooms] = rooms,
  531.     Haus[i][haus_int] = int,
  532.     Haus[i][haus_lock] = 1,
  533.     Haus[i][haus_vkt] = 0,
  534.     Haus[i][haus_heal] = 0,
  535.     Haus[i][haus_kasse] = 0;
  536.     new str[128];
  537.     switch(Haus[i][haus_vkt]){
  538.         case 0:format(str,128,"Hausnummer: %i\nBesitzer: Niemand\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[i][haus_id],Haus[i][haus_level],Haus[i][haus_preis],(Haus[i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
  539.         case 1:format(str,128,"Hausnummer: %i\nBesitzer: '%s'\nLevel: %d\nPreis: $%d\n\nStatus: '%s'",Haus[i][haus_id],Haus[i][haus_besitzer],Haus[i][haus_level],Haus[i][haus_preis],(Haus[i][haus_lock] == 1) ? ("geschlossen") : ("geöffnet"));
  540.     }
  541.     DestroyDynamic3DTextLabel(Haus[i][haus_label]),DestroyDynamicPickup(Haus[i][haus_pickup]);
  542.     Haus[i][haus_pickup] = CreateDynamicPickup(1273 ,23,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],-1,-1,-1,20);
  543.     Haus[i][haus_label] = CreateDynamic3DTextLabel(str,-1,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
  544.     Haus[i][haus_icon] = CreateDynamicMapIcon(Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z],31,-1,-1,-1,-1,H_DIS);
  545.     return 1;
  546. }
  547.  
  548. stock NearestHaus(playerid)
  549. {
  550.     new Float:dist0,ID = -1;
  551.     new Float:dist1 = 12,Float:px,Float:py,Float:pz;
  552.     for(new i = 1; i<MAX_HAUS; i++)
  553.     {
  554.         GetPlayerPos(playerid,px,py,pz);
  555.         dist0 = GetPlayerDistanceFromPoint(playerid,Haus[i][haus_x],Haus[i][haus_y],Haus[i][haus_z]);
  556.         if(dist0 < dist1) dist1 = dist0,ID = i;
  557.     }
  558.     return ID;
  559. }
  560.  
  561. stock NearestExit(playerid)
  562. {
  563.     new Float:dist0,ID = -1;
  564.     new Float:dist1 = 12,Float:px,Float:py,Float:pz;
  565.     for(new i = 1; i<MAX_HAUS; i++)
  566.     {
  567.         if(Haus[i][haus_vw]!=GetPlayerVirtualWorld(playerid)) continue;
  568.         GetPlayerPos(playerid,px,py,pz);
  569.         dist0 = GetPlayerDistanceFromPoint(playerid,Haus[i][haus_xi],Haus[i][haus_yi],Haus[i][haus_zi]);
  570.         if(dist0 < dist1) dist1 = dist0,ID = i;
  571.     }
  572.     return ID;
  573. }
  574.  
  575. stock H_FreeSlot(){
  576.     new ID = -1;
  577.     for(new i = 1; i<MAX_HAUS; i++){
  578.         if(Haus[i][haus_id] > 0)continue;
  579.         ID = i;
  580.         break;
  581.     }
  582.     return ID;
  583. }
  584.  
  585. stock StripNewLine(string[]){
  586.     new len=strlen(string);
  587.     if(string[0]==0)return;if((string[len-1]=='\n')||(string[len-1]=='\r')){
  588.         string[len-1]=0; if(string[0]==0)return; if((string[len-2]=='\n')||(string[len-2]=='\r'))string[len-2]=0;
  589.     }
  590. }
  591.  
  592. stock sscanf(string[], format[], {Float,_}:...)
  593. {
  594.     #if defined isnull
  595.         if (isnull(string))
  596.     #else
  597.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  598.     #endif
  599.         {
  600.             return format[0];
  601.         }
  602.     #pragma tabsize 4
  603.     new
  604.         formatPos = 0,
  605.         stringPos = 0,
  606.         paramPos = 2,
  607.         paramCount = numargs(),
  608.         delim = ' ';
  609.     while (string[stringPos] && string[stringPos] <= ' ')
  610.     {
  611.         stringPos++;
  612.     }
  613.     while (paramPos < paramCount && string[stringPos])
  614.     {
  615.         switch (format[formatPos++])
  616.         {
  617.             case '\0':
  618.             {
  619.                 return 0;
  620.             }
  621.             case 'i', 'd':
  622.             {
  623.                 new
  624.                     neg = 1,
  625.                     num = 0,
  626.                     ch = string[stringPos];
  627.                 if (ch == '-')
  628.                 {
  629.                     neg = -1;
  630.                     ch = string[++stringPos];
  631.                 }
  632.                 do
  633.                 {
  634.                     stringPos++;
  635.                     if ('0' <= ch <= '9')
  636.                     {
  637.                         num = (num * 10) + (ch - '0');
  638.                     }
  639.                     else
  640.                     {
  641.                         return -1;
  642.                     }
  643.                 }
  644.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  645.                 setarg(paramPos, 0, num * neg);
  646.             }
  647.             case 'h', 'x':
  648.             {
  649.                 new
  650.                     num = 0,
  651.                     ch = string[stringPos];
  652.                 do
  653.                 {
  654.                     stringPos++;
  655.                     switch (ch)
  656.                     {
  657.                         case 'x', 'X':
  658.                         {
  659.                             num = 0;
  660.                             continue;
  661.                         }
  662.                         case '0' .. '9':
  663.                         {
  664.                             num = (num << 4) | (ch - '0');
  665.                         }
  666.                         case 'a' .. 'f':
  667.                         {
  668.                             num = (num << 4) | (ch - ('a' - 10));
  669.                         }
  670.                         case 'A' .. 'F':
  671.                         {
  672.                             num = (num << 4) | (ch - ('A' - 10));
  673.                         }
  674.                         default:
  675.                         {
  676.                             return -1;
  677.                         }
  678.                     }
  679.                 }
  680.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  681.                 setarg(paramPos, 0, num);
  682.             }
  683.             case 'c':
  684.             {
  685.                 setarg(paramPos, 0, string[stringPos++]);
  686.             }
  687.             case 'f':
  688.             {
  689.  
  690.                 new changestr[16], changepos = 0, strpos = stringPos;    
  691.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  692.                 {
  693.                     changestr[changepos++] = string[strpos++];
  694.                     }
  695.                 changestr[changepos] = '\0';
  696.                 setarg(paramPos,0,_:floatstr(changestr));
  697.             }
  698.             case 'p':
  699.             {
  700.                 delim = format[formatPos++];
  701.                 continue;
  702.             }
  703.             case '\'':
  704.             {
  705.                 new
  706.                     end = formatPos - 1,
  707.                     ch;
  708.                 while ((ch = format[++end]) && ch != '\'') {}
  709.                 if (!ch)
  710.                 {
  711.                     return -1;
  712.                 }
  713.                 format[end] = '\0';
  714.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  715.                 {
  716.                     if (format[end + 1])
  717.                     {
  718.                         return -1;
  719.                     }
  720.                     return 0;
  721.                 }
  722.                 format[end] = '\'';
  723.                 stringPos = ch + (end - formatPos);
  724.                 formatPos = end + 1;
  725.             }
  726.             case 'u':
  727.             {
  728.                 new
  729.                     end = stringPos - 1,
  730.                     id = 0,
  731.                     bool:num = true,
  732.                     ch;
  733.                 while ((ch = string[++end]) && ch != delim)
  734.                 {
  735.                     if (num)
  736.                     {
  737.                         if ('0' <= ch <= '9')
  738.                         {
  739.                             id = (id * 10) + (ch - '0');
  740.                         }
  741.                         else
  742.                         {
  743.                             num = false;
  744.                         }
  745.                     }
  746.                 }
  747.                 if (num && IsPlayerConnected(id))
  748.                 {
  749.                     setarg(paramPos, 0, id);
  750.                 }
  751.                 else
  752.                 {
  753.                     #if !defined foreach
  754.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  755.                         #define __SSCANF_FOREACH__
  756.                     #endif
  757.                     string[end] = '\0';
  758.                     num = false;
  759.                     new
  760.                         name[MAX_PLAYER_NAME];
  761.                     id = end - stringPos;
  762.                     foreach (Player, playerid)
  763.                     {
  764.                         GetPlayerName(playerid, name, sizeof (name));
  765.                         if (!strcmp(name, string[stringPos], true, id))
  766.                         {
  767.                             setarg(paramPos, 0, playerid);
  768.                             num = true;
  769.                             break;
  770.                         }
  771.                     }
  772.                     if (!num)
  773.                     {
  774.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  775.                     }
  776.                     string[end] = ch;
  777.                     #if defined __SSCANF_FOREACH__
  778.                         #undef foreach
  779.                         #undef __SSCANF_FOREACH__
  780.                     #endif
  781.                 }
  782.                 stringPos = end;
  783.             }
  784.             case 's', 'z':
  785.             {
  786.                 new
  787.                     i = 0,
  788.                     ch;
  789.                 if (format[formatPos])
  790.                 {
  791.                     while ((ch = string[stringPos++]) && ch != delim)
  792.                     {
  793.                         setarg(paramPos, i++, ch);
  794.                     }
  795.                     if (!i)
  796.                     {
  797.                         return -1;
  798.                     }
  799.                 }
  800.                 else
  801.                 {
  802.                     while ((ch = string[stringPos++]))
  803.                     {
  804.                         setarg(paramPos, i++, ch);
  805.                     }
  806.                 }
  807.                 stringPos--;
  808.                 setarg(paramPos, i, '\0');
  809.             }
  810.             default:
  811.             {
  812.                 continue;
  813.             }
  814.         }
  815.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  816.         {
  817.             stringPos++;
  818.         }
  819.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  820.         {
  821.             stringPos++;
  822.         }
  823.         paramPos++;
  824.     }
  825.     do
  826.     {
  827.         if ((delim = format[formatPos++]) > ' ')
  828.         {
  829.             if (delim == '\'')
  830.             {
  831.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  832.             }
  833.             else if (delim != 'z')
  834.             {
  835.                 return delim;
  836.             }
  837.         }
  838.     }
  839.     while (delim > ' ');
  840.     return 0;
  841. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement