Frage zum Contractlist Dialog

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
  • ocmd:contractlist(playerid,params[])
    {
    if(SpielerInfo[playerid][Fraktion] == 4)
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(SpielerInfo[i][Fraktion] == 4)
    {
    new string[600];
    new targetid;
    if(IsPlayerConnected(i))
    {
    if(SpielerInfo[i][Fraktion] == 4)
    {
    format(string,sizeof(string),"%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n",SpielerName(targetid),SpielerInfo[targetid][Kopfgeld]);
    ShowPlayerDialog(playerid,DIALOG_Contract,DIALOG_STYLE_MSGBOX,"Contractliste",string,"0K","");
    }
    }
    }
    }
    }
    return 1;
    }
    Sobald ich hier im Spiel /Contractlist eingebe, wird nur mein Name angezeigt also Bomber - %s %i$ Obwohl ich nicht contracted bin, in der Datenbank jedoch, werden die Leute angezeigt, die Contracted auf 1 haben und Kopfgeld steht auch dahinter, jemand ne Idee? :s


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

  • Lass mich raten du hast id 0 daher ist es auch klar die weisst der variabel targetid nix zu also bleibt die lieber variabel auch null
    daher könnte ich mir dies auch so denken das nur dein name angeziegt wird und mal ehrlich was willst du mit deinem command erreichen
    du frägst hier zweimal if(SpielerInfo[i][Fraktion] == 4) ohne grund auch wenn das nur für dne spieler angeziegt wird auch die gesammt for schleife ist wie du sie gerade benutzt zweck los

  • Mal zum Grundsinn dieser Funktion..
    Ich verstehe nicht, warum du zweimal direkt hintereinander dasselbe abfragst..
    if(SpielerInfo[i][Fraktion] == 4)//Zeile 7
    und
    if(SpielerInfo[i][Fraktion] == 4)//Zeile 13


    Auch der tiefere Sinn dieser Formattierungs-Zeile entzieht sich meines Verständnisses:
    format(string,sizeof(string),"%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n%s %i$\n",SpielerName(i),SpielerInfo[i][Kopfgeld]);
    Womit sollen denn diese ganzen Parameter befüllt werden, wenn du nur den Spielernamen und sein Kopfgeld einsetzt ?


    Ich hätte mir jetzt aus meiner gezaubert, dass du eine Liste mit allen Spielern haben möchtest, die ein Kopfgeld haben, oder ?
    Dann machen wir das wie folgt:

    ocmd:contractlist(playerid,params[])
    {
    if(SpielerInfo[playerid][Fraktion] == 4)
    {
    new string[600];
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(SpielerInfo[i][Kopfgeld]>0){format(string,sizeof(string),"%s\n%s %i$",string,SpielerName(i),SpielerInfo[i][Kopfgeld]);}//Wir nehmen den bisherigen String und fügen die nächste Zeile an..
    }
    ShowPlayerDialog(playerid,DIALOG_Contract,DIALOG_STYLE_MSGBOX,"Contractliste",string,"0K","");//Wir senden den Dialog EINMAL!!!!
    //Vielleicht ist es als Liste übersichtlicher =)
    }
    return 1;
    }



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )

  • Also der Dialog soll nur gefüllt werden, wenn jemand Online kommt, der auf der Contractliste von der Hitman Fraktion steht. - Aber wenn ich connecte stehe ich automatisch drauf mit 0$ :D


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

  • ich hab ja bereits den quellcode für einen Abfrage command dazu geschrieben..
    Das mit dem Erstellen der Liste beim Connect ist schwachsinn, da sich die Liste bis dato dauerhaft ändern kann..



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )