Moin,
//edit: Die Fehler sind behoben, habe nur noch das Problem mit den Labels.
Im Post weiter unten findet ihr die aktuelle, nicht funktionierende Benutzung der Labels.
ich bin dabei ein Haussystem für mein Script zu erstellen.
Dabei habe ich dieses Tutorial genutzt [Scripting] Simples Haussystem und hab es ein wenig nach meinen wünschen geändert.
Im Prinzip bin ich fertig, habe allerdings ein paar Fehler, die ich nicht behoben bekomme.
Jedes Haus hat eine eigene Datei mit allen Variablen.
Ich denke die Fehler liegen in der Verarbeitung des Strings Besitzer.
Der 1. Fehler liegt darin, dass der Besitzer beim Kauf des Hauses nicht aktualisiert wird.
Hier mein Hauskaufen befehl:
dcmd_hauskaufen(playerid,params[]) { //Haus kaufen
#pragma unused params
for(new h=1;h<MAX_HOUSES;h++)
{
if(IsPlayerInRangeOfPoint(playerid,2,hInfo[h][hax],hInfo[h][hay],hInfo[h][haz]))
{
new name[MAX_PLAYER_NAME],hs[128];
GetPlayerName(playerid,name,sizeof name);
if(pInfo[playerid][haus] > 0) {
return SendClientMessage(playerid,COLOR_RED,"Fehler: Du hast bereits ein Haus!");
}
if(strcmp(hInfo[h][Besitzer],"Keiner",false)) { //bisher ungetestet
return SendClientMessage(playerid,COLOR_RED,"Fehler: Dieses Haus ist bereits verkauft!");
}
if(pInfo[playerid][konto] < hInfo[h][Preis]) {
return SendClientMessage(playerid,COLOR_RED,"Fehler: Du hast nicht genug Geld auf deinem Konto um dir dieses Haus zu kaufen!");
}
pInfo[playerid][konto] -=hInfo[h][Preis];
pInfo[playerid][haus] = h;
new pfad[50];
format(pfad,50,"/Häuser/%d.ini",h);
dini_Set(pfad,"Besitzer",name); //Besitzer wird nicht gesetzt
KillHaus(h);
LoadHaus(h);
format(hs,sizeof(hs),"Du hast dir das Haus für {FFFF00}%d$ {00FF00}gekauft. Herzlichen Glückwunsch.",hInfo[h][Preis]);
return SendClientMessage(playerid,COLOR_GREEN,hs);
}
}
return 1;
}
Desweiteren habe ich noch ein weiteres Problem mit der Abfrage des Besitzers.
Wenn das haus keinen Besitzer hat, soll ein grünes Hausicon erscheinen und an dem Icon soll ein Label stehen.
Wird das Hau sgekauft, soll sich das Pickup sowie das Label ändern. Passiert leider beides nicht. Daher denke ich, dass es an der abfrage liegt.
Hier mal die Abfrage:
if(strcmp(hInfo[hausid][Besitzer],"Keiner",false)) {
format(ls,sizeof(ls),"*** Haus ***\nBesitzer: %s",hInfo[hausid][Besitzer]);
hInfo[hausid][Pickup] = CreatePickup(1239,1,hInfo[hausid][hax],hInfo[hausid][hay],hInfo[hausid][haz],0);
}
else {
format(ls,sizeof(ls),"*** Haus ***\nZu verkaufen!\nKaufpreis %d$",hInfo[hausid][Preis]);
hInfo[hausid][Pickup] = CreatePickup(1273,1,hInfo[hausid][hax],hInfo[hausid][hay],hInfo[hausid][haz],0);
}
hInfo[hausid][Label] = Create3DTextLabel(ls,COLOR_LIGHTBLUE,hInfo[hausid][hax],hInfo[hausid][hiy],hInfo[hausid][haz],10,0,1);
return 1;
}
Ich hoffe ihr könnt mir helfen.