Hallo,
ich habe Problem mit dem Haussystem was ich geschrieben habe.
Es gibt keine Fehlermelduingen aus, einiges funktioniert schlichtweg nicht.
Das Haussystem ist wie folgt aufgebaut.
Ich habe folgende Probleme:
- beim Laden der Häuser werden keine Text3DLabels angezeigt was er eigentlich sollte.
- Wenn
man den Server Restartet hat, dann zeigt er ingame nur das LETZTE Haus
via Pickup an was man mit /addhaus erstellt hat und kann mir nicht
erklären warum.
Die Function soll die Pickups und Text3dLabels von Häusern erstellen
forward genereteHouse(id);
public genereteHouse(id)
{
new hausstring[470], debug2[200];
if(HausInfo[id][h_created] == 1)
{
DestroyPickup(HausInfo[id][h_pickup]);
Delete3DTextLabel(HausInfo[id][h_text]);
if(HausInfo[id][h_sperre]==1)
{
format(hausstring, sizeof(hausstring), "|=== %s (%i) ===|\n{FF0A00}Diese Immobilie ist gesperrt!", HausInfo[id][h_beschreibung], id);
HausInfo[id][h_text] = Create3DTextLabel("", 0xFF5A00FF, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], 15.0, 0, 1);
} else
{
if(HausInfo[id][h_owned]==0)
{
format(hausstring, sizeof(hausstring), "|=== %s (%i) ===|\nKaufpreis: %d$\n/hauskaufen", HausInfo[id][h_beschreibung], id, HausInfo[id][h_preis]);
HausInfo[id][h_text] = Create3DTextLabel("", 0xFF5A00FF, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], 15.0, 0, 1);
}
else
{
format(hausstring, sizeof(hausstring), "|=== %s (%i) ===|\nBesitzer: %s \nMietpreis: %d $\nMüll: %d \n/hausmieten", HausInfo[id][h_beschreibung], id, HausInfo[id][h_owner], HausInfo[id][h_mietpreis], HausInfo[id][h_muell]);
HausInfo[id][h_text] = Create3DTextLabel("", 0xFF5A00FF, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], 15.0, 0, 1);
}
}
if(HausInfo[id][h_owned]==0)
{
HausInfo[id][h_z] = CreatePickup(1273, 1, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], -1);
}
else
{
HausInfo[id][h_pickup] = CreatePickup(1272, 1, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], -1);
}
format(debug2, sizeof(debug2), "Haus %i: WURDE GELADEN!", id);
print(debug2);
}
else
{
format(debug2, sizeof(debug2), "Haus %i: WURDE NICHT GELADEN!", id);
print(debug2);
}
return 1;
}
Die Function um Häuser zu erstellen (Funktioniert meines erachtens)
forward newHouse(playerid, beschreibung[]);
public newHouse(playerid, beschreibung[])
{
new query[256], test[230];
format(test, sizeof(test), "Haus gespeichert auf X: %f | Y: %f | Z: %f", TempPlayer[playerid][tpX], TempPlayer[playerid][tpY], TempPlayer[playerid][tpZ]);
SendClientMessage(playerid, 0xFFD200FF, test);
format(query, sizeof(query), "INSERT INTO haus (`beschreibung`, `x`, `y`, `z`) VALUES ('%s', '%f', '%f', '%f')", beschreibung, TempPlayer[playerid][tpX], TempPlayer[playerid][tpY], TempPlayer[playerid][tpZ]);
mysql_query(query);
new id = mysql_insert_id();
HausInfo[id][h_created] = 1;
format(HausInfo[id][h_owner], 32, "");
format(HausInfo[id][h_beschreibung], 128, "%s", beschreibung);
HausInfo[id][h_x] = TempPlayer[playerid][tpX];
HausInfo[id][h_y] = TempPlayer[playerid][tpY];
HausInfo[id][h_z] = TempPlayer[playerid][tpZ];
/*format(HausInfo[id][h_x], 100, "%f", TempPlayer[playerid][tpX]);
format(HausInfo[id][h_y], 100, "%f", TempPlayer[playerid][tpY]);
format(HausInfo[id][h_z], 100, "%f", TempPlayer[playerid][tpZ]);*/
HausInfo[id][h_lock] = 1;
HausInfo[id][h_muell] = 0;
HausInfo[id][h_mietpreis] = 500;
HausInfo[id][h_sperre] = 0;
HausInfo[id][h_interior] = random(9);
HausInfo[id][h_preis] = HausInnenraum[HausInfo[id][h_interior]][addpreis];
format(HausInfo[id][h_addtime], 50, "%f", gettime());
format(HausInfo[id][h_updatetime], 50, "%f", gettime());
saveHouse(id);
genereteHouse(id);
return 1;
}
LoadHouse soll wie der name schon sagt die Häuser laden
stock LoadHouses()
{
new query[300], val[128], debug2[300];
for(new i=0;i<sizeof(HausInfo);i++)
{
if(House_exist(i)==0) continue;
format(query, sizeof(query), "SELECT * FROM `haus` WHERE `id`='%i'",i);
mysql_query(query);
mysql_store_result();
if(mysql_retrieve_row())
{
format(debug2, sizeof(debug2), "Haus %i: wurde geladen!", i);
print(debug2);
HausInfo[i][h_created] = 1;
mysql_get_field("besitzer",val); format(HausInfo[i][h_owner], sizeof(val), "%s", val);
if(!strlen(HausInfo[i][h_owner]))
{
HausInfo[i][h_owned] = 0;
}
else
{
HausInfo[i][h_owned] = 1;
}
mysql_get_field("beschreibung",val); HausInfo[i][h_beschreibung] = val;
mysql_get_field("interior",val); HausInfo[i][h_interior] = strval(val);
mysql_get_field("hlock",val); HausInfo[i][h_lock] = strval(val);
mysql_get_field("muell",val); HausInfo[i][h_muell] = strval(val);
mysql_get_field("sperre",val); HausInfo[i][h_sperre] = strval(val);
mysql_get_field("h_preis",val); HausInfo[i][h_preis] = strval(val);
mysql_get_field("h_mietpreis",val); HausInfo[i][h_mietpreis] = strval(val);
mysql_get_field("addtime",val); HausInfo[i][h_addtime] = strval(val);
mysql_get_field("updatetime",val); HausInfo[i][h_updatetime] = strval(val);
mysql_get_field("x",val); HausInfo[i][h_x] = floatstr(val);
mysql_get_field("y",val); HausInfo[i][h_y] = floatstr(val);
mysql_get_field("z",val); HausInfo[i][h_z] = floatstr(val);
genereteHouse(i);
} else
{
format(debug2, sizeof(debug2), "Haus %i: WURDE NICHT GELADEN!", i);
print(debug2);
}
}
return 1;
//mysql_GetString2
}
Der Adminbefehl um Häuser zu erstellen
ocmd:addhaus(playerid, params[])
{
new bs[200], adminfo[200];
GetPlayerPos(playerid, TempPlayer[playerid][tpX], TempPlayer[playerid][tpY], TempPlayer[playerid][tpZ]);
if(isPlayerAnAdmin(playerid, 3))
{
if(sscanf(params,"s",bs))
{
SendClientMessage(playerid, 0xFEFEFEFF, "{00CC1E}Verwende: {002DFF}/addhaus [Haus Beschreibung]");
}
else
{
newHouse(playerid, bs);
format(adminfo, sizeof(adminfo), "Admin %s hat einen Neuen Haus erstellt", GetName(playerid));
SendMessageAdmin(0xFFD200FF, adminfo);
}
}
else
{
SendClientMessage(playerid, 0xCD0900FF, "Du hast nicht die nötigen Rechte!");
}
return 1;
}
Need help!