Firmen Stats Liest nix aus

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • 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

  • 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

  • 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 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

  • ///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;
    }

    2 Mal editiert, zuletzt von Kevin B. ()

  • 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