Aus String ID herrausfinden

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


    ich hab ne Frage.
    Ich hoffe ihr könnt mir helfen.


    Und zwar:


    Wenn ich jetzt nen Dialog habe wo mir die Spieler mit Wanteds angezeigt werden und ich auf einen dieser klicke soll es die ID von demjenigem mit übermitteln der gerade angeklickt wurde.
    Da es ja jedes mal ein anderer sein kann weiß ich nicht wie ich das anfangen soll aus dem Text die ID herrauszufinden.


    So siehts momentan aus:

    format(string,sizeof(string),"Name: %s Wanted(s): %d",SpielerName(i),GetPlayerWantedLevel(i));
    ShowPlayerDialog(i,DialogSubjects,DIALOG_STYLE_LIST,"Verbrecher Akte",string,"Ok","Abbrechen");


    Wenn ich jetzt listitem 2 anklicke wie bekomm ich die playerid von %s raus?
    Geht das überhaupt?


    - Tom

  • Was ist dein genaues Vorhaben?



    Eine Wantedliste.
    Mit /wanteds sollen alle Spieler mit Wanteds angezeigt werden. (Name: %s Wanted(s): %d)
    Wenn man dann auf einen der Spieler drauf klickt soll sich ein weiterer Dialog mit weiteren Infos öffnen.


    Mein Problem liegt halt daran, wenn er auf listitem==2 zB klickt muss er aus dem String ja irgentwie den Namen entnehmen und
    daran die ID des Spielers fest machen um weitere Daten auslesen zu können.


    - Tom

  • Das Problem ist ja nur das die Abfrage wo ich die SpielerID wieder brauche ja erst bei OnDialogResponse kommt.
    Der Code oben von mir ist bei ocmd:... also dem Command drin.


    Kann man listitems verallgemeinern, das ich abfrage egal welches Listitem man nun drückt er nach einem namen sucht und daraus dann die ID zieht?


    - Tom


    #edit:

    ocmd:wanteds(...)
    {
    ...
    format(string,sizeof(string),"Name: %s Wanted(s): %d",SpielerName(i),GetPlayerWantedLevel(i));
    ShowPlayerDialog(i,DialogSubjects,DIALOG_STYLE_LIST,"Verbrecher Akte",string,"Ok","Abbrechen");
    ...
    }


    public OnDialogResponse(...)
    {
    if(dialogid)...
    if(response)
    {
    ...
    }
    if(listitem)
    {
    //id des angeklickten namen mit wanteds um neuen Dialog mit weiteren Infos zu öffnen
    }
    return 1;
    }


  • Der Text der angelegten List Items ist der Inputtext


    MFG Arendium


    //Edit Danach könntest du evtl. Splitten:



    new Name[32], Wanteds;
    sscanf(inputtext,"p<:>{s[10]}s[32]{s[10]}d",Name,Wanteds);

  • Da es ja aber ein Listen-Dialog ist woher soll das Script dann wissen aus welcher Zeile er den Text beziehen soll? ?(


    - Tom


    Weil der Text = der Text des Angeklickten Inputs ist, woher sollte es denn sonst überhaupt wissen was da stehen soll ^^


    Beispiel Code(ungtestet)



    new Name[32], Wanteds;
    sscanf(inputtext,"p<:>{s[10]}s[32]{s[10]}d",Name,Wanteds);

  • Danke das hilft mir schonmal weiter.
    Ich arbeite dann morgen weiter dran.


    Danke an alle die mir geholfen haben.


    - Tom


    #edit:


    Wie kann ich am besten jeden Spieler der Wanteds hat den Namen auslesen und speichern sodass ich die Namen der Wantedler dann vergleichen kann mit dem Inputtext?



    Einmal editiert, zuletzt von Tomsen ()

  • Ich hatte mir das so gedacht das ich alle Spieler mit Wanteds durchgehe, deren Namen in einen String speichern und diesen String mit dem inputtext vergleichen um den Spieler zu indetifizieren.


    - Tom