Hallo Leute.
Ich habe ein kleines Problem.
Ich habe soeben ein Haus-System erstellt und wollte nun mal zu dem Ort fahren wo das Haus ist.
Eigentlich sollte dort ein 3D-Text sein und ein Pickup, dort ist aber garnix.
Meine .ini Datei sieht wie folgt aus:
Owner=Keiner
InteriorID=7
InteriorX=225.630996
InteriorY=1022.479980
InteriorZ=1084.014648
HousePrice=1000
ExteriorID=0
ExteriorX=725.690429
ExteriorY=1439.619873
ExteriorZ=13.539099
HouseKasse=300
LockStatus=1
Owned=0
Rent=100
Rentabil=0
Alles anzeigen
So bei OnGameModeInit sollte eigentlich ein Pickup und der 3DText Erstellt werden.
new PropertyString[200];
for(new h = 0; h<sizeof(Houses); h++)
{
if(Houses[h][hOwned] == 0)
{
format(PropertyString, sizeof(PropertyString), "Zum Verkaufen!\nPreis: $%d\nLevel: %d\nTippe /buyhouse um es zu kaufen", Houses[h][HousePrice], Houses[h][hLevel]);
HouseLabel[h] = Create3DTextLabel(PropertyString, COLOR_WHITE, Houses[h][hExteriorX], Houses[h][hExteriorY], Houses[h][hExteriorZ]+0.5, 40.0, 0, 1);
HousePickup[h] = AddStaticPickup(1273, 1, Houses[h][hExteriorX], Houses[h][hExteriorY], Houses[h][hExteriorZ]+0.5);
}
if(Houses[h][hOwned] == 1 && Houses[h][hRentabil] == 1)
{
format(PropertyString, sizeof(PropertyString), "Besitzer: %s\nMiete: %d\n \n/mieten", Houses[h][hOwner], Houses[h][hRent]);
HouseLabel[h] = Create3DTextLabel(PropertyString ,COLOR_WHITE,Houses[h][hExteriorX], Houses[h][hExteriorY], Houses[h][hExteriorZ]+0.5,35.0, 0, 1);
HousePickup[h] = AddStaticPickup(1239, 1, Houses[h][hExteriorX], Houses[h][hExteriorY], Houses[h][hExteriorZ]);
}
if(Houses[h][hOwned] == 1 && Houses[h][hRentabil] != 1)
{
format(PropertyString, sizeof(PropertyString), "Besitzer: %s", Houses[h][hOwner]);
HouseLabel[h] = Create3DTextLabel(PropertyString ,COLOR_WHITE,Houses[h][hExteriorX], Houses[h][hExteriorY], Houses[h][hExteriorZ]+0.5,35.0, 0, 1);
HousePickup[h] = AddStaticPickup(1239, 1, Houses[h][hExteriorX], Houses[h][hExteriorY], Houses[h][hExteriorZ]);
}
}
On3DTextUpdate();
SetTimer("On3DTextUpdate", 3000, 1);
Der Public für On3DTextUpdate sieht folgendermaßen aus:
public On3DTextUpdate()
{
new PropertyString[128];
for(new h = 0; h<sizeof(Houses); h++)
{
if(Houses[h][hOwned] == 0)
{
format(PropertyString, sizeof(PropertyString), "Zum Verkaufen!\nPreis: $%d\nLevel: %d\nTippe /buyhouse um es zu kaufen", Houses[h][HousePrice], Houses[h][hLevel]);
Update3DTextLabelText(HouseLabel[h], COLOR_WHITE, PropertyString);
}
if(Houses[h][hOwned] == 1 && Houses[h][hRentabil] == 1)
{
format(PropertyString, sizeof(PropertyString), "Besitzer: %s\nMiete: %d\n \n/mieten", Houses[h][hOwner], Houses[h][hRent]);
Update3DTextLabelText(HouseLabel[h], COLOR_WHITE, PropertyString);
}
if(Houses[h][hOwned] == 1 && Houses[h][hRentabil] != 1)
{
format(PropertyString, sizeof(PropertyString), "Besitzer: %s", Houses[h][hOwner]);
Update3DTextLabelText(HouseLabel[h], COLOR_WHITE, PropertyString);
}
}
return 1;
}
Es wird weder ein Text noch ein Pickup erstellt.
So nun zum enum & der Positions Abfrage.
#define MAX_HOUSES 200
enum HouseData
{
hInteriorID,
Float: hInteriorX,
Float: hInteriorY,
Float: hInteriorZ,
HousePrice,
hExteriorID,
Float: hExteriorX,
Float: hExteriorY,
Float: hExteriorZ,
hOwner[255],
LockStatus,
hLevel,
hOwned,
//hType,
hRent,
hRentabil,
hHeal
}
new Houses[MAX_HOUSES][HouseData];
if(strcmp("/buyhouse", cmdtext, true) == 0)
{
print("DB1");
new string[128], hname[128];
print("DBHauskey");
if(Spieler[playerid][HausKey] == 255)
{
print("DBFor");
for(new h = 0; h<sizeof(Houses); h++)
{
print("DBRange");
if(IsPlayerInRangeOfPoint(playerid, 3, Houses[h][hExteriorX], Houses[h][hExteriorY], Houses[h][hExteriorZ]))
{
print("DB2");
if(strcmp(Houses[h][hOwner], "Keiner", true) == 0)
{
if(Houses[h][hOwned] == 1)
{
format(hname, sizeof(hname), "Dieses Haus ist im Besitz von %s", Houses[h][hOwner]);
SendClientMessage(playerid, COLOR_WHITE, hname);
return 1;
}
if(Houses[h][hLevel] > Spieler[playerid][Level])
{
format(string, sizeof(string), "Du brauchst Level %d um dieses Haus kaufen zu können.", Houses[h][hLevel]);
SendClientMessage(playerid, COLOR_WHITE, string);
return 1;
}
else
{
print("DB3");
if(GetPlayerMoney(playerid) > Houses[h][HousePrice])
{
new sendername[MAX_PLAYER_NAME];
GivePlayerMoney(playerid, -Houses[h][HousePrice]);
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(Houses[h][hOwner], sendername, 0, strlen(sendername), 255);
print("DB4");
SendClientMessage(playerid, COLOR_GREEN, "Du hast das Haus erfolgreich gekauft.");
SendClientMessage(playerid, COLOR_WHITE, "Weitere Hilfe erhälst du unter /househelp oder unter /sup.");
Spieler[playerid][HausKey] = h;
On3DTextUpdate();
SaveHouse(h);
printf("[HOUSE]%s hat Haus-Nr %d für $%d erworben!", sendername, h, Houses[h][HousePrice]);
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Du hast nicht genügend Geld.");
print("DB5");
return 1;
}
}
}
else
{
format(hname, sizeof(hname), "Dieses Haus ist im Besitz von %s", Houses[h][hOwner]);
SendClientMessage(playerid, COLOR_WHITE, hname);
print("DB6");
return 1;
}
}
}
print("DB7");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus. Tippe /sellhouse zum verkaufen.");
return 1;
}
}
if(strcmp("/gotohouse", cmdtext, true) == 0)
{
SetPlayerPos(playerid, 725.6904, -1439.6199, 13.5391);
return 1;
}
Bei der Positions Abfrage hört das Debuggen auf und geht nurnoch bis DB7.
Kann mir jemand helfen?
Bin echt am verzweifeln.
Vielen Dank im Vorraus.