Frage zu einem /stats Befehl

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
  • Hallo Leute!


    Ich würde gerne einen /stats Befehl in einem Dialog machen. Ich weiß aber leider nicht, wie ich ein
    weitere Variable einfügen kann. Ich habe es geschafft, erstmal den Namen anzuzeigen, aber jetzt
    weiß ich nicht wie ich das Geld noch hinzufügen soll. Habe es so probiert



    stock SpielerName(playerid)
    {
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    return pname;
    }


    ocmd:stats(playerid,params[])
    {
    new str[200];
    format(str,200,"==== Name: %s ====",SpielerName(playerid));
    format(str,200,"==== Geld: %d ====",SpielerGeld(playerid));

    ShowPlayerDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "Statistiken", str,"OK","");
    return 1;
    }


    stock SpielerGeld(playerid)
    {
    new pmoney[MAX_PLAYER_NAME];
    GetPlayerMoney(playerid, pmoney, sizeof(pmoney));
    return pmoney;
    }


    Bekomme da aber Warnings:


    warning 202: number of arguments does not match definition
    warning 202: number of arguments does not match definition


    Die Zeile:
    GetPlayerMoney(playerid, pmoney, sizeof(pmoney));


    Wie füge ich nun noch etwas anderes hinzu? ( In meinem Beispiel Geld )


  • Wieso speicherst du das Geld in einem Stock? :D



    format(str,200,"==== Geld: %i ====",SpielerGeld(playerid)); //Ändern wir erst mal auf nen Interger.


    //Nun zu dem Stock...
    stock SpielerGeld(playerid)
    {
    GetPlayerMoney(playerid); //Wir lesen den Wert des Geldes aus..
    return GetPlayerMoney(playerid); //Und geben ihn über den Stock zurück..
    }

    Sollte funktionieren... :D


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Zitat

    stock SpielerGeld(playerid)
    {
    GetPlayerMoney(playerid); //Wir lesen den Wert des Geldes aus..
    return GetPlayerMoney(playerid); //Und geben ihn über den Stock zurück..
    }

    Besser wäre es, wenn man es so macht:
    stock SpielerGeld(playerid)
    {


    return GetPlayerMoney(playerid); //Und geben ihn über den Stock zurück..
    }


    Wobei das meiner Meinung nach unsinnig ist, da man das Geld auch ganz leicht so wiedergeben kann:


    format(str,200,"==== Geld: %d ====",GetPlayerMoney(playerid));


    Hoffe ich konnte helfen.


    Greetz
    #else


    #e
    Mir fällt gerade auf das Dein Befehl so garnicht richtig funktioniert da Du den String immer neu formatierst...
    Mach es mal lieber so:


    ocmd:stats(playerid,params[])
    {
    new str[200];
    format(str,200,"==== Name: %s ====\n==== Geld: %d ====",SpielerName(playerid),GetPlayerMoney(playerid));
    ShowPlayerDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "Statistiken", str,"OK","");
    return 1;
    }

  • #else Es gibt mehrere Möglichkeiten dies zu Regeln. Eine weitere für den string wäre:


    format(string,sizeof(string),"%s===Name: %d===\n",string,SpielerName(playerid));
    format(string,sizeof(string),"%s===Geld: %d===\n",string,GetPlayerMoney(playerid));


    ^Ist belliebig erweiterbar (Natürlich muss limit der Strings in Dialogen beachtet werden).


    Andere Möglichkeit wäre mit strcat.


    Mit beiden Möglichkeiten umgeht man das Problem mit Pawno, dass wenn es zuviel wird in einer Zeile das Pawno den unbeliebten Error ausgbit.