hey ich hab mir Grade ein Befehl gemacht da wo er normaler weise die Dinge auslesen soll aba ihren wie macht er es nicht
ocmd:bizstats(playerid,params[])
{
for(new i=0;i<MAX_BIZZES;i++)
{
new string[128];
new name[MAX_PLAYER_NAME];
new pfad[50];
format(pfad,50,"/bizzes/%d.txt",i);
GetPlayerName(playerid,name,sizeof name);
if(strcmp(BSystem[i][Biz_Besitzer],name) != 0)return SendClientMessage(playerid,ROT,"Du hast noch keine Firma");
format(string,sizeof(string),"%sName: %s\n\n",string,BSystem[i][Biz_Name]);
format(string,sizeof(string),"%sEinahmen: %i\n",string,BSystem[i][Biz_einahmen]);
format(string,sizeof(string),"%sProdukte: %i\n",string,BSystem[i][Biz_Produkte]);
ShowPlayerDialog(playerid, DIALOG_STYLE_LIST, 0, "Firmen Infomationen", string, "Schließen", "");
}
return 1;
}
er zeigt mir bei Name: an mehr nicht bei Einahmen: 0 und bei Produkte: 0
FirmenName=Vermitung
besitzer=[BR]Kevin_Kifkat
einahmen=100000
Produkte=100
ProduktePreis=100
Woran könnte das liegen ?
lg kifkat
Firmen Stats Liest nix aus
- Kevin B.
- Geschlossen
- Erledigt
-
-
Wofür definierst du den Pfad?
Ich denke mal, er schaffts nicht die Werte auszulesennew pfad[50];
format(pfad,50,"/bizzes/%d.txt",i); -
das war nur ein test ob es so Vielleicht Geht aba war auch nicht so
woran kann das liegen ? -
Schick und lieber den Teil wo du BSystem[i][Biz_Produkte] definierst, benutzt usw.
Weil die Werte scheinen ja leer zu sein! -
Enumenum B_System
{
Float:BizX,
Float:BizY,
Float:BizZ,
Biz_Besitzer[32],
Biz_Preis,
Biz_Pickup,
Text3D:Biz_label,
Biz_Name[32],
Biz_Produkte,
Biz_ProduktePreis,
Biz_einahmen
}
new BSystem[MAX_BIZZES][B_System];bizzerstellendini_Set(pfad,"FirmenName",bizname);LadeBizzesformat(BSystem[Bizz_ID][Biz_Name],128,"%s",dini_Get(pfad,"FirmenName"));Produkte LadenBSystem[Bizz_ID][Biz_Produkte] = dini_Int(pfad,"Produkte");Erstellen dini_Set(pfad,"Produkte",Produkte); -
Du machst das sehr durcheinander und nicht ganz Nachvollziehbar.
Unter der vorraussetzung das die Werte Korrekt gelesen werden:Also ich reflektiere mal, du willst die BizStatistik von dem User anzeigenlassen der diesen Befehl eingibt.
Und er soll die Statistik seines Biz sehen.Dazu gehst du, oder bzw. willst du alle Dateien durchgehen und prüfen ob der User Besitzer von einem Biz ist.
Gute Idee, aber wozu brauchst du den Dateipfad wenn do sowieso nicht aus der Datei liest?
Du vergleichst mit dem Array, da brauchst du keinen Pfad.Die Zeile
if(strcmp(BSystem[i][Biz_Besitzer],name) != 0) return SendClientMessage(playerid,ROT,"Du hast noch keine Firma");
Ist unsinnig, warum? Wenn dem Spieler das erste Biz nicht gehört brichst du die Schleife ab mit der Nachricht "Du hast noch keine Firma"
Ihm könnte aber Biz ID 2 gehören. Das return rausnehmen ist ebenfalls keine Lösung, für jedes Biz das ihm nicht gehört würde er diese Nachricht bekommen = Spam.So nun zum eigentlich Teil dem formatieren, wieso so komisch? string in einen neuen string formatieren?
Besser wäre es einen kleinen zu haben, den immer neu zu formatieren und ihn dann in einen größeren zu packen.
Das ergebniss wird erst am ende der Schleife ausgegeben, könnte ja sein das jemand mehrere Biz hat, so werden dann alle anzeigt.
Achja ich habs mal zu einer MSGBOX gemacht.
ocmd:bizstats(playerid,params[])
{
#pragma unused params
new gesamterstring[128],teilstring[20],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
for(new i=0;i<MAX_BIZZES;i++)
{
if(strcmp(BSystem[i][Biz_Besitzer],name) == 0)
{
//Erste Teil
format(teilstring,sizeof(teilstring),"Name: %s\n\n",BSystem[i][Biz_Name]);
strins(gesamterstring,teilstring,strlen(gesamterstring));
//Zweiter Teil
format(teilstring,sizeof(teilstring),"Einahmen: %i\n",BSystem[i][Biz_einahmen]);
strins(gesamterstring,teilstring,strlen(gesamterstring));
//Dritter Teil
format(teilstring,sizeof(teilstring),"Produkte: %i\n",BSystem[i][Biz_Produkte]);
strins(gesamterstring,teilstring,strlen(gesamterstring));
}
}
//Ergebniss
ShowPlayerDialog(playerid, DIALOG_STYLE_MSGBOX, 0, "Firmen Infomationen", gesamterstring, "Schließen", "");
return 1;
}Nicht getestet.
//edit
ShowPlayerDialog korrigiert -
aso das mit der schleife das Wüste ich noch garnicht
er sagt mir im Game das es de Befehl nicht mehr Gibt ?
danke das du mir helfen willst -
Du wolltest doch per TeamViewer Hilfe haben
Dann antworte auf die PN -
Du wolltest doch per TeamViewer Hilfe haben
Dann antworte auf die PN
warum den Per TV wen man mir sogar jetzt so helfen will/kann?
wer schwachsin
jetzt kann ich ja nur den Befehl nicht nutzen
den rest weis ich ja noch nicht -
Entweder in meinem Code liegt ein Fehler oder du hast nicht richtig aus der Datei gelesen.
Setz mal über die "//Erste Teil" Zeile das hier:printf("DEBUG: ID: %d Name: %s Einnahmen: %d Produkte: %d",i,BSystem[i][Biz_Name],BSystem[i][Biz_einahmen],BSystem[i][Biz_Produkte]);
Ist nur ne Debug Zeile um zu sehen ob Werte in den Variablen stehen (und was für welche)Versuchs nochmal und Poste dann die Log stelle/n
-
-
[16:18:56] [Firmen] Firma /bizzes/0.txt geladen!
[16:18:56] DEBUG: ID: 0 Name: Vermitung Einnahmen: 100000 Produkte: 100
[16:18:56] DEBUG: ID: 1 Name: Einnahmen: 0 Produkte: 0
[16:18:56] DEBUG: ID: 2 Name: Einnahmen: 0 Produkte: 0
[16:18:56] DEBUG: ID: 3 Name: Einnahmen: 0 Produkte: 0
[16:18:56] DEBUG: ID: 4 Name: Einnahmen: 0 Produkte: 0
1-4 hab ich noch nicht mal erstellt -
Ich glaub der teilstring ist mir zu klein geraten, setz ihn mal auf 40
-
ich kann den Befehl ja nicht mal ausführen
[16:25:29] Befehl "/bizstats" existiert so nicht,schau unter /hilfe nach.
teilstring auf 40 Gestellt
[16:25:23] [Firmen] Firma /bizzes/0.txt geladen!
[16:25:29] DEBUG: ID: 0 Name: Vermitung Einnahmen: 100000 Produkte: 100
[16:25:29] DEBUG: ID: 1 Name: Einnahmen: 0 Produkte: 0
[16:25:29] DEBUG: ID: 2 Name: Einnahmen: 0 Produkte: 0
[16:25:29] DEBUG: ID: 3 Name: Einnahmen: 0 Produkte: 0
[16:25:29] DEBUG: ID: 4 Name: Einnahmen: 0 Produkte: 0 -
Er führt den Code in der Schleife aus, also wird auch der Befehl ausgeführt.
Bzw fällt mir grade auf, die ShowPlayerDialog Zeile müsste so lauten:
ShowPlayerDialog(playerid,0, DIALOG_STYLE_MSGBOX, "Firmen Infomationen", gesamterstring, "Schließen", "");
Erst die DIALOG ID und dann den Style.
Aber das hat mit dem eigentlichen Problem jetzt eher weniger zu tun.Wie liest du den Besitzernamen aus? Denn er dürfte dir eigentlich nur 1 Zeile ausgeben
-
er zeigt mir garnix an Hier bild
-
jo schon klar, (San Fierro schreibt man übrigends mit 2 r )
Aber der Debug code wird ausgeführt, d.h. er läuft die Schleife durch, er gibt den Kram hinterher aber nicht aus...Setz mal über die 2 } vor "Ergebniss"
printf("DEBUG2: %s",gesamterstring); -
///Edit
jetzt hab ich noch das Problem wen die Zahl oda der Name Kleiner ist Taucht unten ein na auf was das ?
Bild
Skripte
ocmd:bizstats(playerid,params[])
{
#pragma unused params
new gesamterstring[128],teilstring[48],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
for(new i=0;i<MAX_BIZZES;i++)
{
if(strcmp(BSystem[i][Biz_Besitzer],name) == 0)
{
format(teilstring,sizeof(teilstring),"%sName: %s\n",teilstring,BSystem[i][Biz_Name]);
format(teilstring,sizeof(teilstring),"%sEinahmen: %i\n",teilstring,BSystem[i][Biz_einahmen]);
format(teilstring,sizeof(teilstring),"%sProdukte: %i\n",teilstring,BSystem[i][Biz_Produkte]);
ShowPlayerDialog(playerid,0, DIALOG_STYLE_MSGBOX, "Firmen Infomationen", teilstring, "Schließen", "");
}
}
return 1;
} -
Wie gesagt, er nimmt die anderen Biz auchnoch mit rein obwohl die dir ja garnicht gehören.
Das er nur Na anzeigt liegt daran das der teilstring den du nutzt grade groß genug dafür ist.Nimm den größeren string,den kleinen kannste dann löschen.
Außerdem erstelle mal so viele biz wie in MAX_BIZZES vergeben.
Als Inhalt einfach die Variablen mit Werten wie "Niemand" 0 0 oder sowas -
klappt ich danke dir für die hilfe
-
breadfish.de
Hat das Thema geschlossen.