1. i+=1; muss weg, das macht die for-Schleife automatisch.
2. Wert von MAX_HAUS
3. Bei "LoadHaus" müsste er immer 0 returnen ...
Siehe Zeile 4 und 5.
Für hsa brauchst du die Dateiendung .hsa nicht,
für fexist jedoch schon.
Eigentlich brauchst du die Zeilen nicht, da selbst beim Auslesen die Datei erstellt wird, sofern sie nicht existiert.
Mach einfach ein 2. Mal Format oder mach es so:
format(haus,50,"/haus/%d.hsa",hausid);
if(!fexist(haus))return 0;
strdel(haus, strlen(haus)-3, strlen(haus));
Damit löscht du die letzten vier Zeichen.
Lass dir davor und danach den String mit print ausgeben ob zu sehen ob es klappt.
Alles anzeigen
Habe vergessen den Code ( den ich davor geändert habe ) zu posten ..
Also der Code ist nun so:
stock LoadHaus(hausid)
{
new haus[50],str[256];
format(haus,50,"/haus/%d",hausid);
if(!fexist(haus))return 0;
HausInfo[hausid][haus_x] = getFloat:haus("X");
HausInfo[hausid][haus_y] = getFloat:haus("Y");
HausInfo[hausid][haus_z] = getFloat:haus("Z");
HausInfo[hausid][haus_xi] = getFloat:haus("XI");
HausInfo[hausid][haus_yi] = getFloat:haus("YI");
HausInfo[hausid][haus_zi] = getFloat:haus("ZI");
HausInfo[hausid][haus_preis] = getInt:haus("Preis");
HausInfo[hausid][haus_level] = getInt:haus("Level");
HausInfo[hausid][haus_rooms] = getInt:haus("Rooms");
HausInfo[hausid][haus_int] = getInt:haus("Interior");
HausInfo[hausid][haus_lock] = getInt:haus("Lock");
HausInfo[hausid][haus_mieter] = getInt:haus("Mieter");
HausInfo[hausid][haus_vw] = hausid;
HausInfo[hausid][haus_vkt] = getInt:haus("Verkauft");
HausInfo[hausid][haus_id] = getInt:haus("Hausid");
HausInfo[hausid][haus_mietable] = getInt:haus("Mietable");
HausInfo[hausid][haus_mietpreis] = getInt:haus("Miete");
HausInfo[hausid][haus_kasse] = getInt:haus("Kasse");
if(HausInfo[hausid][haus_vkt] == 0)
{
format(str,256,"Besitzer: Niemand\nLevel: %d\nPreis: $%d",HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis]);
}
else if(HausInfo[hausid][haus_vkt] == 1)
{
switch(getInt:haus("Mietable"))
{
case 0:{format(str,256,"Besitzer: %s\nLevel: %d\nPreis: $%d",getString:haus("Besitzer"),HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis]);}
case 1:{format(str,256,"Besitzer: %s\nLevel: %d\nPreis: $%d\nMietpreis: $%d\nRäume frei: %d / %d",getString:haus("Besitzer"),HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis],HausInfo[hausid][haus_mietpreis],HausInfo[hausid][haus_rooms] -HausInfo[hausid][haus_mieter],HausInfo[hausid][haus_rooms]);}
}
}
DestroyDynamic3DTextLabel(HausInfo[hausid][haus_label]);
DestroyDynamicPickup(HausInfo[hausid][haus_pickup]);
HausInfo[hausid][haus_pickup] = CreateDynamicPickup(1273 ,23,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],-1,-1,-1,20);
HausInfo[hausid][haus_label] = CreateDynamic3DTextLabel(str,-1,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
//Create3DTextLabel(str,-1,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],50,-1,1);
SaveAll();
printf("Haus %d wurde erfolgreich geladen.",hausid);
return 0;
}
stock SaveHaus(hausid)
{
new haus[50];
for(new i=0;i<MAX_HAUS;i++)
{
format(haus,50,"/haus/%d",hausid);
if(!fexist(haus))return 0;
setString:haus("Besitzer",HausInfo[hausid][haus_besitzer]);
setInt:haus("Preis",HausInfo[hausid][haus_preis]);
setFloat:haus("X",HausInfo[hausid][haus_x]);
setFloat:haus("Y",HausInfo[hausid][haus_y]);
setFloat:haus("Z",HausInfo[hausid][haus_z]);
setFloat:haus("XI",HausInfo[hausid][haus_xi]);
setFloat:haus("YI",HausInfo[hausid][haus_yi]);
setFloat:haus("ZI",HausInfo[hausid][haus_zi]);
setInt:haus("Mietable",HausInfo[hausid][haus_mietable]);
setInt:haus("Miete",HausInfo[hausid][haus_mietpreis]);
setInt:haus("Level",HausInfo[hausid][haus_level]);
setInt:haus("Rooms",HausInfo[hausid][haus_rooms]);
setInt:haus("Interior",HausInfo[hausid][haus_int]);
setInt:haus("Lock",HausInfo[hausid][haus_lock]);
setInt:haus("Mieter",HausInfo[hausid][haus_mieter]);
setInt:haus("Verkauft",HausInfo[hausid][haus_vkt]);
setInt:haus("Hausid",HausInfo[hausid][haus_id]);
setInt:haus("Heal",HausInfo[hausid][haus_heal]);
setInt:haus("Kasse",HausInfo[hausid][haus_kasse]);
printf("Haus %d wurde gespeichert.",hausid);
SaveAll();
}
return 1;
}
stock CreateHaus(Float:x,Float:y,Float:z,Float:xi,Float:yi,Float:zi,preis,level,int,rooms)
{
new haus[50];
for(new i=0;i<MAX_HAUS;i++)
{
i++;
format(haus,50,"/haus/%d",i);
setString:haus("Besitzer","Niemand");
setInt:haus("Preis",preis);
setFloat:haus("X",x);
setFloat:haus("Y",y);
setFloat:haus("Z",z);
setFloat:haus("XI",xi);
setFloat:haus("YI",yi);
setFloat:haus("ZI",zi);
setInt:haus("Mietable",0);
setInt:haus("Miete",-1);
setInt:haus("Level",level);
setInt:haus("Rooms",rooms);
setInt:haus("Interior",int);
setInt:haus("Lock",1);
setInt:haus("Mieter",0);
setInt:haus("Verkauft",0);
setInt:haus("Hausid",i);
setInt:haus("Heal",0);
setInt:haus("Kasse",0);
printf("Haus %d wurde erstellt.",i);
SaveAll();
return LoadHaus(i);
}
return 1;
}
Wenn ich das "i++" entferne, kann er nur Haus ID 0 erstellen..
Wenn ich es aber lasse, erstellt er nur Haus ID 1.. vorher ging eig alles perfekt, ka was auf einmal los ist ..