Siehe Code unten neu erstellt und verbessert
(E) Code Alt
(E) Code Neu
(E) Code Überschrift
(E) Test gemacht
(E) Code neu gemacht ohne erfolg ..
Siehe unten
Siehe Code unten neu erstellt und verbessert
(E) Code Alt
(E) Code Neu
(E) Code Überschrift
(E) Test gemacht
(E) Code neu gemacht ohne erfolg ..
Siehe unten
Hi
Ich kenne mich mit Dini nicht so aus, aber Du hast sicher ein Enum, poste dieses bitte mal. Wenn Du den Code für das Laden der Häuser beim Serverstart hast, poste diesen auch mit. Meistens passiert dort der Fehler (Ich spreche aus Erfahrung, hatte selber mit meinem Vehiclesystem solch ein Einzeiler Problem)
Simon
Ich habe eben ein Test durch geführt und das ergebniss war:
ich konnte ein haus erstellen doch er hat das haus was ich erstellt habe sofort
50 mal erstellt also das Limit nur wieso? vlt beim Createn wegen MaxHaus?
ich habe mir das Tutorial von Haxler als vorlage genommen.
Hi
Ich Dummerchen, setz nach dem LoadHaus ein return 1;
XDD
Edit Fehler
Ok klappt nun doch jetzt buggen igendwie die Labels und Pickups
wenn ich eins erstelle wird es angezeigt doch dann wenn ich ein neues Haus erstelle
zeigt er es nicht mehr an hier alles was mann brauch:
#define MaxHaus 50
enum Hausdatei
{
Besitzer[30],
Float:Hx,
Float:Hy,
Float:Hz,
Float:Ix,
Float:Iy,
Float:Iz,
Zimmer,
Inte,
World,
HPreis,
Verkauft,
Verschlossen,
Hlevel,
Hkasse,
Hmiete
}
new HausInfo[MaxHaus][Hausdatei];
new Hausp[MaxHaus];
new Text3D:Hausa[MaxHaus];
forward LoadHaus();
forward SaveHaus();
forward UpdaHaus();
stock CreateHaus(cname[40],Float:cx,Float:cy,Float:cz,Float:zx,Float:zy,Float:zz,zimmer,inte,world,cpreis,csell,clock,clevel,ckasse,cmiete)
{
new string[128];
for(new i=1;i<MaxHaus;i++)
{
format(string,sizeof(string),"/Haus/Hausid %d.ini",i);
if(!dini_Exists(string))
{
dini_Create(string);
dini_Set(string,"Besitzer",cname);
dini_FloatSet(string,"Hx",cx);
dini_FloatSet(string,"Hy",cy);
dini_FloatSet(string,"Hz",cz);
dini_FloatSet(string,"Ix",zx);
dini_FloatSet(string,"Iy",zy);
dini_FloatSet(string,"Iz",zz);
dini_IntSet(string,"Zimmer",zimmer);
dini_IntSet(string,"Interior",inte);
dini_IntSet(string,"World",world);
dini_IntSet(string,"HPreis",cpreis);
dini_IntSet(string,"Verkauft",csell);
dini_IntSet(string,"Verschlossen",clock);
dini_IntSet(string,"Level",clevel);
dini_IntSet(string,"Kasse",ckasse);
dini_IntSet(string,"Miete",cmiete);
LoadHaus();
return 1;
}
}
return 1;
}
public LoadHaus()
{
new string[128];
for(new i=1;i<MaxHaus;i++)
{
format(string,sizeof(string),"/Haus/Hausid %d.ini",i);
if(dini_Exists(string))
{
format(HausInfo[i][Besitzer],40,"%s",dini_Get(string,"Besitzer"));
HausInfo[i][Hx] = dini_Float(string,"Hx");
HausInfo[i][Hy] = dini_Float(string,"Hy");
HausInfo[i][Hz] = dini_Float(string,"Hz");
HausInfo[i][Ix] = dini_Float(string,"Ix");
HausInfo[i][Iy] = dini_Float(string,"Iy");
HausInfo[i][Iz] = dini_Float(string,"Iz");
HausInfo[i][Zimmer] = dini_Int(string,"Zimmer");
HausInfo[i][Inte] = dini_Int(string,"Inte");
HausInfo[i][World] = dini_Int(string,"World");
HausInfo[i][HPreis] = dini_Int(string,"HPreis");
HausInfo[i][Verkauft] = dini_Int(string,"Verkauft");
HausInfo[i][Verschlossen] = dini_Int(string,"Verschlossen");
HausInfo[i][Hlevel] = dini_Int(string,"Level");
HausInfo[i][Hkasse] = dini_Int(string,"Kasse");
HausInfo[i][Hmiete] = dini_Int(string,"Miete");
}
if(HausInfo[i][Verkauft] == 0)
{
Hausp[i] = CreatePickup(1273,2,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz]);
Hausp[i] = CreatePickup(1318,2,HausInfo[i][Ix],HausInfo[i][Iy],HausInfo[i][Iz]);
format(string, sizeof(string), "Besitzer: %s \nZimmer: %d \nPreis: %d$ \nLevel: %d",HausInfo[i][Besitzer],HausInfo[i][Zimmer],HausInfo[i][HPreis],HausInfo[i][Hlevel]);
Hausa[i] = Create3DTextLabel(string,Orange,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz],10,0,1);
return 1;
}
if(HausInfo[i][Verkauft] == 1)
{
Hausp[i] = CreatePickup(1272,2,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz]);
Hausp[i] = CreatePickup(1318,2,HausInfo[i][Ix],HausInfo[i][Iy],HausInfo[i][Iz]);
format(string, sizeof(string), "Besitzer: %s \nZimmer: %d \nMiete: %d$",HausInfo[i][Besitzer],HausInfo[i][Zimmer],HausInfo[i][Hmiete]);
Hausa[i] = Create3DTextLabel(string,Orange,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz],10,0,1);
}
}
return 1;
}
public SaveHaus()
{
new string[128];
for(new i=1;i<MaxHaus;i++)
{
format(string,sizeof(string),"/Haus/Hausid %d.ini",i);
if(dini_Exists(string))
{
dini_Set(string,"Besitzer",HausInfo[i][Besitzer]);
dini_FloatSet(string,"Hx",HausInfo[i][Hx]);
dini_FloatSet(string,"Hy",HausInfo[i][Hy]);
dini_FloatSet(string,"Hz",HausInfo[i][Hz]);
dini_FloatSet(string,"Ix",HausInfo[i][Ix]);
dini_FloatSet(string,"Iy",HausInfo[i][Iy]);
dini_FloatSet(string,"Iz",HausInfo[i][Iz]);
dini_IntSet(string,"Zimmer",HausInfo[i][Zimmer]);
dini_IntSet(string,"Inte",HausInfo[i][Inte]);
dini_IntSet(string,"World",HausInfo[i][World]);
dini_IntSet(string,"HPreis",HausInfo[i][HPreis]);
dini_IntSet(string,"Verkauft",HausInfo[i][Verkauft]);
dini_IntSet(string,"Verschlossen",HausInfo[i][Verschlossen]);
dini_IntSet(string,"Level",HausInfo[i][Hlevel]);
dini_IntSet(string,"Kasse",HausInfo[i][Hkasse]);
dini_IntSet(string,"Miete",HausInfo[i][Hmiete]);
return 1;
}
}
return 1;
}
public UpdaHaus()
{
new string[128];
for(new i=1;i<MaxHaus;i++)
{
if(HausInfo[i][Verkauft] == 0)
{
DestroyPickup(Hausp[i]);
Hausp[i] = CreatePickup(1273,2,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz]);
Hausp[i] = CreatePickup(1318,2,HausInfo[i][Ix],HausInfo[i][Iy],HausInfo[i][Iz]);
format(string, sizeof(string), "Besitzer: %s \nZimmer: %d \nPreis: %d$ \nLevel: %d",HausInfo[i][Besitzer],HausInfo[i][Zimmer],HausInfo[i][HPreis],HausInfo[i][Hlevel]);
Update3DTextLabelText(Hausa[i],Orange,string);
return 1;
}
if(HausInfo[i][Verkauft] == 1)
{
DestroyPickup(Hausp[i]);
Hausp[i] = CreatePickup(1272,2,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz]);
Hausp[i] = CreatePickup(1318,2,HausInfo[i][Ix],HausInfo[i][Iy],HausInfo[i][Iz]);
format(string, sizeof(string), "Besitzer: %s \nZimmer: %d \nMiete: %d$",HausInfo[i][Besitzer],HausInfo[i][Zimmer],HausInfo[i][Hmiete]);
Update3DTextLabelText(Hausa[i],Orange,string);
}
}
return 1;
}
Hi
Du machst da ein paar Fehler:
1.) return bricht den Code ab, wenn Du aber alle Häuser laden möchtest, musst Du continue brauchen
2.) Du lädst alle Häuser neu, wenn Du ein neues Haus erstellst. Du musst LoadHaus() anpassen, sonst kann es da Probleme geben. Mein Tipp:
CreateHaus
LoadHaus
UpdateHaus
Du hast wie bei 1.) gesagt ein return-Fehler, verwende da unbedingt continue, um einen for-Wert zu erhöhen.Hinzu kommt, dass Du nur abfragen darfst, ob das Haus verkauft ist oder nicht, wenn es auch existiert, habe das umgebaut:
public LoadHaus()
{
new string[128];
for(new i=1;i<MaxHaus;i++)
{
format(string,sizeof(string),"/Haus/Hausid %d.ini",i);
if(dini_Exists(string))
{
format(HausInfo[i][Besitzer],40,"%s",dini_Get(string,"Besitzer"));
HausInfo[i][Hx] = dini_Float(string,"Hx");
HausInfo[i][Hy] = dini_Float(string,"Hy");
HausInfo[i][Hz] = dini_Float(string,"Hz");
HausInfo[i][Ix] = dini_Float(string,"Ix");
HausInfo[i][Iy] = dini_Float(string,"Iy");
HausInfo[i][Iz] = dini_Float(string,"Iz");
HausInfo[i][Zimmer] = dini_Int(string,"Zimmer");
HausInfo[i][Inte] = dini_Int(string,"Inte");
HausInfo[i][World] = dini_Int(string,"World");
HausInfo[i][HPreis] = dini_Int(string,"HPreis");
HausInfo[i][Verkauft] = dini_Int(string,"Verkauft");
HausInfo[i][Verschlossen] = dini_Int(string,"Verschlossen");
HausInfo[i][Hlevel] = dini_Int(string,"Level");
HausInfo[i][Hkasse] = dini_Int(string,"Kasse");
HausInfo[i][Hmiete] = dini_Int(string,"Miete");
if(HausInfo[i][Verkauft] == 0)
{
Hausp[i] = CreatePickup(1273,2,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz]);
Hausp[i] = CreatePickup(1318,2,HausInfo[i][Ix],HausInfo[i][Iy],HausInfo[i][Iz]);
format(string, sizeof(string), "Besitzer: %s \nZimmer: %d \nPreis: %d$ \nLevel: %d",HausInfo[i][Besitzer],HausInfo[i][Zimmer],HausInfo[i][HPreis],HausInfo[i][Hlevel]);
Hausa[i] = Create3DTextLabel(string,Orange,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz],10,0,1);
continue;
}
if(HausInfo[i][Verkauft] == 1)
{
Hausp[i] = CreatePickup(1272,2,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz]);
Hausp[i] = CreatePickup(1318,2,HausInfo[i][Ix],HausInfo[i][Iy],HausInfo[i][Iz]);
format(string, sizeof(string), "Besitzer: %s \nZimmer: %d \nMiete: %d$",HausInfo[i][Besitzer],HausInfo[i][Zimmer],HausInfo[i][Hmiete]);
Hausa[i] = Create3DTextLabel(string,Orange,HausInfo[i][Hx],HausInfo[i][Hy],HausInfo[i][Hz],10,0,1);
}
}
}
return 1;
}
MfG Simon
Ja aber z.b haxler hat auch kein continue benutzt und es soll "angeblich" gehen,
ausserdem wieso LoadHaus löschen es muss doch bei ongamemode geladen werden?
Hi
Ok, ja, Du kannst es auch als Ladecode fürn OnGameModeInit nehmen, dachte es sei dazu da, alle Häuser zu refreshen/aktualisieren. Wenn es jedoch für OnGameModeInti da ist, warum wird es bei CreateHaus nochmals benutzt ? Zu dem return, da muss ich dir glaub widersprechen. Überleg mal, was passiert, wenn das letzte erstellte Haus, welche die höchste Zahl hat im Datennamen hat, nicht verkauft ist ? Dann läuft der Code weiter bis zu MAX_Haus oä.
Simon