Problem mit Befehl

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



    Ich habe ein kleines Problem mit meinem Befehl
    und zwar gebe ich /admins ein und nichts passiert, woran könnte es liegen ?



    Code:


    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Adminlevel") >= 1)
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }
    }
    }
    return 1;
    }

  • So habe nun den Code überarbeitet aber es funktioniert immer noch nicht richtig,


    wenn ich das eingebe kommt die Message ( Kein Admin online.) obwohl ich Admin bin..


    Code:


    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))return SendClientMessage(playerid,GRUN,"Kein Admin online.");
    {
    if(GetPVarInt(i,"Adminlevel") >= 1)
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }
    }
    }
    return 1;
    }



    Grüße

  • du nutzt return nach der if Abfrage, ich erklärs dir mal:
    if(IsPlayerConnected(i))return SendClientMessage(playerid,GRUN,"Kein Admin online.");
    Heißt so viel wie, wenn ein Admin online ist, sendet er die Nachricht, da return der Rückgabewert ist.
    Oder wenn kein Admin online ist, geht er ganz normal durch. ^^
    Du müsstest es so machen:

    if(!IsPlayerConnected(i))return SendClientMessage(playerid,GRUN,"Kein Admin online."); //! am anfang der abfrage

    Das heißt wenn Ein Admin online ist, geht er den Code durch.
    Wenn kein Admin online ist, dann sendet er die Nachricht.


    mfg :thumbup:

  • Machs mal so:
    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(GetPVarInt(i,"Adminlevel") <= 1)
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }
    else
    {
    SendClientMessage(playerid,GRUN,"Kein Admin online.");
    }
    }
    return 1;
    }

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2

  • So würde er übelst zugespamt werden, da für jeden Nicht-Admin so eine Nachricht erstellt wird.
    Wenn dann so:


    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(GetPVarInt(i,"Adminlevel") <= 1)
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }

    }
    if(var == 0) SendClientMessage(playerid,-1,"Kein Admin online :<");
    return 1;
    }


  • Naja, erst denken dann schreiben. Eigentlich ganz logisch danke für die Korrektur.

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Dieser Befehl geht genau so wenig


    Jetzt kommt die nachricht Admins online 10x oder so..


    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<Get_Max_Players(); i++)
    {
    if(GetPVarInt(i,"Adminlevel") <= 1)
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }


    }
    if(var == 0) SendClientMessage(playerid,-1,"Kein Admin online :<");
    return 1;
    }

  • Ist doch klar ...
    Du fragst das Adminlevel <= 1, es sollte >= 1 heißen!

  • du kannst es auch so machen, habs selber getestet, funktioniert:

    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Adminlevel") <= 1) return SendClientMessage(playerid,GRUN,"Kein Admin online.");
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }
    }
    }
    return 1;
    }

  • mhm geht immer noch nicht ..


    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Adminlevel") >= 1) return SendClientMessage(playerid,GRUN,"Kein Admin online.");
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }
    }
    }
    return 1;
    }


    und jetzt kommt


    Admins Online:
    Admin: dann steht dort mein NPC
    Kein admin online.


    ..

  • Das wird nicht funktionieren da es ja dann nicht mehr richtig returnt wird ..



    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Adminlevel") >= 1) return SendClientMessage(playerid,GRUN,"Kein Admin online.");
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }
    }
    }
    return 1;
    }

  • so jz müsste es 100% funktionieren:

    stock IstSpielerAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1; //wenn du jz das hast if(IsSpielerAdmin(playerid,1), dann werden alle Spieler ÜBER Adminlevel 1 angezeigt ^^
    return 0;
    }


    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(!IstSpielerAdmin(playerid,1)) return SendClientMessage(playerid,GRUN,"Kein Admin online.");
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }
    }
    }
    return 1;
    }




  • Bei diesem Befehl jetzt wird doch nur der Spieler mit dem Adminlevel 1 abgefragt ich möchte ja Adminlevel von 1 - 2000 abfragen ..

  • Okay es scheint zu funktionieren, nur das Problem ist es werden auch meine NPC angezeigt bei der Admin online liste..
    entziehe ich mir die admin rechte und gebe /admins ein kommt wie gewollt Kein admin online.. nur bleibt das problem mit den NPCs



    stock IstSpielerAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1; //wenn du jz das hast if(IsSpielerAdmin(playerid,1), dann werden alle Spieler ÜBER Adminlevel 1 angezeigt ^^
    return 0;
    }


    ocmd:admins(playerid,params[])
    {
    new string[128],var;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(!IstSpielerAdmin(playerid,1)) return SendClientMessage(playerid,GRUN,"Kein Admin online.");
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    var++;
    }
    }
    }
    return 1;
    }



    grüße