Befehl zum Abfragen von Online Admins funktioniert nicht.

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
  • dcmd_admins(playerid,params[])
    {
    #pragma unused params
    new count = 0;
    new string[128];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if (IsPlayerConnected(i))
    {
    if(AccInfo[i][Level] >= 1 && AccInfo[i][Hide] == 0)
    {

    switch(AccInfo[i][OnDuty])
    {
    case 0: AdmDuty = "Busy";
    case 1: AdmDuty = "Available";
    }
    format(string, 128, "Admin %s (ID: %i)- Level %d - %s\n",PlayerName2(i),i, AccInfo[i][Level],AdmDuty);
    count++;
    ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins",string,"Close","");
    }
    }
    }
    if (count == 0)
    ShowPlayerDialog(playerid,NO_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins","\n\n\n\nThere are no admins online.","Close","");
    return 1;
    }


    Mir wird immer nur ein Administrator angezeigt, obwohl mehrere Online sind.

  • Weil Du den Dialog schon in der For-Schleife anzeigen lässt.


    Mach das
    ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins",string,"Close","");
    unter die For-Schleife.


    Außerdem ist der String inkorrekt.


    format(string, 128, "%s\nAdmin %s (ID: %i)- Level %d - %s\n",string, PlayerName2(i),i, AccInfo[i][Level],AdmDuty);

    Du überschreibst ja den String, daher wird immer nur der zuletzt durchlaufene Admin angezeigt.
    So wird es funktionieren.
    @Fuldara:

  • Schreib es so, dass ist wesentlich besser und richtiger:


    dcmd_admins(playerid,params[])
    {
    #pragma unused params
    new string[128];
    for(new i; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !AccInfo[i][Level] || AccInfo[i][Hide]) continue;
    format(string, sizeof string, "%sAdmin %s (ID: %i)- Level %d - %s\n",string,PlayerName2(i),i, AccInfo[i][Level],(!AccInfo[i][OnDuty]) ? ("Busy") : ("Available"));
    }
    if(!string[0]) return ShowPlayerDialog(playerid,NO_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins","\n\n\n\nThere are no admins online.","Close","");
    return ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins",string,"Close","");
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • format(string, 128, "Admin %s (ID: %i)- Level %d - %s\n",PlayerName2(i),i, AccInfo[i][Level],AdmDuty);


    zu


    format(string, 128, "Admin %s (ID: %i)- Level %d - %s\n%s",PlayerName2(i),i, AccInfo[i][Level],AdmDuty,string);


    Versuche das mal :thumbup:

  • Es kann ja sein, das der Code von euch auch Funktioniert.
    Habe es nur bis jetzt immer so gemacht.
    Das der String mit nochmal unten drunter ausgegeben wird, und hatte nie Probleme.
    Dennoch sage ich nicht das euer Code nicht stimmt, kann ich ja schließlich auch nicht da ich es noch nicht ausprobiert habe.


    Mit freundlichen Grüßen,


    MrPawn :thumbup:

  • Habe es nur bis jetzt immer so gemacht.


    Ja...aber es ist dann halt anders sortiert :D


    for(new i; i<5; i++) {
    format(string,sizeof string,"Hallo ID: %d|%s",i,string);
    }


    /*
    Gibt aus:
    Hallo ID: 4|Hallo ID: 3|Hallo ID: 2|Hallo ID: 1|Hallo ID: 0|
    */


    //Und mein/unser Code gibt aus:


    for(new i; i<5; i++) {
    format(string,sizeof string,"%sHallo ID: %d|",string,i);
    }


    /*
    Gibt aus:
    Hallo ID: 0|Hallo ID: 1|Hallo ID: 2|Hallo ID: 3|Hallo ID: 4|
    */


    mfg. :rolleyes:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S