Guten Abend,
Mein Haus System ist auf file basis, doch ich möchte es auf Mysql haben. Wäre einer so nett und würde es auf mysql umschreiben? Sprich Saven und Loaden?
(c) für NiLsx3 aka. Easy
Haussystem 2012
Haussystem 2012
*/
#include a_samp
#include ocmd
#include a_samp
#include ocmd
#define MAX_HAUSER 500
#define STARTMAPICON 19
#define INTERIOR_TYPWAHL 500
#define INTERIOR_WAHL 501
#define INTERIOR_WAHL_BEDSIT 502
#define INTERIOR_WAHL_APPARTMENT 503
#define INTERIOR_WAHL_BUNGALOW 504
#define INTERIOR_WAHL_LUXUS 505
#define INTERIOR_WAHL_HAUS 506
#define HAUS_PREIS 507
#define STARTMAPICON 19
#define INTERIOR_TYPWAHL 500
#define INTERIOR_WAHL 501
#define INTERIOR_WAHL_BEDSIT 502
#define INTERIOR_WAHL_APPARTMENT 503
#define INTERIOR_WAHL_BUNGALOW 504
#define INTERIOR_WAHL_LUXUS 505
#define INTERIOR_WAHL_HAUS 506
#define HAUS_PREIS 507
enum h
{
Besitzer[MAX_PLAYER_NAME],
bool:Gekauft,
bool:Abgeschlossen,
Float:Pos[6],
Int,
VirtualWorld,
Preis,
PickupID,
Text3D:Label
};
new Haus[MAX_HAUSER][h];
enum ii
{
Float:posx,
Float:posy,
Float:posz,
_interior,
};
new IntInfo[][ii] =
{
{ 1.200000,-3.400000,999.400024,2 }, // Trailer
{ 244.500000,305.000000,999.099975,1 },// 'Bedsit'
{ 267.100006,305.000000,999.099975,2 },// 'Bedsit'
{ 301.299987,306.299987,1003.500000,4 },// 'Bedsit'
{ 344.299987,305.200012,999.099975,6 },// 'Bedsit'
{ 446.100006,507.899993,1001.400024,12 },// '2 Zimmer Apartment'
{ -42.400001,1408.199951,1084.400024,8 },// '3 Zimmer Bungalow'
{ 2464.100097,-1698.599975,1013.500000,2 },// '3 Zimmer Bungalow'
{ 386.100006,1471.800048,1080.099975,15 },// '3 Zimmer Apartment'
{ 221.600006,1143.599975,1082.599975,4 },// '3 Zimmer Apartment'
{ 260.600006,1238.800048,1084.199951,9 },// '4 Zimmer Apartment'
{ 261.000000,1286.000000,1080.199951,4 },// '4 Zimmer Haus'
{ 745.299987,1437.699951,1102.699951,6 },// '4 Zimmer Apartment'
{ 376.299987,1417.199951,1081.300048,15 },// '4 Zimmer Apartment'
{ 27.100000,1341.099975,1084.300048,10 },// '4 Zimmer Haus'
{ 2526.399902,-1679.000000,1015.400024,1 },// '4 Zimmer Bedsit'
{ 222.800003,1288.699951,1082.099975,1 },// '4 Zimmer Apartment'
{ 23.000000,1405.599975,1084.400024,5 },// '4 Zimmer Haus'
{ 235.300003,1189.199951,1080.199951,3 },// '4 Zimmer Haus'
{ 447.000000,1400.300048,1084.300048,2 },// '5 Zimmer Apartment'
{ 234.199996,1064.900024,1084.199951,6 },// '5 Zimmer Haus'
{ 327.899993,1478.300048,1084.400024,15 },// '5 Zimmer Slum'
{ 295.399993,1473.199951,1080.199951,15 },// '5 Zimmer Apartment'
{ 140.399993,1370.300048,1083.800048,5 },// '6 Zimmer Haus'
{ 489.700012,1402.500000,1080.199951,2 },// '6 Zimmer Luxus'
{ 83.300003,1324.699951,1083.800048,9 },// '6 Zimmer Haus'
{ 231.399993,1114.099975,1080.900024,5 },// '7 Zimmer Luxus'
{ 225.600006,1023.500000,1084.000000,7 },// '8 Zimmer Luxus'
{ -285.899993,1470.800048,1084.300048,15 },// '4 Zimmer Luxus'
{ -262.700012,1456.599975,1084.300048,4 },// '3 Zimmer Luxus'
{ -68.800003,1354.699951,1080.199951,6 },// '2 Zimmer Luxus'
{ 2254.300048,-1140.000000,1050.599975,9 },// '2 Zimmer Luxus'
{ 2261.300048,-1135.900024,1050.599975,10 },// '3 Zimmer Luxus'
{ 2324.399902,-1147.500000,1050.699951,12 }// '8 Zimmer Luxus'
};
public OnFilterScriptInit()
{
for(new i;i!=MAX_HAUSER;i++) LoadHaus(i);
return true;
}
public OnFilterScriptExit()
{
for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
return true;
}
public OnGameModeExit()
{
for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
return true;
}
public OnPlayerConnect(playerid)
{
new pfad[20];
for(new i;i!=MAX_HAUSER;i++)
{
format(pfad,20,"Häuser/Haus %d.ini",i);
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);
}
return true;
}
stock LoadHaus(hausid)
{
new inhalt[35],File:f;
format(inhalt,20,"Häuser/Haus %d.ini",hausid);
if(!fexist(inhalt)) return false;
f=fopen(inhalt,io_read);
while(fread(f,inhalt))
{
StripNL(inhalt);
if(strfind(inhalt,"Besitzer: ")!=-1) strdel(inhalt,0,10), format(Haus[hausid][Besitzer],MAX_PLAYER_NAME,inhalt);
else if(strfind(inhalt,"Gekauft: ")!=-1) strdel(inhalt,0,9), Haus[hausid][Gekauft]=(strval(inhalt))?true:false;
else if(strfind(inhalt,"Abgeschlossen: ")!=-1) strdel(inhalt,0,15), Haus[hausid][Abgeschlossen]=(strval(inhalt))?true:false;
else if(strfind(inhalt,"AußenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][0]=floatstr(inhalt);
else if(strfind(inhalt,"AußenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][1]=floatstr(inhalt);
else if(strfind(inhalt,"AußenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][2]=floatstr(inhalt);
else if(strfind(inhalt,"InnenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][3]=floatstr(inhalt);
else if(strfind(inhalt,"InnenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][4]=floatstr(inhalt);
else if(strfind(inhalt,"InnenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][5]=floatstr(inhalt);
else if(strfind(inhalt,"Interior: ")!=-1) strdel(inhalt,0,10), Haus[hausid][Int]=strval(inhalt);
else if(strfind(inhalt,"VirtualWorld: ")!=-1) strdel(inhalt,0,14), Haus[hausid][VirtualWorld]=strval(inhalt);
else if(strfind(inhalt,"Preis: ")!=-1) strdel(inhalt,0,7), Haus[hausid][Preis]=strval(inhalt);
}
Haus[hausid][PickupID] = CreatePickup((Haus[hausid][Gekauft])?1239:1273,1,Haus[hausid][Pos][0],Haus[hausid][Pos][1],Haus[hausid][Pos][2]);
fclose(f);
return true;
}
stock SaveHaus(hausid)
{
if(!Haus[hausid][Int]) return false;
new inhalt[35],File:f;
format(inhalt,35,"Häuser/Haus %d.ini",hausid);
f=fopen(inhalt,io_write);
format(inhalt,35,"Besitzer: %s\r\n",Haus[hausid][Besitzer]),fwrite(f,inhalt);
format(inhalt,35,"Gekauft: %d\r\n",Haus[hausid][Gekauft]),fwrite(f,inhalt);
format(inhalt,35,"Abgeschlossen: %d\r\n",Haus[hausid][Abgeschlossen]),fwrite(f,inhalt);
format(inhalt,35,"AußenPosX: %f\r\n",Haus[hausid][Pos][0]),fwrite(f,inhalt);
format(inhalt,35,"AußenPosY: %f\r\n",Haus[hausid][Pos][1]),fwrite(f,inhalt);
format(inhalt,35,"AußenPosZ: %f\r\n",Haus[hausid][Pos][2]),fwrite(f,inhalt);
format(inhalt,35,"InnenPosX: %f\r\n",Haus[hausid][Pos][3]),fwrite(f,inhalt);
format(inhalt,35,"InnenPosY: %f\r\n",Haus[hausid][Pos][4]),fwrite(f,inhalt);
format(inhalt,35,"InnenPosZ: %f\r\n",Haus[hausid][Pos][5]),fwrite(f,inhalt);
format(inhalt,35,"Interior: %d\r\n",Haus[hausid][Int]),fwrite(f,inhalt);
format(inhalt,35,"VirtualWorld: %d\r\n",Haus[hausid][VirtualWorld]),fwrite(f,inhalt);
format(inhalt,35,"Preis: %d\r\n",Haus[hausid][Preis]),fwrite(f,inhalt);
fclose(f);
return true;
}
stock CreateHaus(Owner[],Float:X,Float:Y,Float:Z,Float:iX,Float:iY,Float:iZ,Interior,p)
{
new ID=GetFreeHausID();
if(ID==-1) print("Es sind bereits zuviele Häuser erstellt worden | Lösch zu erst eins");
format(Haus[ID][Besitzer],MAX_PLAYER_NAME,Owner);
Haus[ID][Gekauft]=false;
Haus[ID][Abgeschlossen]=true;
Haus[ID][Pos][0]=X;
Haus[ID][Pos][1]=Y;
Haus[ID][Pos][2]=Z;
Haus[ID][Pos][3]=iX;
Haus[ID][Pos][4]=iY;
Haus[ID][Pos][5]=iZ;
Haus[ID][Int]=Interior;
Haus[ID][Preis]=p;
Haus[ID][VirtualWorld]=GetFreeInteriorVW(Haus[ID][Int]);
Haus[ID][PickupID] = CreatePickup(1273,1,X,Y,Z);
for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) SetPlayerMapIcon(i,STARTMAPICON+ID,X,Y,Z,31,0xFFFFFFFF);
new string[55];
format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
Haus[ID][Label] = Create3DTextLabel(string,0x33AA33FF,X,Y,Z,100.0,0,1);
return ID;
}
stock DeleteHaus(hausid)
{
strdel(Haus[hausid][Besitzer],0,MAX_PLAYER_NAME);
Haus[hausid][Gekauft]=false;
Haus[hausid][Abgeschlossen]=false;
Haus[hausid][Pos][0]=0;
Haus[hausid][Pos][1]=0;
Haus[hausid][Pos][2]=0;
Haus[hausid][Pos][3]=0;
Haus[hausid][Pos][4]=0;
Haus[hausid][Pos][5]=0;
Haus[hausid][Int]=0;
Haus[hausid][VirtualWorld]=0;
DestroyPickup(Haus[hausid][PickupID]);
Delete3DTextLabel(Haus[hausid][Label]);
for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) RemovePlayerMapIcon(i,STARTMAPICON+hausid);
new pfad[20];
format(pfad,20,"Häuser/Haus %d.ini",hausid);
fremove(pfad);
return true;
}
ocmd:hauserstellen(playerid)
{
//if(!IsPlayerAdmin(playerid)) return true;
ShowPlayerDialog(playerid,INTERIOR_TYPWAHL,DIALOG_STYLE_LIST,"Interior Typ auswählen","Trailer\nBedsit\nAppartment\nBungalow\nLuxus\nHaus","Weiter","Abbrechen");
return true;
}
ocmd:buyhaus(playerid)
{
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
if(GetPlayerMoney(playerid)<Haus[ID][Preis]) return SendClientMessage(playerid,-1,"Soviel Geld hast du nicht bei dir");
if(!strcmp(Haus[ID][Besitzer],"Niemand"))
{
GetPlayerName(playerid,Haus[ID][Besitzer],MAX_PLAYER_NAME);
DestroyPickup(Haus[ID][PickupID]);
RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],32,0xFFFFFFFF);
Haus[ID][PickupID] = CreatePickup(1239,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
new string[65];
format(string,65,"Dieses Haus gehört:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
return true;
}
return SendClientMessage(playerid,-1,"Dieses Haus kann man nicht kaufen");
}
ocmd:sellhaus(playerid)
{
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
Haus[ID][Abgeschlossen]=true;
DestroyPickup(Haus[ID][PickupID]);
RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],31,0xFFFFFFFF);
Haus[ID][PickupID] = CreatePickup(1273,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
new string[55];
format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
GivePlayerMoney(playerid,Haus[ID][Preis]/2);
return SendClientMessage(playerid,-1,"Du hast dein Haus erfolgreich verkauft");
}
ocmd:speicherhauser(playerid)
{
//if(!IsPlayerAdmin(playerid)) return true;
for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
return SendClientMessage(playerid,-1,"Aller Häusergespeichert");
}
ocmd:deletehaus(playerid)
{
//if(!IsPlayerAdmin(playerid)) return true;
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
DeleteHaus(ID);
return SendClientMessage(playerid,-1,"Du hast das Haus erfolgreich gelöscht");
}
ocmd:lockhaus(playerid)
{
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
if(strcmp(Haus[ID][Besitzer],name)) return SendClientMessage(playerid,-1,"Du bist nicht Besitzer dieses Hauses");
Haus[ID][Abgeschlossen]=(Haus[ID][Abgeschlossen])?false:true;
new string[65];
format(string,65,"Dieses Haus gehört:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
return SendClientMessage(playerid,-1,(!Haus[ID][Abgeschlossen])?("Du hast dein Haus aufgeschlossen"):("Du hast dein Haus abgeschlossen"));
}
public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{
switch(dialogid)
{
case INTERIOR_TYPWAHL:
{
if(!response) return false;
switch(listitem)
{
case 0:
{
SetPVarInt(playerid,"HUHNFISCH_Slot",0);
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case 1:
{
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");
return true;
}
case 2:
{
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");
return true;
}
case 3:
{
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");
return true;
}
case 4:
{
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");
return true;
}
case 5:
{
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");
return true;
}
}
return true;
}
case INTERIOR_WAHL_BEDSIT:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",1);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",2);
case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",3);
case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",4);
case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",15);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case INTERIOR_WAHL_APPARTMENT:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",6);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",9);
case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",10);
case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",11);
case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",13);
case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",14);
case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",17);
case 7: SetPVarInt(playerid,"HUHNFISCH_Slot",20);
case 8: SetPVarInt(playerid,"HUHNFISCH_Slot",23);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case INTERIOR_WAHL_BUNGALOW:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",7);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",8);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case INTERIOR_WAHL_LUXUS:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",22);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",25);
case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",27);
case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",28);
case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",29);
case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",30);
case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",31);
case 7: SetPVarInt(playerid,"HUHNFISCH_Slot",32);
case 8: SetPVarInt(playerid,"HUHNFISCH_Slot",33);
case 9: SetPVarInt(playerid,"HUHNFISCH_Slot",34);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case INTERIOR_WAHL_HAUS:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",12);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",15);
case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",18);
case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",19);
case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",21);
case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",24);
case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",26);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case HAUS_PREIS:
{
if(!inputtext[0]) return ocmd_hauserstellen(playerid);
new preis=strval(inputtext);
for(new i,l=strlen(inputtext);i!=l;i++)
if(inputtext[i] >= '0' && inputtext[i] <= '9') continue;
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");
{
Besitzer[MAX_PLAYER_NAME],
bool:Gekauft,
bool:Abgeschlossen,
Float:Pos[6],
Int,
VirtualWorld,
Preis,
PickupID,
Text3D:Label
};
new Haus[MAX_HAUSER][h];
enum ii
{
Float:posx,
Float:posy,
Float:posz,
_interior,
};
new IntInfo[][ii] =
{
{ 1.200000,-3.400000,999.400024,2 }, // Trailer
{ 244.500000,305.000000,999.099975,1 },// 'Bedsit'
{ 267.100006,305.000000,999.099975,2 },// 'Bedsit'
{ 301.299987,306.299987,1003.500000,4 },// 'Bedsit'
{ 344.299987,305.200012,999.099975,6 },// 'Bedsit'
{ 446.100006,507.899993,1001.400024,12 },// '2 Zimmer Apartment'
{ -42.400001,1408.199951,1084.400024,8 },// '3 Zimmer Bungalow'
{ 2464.100097,-1698.599975,1013.500000,2 },// '3 Zimmer Bungalow'
{ 386.100006,1471.800048,1080.099975,15 },// '3 Zimmer Apartment'
{ 221.600006,1143.599975,1082.599975,4 },// '3 Zimmer Apartment'
{ 260.600006,1238.800048,1084.199951,9 },// '4 Zimmer Apartment'
{ 261.000000,1286.000000,1080.199951,4 },// '4 Zimmer Haus'
{ 745.299987,1437.699951,1102.699951,6 },// '4 Zimmer Apartment'
{ 376.299987,1417.199951,1081.300048,15 },// '4 Zimmer Apartment'
{ 27.100000,1341.099975,1084.300048,10 },// '4 Zimmer Haus'
{ 2526.399902,-1679.000000,1015.400024,1 },// '4 Zimmer Bedsit'
{ 222.800003,1288.699951,1082.099975,1 },// '4 Zimmer Apartment'
{ 23.000000,1405.599975,1084.400024,5 },// '4 Zimmer Haus'
{ 235.300003,1189.199951,1080.199951,3 },// '4 Zimmer Haus'
{ 447.000000,1400.300048,1084.300048,2 },// '5 Zimmer Apartment'
{ 234.199996,1064.900024,1084.199951,6 },// '5 Zimmer Haus'
{ 327.899993,1478.300048,1084.400024,15 },// '5 Zimmer Slum'
{ 295.399993,1473.199951,1080.199951,15 },// '5 Zimmer Apartment'
{ 140.399993,1370.300048,1083.800048,5 },// '6 Zimmer Haus'
{ 489.700012,1402.500000,1080.199951,2 },// '6 Zimmer Luxus'
{ 83.300003,1324.699951,1083.800048,9 },// '6 Zimmer Haus'
{ 231.399993,1114.099975,1080.900024,5 },// '7 Zimmer Luxus'
{ 225.600006,1023.500000,1084.000000,7 },// '8 Zimmer Luxus'
{ -285.899993,1470.800048,1084.300048,15 },// '4 Zimmer Luxus'
{ -262.700012,1456.599975,1084.300048,4 },// '3 Zimmer Luxus'
{ -68.800003,1354.699951,1080.199951,6 },// '2 Zimmer Luxus'
{ 2254.300048,-1140.000000,1050.599975,9 },// '2 Zimmer Luxus'
{ 2261.300048,-1135.900024,1050.599975,10 },// '3 Zimmer Luxus'
{ 2324.399902,-1147.500000,1050.699951,12 }// '8 Zimmer Luxus'
};
public OnFilterScriptInit()
{
for(new i;i!=MAX_HAUSER;i++) LoadHaus(i);
return true;
}
public OnFilterScriptExit()
{
for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
return true;
}
public OnGameModeExit()
{
for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
return true;
}
public OnPlayerConnect(playerid)
{
new pfad[20];
for(new i;i!=MAX_HAUSER;i++)
{
format(pfad,20,"Häuser/Haus %d.ini",i);
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);
}
return true;
}
stock LoadHaus(hausid)
{
new inhalt[35],File:f;
format(inhalt,20,"Häuser/Haus %d.ini",hausid);
if(!fexist(inhalt)) return false;
f=fopen(inhalt,io_read);
while(fread(f,inhalt))
{
StripNL(inhalt);
if(strfind(inhalt,"Besitzer: ")!=-1) strdel(inhalt,0,10), format(Haus[hausid][Besitzer],MAX_PLAYER_NAME,inhalt);
else if(strfind(inhalt,"Gekauft: ")!=-1) strdel(inhalt,0,9), Haus[hausid][Gekauft]=(strval(inhalt))?true:false;
else if(strfind(inhalt,"Abgeschlossen: ")!=-1) strdel(inhalt,0,15), Haus[hausid][Abgeschlossen]=(strval(inhalt))?true:false;
else if(strfind(inhalt,"AußenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][0]=floatstr(inhalt);
else if(strfind(inhalt,"AußenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][1]=floatstr(inhalt);
else if(strfind(inhalt,"AußenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][2]=floatstr(inhalt);
else if(strfind(inhalt,"InnenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][3]=floatstr(inhalt);
else if(strfind(inhalt,"InnenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][4]=floatstr(inhalt);
else if(strfind(inhalt,"InnenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][5]=floatstr(inhalt);
else if(strfind(inhalt,"Interior: ")!=-1) strdel(inhalt,0,10), Haus[hausid][Int]=strval(inhalt);
else if(strfind(inhalt,"VirtualWorld: ")!=-1) strdel(inhalt,0,14), Haus[hausid][VirtualWorld]=strval(inhalt);
else if(strfind(inhalt,"Preis: ")!=-1) strdel(inhalt,0,7), Haus[hausid][Preis]=strval(inhalt);
}
Haus[hausid][PickupID] = CreatePickup((Haus[hausid][Gekauft])?1239:1273,1,Haus[hausid][Pos][0],Haus[hausid][Pos][1],Haus[hausid][Pos][2]);
fclose(f);
return true;
}
stock SaveHaus(hausid)
{
if(!Haus[hausid][Int]) return false;
new inhalt[35],File:f;
format(inhalt,35,"Häuser/Haus %d.ini",hausid);
f=fopen(inhalt,io_write);
format(inhalt,35,"Besitzer: %s\r\n",Haus[hausid][Besitzer]),fwrite(f,inhalt);
format(inhalt,35,"Gekauft: %d\r\n",Haus[hausid][Gekauft]),fwrite(f,inhalt);
format(inhalt,35,"Abgeschlossen: %d\r\n",Haus[hausid][Abgeschlossen]),fwrite(f,inhalt);
format(inhalt,35,"AußenPosX: %f\r\n",Haus[hausid][Pos][0]),fwrite(f,inhalt);
format(inhalt,35,"AußenPosY: %f\r\n",Haus[hausid][Pos][1]),fwrite(f,inhalt);
format(inhalt,35,"AußenPosZ: %f\r\n",Haus[hausid][Pos][2]),fwrite(f,inhalt);
format(inhalt,35,"InnenPosX: %f\r\n",Haus[hausid][Pos][3]),fwrite(f,inhalt);
format(inhalt,35,"InnenPosY: %f\r\n",Haus[hausid][Pos][4]),fwrite(f,inhalt);
format(inhalt,35,"InnenPosZ: %f\r\n",Haus[hausid][Pos][5]),fwrite(f,inhalt);
format(inhalt,35,"Interior: %d\r\n",Haus[hausid][Int]),fwrite(f,inhalt);
format(inhalt,35,"VirtualWorld: %d\r\n",Haus[hausid][VirtualWorld]),fwrite(f,inhalt);
format(inhalt,35,"Preis: %d\r\n",Haus[hausid][Preis]),fwrite(f,inhalt);
fclose(f);
return true;
}
stock CreateHaus(Owner[],Float:X,Float:Y,Float:Z,Float:iX,Float:iY,Float:iZ,Interior,p)
{
new ID=GetFreeHausID();
if(ID==-1) print("Es sind bereits zuviele Häuser erstellt worden | Lösch zu erst eins");
format(Haus[ID][Besitzer],MAX_PLAYER_NAME,Owner);
Haus[ID][Gekauft]=false;
Haus[ID][Abgeschlossen]=true;
Haus[ID][Pos][0]=X;
Haus[ID][Pos][1]=Y;
Haus[ID][Pos][2]=Z;
Haus[ID][Pos][3]=iX;
Haus[ID][Pos][4]=iY;
Haus[ID][Pos][5]=iZ;
Haus[ID][Int]=Interior;
Haus[ID][Preis]=p;
Haus[ID][VirtualWorld]=GetFreeInteriorVW(Haus[ID][Int]);
Haus[ID][PickupID] = CreatePickup(1273,1,X,Y,Z);
for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) SetPlayerMapIcon(i,STARTMAPICON+ID,X,Y,Z,31,0xFFFFFFFF);
new string[55];
format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
Haus[ID][Label] = Create3DTextLabel(string,0x33AA33FF,X,Y,Z,100.0,0,1);
return ID;
}
stock DeleteHaus(hausid)
{
strdel(Haus[hausid][Besitzer],0,MAX_PLAYER_NAME);
Haus[hausid][Gekauft]=false;
Haus[hausid][Abgeschlossen]=false;
Haus[hausid][Pos][0]=0;
Haus[hausid][Pos][1]=0;
Haus[hausid][Pos][2]=0;
Haus[hausid][Pos][3]=0;
Haus[hausid][Pos][4]=0;
Haus[hausid][Pos][5]=0;
Haus[hausid][Int]=0;
Haus[hausid][VirtualWorld]=0;
DestroyPickup(Haus[hausid][PickupID]);
Delete3DTextLabel(Haus[hausid][Label]);
for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) RemovePlayerMapIcon(i,STARTMAPICON+hausid);
new pfad[20];
format(pfad,20,"Häuser/Haus %d.ini",hausid);
fremove(pfad);
return true;
}
ocmd:hauserstellen(playerid)
{
//if(!IsPlayerAdmin(playerid)) return true;
ShowPlayerDialog(playerid,INTERIOR_TYPWAHL,DIALOG_STYLE_LIST,"Interior Typ auswählen","Trailer\nBedsit\nAppartment\nBungalow\nLuxus\nHaus","Weiter","Abbrechen");
return true;
}
ocmd:buyhaus(playerid)
{
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
if(GetPlayerMoney(playerid)<Haus[ID][Preis]) return SendClientMessage(playerid,-1,"Soviel Geld hast du nicht bei dir");
if(!strcmp(Haus[ID][Besitzer],"Niemand"))
{
GetPlayerName(playerid,Haus[ID][Besitzer],MAX_PLAYER_NAME);
DestroyPickup(Haus[ID][PickupID]);
RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],32,0xFFFFFFFF);
Haus[ID][PickupID] = CreatePickup(1239,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
new string[65];
format(string,65,"Dieses Haus gehört:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
return true;
}
return SendClientMessage(playerid,-1,"Dieses Haus kann man nicht kaufen");
}
ocmd:sellhaus(playerid)
{
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
Haus[ID][Abgeschlossen]=true;
DestroyPickup(Haus[ID][PickupID]);
RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],31,0xFFFFFFFF);
Haus[ID][PickupID] = CreatePickup(1273,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
new string[55];
format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
GivePlayerMoney(playerid,Haus[ID][Preis]/2);
return SendClientMessage(playerid,-1,"Du hast dein Haus erfolgreich verkauft");
}
ocmd:speicherhauser(playerid)
{
//if(!IsPlayerAdmin(playerid)) return true;
for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
return SendClientMessage(playerid,-1,"Aller Häusergespeichert");
}
ocmd:deletehaus(playerid)
{
//if(!IsPlayerAdmin(playerid)) return true;
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
DeleteHaus(ID);
return SendClientMessage(playerid,-1,"Du hast das Haus erfolgreich gelöscht");
}
ocmd:lockhaus(playerid)
{
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
if(strcmp(Haus[ID][Besitzer],name)) return SendClientMessage(playerid,-1,"Du bist nicht Besitzer dieses Hauses");
Haus[ID][Abgeschlossen]=(Haus[ID][Abgeschlossen])?false:true;
new string[65];
format(string,65,"Dieses Haus gehört:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
return SendClientMessage(playerid,-1,(!Haus[ID][Abgeschlossen])?("Du hast dein Haus aufgeschlossen"):("Du hast dein Haus abgeschlossen"));
}
public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{
switch(dialogid)
{
case INTERIOR_TYPWAHL:
{
if(!response) return false;
switch(listitem)
{
case 0:
{
SetPVarInt(playerid,"HUHNFISCH_Slot",0);
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case 1:
{
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");
return true;
}
case 2:
{
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");
return true;
}
case 3:
{
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");
return true;
}
case 4:
{
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");
return true;
}
case 5:
{
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");
return true;
}
}
return true;
}
case INTERIOR_WAHL_BEDSIT:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",1);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",2);
case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",3);
case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",4);
case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",15);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case INTERIOR_WAHL_APPARTMENT:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",6);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",9);
case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",10);
case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",11);
case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",13);
case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",14);
case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",17);
case 7: SetPVarInt(playerid,"HUHNFISCH_Slot",20);
case 8: SetPVarInt(playerid,"HUHNFISCH_Slot",23);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case INTERIOR_WAHL_BUNGALOW:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",7);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",8);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case INTERIOR_WAHL_LUXUS:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",22);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",25);
case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",27);
case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",28);
case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",29);
case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",30);
case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",31);
case 7: SetPVarInt(playerid,"HUHNFISCH_Slot",32);
case 8: SetPVarInt(playerid,"HUHNFISCH_Slot",33);
case 9: SetPVarInt(playerid,"HUHNFISCH_Slot",34);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case INTERIOR_WAHL_HAUS:
{
if(!response) return ocmd_hauserstellen(playerid);
switch(listitem)
{
case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",12);
case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",15);
case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",18);
case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",19);
case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",21);
case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",24);
case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",26);
default: return ocmd_hauserstellen(playerid);
}
ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
}
case HAUS_PREIS:
{
if(!inputtext[0]) return ocmd_hauserstellen(playerid);
new preis=strval(inputtext);
for(new i,l=strlen(inputtext);i!=l;i++)
if(inputtext[i] >= '0' && inputtext[i] <= '9') continue;
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");
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");
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
new Slot=GetPVarInt(playerid,"HUHNFISCH_Slot");
DeletePVar(playerid,"HUHNFISCH_Slot");
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);
return SendClientMessage(playerid,-1,"Haus erfolgreich erstellt");
}
}
return true;
}
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
if(newkeys & KEY_SECONDARY_ATTACK)
{
if(!GetPVarInt(playerid,"HUHNFISCH_InHaus"))
{
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return true;
if(Haus[ID][Abgeschlossen]) return true;
SetPlayerInterior(playerid,Haus[ID][Int]);
SetPlayerPos(playerid,Haus[ID][Pos][3],Haus[ID][Pos][4],Haus[ID][Pos][5]);
SetPlayerVirtualWorld(playerid,Haus[ID][VirtualWorld]);
SetPVarInt(playerid,"HUHNFISCH_InHaus",true);
return true;
}
new ID=GetNearestHausExit(playerid,3);
if(ID==-1) return true;
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
SetPlayerVirtualWorld(playerid,0);
DeletePVar(playerid,"HUHNFISCH_InHaus");
return true;
}
return true;
}
GetFreeHausID()
{
for(new i;i!=MAX_HAUSER;i++) if(!Haus[i][Int]) return i;
return -1;
}
GetFreeInteriorVW(interior)
{
new VW;
for(new i;i!=10000;i++)
{
for(new j;j!=MAX_HAUSER;j++) if(Haus[j][Int]==interior&&Haus[j][VirtualWorld]!=i) { VW=i; break; }
if(VW) return i;
}
return -1;
}
GetNearestHaus(playerid, Float:dist = 12.0)
{
new Float:tmpdist = dist,Float:x,Float:y,Float:z;
new Float:tempdist,ID=-1;
for(new i;i!=MAX_HAUSER;i++)
{
if(!Haus[i][Int]) continue;
GetPlayerPos(playerid,x,y,z);
tempdist = GetPlayerDistanceFromPoint(playerid,Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
if(tempdist < tmpdist) tmpdist=tempdist,ID=i;
}
return ID;
}
GetNearestHausExit(playerid, Float:dist = 12.0)
{
new Float:tmpdist = dist,Float:x,Float:y,Float:z;
new Float:tempdist,ID=-1;
for(new i;i!=MAX_HAUSER;i++)
{
if(!Haus[i][Int]||Haus[i][VirtualWorld]!=GetPlayerVirtualWorld(playerid)) continue;
GetPlayerPos(playerid,x,y,z);
tempdist = GetPlayerDistanceFromPoint(playerid,Haus[i][Pos][3],Haus[i][Pos][4],Haus[i][Pos][5]);
if(tempdist < tmpdist) tmpdist=tempdist,ID=i;
}
return ID;
}
StripNL(str[]) /* Credits to Y_Less */
{
new l=strlen(str);
while(l--&&str[l]<=' ')str[l]='\0';
}
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
new Slot=GetPVarInt(playerid,"HUHNFISCH_Slot");
DeletePVar(playerid,"HUHNFISCH_Slot");
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);
return SendClientMessage(playerid,-1,"Haus erfolgreich erstellt");
}
}
return true;
}
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
if(newkeys & KEY_SECONDARY_ATTACK)
{
if(!GetPVarInt(playerid,"HUHNFISCH_InHaus"))
{
new ID=GetNearestHaus(playerid,4);
if(ID==-1) return true;
if(Haus[ID][Abgeschlossen]) return true;
SetPlayerInterior(playerid,Haus[ID][Int]);
SetPlayerPos(playerid,Haus[ID][Pos][3],Haus[ID][Pos][4],Haus[ID][Pos][5]);
SetPlayerVirtualWorld(playerid,Haus[ID][VirtualWorld]);
SetPVarInt(playerid,"HUHNFISCH_InHaus",true);
return true;
}
new ID=GetNearestHausExit(playerid,3);
if(ID==-1) return true;
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
SetPlayerVirtualWorld(playerid,0);
DeletePVar(playerid,"HUHNFISCH_InHaus");
return true;
}
return true;
}
GetFreeHausID()
{
for(new i;i!=MAX_HAUSER;i++) if(!Haus[i][Int]) return i;
return -1;
}
GetFreeInteriorVW(interior)
{
new VW;
for(new i;i!=10000;i++)
{
for(new j;j!=MAX_HAUSER;j++) if(Haus[j][Int]==interior&&Haus[j][VirtualWorld]!=i) { VW=i; break; }
if(VW) return i;
}
return -1;
}
GetNearestHaus(playerid, Float:dist = 12.0)
{
new Float:tmpdist = dist,Float:x,Float:y,Float:z;
new Float:tempdist,ID=-1;
for(new i;i!=MAX_HAUSER;i++)
{
if(!Haus[i][Int]) continue;
GetPlayerPos(playerid,x,y,z);
tempdist = GetPlayerDistanceFromPoint(playerid,Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
if(tempdist < tmpdist) tmpdist=tempdist,ID=i;
}
return ID;
}
GetNearestHausExit(playerid, Float:dist = 12.0)
{
new Float:tmpdist = dist,Float:x,Float:y,Float:z;
new Float:tempdist,ID=-1;
for(new i;i!=MAX_HAUSER;i++)
{
if(!Haus[i][Int]||Haus[i][VirtualWorld]!=GetPlayerVirtualWorld(playerid)) continue;
GetPlayerPos(playerid,x,y,z);
tempdist = GetPlayerDistanceFromPoint(playerid,Haus[i][Pos][3],Haus[i][Pos][4],Haus[i][Pos][5]);
if(tempdist < tmpdist) tmpdist=tempdist,ID=i;
}
return ID;
}
StripNL(str[]) /* Credits to Y_Less */
{
new l=strlen(str);
while(l--&&str[l]<=' ')str[l]='\0';
}