Guten Morgen Leute, ich habe hier von BlackFox das Simple Haus System. Nur habe ich das Problem das alle sich mehrere Häuser kaufen können. Ich Möchte halt das er sich 1 Haus kaufen kann und nicht mehr.
/* SimpleHaus System 1.0 BETA
(c) 2008 - 2009 By BlackFoX_UD_
Bitte vor dem benutzen den Ordner ,,haus´´ in scripfiles erstellen
Released unter Creative Commons License*/
#define COLOR_WARN 0xB72C00FF
#define COLOR_MESS 0xB7BC21FF
#define COLOR_GRUEN 0x007E32F6
#include <a_samp>
#include <dini>
enum struk
{
Float:haus_x,
Float:haus_y,
Float:haus_z,
Float:e_haus_x,
Float:e_haus_y,
Float:e_haus_z,
besitzer[MAX_PLAYER_NAME],
haus_id,
kosten,
inter, // Interior
world, // Virtual World
verschlossen,
player_spawn,
}
new Hausplaces[][struk] = {
*zensirt*
};
/*
- Reihenfolge -
Eingang X - Eingang Y - Eingang Z - InnenRaum X - InnenRaum Y
InnenRaum Z - Besitzer = Zum Verkauf - haus = -1 - Hauskosten
Interior - Virtuelle Welt - Verschlossen 1/0
Soll Käufer dort nach dem betreten des Servers wieder dort Spawnen ? player_spawn
*/
public OnPlayerSpawn(playerid)
{
for(new i = 0;i<sizeof(Hausplaces);i++)
{
if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0)
{
if(Hausplaces[i][player_spawn])SetPlayerPos(playerid,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]);break;
}
}
return 1;
}
public OnFilterScriptInit()
{
new tform[128];
print("\n--------------------------------------");
print(" [ Simple ] Haus System 1.0");
print("--------------------------------------\n");
for(new i = 0;i<sizeof(Hausplaces);i++)
{
format(tform,sizeof tform,"haus/haus_%d.txt",i);
if(!fexist(tform))
{
dini_Create(tform);
dini_Set(tform,"besitzer",Hausplaces[i][besitzer]);
dini_IntSet(tform,"kosten",Hausplaces[i][kosten]);
dini_IntSet(tform,"inter",Hausplaces[i][inter]);
dini_IntSet(tform,"world",Hausplaces[i][world]);
dini_IntSet(tform,"verschlossen",Hausplaces[i][verschlossen]);
dini_IntSet(tform,"player_spawn",Hausplaces[i][player_spawn]);
Hausplaces[i][haus_id] = CreatePickup(1239,1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z],-1);
}
else
{
strmid(Hausplaces[i][besitzer],dini_Get(tform,"besitzer"),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
Hausplaces[i][kosten] = dini_Int(tform,"kosten");
Hausplaces[i][inter] = dini_Int(tform,"inter");
Hausplaces[i][world] = dini_Int(tform,"world");
Hausplaces[i][verschlossen] = dini_Int(tform,"verschlossen");
Hausplaces[i][player_spawn] = dini_Int(tform,"player_spawn");
Hausplaces[i][haus_id] = CreatePickup(1239,1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z],-1);
}
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx,cmd[128];
cmd = strtok(cmdtext,idx);
if (strcmp(cmd,"/hauskauf",true) == 0)
{
for(new i = 0;i<sizeof(Hausplaces);i++)
{
if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]))
{
if(GetPlayerMoney(playerid) < Hausplaces[i][kosten])return SendClientMessage(playerid,COLOR_WARN,"Du brauchst mehr Geld!");
if(strcmp(Hausplaces[i][besitzer],"Zum Verkauf",false) == 0)
{
GivePlayerMoney(playerid,-Hausplaces[i][kosten]);
strmid(Hausplaces[i][besitzer],Spielername(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
SendClientMessage(playerid,COLOR_GRUEN,"Glückwunsch zum neuen Haus!");
SaveHaus(i);
}
else
{
SendClientMessage(playerid,COLOR_WARN,"Dieses Haus hat bereits einen Besitzer!");
}
return 1;
}
}
return 1;
}
if (strcmp(cmd,"/hausverkaufen",true) == 0)
{
for(new i = 0;i<sizeof(Hausplaces);i++)
{
if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]))
{
if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0)
{
GivePlayerMoney(playerid,Hausplaces[i][kosten]/2);
strmid(Hausplaces[i][besitzer],"Zum Verkauf",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
SendClientMessage(playerid,COLOR_GRUEN,"Du hast dein Haus verkauft!");
SaveHaus(i);
}
else
{
SendClientMessage(playerid,COLOR_WARN,"Dieses Haus gehört nicht dir!");
}
return 1;
}
}
return 1;
}
if (strcmp(cmd,"/enter",true) == 0)
{
for(new i = 0;i<sizeof(Hausplaces);i++)
{
if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]))
{
if(!Hausplaces[i][verschlossen])
{
if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0){SetPlayerSpawnAtHaus(playerid,i);SaveHaus(i);}
SendClientMessage(playerid,COLOR_GRUEN,"Willkommen in deiner Wohnung.");
SetPlayerPos(playerid,Hausplaces[i][e_haus_x],Hausplaces[i][e_haus_y],Hausplaces[i][e_haus_z]);
SetPlayerInterior(playerid,Hausplaces[i][inter]);
SetPlayerVirtualWorld(playerid,Hausplaces[i][world]);
}
else
{
SendClientMessage(playerid,COLOR_WARN,"Die Tür ist verschlossen!");
}
return 1;
}
}
return 1;
}
if (strcmp(cmd,"/exit",true) == 0)
{
for(new i = 0;i<sizeof(Hausplaces);i++)
{
if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][e_haus_x],Hausplaces[i][e_haus_y],Hausplaces[i][e_haus_z]) && GetPlayerInterior(playerid) == Hausplaces[i][inter] && GetPlayerVirtualWorld(playerid) == Hausplaces[i][world])
{
if(!Hausplaces[i][verschlossen])
{
SetPlayerPos(playerid,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
}
else
{
SendClientMessage(playerid,COLOR_WARN,"Die Tür ist verschlossen!");
}
return 1;
}
}
return 1;
}
if (strcmp(cmd,"/lhaus",true) == 0)
{
for(new i = 0;i<sizeof(Hausplaces);i++)
{
if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]))
{
if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0)
{
if(Hausplaces[i][verschlossen]){Hausplaces[i][verschlossen] = 0;SendClientMessage(playerid,COLOR_GRUEN,"Tür aufgeschlossen.");}
else{Hausplaces[i][verschlossen] = 1;SendClientMessage(playerid,COLOR_GRUEN,"Tür verschlossen.");}
}
else
{
SendClientMessage(playerid,COLOR_WARN,"Dieses Haus gehört nicht dir!");
}
return 1;
}
}
return 1;
}
return 0;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
new tform[128];
for(new i = 0;i<sizeof(Hausplaces);i++)
{
if(pickupid == Hausplaces[i][haus_id])
{
format(tform,sizeof tform,"~w~- ~b~Haus~w~ -~n~~b~Besitzer :~w~ %s~n~~b~Hauskosten :~w~ %d$",
Hausplaces[i][besitzer],
Hausplaces[i][kosten]);
GameTextForPlayer(playerid,tform,2000,3);
return 1;
}
}
return 1;
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
stock Spielername(playerid)
{
new pp[MAX_PLAYER_NAME];
GetPlayerName(playerid,pp,sizeof pp);
return pp;
}
stock SaveHaus(id)
{
new fx[128];
format(fx,sizeof fx,"haus/haus_%d.txt",id);
dini_Set(fx,"besitzer",Hausplaces[id][besitzer]);
dini_IntSet(fx,"kosten",Hausplaces[id][kosten]);
dini_IntSet(fx,"verschlossen",Hausplaces[id][verschlossen]);
dini_IntSet(fx,"player_spawn",Hausplaces[id][player_spawn]);
return 1;
}
stock SetPlayerSpawnAtHaus(playerid,id)
{
for(new i = 0;i<sizeof(Hausplaces);i++)
{
if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0)
{
if(Hausplaces[i][player_spawn])Hausplaces[i][player_spawn] = 0;
}
}
Hausplaces[id][player_spawn] = 1;
return 1;
}