Kleine Frage zu /admins und /auftrag

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
  • Hallo com,
    als erstes habe ich den befehl /auftrag um zu sehen wer alles Kopfgeld hat und wieviel
    und einen befehl /admins um zu sehen welcher Admin on ist aber bei beiden wird nur immer 1 angezeigt aber wieso ?


    ocmd:auftrag(playerid)
    {
    if(!isPlayerInFrakt(playerid,15)) return SendClientMessage(playerid,ROT,"Nur Hitman's können die aufträge sehen!");
    new string[200];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][kGeld] >= 5000)
    {
    SendClientMessage(playerid,GELB,".: Aktuelle Aufträge :.");
    format(string,sizeof(string),"{FFFF00}ID: {FF0000}%i {FFFFFF}|| {FF0000}%s {FFFFFF}|| {FFFF00}Kopfgeld: {FF0000}%i",i,getPlayerName(i),sInfo[i][kGeld]);
    SendClientMessage(playerid,ROT,string);
    printf("%s schaut die aktuellen aufträge an!)",getPlayerName(playerid));
    printf("ID: %i || %s || Kopfgeld: %i!)",i,getPlayerName(i),sInfo[i][kGeld]);
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Es gibtr zu Zeit keine Aufträge");
    return 1;
    }
    }
    return 1;
    }


    ocmd:admins(playerid)
    {
    new string[200];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][alevel] >= 1 || sInfo[i][slevel] >= 1)
    {
    format(string,sizeof(string),"{FFFF00}ID: {FF0000}%i {FFFF00}|| {FF0000}%s {FFFF00}|| {FF0000}%s ",i,arang(i),getPlayerName(i));
    ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"{FF0000}Administratoren Online",string,"Okey","");
    printf("%s schaut die Online Administratoren an!)",getPlayerName(playerid));
    printf("ID: %i || %s || %s !)",i,arang(i),getPlayerName(i));
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Es sind zur Zeit keine Administratoren Online");
    return 1;
    }
    }
    return 1;
    }


    und 2 wie kann ich das machen das wenn z.b Spieler X ist als Cop Onduty und wenn er stirbt das er dann offduty ist einfach den wert von sInfo[playerid][cduty] = 0; setzten ?

  • Spoiler anzeigen
    ocmd:auftrag(playerid)
    {
    if(!isPlayerInFrakt(playerid,15))return SendClientMessage(playerid,ROT,"Nur Hitmans können die Aufträge sehen!");
    new bool:auftrag,string[144];
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i) || sInfo[i][kGeld] < 5000)continue;
    format(string,sizeof string,"%s\n{FFFF00}ID: {FF0000}%i {FFFFFF}|| {FF0000}%s {FFFFFF}|| {FFFF00}Kopfgeld: {FF0000}%i",string,i,getPlayerName(i),sInfo[i][kGeld]);
    auftrag = true;
    }
    if(!auftrag)return SendClientMessage(playerid,ROT,"Es gibt zu Zeit keine Aufträge");
    SendClientMessage(playerid,ROT,string);
    return 1;
    }
    ocmd:admins(playerid)
    {
    new string[200],bool:Adminsi;
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i) || sInfo[i][alevel] < 1)continue;
    format(string,sizeof string,"{FFFF00}ID: {FF0000}%i {FFFF00}|| {FF0000}%s {FFFF00}|| {FF0000}%s ",i,arang(i),getPlayerName(i));
    Adminsi = true;
    }
    if(!Adminsi)return SendClientMessage(playerid,ROT,"Es sind zur Zeit keine Administratoren Online");
    ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"{FF0000}Administratoren Online",string,"Okey","");
    return 1;
    }

    Versuch das mal so.

  • Ich gäbe das jetze so und ich werde angezeigt und wenn noch jemand on kommt wird nur der im Dialog angezeigtaber wieso ?



    //Mit /Auftrag funktioniert
    ocmd:admins(playerid)
    {
    new bool:adminsi,string[200];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][alevel] >= 1 || sInfo[i][slevel] >= 1)
    {
    format(string,sizeof(string),"{FFFF00}ID: {FF0000}%i {FFFF00}|| {FF0000}%s {FFFF00}|| {FF0000}%s ",i,arang(i),getPlayerName(i));
    ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"{FF0000}Administratoren Online",string,"Okey","");
    printf("%s schaut die Online Administratoren an!)",getPlayerName(playerid));
    printf("ID: %i || %s || %s !)",i,arang(i),getPlayerName(i));
    adminsi = true;
    }
    }
    }
    If(!adminsi)
    SendClientMessage(playerid,ROT,"Es sind zur Zeit keine Administratoren Online
    return 1;
    }

  • Bei jedem Admin wird der Dialog neu angezeigt und das ist der Fehler.
    Der Admin, der die höchste ID hat, wird somit als einziger angezeigt.


    Mach es so
    ocmd:admins(playerid)
    {
    new string[200];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][alevel] >= 1 || sInfo[i][slevel] >= 1)
    {
    if(i == 0){
    format(string,sizeof(string),"{FFFF00}ID: {FF0000}%i {FFFF00}|| {FF0000}%s {FFFF00}|| {FF0000}%s ", i,arang(i),getPlayerName(i));
    }else{
    format(string,sizeof(string),"%s\n{FFFF00}ID: {FF0000}%i {FFFF00}|| {FF0000}%s {FFFF00}|| {FF0000}%s ",string, i,arang(i),getPlayerName(i));
    }
    }
    ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"{FF0000}Administratoren Online",string,"Okey","");
    printf("%s schaut die Online Administratoren an!)",getPlayerName(playerid));
    printf("ID: %i || %s || %s !)",i,arang(i),getPlayerName(i));
    }
    else
    {
    SendClientMessage(playerid,ROT,"Es sind zur Zeit keine Administratoren Online");
    return 1;
    }
    }
    return 1;
    }


    Banger: