Listen Dialog Frage

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
  • Guten Mittag,


    Ich möchte mal etwas fragen.
    Ich versuche ein Dialogen Listen System zu machen:


    for ( new i; i < MAX_PLAYERS; i++ )
    {
    if(i == INVALID_PLAYER_ID)continue;
    if(var[i] != bedingung)continue;
    format(string, sizeof(string), "Spieler: %s\n%s", Spielername(i), string);
    ShowPlayerDialog(playerid, id, DIALOG_STYLE_LIST, "..", string, "Wählen", "");
    }


    Wenn es zum Beispiel mir der Fall ist, das die Bedingung erfüllt wurde, dann soll ich angezeigt werden, nach dem jetzigen Code würde das auch Klappen.
    Nur ich möchte auch das man auf mich draufklicken kann, und das dann z.B meine ID für weitere funktionen in eine zwischenvariable speichert.
    Sprich, mann soll auf mich draufklicken können oder bei den anderen Usern bei denen die Bedingung erfüllt wurde.
    Mich würde mal interessieren wie sowas funktonieren würde,


    Mit Freundlichen Grüßen


    Michael aka MrPawn

  • Ich würde dir mein Tutorial empfehlen.
    [ SCRIPTING ] [jTuT] Interaktive Dialoge


    Damit kannst du den Inhalt der Zeile des listitems abfragen, und an Hand dessen dann deine Bedingung einfach mit strcmp prüfen.


    Das ist alles schön & Gut Jeffry, aber ich möchte es so machen wie es alle machen.
    Nochmal eine genauere Erklärung: z.B /accept oamt


    Der OÄmtler sieht wer alles einen Auftrag hat, z.B auftrag[i] == true)
    Dann drückt der oämtler die pos, das heißt die id.
    Ganz einfach erklärt ;)
    Aber schon mal danke für die Empfehlung

  • if(dialogid==DEIN_DIALOG)
    {
    new count = -1;
    if(response)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(var[i] == bedingung) count++;
    if(count != listitem) continue;
    //Mache was hier... i = die Spieler ID auf dessen Name du gedrückt hast.
    break;
    }
    }
    }


    Wobei das natürlich nicht den Fall regeln kann, wenn sich die Bedingung ändert, während der Spieler den Dialog offen hat, das würde mit meinem Tutorial gehen, deshalb ist es auch mehr Code.


  • Erstmal danke, für eine erneute & schnelle Antwort.
    Dieser Quelltext ist schon verständlicher für mich.


    Aktuell habe ich es so:


    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(i == INVALID_PLAYER_ID || uInfo[i][pEingeloggt] != 1)continue;
    if(uInfo[i][pWanteds] != 0) count ++;
    if(count != listitem)continue;
    SetPVarInt(playerid, "CID", i);
    format(string, sizeof(string), "{FFFFFF}Möchtest du dir wirklich die Akte von %s krallen?", Spielername(i));
    ShowPlayerDialog(playerid, DIALOG_FRAKTIONS_SAPD_AKTEN, DIALOG_STYLE_MSGBOX, "Akte", string, "Ja", "Nein");
    }


    Wäre das soweit richtig ?

  • Wenn du nur die Spieler anzeigen lässt, die ein "[pWanteds]" haben welches nicht 0 ist, dann ja.


    Es gibt dabei einen Kleinen Fehler Jeffry.
    Und zwar ich kann jeden anderen anklicken aber keiner kann auf meinen Namen klicken.


    Aktueller Quellcode:


    for( new i; i < MAX_PLAYERS; i++)
    {
    if(i == INVALID_PLAYER_ID || uInfo[i][pEingeloggt] != 1)continue;
    if(uInfo[i][pWanteds] == 0)continue;
    format(string, sizeof(string), "Spieler: %s | %i Wanteds\n%s", Spielername(i), uInfo[i][pWanteds], string);
    ShowPlayerDialog(playerid, DIALOG_FRAKTIONS_SAPD_AKTENx, DIALOG_STYLE_LIST, "Akten", string, "Weiter", "Abbrechen");
    }


    new count;
    if(response)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(i == INVALID_PLAYER_ID || uInfo[i][pEingeloggt] != 1)continue;
    if(uInfo[i][pWanteds] != 0) count ++;
    if(count != listitem)continue;
    SetPVarInt(playerid, "CID", i);
    format(string, sizeof(string), "{FFFFFF}Möchtest du dir wirklich die Akte von %s krallen?", Spielername(i));
    ShowPlayerDialog(playerid, DIALOG_FRAKTIONS_SAPD_AKTEN, DIALOG_STYLE_MSGBOX, "Akte", string, "Ja", "Nein");
    }
    }


    Hoffe ihr könnt mir helfen!