Guest User

Untitled

a guest
Mar 21st, 2013
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 24.57 KB | None | 0 0
  1. #include a_samp
  2. #include ocmd
  3.  
  4. #define MAX_HAUSER 80
  5. #define STARTMAPICON 19
  6. #define INTERIOR_TYPWAHL                        500
  7. #define INTERIOR_WAHL                           501
  8. #define INTERIOR_WAHL_BEDSIT            502
  9. #define INTERIOR_WAHL_APPARTMENT        503
  10. #define INTERIOR_WAHL_BUNGALOW          504
  11. #define INTERIOR_WAHL_LUXUS                     505
  12. #define INTERIOR_WAHL_HAUS                      506
  13. #define HAUS_PREIS                                      507
  14.  
  15. enum h
  16. {
  17.         Besitzer[MAX_PLAYER_NAME],
  18.         bool:Gekauft,
  19.         bool:Abgeschlossen,
  20.         Float:Pos[6],
  21.         Int,
  22.         VirtualWorld,
  23.         Preis,
  24.         PickupID,
  25.         Text3D:Label
  26. };
  27. new Haus[MAX_HAUSER][h];
  28. enum ii
  29. {
  30.         Float:posx,
  31.         Float:posy,
  32.         Float:posz,
  33.         _interior,
  34. };
  35. new IntInfo[][ii] =
  36. {
  37.         { 1.200000,-3.400000,999.400024,2 }, // Trailer
  38.         { 244.500000,305.000000,999.099975,1 },// 'Bedsit'
  39.         { 267.100006,305.000000,999.099975,2 },// 'Bedsit'
  40.         { 301.299987,306.299987,1003.500000,4 },// 'Bedsit'
  41.         { 344.299987,305.200012,999.099975,6 },// 'Bedsit'
  42.         { 446.100006,507.899993,1001.400024,12 },// '2 Zimmer Apartment'
  43.         { -42.400001,1408.199951,1084.400024,8 },// '3 Zimmer Bungalow'
  44.         { 2464.100097,-1698.599975,1013.500000,2 },// '3 Zimmer Bungalow'
  45.         { 386.100006,1471.800048,1080.099975,15 },// '3 Zimmer Apartment'
  46.         { 221.600006,1143.599975,1082.599975,4 },// '3 Zimmer Apartment'
  47.         { 260.600006,1238.800048,1084.199951,9 },// '4 Zimmer Apartment'
  48.         { 261.000000,1286.000000,1080.199951,4 },// '4 Zimmer Haus'
  49.         { 745.299987,1437.699951,1102.699951,6 },// '4 Zimmer Apartment'
  50.         { 376.299987,1417.199951,1081.300048,15 },// '4 Zimmer Apartment'
  51.         { 27.100000,1341.099975,1084.300048,10 },// '4 Zimmer Haus'
  52.         { 2526.399902,-1679.000000,1015.400024,1 },// '4 Zimmer Bedsit'
  53.         { 222.800003,1288.699951,1082.099975,1 },// '4 Zimmer Apartment'
  54.         { 23.000000,1405.599975,1084.400024,5 },// '4 Zimmer Haus'
  55.         { 235.300003,1189.199951,1080.199951,3 },// '4 Zimmer Haus'
  56.         { 447.000000,1400.300048,1084.300048,2 },// '5 Zimmer Apartment'
  57.         { 234.199996,1064.900024,1084.199951,6 },// '5 Zimmer Haus'
  58.         { 327.899993,1478.300048,1084.400024,15 },// '5 Zimmer Slum'
  59.         { 295.399993,1473.199951,1080.199951,15 },// '5 Zimmer Apartment'
  60.         { 140.399993,1370.300048,1083.800048,5 },// '6 Zimmer Haus'
  61.         { 489.700012,1402.500000,1080.199951,2 },// '6 Zimmer Luxus'
  62.         { 83.300003,1324.699951,1083.800048,9 },// '6 Zimmer Haus'
  63.         { 231.399993,1114.099975,1080.900024,5 },// '7 Zimmer Luxus'
  64.         { 225.600006,1023.500000,1084.000000,7 },// '8 Zimmer Luxus'
  65.         { -285.899993,1470.800048,1084.300048,15 },// '4 Zimmer Luxus'
  66.         { -262.700012,1456.599975,1084.300048,4 },// '3 Zimmer Luxus'
  67.         { -68.800003,1354.699951,1080.199951,6 },// '2 Zimmer Luxus'
  68.         { 2254.300048,-1140.000000,1050.599975,9 },// '2 Zimmer Luxus'
  69.         { 2261.300048,-1135.900024,1050.599975,10 },// '3 Zimmer Luxus'
  70.         { 2324.399902,-1147.500000,1050.699951,12 }// '8 Zimmer Luxus'
  71. };
  72. public OnFilterScriptInit()
  73. {
  74.         for(new i;i!=MAX_HAUSER;i++) LoadHaus(i);
  75.         return true;
  76. }
  77. public OnFilterScriptExit()
  78. {
  79.         for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
  80.         return true;
  81. }
  82. public OnGameModeExit()
  83. {
  84.         for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
  85.         return true;
  86. }
  87. public OnPlayerConnect(playerid)
  88. {
  89.         new pfad[20];
  90.         for(new i;i!=MAX_HAUSER;i++)
  91.         {
  92.                 format(pfad,20,"Häuser/Haus %d.ini",i);
  93.                 if(fexist(pfad)) SetPlayerMapIcon(playerid,STARTMAPICON+i,Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2],(Haus[i][Gekauft])?32:31,0xFFFFFFFF);
  94.         }
  95.         return true;
  96. }
  97. stock LoadHaus(hausid)
  98. {
  99.         new inhalt[35],File:f;
  100.         format(inhalt,20,"Häuser/Haus %d.ini",hausid);
  101.         if(!fexist(inhalt)) return false;
  102.         f=fopen(inhalt,io_read);
  103.         while(fread(f,inhalt))
  104.         {
  105.                 StripNL(inhalt);
  106.                 if(strfind(inhalt,"Besitzer: ")!=-1) strdel(inhalt,0,10), format(Haus[hausid][Besitzer],MAX_PLAYER_NAME,inhalt);
  107.                 else if(strfind(inhalt,"Gekauft: ")!=-1) strdel(inhalt,0,9), Haus[hausid][Gekauft]=(strval(inhalt))?true:false;
  108.                 else if(strfind(inhalt,"Abgeschlossen: ")!=-1) strdel(inhalt,0,15), Haus[hausid][Abgeschlossen]=(strval(inhalt))?true:false;
  109.                 else if(strfind(inhalt,"AußenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][0]=floatstr(inhalt);
  110.                 else if(strfind(inhalt,"AußenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][1]=floatstr(inhalt);
  111.                 else if(strfind(inhalt,"AußenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][2]=floatstr(inhalt);
  112.                 else if(strfind(inhalt,"InnenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][3]=floatstr(inhalt);
  113.                 else if(strfind(inhalt,"InnenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][4]=floatstr(inhalt);
  114.                 else if(strfind(inhalt,"InnenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][5]=floatstr(inhalt);
  115.                 else if(strfind(inhalt,"Interior: ")!=-1) strdel(inhalt,0,10), Haus[hausid][Int]=strval(inhalt);
  116.                 else if(strfind(inhalt,"VirtualWorld: ")!=-1) strdel(inhalt,0,14), Haus[hausid][VirtualWorld]=strval(inhalt);
  117.                 else if(strfind(inhalt,"Preis: ")!=-1) strdel(inhalt,0,7), Haus[hausid][Preis]=strval(inhalt);
  118.         }
  119.         Haus[hausid][PickupID] = CreatePickup((Haus[hausid][Gekauft])?1239:1273,1,Haus[hausid][Pos][0],Haus[hausid][Pos][1],Haus[hausid][Pos][2]);
  120.         fclose(f);
  121.         return true;
  122. }
  123. stock SaveHaus(hausid)
  124. {
  125.         if(!Haus[hausid][Int]) return false;
  126.         new inhalt[35],File:f;
  127.         format(inhalt,35,"Häuser/Haus %d.ini",hausid);
  128.         f=fopen(inhalt,io_write);
  129.         format(inhalt,35,"Besitzer: %s\r\n",Haus[hausid][Besitzer]),fwrite(f,inhalt);
  130.         format(inhalt,35,"Gekauft: %d\r\n",Haus[hausid][Gekauft]),fwrite(f,inhalt);
  131.         format(inhalt,35,"Abgeschlossen: %d\r\n",Haus[hausid][Abgeschlossen]),fwrite(f,inhalt);
  132.         format(inhalt,35,"AußenPosX: %f\r\n",Haus[hausid][Pos][0]),fwrite(f,inhalt);
  133.         format(inhalt,35,"AußenPosY: %f\r\n",Haus[hausid][Pos][1]),fwrite(f,inhalt);
  134.         format(inhalt,35,"AußenPosZ: %f\r\n",Haus[hausid][Pos][2]),fwrite(f,inhalt);
  135.         format(inhalt,35,"InnenPosX: %f\r\n",Haus[hausid][Pos][3]),fwrite(f,inhalt);
  136.         format(inhalt,35,"InnenPosY: %f\r\n",Haus[hausid][Pos][4]),fwrite(f,inhalt);
  137.         format(inhalt,35,"InnenPosZ: %f\r\n",Haus[hausid][Pos][5]),fwrite(f,inhalt);
  138.         format(inhalt,35,"Interior: %d\r\n",Haus[hausid][Int]),fwrite(f,inhalt);
  139.         format(inhalt,35,"VirtualWorld: %d\r\n",Haus[hausid][VirtualWorld]),fwrite(f,inhalt);
  140.         format(inhalt,35,"Preis: %d\r\n",Haus[hausid][Preis]),fwrite(f,inhalt);
  141.         fclose(f);
  142.         return true;
  143. }
  144. stock CreateHaus(Owner[],Float:X,Float:Y,Float:Z,Float:iX,Float:iY,Float:iZ,Interior,p)
  145. {
  146.         new ID=GetFreeHausID();
  147.         if(ID==-1) print("Es sind bereits zuviele Häuser erstellt worden | Lösch zu erst eins");
  148.         format(Haus[ID][Besitzer],MAX_PLAYER_NAME,Owner);
  149.         Haus[ID][Gekauft]=false;
  150.         Haus[ID][Abgeschlossen]=true;
  151.         Haus[ID][Pos][0]=X;
  152.         Haus[ID][Pos][1]=Y;
  153.         Haus[ID][Pos][2]=Z;
  154.         Haus[ID][Pos][3]=iX;
  155.         Haus[ID][Pos][4]=iY;
  156.         Haus[ID][Pos][5]=iZ;
  157.         Haus[ID][Int]=Interior;
  158.         Haus[ID][Preis]=p;
  159.         Haus[ID][VirtualWorld]=GetFreeInteriorVW(Haus[ID][Int]);
  160.         Haus[ID][PickupID] = CreatePickup(1273,1,X,Y,Z);
  161.         for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) SetPlayerMapIcon(i,STARTMAPICON+ID,X,Y,Z,31,0xFFFFFFFF);
  162.         new string[55];
  163.         format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
  164.         Haus[ID][Label] = Create3DTextLabel(string,0x33AA33FF,X,Y,Z,100.0,0,1);
  165.         return ID;
  166. }
  167. stock DeleteHaus(hausid)
  168. {
  169.         strdel(Haus[hausid][Besitzer],0,MAX_PLAYER_NAME);
  170.         Haus[hausid][Gekauft]=false;
  171.         Haus[hausid][Abgeschlossen]=false;
  172.         Haus[hausid][Pos][0]=0;
  173.         Haus[hausid][Pos][1]=0;
  174.         Haus[hausid][Pos][2]=0;
  175.         Haus[hausid][Pos][3]=0;
  176.         Haus[hausid][Pos][4]=0;
  177.         Haus[hausid][Pos][5]=0;
  178.         Haus[hausid][Int]=0;
  179.         Haus[hausid][VirtualWorld]=0;
  180.         DestroyPickup(Haus[hausid][PickupID]);
  181.         Delete3DTextLabel(Haus[hausid][Label]);
  182.         for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) RemovePlayerMapIcon(i,STARTMAPICON+hausid);
  183.         new pfad[20];
  184.         format(pfad,20,"Häuser/Haus %d.ini",hausid);
  185.         fremove(pfad);
  186.         return true;
  187. }
  188. ocmd:hauserstellen(playerid)
  189. {
  190.         if(!IsPlayerAdmin(playerid)) return true;
  191.         ShowPlayerDialog(playerid,INTERIOR_TYPWAHL,DIALOG_STYLE_LIST,"Interior Typ auswählen","Trailer\nBedsit\nAppartment\nBungalow\nLuxus\nHaus","Weiter","Abbrechen");
  192.         return true;
  193. }
  194. ocmd:hauskaufen(playerid)
  195. {
  196.         new ID=GetNearestHaus(playerid,4);
  197.         if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
  198.         if(GetPlayerMoney(playerid)<Haus[ID][Preis]) return SendClientMessage(playerid,-1,"Soviel Geld hast du nicht bei dir");
  199.         if(!strcmp(Haus[ID][Besitzer],"Niemand"))
  200.         {
  201.                 GetPlayerName(playerid,Haus[ID][Besitzer],MAX_PLAYER_NAME);
  202.                 DestroyPickup(Haus[ID][PickupID]);
  203.                 RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
  204.                 SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],32,0xFFFFFFFF);
  205.                 Haus[ID][PickupID] = CreatePickup(1239,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
  206.                 new string[65];
  207.                 format(string,65,"Dieses Haus gehört:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
  208.                 Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
  209.                 return true;
  210.         }
  211.         return SendClientMessage(playerid,-1,"Dieses Haus kann man nicht kaufen");
  212. }
  213. ocmd:hausverkaufen(playerid)
  214. {
  215.         new ID=GetNearestHaus(playerid,4);
  216.         if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
  217.         Haus[ID][Abgeschlossen]=true;
  218.         DestroyPickup(Haus[ID][PickupID]);
  219.         RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
  220.         SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],31,0xFFFFFFFF);
  221.         Haus[ID][PickupID] = CreatePickup(1273,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
  222.         new string[55];
  223.         format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
  224.         Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
  225.         GivePlayerMoney(playerid,Haus[ID][Preis]/2);
  226.         return SendClientMessage(playerid,-1,"Du hast dein Haus erfolgreich verkauft");
  227. }
  228. ocmd:saveallh(playerid)
  229. {
  230.         if(!IsPlayerAdmin(playerid)) return true;
  231.         for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
  232.         return SendClientMessage(playerid,-1,"Aller Häusergespeichert");
  233. }
  234. ocmd:deletehaus(playerid)
  235. {
  236.         if(!IsPlayerAdmin(playerid)) return true;
  237.         new ID=GetNearestHaus(playerid,4);
  238.         if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
  239.         DeleteHaus(ID);
  240.         return SendClientMessage(playerid,-1,"Du hast das Haus erfolgreich gelöscht");
  241. }
  242. ocmd:lockhaus(playerid)
  243. {
  244.         new ID=GetNearestHaus(playerid,4);
  245.         if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
  246.         new name[MAX_PLAYER_NAME];
  247.         GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  248.         if(strcmp(Haus[ID][Besitzer],name)) return SendClientMessage(playerid,-1,"Du bist nicht Besitzer dieses Hauses");
  249.         Haus[ID][Abgeschlossen]=(Haus[ID][Abgeschlossen])?false:true;
  250.         new string[65];
  251.         format(string,65,"Dieses Haus gehört:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
  252.         Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
  253.         return SendClientMessage(playerid,-1,(!Haus[ID][Abgeschlossen])?("Du hast dein Haus aufgeschlossen"):("Du hast dein Haus abgeschlossen"));
  254. }
  255. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  256. {
  257.         switch(dialogid)
  258.         {
  259.                 case INTERIOR_TYPWAHL:
  260.                 {
  261.                         if(!response) return false;
  262.                         switch(listitem)
  263.                         {
  264.                                 case 0:
  265.                                 {
  266.                                         SetPVarInt(playerid,"HUHNFISCH_Slot",0);
  267.                                         ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  268.                                 }
  269.                                 case 1:
  270.                                 {
  271.                                         ShowPlayerDialog(playerid,INTERIOR_WAHL_BEDSIT,DIALOG_STYLE_LIST,"Interior auswählen","Bedsit 1\nBedsit 2\nBedsit 3\nBedsit 4\n4 Zimmer Bedsit\nZurück","Auswählen","Abbruch");
  272.                                         return true;
  273.                                 }
  274.                                 case 2:
  275.                                 {
  276.                                         ShowPlayerDialog(playerid,INTERIOR_WAHL_APPARTMENT,DIALOG_STYLE_LIST,"Interior auswählen","2 Zimmer Apartment\n3 Zimmer Apartment {33AA33}1\n3 Zimmer Apartment {33AA33}2\n4 Zimmer Apartment {33AA33}1\n4 Zimmer Apartment {33AA33}2\n4 Zimmer Apartment {33AA33}3\n4 Zimmer Apartment {33AA33}4\n5 Zimmer Apartment {33AA33}1\n5 Zimmer Apartment {33AA33}2\nZurück","Auswählen","Abbruch");
  277.                                         return true;
  278.                                 }
  279.                                 case 3:
  280.                                 {
  281.                                         ShowPlayerDialog(playerid,INTERIOR_WAHL_BUNGALOW,DIALOG_STYLE_LIST,"Interior auswählen","3 Zimmer Bungalow {33AA33}1\n3 Zimmer Bungalow {33AA33}2\nZurück","Auswählen","Abbruch");
  282.                                         return true;
  283.                                 }
  284.                                 case 4:
  285.                                 {
  286.                                         ShowPlayerDialog(playerid,INTERIOR_WAHL_LUXUS,DIALOG_STYLE_LIST,"Interior auswählen","5 Zimmer Luxus\n6 Zimmer Luxus\n7 Zimmer Luxus\n8 Zimmer Luxus\n4 Zimmer Luxus\n3 Zimmer Luxus {33AA33}1\n2 Zimmer Luxus {33AA33}1\n2 Zimmer Luxus {33AA33}2\n3 Zimmer Luxus {33AA33}2\n8 Zimmer Luxus\nZurück","Auswählen","Abbruch");
  287.                                         return true;
  288.                                 }
  289.                                 case 5:
  290.                                 {
  291.                                         ShowPlayerDialog(playerid,INTERIOR_WAHL_HAUS,DIALOG_STYLE_LIST,"Interior auswählen","4 Zimmer Haus {33AA33}1\n4 Zimmer Haus {33AA33}2\n4 Zimmer Haus {33AA33}3\n4 Zimmer Haus {33AA33}4\n5 Zimmer Haus\n6 Zimmer Haus 1\6 Zimmer Haus 2\nZurück","Auswählen","Abbruch");
  292.                                         return true;
  293.                                 }
  294.                         }
  295.                         return true;
  296.                 }
  297.                 case INTERIOR_WAHL_BEDSIT:
  298.                 {
  299.                         if(!response) return ocmd_hauserstellen(playerid);
  300.                         switch(listitem)
  301.                         {
  302.                                 case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",1);
  303.                                 case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",2);
  304.                                 case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",3);
  305.                                 case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",4);
  306.                                 case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",15);
  307.                                 default: return ocmd_hauserstellen(playerid);
  308.                         }
  309.                         ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  310.                 }
  311.                 case INTERIOR_WAHL_APPARTMENT:
  312.                 {
  313.                         if(!response) return ocmd_hauserstellen(playerid);
  314.                         switch(listitem)
  315.                         {
  316.                                 case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",6);
  317.                                 case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",9);
  318.                                 case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",10);
  319.                                 case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",11);
  320.                                 case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",13);
  321.                                 case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",14);
  322.                                 case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",17);
  323.                                 case 7: SetPVarInt(playerid,"HUHNFISCH_Slot",20);
  324.                                 case 8: SetPVarInt(playerid,"HUHNFISCH_Slot",23);
  325.                                 default: return ocmd_hauserstellen(playerid);
  326.                         }
  327.                         ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  328.                 }
  329.                 case INTERIOR_WAHL_BUNGALOW:
  330.                 {
  331.                         if(!response) return ocmd_hauserstellen(playerid);
  332.                         switch(listitem)
  333.                         {
  334.                                 case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",7);
  335.                                 case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",8);
  336.                                 default: return ocmd_hauserstellen(playerid);
  337.                         }
  338.                         ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  339.                 }
  340.                 case INTERIOR_WAHL_LUXUS:
  341.                 {
  342.                         if(!response) return ocmd_hauserstellen(playerid);
  343.                         switch(listitem)
  344.                         {
  345.                                 case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",22);
  346.                                 case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",25);
  347.                                 case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",27);
  348.                                 case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",28);
  349.                                 case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",29);
  350.                                 case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",30);
  351.                                 case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",31);
  352.                                 case 7: SetPVarInt(playerid,"HUHNFISCH_Slot",32);
  353.                                 case 8: SetPVarInt(playerid,"HUHNFISCH_Slot",33);
  354.                                 case 9: SetPVarInt(playerid,"HUHNFISCH_Slot",34);
  355.                                 default: return ocmd_hauserstellen(playerid);
  356.                         }
  357.                         ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  358.                 }
  359.                 case INTERIOR_WAHL_HAUS:
  360.                 {
  361.                         if(!response) return ocmd_hauserstellen(playerid);
  362.                         switch(listitem)
  363.                         {
  364.                                 case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",12);
  365.                                 case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",15);
  366.                                 case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",18);
  367.                                 case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",19);
  368.                                 case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",21);
  369.                                 case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",24);
  370.                                 case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",26);
  371.                                 default: return ocmd_hauserstellen(playerid);
  372.                         }
  373.                         ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  374.                 }
  375.                 case HAUS_PREIS:
  376.                 {
  377.                         if(!inputtext[0]) return ocmd_hauserstellen(playerid);
  378.                         new preis=strval(inputtext);
  379.                         for(new i,l=strlen(inputtext);i!=l;i++)
  380.                                 if(inputtext[i] >= '0' && inputtext[i] <= '9') continue;
  381.                                 else return ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","{FF0000}Error: {A9C4E4}Ein Preis ist doch kein Text\nWie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  382.  
  383.                         if(!preis) return ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","{FF0000}Error: {A9C4E4}Du musst schon einen Preis über 0 eingeben.\nWie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  384.                         new Float:x,Float:y,Float:z;
  385.                         GetPlayerPos(playerid,x,y,z);
  386.                         new Slot=GetPVarInt(playerid,"HUHNFISCH_Slot");
  387.                         DeletePVar(playerid,"HUHNFISCH_Slot");
  388.                         SetPlayerMapIcon(playerid,STARTMAPICON+CreateHaus("Niemand",x,y,z,IntInfo[Slot][posx],IntInfo[Slot][posy],IntInfo[Slot][posz],IntInfo[Slot][_interior],preis),x,y,z,31,0xFFFFFFFF);
  389.                         return SendClientMessage(playerid,-1,"Haus erfolgreich erstellt");
  390.                 }
  391.         }
  392.         return true;
  393. }
  394. public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
  395. {
  396.         if(newkeys & KEY_SECONDARY_ATTACK)
  397.         {
  398.                 if(!GetPVarInt(playerid,"HUHNFISCH_InHaus"))
  399.                 {
  400.                         new ID=GetNearestHaus(playerid,4);
  401.                         if(ID==-1) return true;
  402.                         if(Haus[ID][Abgeschlossen]) return true;
  403.                         SetPlayerInterior(playerid,Haus[ID][Int]);
  404.                         SetPlayerPos(playerid,Haus[ID][Pos][3],Haus[ID][Pos][4],Haus[ID][Pos][5]);
  405.                         SetPlayerVirtualWorld(playerid,Haus[ID][VirtualWorld]);
  406.                         SetPVarInt(playerid,"HUHNFISCH_InHaus",true);
  407.                         return true;
  408.                 }
  409.                 new ID=GetNearestHausExit(playerid,3);
  410.                 if(ID==-1) return true;
  411.                 SetPlayerInterior(playerid,0);
  412.                 SetPlayerPos(playerid,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
  413.                 SetPlayerVirtualWorld(playerid,0);
  414.                 DeletePVar(playerid,"HUHNFISCH_InHaus");
  415.                 return true;
  416.         }
  417.         return true;
  418. }
  419. GetFreeHausID()
  420. {
  421.         for(new i;i!=MAX_HAUSER;i++) if(!Haus[i][Int]) return i;
  422.         return -1;
  423. }
  424. GetFreeInteriorVW(interior)
  425. {
  426.         new VW;
  427.         for(new i;i!=10000;i++)
  428.         {
  429.                 for(new j;j!=MAX_HAUSER;j++) if(Haus[j][Int]==interior&&Haus[j][VirtualWorld]!=i) { VW=i; break; }
  430.                 if(VW) return i;
  431.         }
  432.         return -1;
  433. }
  434. GetNearestHaus(playerid, Float:dist = 12.0)
  435. {
  436.         new Float:tmpdist = dist,Float:x,Float:y,Float:z;
  437.         new Float:tempdist,ID=-1;
  438.     for(new i;i!=MAX_HAUSER;i++)
  439.         {
  440.                 if(!Haus[i][Int]) continue;
  441.                 GetPlayerPos(playerid,x,y,z);
  442.         tempdist = GetPlayerDistanceFromPoint(playerid,Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
  443.                 if(tempdist < tmpdist) tmpdist=tempdist,ID=i;
  444.         }
  445.     return ID;
  446. }
  447. GetNearestHausExit(playerid, Float:dist = 12.0)
  448. {
  449.         new Float:tmpdist = dist,Float:x,Float:y,Float:z;
  450.         new Float:tempdist,ID=-1;
  451.     for(new i;i!=MAX_HAUSER;i++)
  452.         {
  453.                 if(!Haus[i][Int]||Haus[i][VirtualWorld]!=GetPlayerVirtualWorld(playerid)) continue;
  454.                 GetPlayerPos(playerid,x,y,z);
  455.         tempdist = GetPlayerDistanceFromPoint(playerid,Haus[i][Pos][3],Haus[i][Pos][4],Haus[i][Pos][5]);
  456.                 if(tempdist < tmpdist) tmpdist=tempdist,ID=i;
  457.         }
  458.     return ID;
  459. }
  460. StripNL(str[]) /* Credits to Y_Less */
  461. {
  462.         new l=strlen(str);
  463.         while(l--&&str[l]<=' ')str[l]='\0';
  464. }
Advertisement
Add Comment
Please, Sign In to add comment