Guten Tag Community!
Ich brauche Hilfe mit mein Haus System.
Wenn ich ein Haus erstelle ist noch alles richtig, aber ich kann es nicht sofort kaufen erst nach dem Restart.
So wenn ich es kaufe und den Server restarte, kann man das Haus wieder kaufen obwohl ich in der Datenbank als Besitzer drinne stehe.
Wenn man es erstellt ist auch der 3DLabelText so wie wenn man es kaufen kann und das pickup ist auch grün,
wenn man es Kauft ändert sich der Label und das Pickup auch. Soweit geht alles.
Wenn ich den Server restarte ist das Pickup wieder grün und der text ist so, ob man das Haus erstellt hat.
Nun gut hier ist der Code:
public LoadHaus()
{
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,dbhandle);
if(!num_rows)return 1;
for(new i=0; i<num_rows; i++)
{
new id = GetFreeHouseID();
hInfo[id][hx] = cache_get_field_content_float(i,"hx",dbhandle);
hInfo[id][hy] = cache_get_field_content_float(i,"hy",dbhandle);
hInfo[id][hz] = cache_get_field_content_float(i,"hz",dbhandle);
hInfo[id][i_x] = cache_get_field_content_float(i,"ix",dbhandle);
hInfo[id][i_y] = cache_get_field_content_float(i,"iy",dbhandle);
hInfo[id][i_z] = cache_get_field_content_float(i,"iz",dbhandle);
hInfo[id][h_interior] = cache_get_field_content_int(i,"h_interior",dbhandle);
new tmp_name[MAX_PLAYER_NAME];
strmid(hInfo[id][h_besitzer],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
cache_get_field_content(i,"h_besitzer",tmp_name,dbhandle);
hInfo[id][h_level] = cache_get_field_content_int(i,"kauflevel",dbhandle);
hInfo[id][h_preis] = cache_get_field_content_int(i,"kaufpreis",dbhandle);
hInfo[id][db_id] = cache_get_field_content_int(i,"id",dbhandle);
UpdateHaus(id);
printf("Haus %d wurde erfolgreich Geladen.",id);
}
return 1;
}
UpdateHaus(id)
{
new string[250];
if(hInfo[id][h_pickup])
{
DestroyPickup(hInfo[id][h_pickup]);
}
if(hInfo[id][h_text])
{
Delete3DTextLabel(hInfo[id][h_text]);
}
if(!strlen(hInfo[id][h_besitzer]))
{
format(string,250,"\
{007AFF}Besitzer: {FEFEFE}-unbekannt-\n\
{007AFF}Level: {FEFEFE}%d\n\
{007AFF}Kaufpreis: {FEFEFE}%d$\n\
{007AFF}Beschreibung: {FEFEFE}Dieses Haus steht zum Verkauf.\n\n\
Benutze /buyhouse um das Haus zu kaufen",
hInfo[id][h_level],hInfo[id][h_preis]);
hInfo[id][h_pickup] = CreatePickup(1273, 1, hInfo[id][hx],hInfo[id][hy],hInfo[id][hz],-1);
hInfo[id][h_text] = Create3DTextLabel(string,COLOR_ROT,hInfo[id][hx],hInfo[id][hy],hInfo[id][hz],10,0,1);
print("UpdateHaus ohne Besitzer wurde aufgerufen");
}
else
{
format(string,250,"\
{007AFF}Besitzer: {FEFEFE}%s\n\
{007AFF}Level: {FEFEFE}%d\n\
{007AFF}Miete: {FEFEFE}0$",
hInfo[id][h_besitzer],hInfo[id][h_level]);
hInfo[id][h_pickup] = CreatePickup(1272, 1, hInfo[id][hx],hInfo[id][hy],hInfo[id][hz],-1);
hInfo[id][h_text] = Create3DTextLabel(string,COLOR_ROT,hInfo[id][hx],hInfo[id][hy],hInfo[id][hz],10,0,1);
print("UpdateHaus mit Besitzer wurde aufgerufen");
}
return 1;
}
ocmd:createhouse(playerid,params[])
{
if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht Eingeloggt!");
if(pInfo[playerid][pAdmin] <6)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen Befehl zu nutzen!");
new klevel,kpreis;
if(sscanf(params,"ii",klevel,kpreis))return SCM(playerid,COLOR_GRAU,"INFO: /createhouse [kauflevel] [kaufpreis]");
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
new query[250];
new id = GetFreeHouseID();
hInfo[id][hx] = x;
hInfo[id][hy] = y;
hInfo[id][hz] = z;
hInfo[id][i_x] = 0.0;
hInfo[id][i_y] = 0.0;
hInfo[id][i_z] = 0.0;
hInfo[id][h_interior] = 0;
hInfo[id][h_level] = klevel;
hInfo[id][h_preis] = kpreis;
strmid(hInfo[id][h_besitzer], "",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
format(query,250,"INSERT INTO haus (hx,hy,hz,ix,iy,iz,h_interior,kauflevel,kaufpreis) VALUES ('%f','%f','%f','0.0','0.0','0.0','0','%i','%i')",
x,y,z,klevel,kpreis);
mysql_function_query(dbhandle,query,true,"CreateHaus","i",id);
UpdateHaus(id);
printf("%s",query);
return 1;
}
ocmd:buyhouse(playerid,params[])
{
if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
new string[128];
if(HasPlayerHaus(playerid))return SendClientMessage(playerid,COLOR_GRAU,"Du hast bereits ein Haus.");
for(new i=0; i<sizeof(hInfo); i++)
{
if(!hInfo[i][db_id])continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
if(!strlen(hInfo[i][h_besitzer]))
{
if(GetPlayerMoney(playerid) < hInfo[i][h_preis])return SCM(playerid,COLOR_GRAU,"Du hast nicht genügend Geld für das Haus!");
if(GetPlayerScore(playerid) < hInfo[i][h_level])return SCM(playerid,COLOR_GRAU,"Du hast nicht das nötige Level für das Haus!");
GivePlayerMoney(playerid,-hInfo[i][h_preis]);
strmid(hInfo[i][h_besitzer], SpielerName(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
format(string,128,"** Du hast das Haus erfolgreich für %d$ gekauft. **",hInfo[i][h_preis]);
SCM(playerid,COLOR_GELB,string);
UpdateHaus(i);
SaveHaus(i);
return 1;
}
return SCM(playerid,COLOR_GRAU,"Dieses Haus ist bereits verkauft.");
}
return 1;
}