Hallo,
ich habe heute an meinem Haussystem weiter gemacht und bin eigentlich im groben schon fertig. Allerdings ist das Problem jetzt, dass wenn ich mit mit /createhouse ein Haus erstelle das alles funktioniert allerdings wenn ich dann noch eins erstelle dann wird das Pickup und der 3DText gelöscht und immer so weiter. Wenn ich den Server dann neu starte, wird immer das zuletzt erstellte haus angezeigt.
Code:
ocmd:createhouse(playerid,params[])
{
if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
if(PlayerInfo[playerid][pAdminlevel] <= 1337)return SendClientMessage(playerid,Grau,"Du bist nicht befugt, diesen Befehl zu nutzen!");
new Float:xc,Float:yc,Float:zc,tmp_preis,tmp_kauflevel;
GetPlayerPos(playerid,xc,yc,zc);
if(sscanf(params,"ii",tmp_preis,tmp_kauflevel))return SendClientMessage(playerid,Grau,"Benutze: /createhouse [Preis] [Kauflevel]");
new id = getFreeHouseID();
HouseInfo[id][h_x] = xc;
HouseInfo[id][h_y] = yc;
HouseInfo[id][h_z] = zc;
HouseInfo[id][ih_x] = 0.0;
HouseInfo[id][ih_y] = 0.0;
HouseInfo[id][ih_z] = 0.0;
HouseInfo[id][hInterior] = 0;
strmid(HouseInfo[id][hBesitzer],"",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
HouseInfo[id][hPreis] = tmp_preis;
HouseInfo[id][hKauflevel] = tmp_kauflevel;
updateHouse(id);
//In Datenbank abspeichern
new query[256];
format(query,sizeof(query),"INSERT INTO haus (h_x, h_y, h_z, ih_x, ih_y, ih_z, h_interior, preis, kauflevel) VALUES ('%f', '%f', '%f', '0.0', '0.0', '0.0', '0', '%i', '%i')",xc, yc, zc, HouseInfo[id][hPreis], HouseInfo[id][hKauflevel]);
mysql_function_query(dbhandle,query,true,"OnHouseCreated","i",id);
return 1;
}
getFreeHouseID()
{
for(new i=0; i<sizeof(HouseInfo); i++)
{
if(HouseInfo[i][hID] == 0) return 1;
}
return 1;
}
hatPlayerHaus(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
for(new i=0; i<sizeof(HouseInfo); i++)
{
if(!HouseInfo[i][hID]) continue;
if(!strlen(HouseInfo[i][hBesitzer])) continue;
if(!strcmp(name,HouseInfo[i][hBesitzer],true)) return 1;
}
return 0;
}
updateHouse(id)
{
new string[128];
if(HouseInfo[id][hPickup])
{
DestroyPickup(HouseInfo[id][hPickup]);
}
if(HouseInfo[id][hText])
{
Delete3DTextLabel(HouseInfo[id][hText]);
}
if(!strlen(HouseInfo[id][hBesitzer]))
{
HouseInfo[id][hPickup] = CreatePickup(1273,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
format(string,sizeof(string),"Zum Verkauf\nPreis: %i$\nKauflevel: %i\n/buyhouse",HouseInfo[id][hPreis],HouseInfo[id][hKauflevel]);
HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
}
else
{
HouseInfo[id][hPickup] = CreatePickup(1272,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
format(string,sizeof(string),"Besitzer: %s\nWert: %i$\nKauflevel: %i\n/enter",HouseInfo[id][hBesitzer],HouseInfo[id][hPreis],HouseInfo[id][hKauflevel]);
HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
}
return 1;
}
saveHouse(id)
{
new query[128];
format(query,sizeof(query),"UPDATE haus SET besitzer='%s', preis'%i', kauflevel'%i' WHERE id='%i'",HouseInfo[id][hBesitzer],HouseInfo[id][hPreis],HouseInfo[id][hKauflevel],HouseInfo[id][hID]);
mysql_function_query(dbhandle,query,false,"","");
return 1;
}
public OnHousesCreated(id)
{
HouseInfo[id][hID] = cache_insert_id();
return 1;
}
public OnHousesLoad()
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,dbhandle);
if(!num_rows)return 1;
for(new i=0; i<num_rows; i++)
{
new id = getFreeHouseID();
HouseInfo[id][h_x] = cache_get_field_content_float(i,"h_x",dbhandle);
HouseInfo[id][h_y] = cache_get_field_content_float(i,"h_y",dbhandle);
HouseInfo[id][h_z] = cache_get_field_content_float(i,"h_z",dbhandle);
HouseInfo[id][ih_x] = cache_get_field_content_float(i,"ih_x",dbhandle);
HouseInfo[id][ih_y] = cache_get_field_content_float(i,"ih_y",dbhandle);
HouseInfo[id][ih_z] = cache_get_field_content_float(i,"ih_z",dbhandle);
HouseInfo[id][hInterior] = cache_get_field_content_int(i,"h_interior",dbhandle);
HouseInfo[id][hPreis] = cache_get_field_content_int(i,"preis",dbhandle);
HouseInfo[id][hKauflevel] = cache_get_field_content_int(i,"kauflevel",dbhandle);
new tmp_name[MAX_PLAYER_NAME];
cache_get_field_content(i,"besitzer",tmp_name,dbhandle);
strmid(HouseInfo[id][hBesitzer],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
HouseInfo[id][hID] = cache_get_field_content_int(i,"id",dbhandle);
updateHouse(id);
}
return 1;
}