Admin Problem

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
  • Am Anfang hat man bei SA-MP einen Filterscript der nennt sich Base. Da ich gesehen habe, dass er ein /kick und /bann Command beinhaltet habe ich mir gedacht den benutze ich mal.
    So sieht er aus bei mir(Etwas umgeschrieben):
    //
    // Base FS
    // Contains /pm /kick /ban commands.
    //


    #include
    #include "../include/gl_common.inc"


    #define ADMINFS_MESSAGE_COLOR 0xFFFF00FF
    #define PM_INCOMING_COLOR 0xFFFF22AA
    #define PM_OUTGOING_COLOR 0xFFCC2299


    //------------------------------------------------


    public OnFilterScriptInit()
    {
    print("\n--Base FS loaded.\n");
    return 1;
    }


    //------------------------------------------------


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256];
    new tmp[256];
    new Message[256];
    new gMessage[256];
    new pName[MAX_PLAYER_NAME+1];
    new iName[MAX_PLAYER_NAME+1];
    new idx;


    cmd = strtok(cmdtext, idx);


    // PM Command
    if(strcmp("/pm", cmd, true) == 0)
    {
    tmp = strtok(cmdtext,idx);


    if(!strlen(tmp) || strlen(tmp) > 5) {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server: /pm [id] [Nachricht]");
    return 1;
    }


    new id = strval(tmp);
    gMessage = strrest(cmdtext,idx);


    if(!strlen(gMessage)) {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server: /pm [id] [Nachricht]");
    return 1;
    }


    if(!IsPlayerConnected(id)) {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server: Dieser Spieler ist nicht Online");
    return 1;
    }


    if(playerid != id) {
    GetPlayerName(id,iName,sizeof(iName));
    GetPlayerName(playerid,pName,sizeof(pName));
    format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
    SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
    format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
    SendClientMessage(id,PM_INCOMING_COLOR,Message);
    PlayerPlaySound(id,1085,0.0,0.0,0.0);


    printf("PM: %s",Message);


    }
    else {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Du kannst dir nicht selbst eine Nachricht schicken");
    }
    return 1;
    }


    //Kick Command
    if(strcmp("/kick", cmd, true) == 0)
    {
    if(IsPlayerAdmin(playerid)) {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp) || strlen(tmp) > 5) {
    return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server: /kick [ID] [Grund]");
    }


    new id = strval(tmp);


    if(!IsPlayerConnected(id)) {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server:Dieser Spieler ist nicht Online");
    return 1;
    }


    gMessage = strrest(cmdtext,idx);


    GetPlayerName(id,iName,sizeof(iName));
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"--Du wurdest vom Server gekickt");


    if(strlen(gMessage) > 0) {
    format(Message,sizeof(Message),"Reason: %s",gMessage);
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
    }


    format(Message,sizeof(Message),">> %s(%d) has been kicked.",iName,id);
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);


    Kick(id);
    return 1;
    } else {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server:Du bist kein Admin Rang 3");
    return 1;
    }
    }


    //Ban Command
    if(strcmp("/bann", cmd, true) == 0)
    {
    if(IsPlayerAdmin(playerid)) {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp) || strlen(tmp) > 5) {
    return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server: /bann [id] [Grund]");
    }


    new id = strval(tmp);


    if(!IsPlayerConnected(id)) {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server:Dieser Spieler ist nicht Online");
    return 1;
    }


    gMessage = strrest(cmdtext,idx);


    GetPlayerName(id,iName,sizeof(iName));
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- Du wurdest vom Server gebannt.");


    if(strlen(gMessage) > 0) {
    format(Message,sizeof(Message),"Reason: %s",gMessage);
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
    }


    format(Message,sizeof(Message),">> %s(%d) has been banned.",iName,id);
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);


    Ban(id);
    return 1;
    } else {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Server: Du bist kein Admin Rang 5");
    return 1;
    }
    }


    return 0;
    }

    Ich habe ebenfalls ein Login/Regestration gescriptet und ein Adminsystem dazu. Jedoch wenn ich auf dem Server bin und eingebe /kick 12 Lol (Als beispiel) Dann steht da ich wäre kein Admin.


    Kann mir da jemand helfen??
    MfG: Fassi

  • hat er nicht..


    IsPlayerAdmin(playerid)


    was sagt die wiki dazu? "Check if a player is logged into RCON." ~> er hat sich nicht eingeloggt.



    Lösung:
    1. Du lasst das system so und loggst dich immer als mit rcon ein. ~> NICHT zu empfehlen, da du dann jeden der diese befehle ausführen soll, dein rcon passwort geben müsstest.


    2. Du erstellst du eine eigene Var. die du an dieser Stelle statt IsPlayerAdmin abfragst. ~> So wird das in 99,99% der GMs gemacht.


    MfG
    BlackHawk


    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)

  • naja dazu muss er erstmal enum usw erstellen, besser ist es mit PVar zu arbeiten.


    zum Beispiel: if (GetPVarInt(playerid, "AdminLevel") >= 1)


    Lies dir am besten mal die offi. wiki zu PVar durch.


    MfG
    BlackHawk


    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)