/stats - Dialog erstellen ?

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
  • Nabend zusammen.


    Ich bin gerade dabei einen /stats Dialog zu erstellen.
    Bzw. ich habe erstmal geschafft eine Stats abfrage zu erstellen.
    Derzeit zeigt er mir alle daten in einer reihe im Chat an.
    Ich würde es nur gerne in einen Dialog packen.
    Also das es dort halt mehrere Kategorien gibt.
    Z.B so:


    Persöhnliches
    Berufliches
    Finanzen


    Ich klicke auf Persöhnliches und dann öffnet sich sowas:


    Name: Trusted
    Level: 1
    Alter: 16
    blabla : blabla


    Ich hoffe ihr habt verstanden was ich meine.
    Hoffe auf hilfe :)

  • Dann musst du erst einen List Dialog und danach einen MSG BOX Dialog erstellen...
    Also das man zwischen Kategorien auswählen kann und danach sich eine anschauen kann?


    Falls das eine Frage war -> Ja .
    Halt wie ich es in meinem Beispiel versucht habe zu erklären.


    Also einen List Dialog und dann einen MSG Box Dialog.
    Aber wie mache ich dann das es mit der MSG Box erst aufgerufen wird wenn ich im List Dialog was angeklickt habe ?

  • Also z.B so:


    ShowPlayerDialog(playerid,stats,DIALOG_STYLE_LIST,"Stats","Persöhnliches","Berufliches","Auswählen","Abbrechen"\tShowPlayerDialog(playerid,stats,DIALOG_STYLE_MSGBOX","Name: Trusted","Level: 1","Schließen","Zurück");


    oO ? Das kann nicht gehen . Tut mir leid bin doch noch so unreif im Scripten o:

  • Du definierst oben im Script die Dialognamen, weil du ja mit mehreren arbeitest.
    Im Befehl /stats rufst du dann den Listen-Dialog auf.


    Unter OnPlayerDialogResponse, lässt du je nachdem, welches listitem gewählt wurde, den entsprechenden Dialog aufrufen.


    Kleiner Denkanstoß:
    #define DIALOG_STATS
    #define DIALOG_PERSOENLICHES
    #define DIALOG_BERUFLICHES
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/stats", cmdtext, true, 10) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_LIST,"Statistiken","Persönliches\nBerufliches","Bestätigen","Abbrechen");
    return 1;
    }
    return 0;
    }

    Wie du mit OnDialogResponse arbeitest, kannst du hier herauslesen: http://wiki.sa-mp.com/wiki/OnDialogResponse


  • ShowPlayerDialog(playerid,stats,DIALOG_STYLE_LIST,"Stats","Persöhnliches\nBerufliches","Auswählen","Abbrechen");


    //OnDialogResponse
    if(dialogid==stats)//abfrage des dialoges
    {
    if(response)//abfrage, ob man auf den ersten button gedrückt hat
    {
    switch(listitem)//die listitems switchen, ist besser als die ganzen if abfragen
    {
    case 0://listitems fangen bei 0 an, dh. erster listitem ausgewählt "persöhnliches"
    {
    ShowPlayerDialog(playerid,statsI,DIALOG_STYLE_MSGBOX,"Name: Trusted","Level: 1","Schließen","Zurück");
    }
    }
    }
    }



  • Danke auch dir!


    Das macht mich grade glücklich , habs verstanden.
    Allerdings noch eine Frage dazu.


    Ich bin gerade dabei das er das Level , Name übernimmt.
    Das muss ich ja mit einem Format machen , ich habe da mal im Wiki geschaut
    und gesehen das "%s" Für Strings ist.


    Nun habe ich im Script folgendes eingefügt:


    }
    if(dialogid==stats)
    {
    if(response==1)
    {
    new string[64];
    ShowPlayerDialog(playerid,STATS_Persöhnliches,DIALOG_STYLE_MSGBOX,"Persöhnliches","Name: %s","Schließen","Zurück");
    }
    }
    return 1;
    }


    Bekomme aber einen Error. Also beim new string[64]
    Wie mache ich das richtig ?

  • du musst nen string formatieren :)

    new string[128];
    format(string,sizeof(string),"Name: %s\nLevel: %s",Name,level);//variablen namen ändern
    ShowPlayerDialog(playerid,STATS_Persöhnliches,DIALOG_STYLE_MSGBOX,"Persöhnliches",string,"Schließen","Zurück");


    Vieelen dank!:)
    Also der Dialog öffnet und ich komme auch von Dialog zu Dialog.
    Super , dass motiviert mich weiter zu machen.


    Aber das mit den Formaten habe ich noch nicht verstanden.
    Ich habe es jetzt so:


    new string[128];
    format(string,sizeof(string),"Name: %s\nLevel: %s",GetPlayerName(playerid));
    ShowPlayerDialog(playerid,STATS_Persöhnliches,DIALOG_STYLE_MSGBOX,"Persöhnliches","Name: %s\nLevel: %s","Schließen","Zurück");


    Aber Ingame wenn ich dann in der MSGBOX bin bei Persöhnliches steht da:


    Name: %s
    Level: %s


    Also ist da noch was nicht richtig.
    Aber rücke meinem Ziel näher :thumbup:

  • Mach mal folgendes:
    new string, name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name)); //Name wird ausgelesen
    format(string,sizeof(string),"Name: %s",name));
    ShowPlayerDialog(playerid,STATS_Persöhnliches,DIALOG_STYLE_MSGBOX,"Persöhnliches","Name: %s\nLevel: %s","Schließen","Zurück");Bei Geld muss du das ja erstmal irgendwo abspeichern bspw. wenn du ein Login/Register-System machst, kannst du die Werte, welche dort gespeichert werden dann einfach in den Stats auslesen.

  • machs so, ich editiere mal das von scott.

    new string, name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name)); //Name wird ausgelesen
    format(string,sizeof(string),"Name: %s\nLevel: %d",name,GetPlayerScore(playerid));
    ShowPlayerDialog(playerid,STATS_Persöhnliches,DIALOG_STYLE_MSGBOX,"Persöhnliches","Name: %s\nLevel: %s","Schließen","Zurück");

  • new string, name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); //Name wird ausgelesen format(string,sizeof(string),"Name: %s",name)); ShowPlayerDialog(playerid,STATS_Persöhnliches,DIALOG_STYLE_MSGBOX,"Persöhnliches","Name: %s\nLevel: %s","Schließen","Zurück");


    Bekomm ich Errors:


    C:\Users\Lukas\Desktop\Selfmade\gamemodes\tutorial.pwn(470) : error 035: argument type mismatch (argument 1)
    C:\Users\Lukas\Desktop\Selfmade\gamemodes\tutorial.pwn(470) : error 035: argument type mismatch (argument 1)
    C:\Users\Lukas\Desktop\Selfmade\gamemodes\tutorial.pwn(470) : error 029: invalid expression, assumed zero
    C:\Users\Lukas\Desktop\Selfmade\gamemodes\tutorial.pwn(470) : fatal error 107: too many error messages on one line


    format(string,sizeof(string),"Name: %s",name));


  • Eine klammer zu viel ;)
    Ich hab dir ein post drüber noch gezeigt, wie es weitergehen würde.


  • Eine klammer zu viel ;)
    Ich hab dir ein post drüber noch gezeigt, wie es weitergehen würde.


    Nein, kann keine Klammer zu viel sein. Wenn ich die weg mache hinten bekomme ich noch mehr Errors..


    Hab es editiert. Bekomme immernoch 2Errors:


    C:\Users\Lukas\Desktop\Selfmade\gamemodes\tutorial.pwn(470) : error 035: argument type mismatch (argument 1)
    C:\Users\Lukas\Desktop\Selfmade\gamemodes\tutorial.pwn(470) : error 035: argument type mismatch (argument 1)
    C:\Users\Lukas\Desktop\Selfmade\gamemodes\tutorial.pwn(468) : warning 203: symbol is never used: "string"