Admin Befehle

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
  • Guten Tag,
    Ich habe ein Admin FS reingemacht mit dem es möglich ist wenn man as RCON Admin angemeldet ist User in de rSpielerliste (TAB) anzuklicken und so auszuwählen: Kicken,Bannen,HP voll machen, Nachricht senden.
    Klappt soweit auch ganz gut nur könnte jemand bei dem FS noch ein paar Befehle dazu machen das ich z.B. auswählen kann GOTO, GETHERE und TV
    Also das ich mich zu dem Spieler porten kann, ihn herporten kann und ich bei ihm auf TV gehen kann.
    Wäre echt nett wenn jemand dies machen würde :)
    Hier das Filterscript:


    #include <a_samp>


    #define DIALOG_CLICK 1
    #define DIALOG_NACHRICHT 2


    public OnFilterScriptInit()
    {
    print("\n\n----------------------------------------------------");
    print("| RCON Admin Script |");
    print("----------------------------------------------------\n\n");
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new Spieler;
    new SpielerName[MAX_PLAYERS];
    new string[256];
    new Admin[MAX_PLAYERS];
    GetPlayerName(playerid,Admin,sizeof(Admin));
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    if(dialogid == DIALOG_CLICK)
    {
    if(response == 1)
    {
    if(listitem == 0)//Kick
    {
    new kickstring[256];
    Kick(Spieler);
    format(string,sizeof(string),"%s hat %s vom Server gekickt!", Admin, SpielerName);
    SendClientMessageToAll(0xffffff,kickstring);
    }
    else if(listitem == 1)//Ban
    {
    new banstring[256];
    Ban(Spieler);
    format(string, sizeof(string),"%s hat %s vom Server gebannt!",Admin, SpielerName);
    SendClientMessageToAll(0xffffff,banstring);
    }
    else if(listitem == 2)//Volles Leben geben
    {
    new lebenstring[256];
    new alebenstring[256];
    SetPlayerHealth(Spieler,100);
    format(lebenstring,sizeof(lebenstring),"%s hat dir dein Leben auf Voll gesetzt!",Admin);
    SendClientMessage(Spieler,0xffffff,lebenstring);
    format(alebenstring,sizeof(alebenstring),"Du hast von %s das Leben wieder auf Voll gesetzt!",SpielerName);
    SendClientMessage(playerid,0xffffff,alebenstring);
    }
    else if(listitem == 3)//Nachricht Senden
    {
    ShowPlayerDialog(playerid,DIALOG_NACHRICHT,DIALOG_STYLE_INPUT,"Nachrichten Dienst","Gebe den Text ein den der Spieler bekommen soll:","Senden","Verlassen");
    }
    }
    else
    {
    SendClientMessage(playerid,0xffffff,"Du hast das System verlassen!");
    }
    }
    if(dialogid == DIALOG_NACHRICHT)
    {
    if(response == 1)
    {
    new nachrichtstring[256];
    new nadminstring[256];
    format(nachrichtstring, sizeof(nachrichtstring),"%s hat dir eine Nachricht gesendet: %s",Admin,inputtext);
    SendClientMessage(Spieler,0xffffff,nachrichtstring);
    format(nadminstring, sizeof(nadminstring),"Du hast %s folgende Nachricht gesendet: %s",SpielerName,inputtext);
    SendClientMessage(playerid,0xffffff,nadminstring);
    }
    else
    {
    SendClientMessage(playerid,0xffffff,"Du hast das System verlassen!");
    }
    }
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    new string[256];
    new SpielerName[MAX_PLAYERS];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    if(IsPlayerAdmin(playerid))
    {
    format(string, sizeof(string),"Was willst du bei %s machen?:",SpielerName);
    ShowPlayerDialog(playerid,DIALOG_CLICK,DIALOG_STYLE_LIST,string,"Kicken\nBannen\nVolles Leben geben\nNachricht Senden","Auswählen","Verlassen");
    }
    return 1;
    }


  • new ClickedPlayer[MAX_PLAYERS];
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new Spieler = ClickedPlayer[playerid];
    new SpielerName[MAX_PLAYERS];
    new string[256];
    new Admin[MAX_PLAYERS];
    GetPlayerName(playerid,Admin,sizeof(Admin));
    GetPlayerName(ClickedPlayer[playerid],SpielerName,sizeof(SpielerName));
    if(dialogid == DIALOG_CLICK)
    {
    if(response == 1)
    {
    if(listitem == 0)//Kick
    {
    new kickstring[256];
    Kick(Spieler);
    format(string,sizeof(string),"%s hat %s vom Server gekickt!", Admin, SpielerName);
    SendClientMessageToAll(0xffffff,kickstring);
    }
    else if(listitem == 1)//Ban
    {
    new banstring[256];
    Ban(Spieler);
    format(string, sizeof(string),"%s hat %s vom Server gebannt!",Admin, SpielerName);
    SendClientMessageToAll(0xffffff,banstring);
    }
    else if(listitem == 2)//Volles Leben geben
    {
    new lebenstring[256];
    new alebenstring[256];
    SetPlayerHealth(Spieler,100);
    format(lebenstring,sizeof(lebenstring),"%s hat dir dein Leben auf Voll gesetzt!",Admin);
    SendClientMessage(Spieler,0xffffff,lebenstring);
    format(alebenstring,sizeof(alebenstring),"Du hast von %s das Leben wieder auf Voll gesetzt!",SpielerName);
    SendClientMessage(playerid,0xffffff,alebenstring);
    }
    else if(listitem == 3)//Nachricht Senden
    {
    ShowPlayerDialog(playerid,DIALOG_NACHRICHT,DIALOG_STYLE_INPUT,"Nachrichten Dienst","Gebe den Text ein den der Spieler bekommen soll:","Senden","Verlassen");
    }
    else if(listitem == 4)//Hingehen
    {
    new Float:xx,Float:yy,Float:zz;
    GetPlayerPos(Spieler,xx,yy,zz);
    SetPlayerPos(playerid,xx,yy+1,zz);
    }
    else if(listitem == 5)//Zu mir Porten
    {
    new Float:xx,Float:yy,Float:zz;
    GetPlayerPos(playerid,xx,yy,zz);
    SetPlayerPos(Spieler,xx,yy+1,zz);
    }
    else if(listitem == 6)//Zusehen
    {
    PlayerSpectatePlayer(playerid,Spieler);
    }
    else if(listitem == 7)//Nicht mehr Zusehen
    {
    TogglePlayerSpectating(playerid,1);
    }

    }
    else
    {
    SendClientMessage(playerid,0xffffff,"Du hast das System verlassen!");
    }
    }
    if(dialogid == DIALOG_NACHRICHT)
    {
    if(response == 1)
    {
    new nachrichtstring[256];
    new nadminstring[256];
    format(nachrichtstring, sizeof(nachrichtstring),"%s hat dir eine Nachricht gesendet: %s",Admin,inputtext);
    SendClientMessage(Spieler,0xffffff,nachrichtstring);
    format(nadminstring, sizeof(nadminstring),"Du hast %s folgende Nachricht gesendet: %s",SpielerName,inputtext);
    SendClientMessage(playerid,0xffffff,nadminstring);
    }
    else
    {
    SendClientMessage(playerid,0xffffff,"Du hast das System verlassen!");
    }
    }
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    ClickedPlayer[playerid] = clickedplayerid;
    new string[256];
    new SpielerName[MAX_PLAYERS];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    if(IsPlayerAdmin(playerid))
    {
    format(string, sizeof(string),"Was willst du bei %s machen?:",SpielerName);
    ShowPlayerDialog(playerid,DIALOG_CLICK,DIALOG_STYLE_LIST,string,"Kicken\nBannen\nVolles Leben geben\nNachricht Senden\nHingehen\nZu mir Porten\nBeobachten\nNicht mehr beobachten","Auswählen","Verlassen");
    }
    return 1;
    }



    Wenn du genau hinsiehst, siehst du dass ich eine neue Variable hinzugefügt habe, undzwar ClickedPlayer[MAX_PLAYERS]
    Das wird benötigt, um bei OnDialogResponse den Code auch bei der Richtigen Person auszuführen. Bisher hast du das immer bei der Variable Spieler ausgeführt, die aber immer 0 war, und deswegen nur bei dir funktioniert hat.
    So sollte nun alles funktionieren, have fun.

  • Hab noch ein paar Verbesserungen im OnPlayerClickPlayer-Callback:

    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    ClickedPlayer[playerid] = clickedplayerid;
    new string[256]; //kannst du kleiner machen
    new SpielerName[MAX_PLAYERS]; //MAX_PLAYERS = 500 (standart), du solltest MAX_PLAYER_NAME verwenden
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName)); //hier findest du den Namen vom Spieler der einen anderen anklickt raus
    //muss zu clickedplayerid geändert werden
    //Außerderm würde ich den ganzen oberen teil unter die IsPlayerAdmin abfrage machen
    if(IsPlayerAdmin(playerid))
    {
    format(string, sizeof(string),"Was willst du bei %s machen?:",SpielerName);
    ShowPlayerDialog(playerid,DIALOG_CLICK,DIALOG_STYLE_LIST,string,"Kicken\nBannen\nVolles Leben geben\nNachricht Senden\nHingehen\nZu mir Porten\nBeobachten\nNicht mehr beobachten","Auswählen","Verlassen");
    }
    return 1;
    }
    Edit:
    Außerdem:
    if(listitem == 0)//Kick
    {
    new kickstring[256]; //hier erstellt du einen String der 1. viel zu groß ist und 2. nie verwendet wird
    Kick(Spieler);
    format(string,sizeof(string),"%s hat %s vom Server gekickt!", Admin, SpielerName); //hier formatierst du den String der weiter oben definiert wird
    SendClientMessageToAll(0xffffff,kickstring); //hier schickst du einen anderen string ab (du hast den string "string" formatiert willst aber "banstring" abschicken...)
    }
    Ich würde den Code an deiner Stelle nochmal richtig überarbeiten. Du erstellt ziemlich viele, unnötige Variablen. Außerdem könntest du statt if(..)else if(..) switch verwenden.

  • @ Intrepidus
    Danke dir, aber leider funktioniert Beobachten nicht wenn man dies drückt passiert einfach garnichts...


    Und ich habe noch eine Frage kann man da auch irgendwie einen Admin Chat einbauen mit /a was nur RCON Admin können und vll eine /report Funktion das wenn ein User z.B. /report ID x ist ein Hacker das dann das bei allen RCON Admins im Chat angezeigt wird.


    Danke im Voraus ;)

  • Sry das ich nochmal poste, aber ich habe ein neues Admin System runtergeladen was mehr Funktionen bietet.
    Kann jemand in diesem FS ein /a Chat machen für RCON Admins und eine /report Funktion wie im letzten Poste genauer beschrieben?
    Und eine TV Funktion das man den Spieler beobachten kann?
    Danke im Voraus


    Hier der neue Filterscript:
    #include <a_samp>
    #define COLOR_YELLOW 0xFFFF00AA
    #define COLOR_RED 0xAA3333AA
    new apdialog;
    new healthdialog;
    new armourdialog;
    new skindialog;
    new ChosenPlayer[MAX_PLAYERS];
    new Muted[MAX_PLAYERS];
    new Jailed[MAX_PLAYERS];
    main()
    {
    print("\n*******************************************");
    print(" Administrator Panel von Samp Special Scipter");
    print("*******************************************\n");
    }
    public OnPlayerText(playerid, text[])
    {
    if(Muted[playerid] == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist gemuted, Du kannst nicht sprechen.");
    return 0;
    }
    return 1;
    }
    public OnPlayerConnect(playerid)
    {
    return 1;
    }
    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    if(IsPlayerAdmin(playerid))
    {
    new string[300];
    format(string,sizeof(string),"Ban\nKick\nKill\nSlap\nTöten\nZum Spieler porten\nSpieler her porten\nMute\nUnmute\nJail\nUnjail\nUnsterblich machen\nSterblich machen\nSkin ändern\nHP ändern\nArmor ändern");
    ShowPlayerDialog(playerid,apdialog,DIALOG_STYLE_LIST,"Wähle eine Option",string,"Wählen","Abbrechen");
    ChosenPlayer[playerid] = clickedplayerid;
    }
    return 1;
    }
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z,Float:Angle; GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle); GetPlayerPos(ChosenPlayer[playerid],PX,PY,PZ);
    new ClickedPlayerName[MAX_PLAYER_NAME],pName[MAX_PLAYER_NAME],string[128]; GetPlayerName(ChosenPlayer[playerid],ClickedPlayerName,24); GetPlayerName(playerid,pName,24);
    if(dialogid == apdialog && response)
    {
    switch(listitem)
    {
    case 0:
    {
    Ban(ChosenPlayer[playerid]);
    format(string,128,"Admin %s bannt %s",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    case 1:
    {
    Kick(ChosenPlayer[playerid]);
    format(string,128,"Admin %s kick %s",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    case 2:
    {
    SetPlayerHealth(ChosenPlayer[playerid],0.0);
    format(string,128,"Admin %s killt %s",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    case 3:
    {
    SetPlayerPos(ChosenPlayer[playerid],PX,PY,PZ+10);
    format(string,128,"Admin %s slappt %s",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    case 4:
    {
    CreateExplosion(PX, PY, PZ, 12, 7);
    format(string,128,"Admin %s tötet %s",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    case 5:
    {
    SetPlayerPos(playerid,PX+1,PY,PZ);
    format(string,128,"Du hast dich zu %s teleportet",ClickedPlayerName);
    SendClientMessage(playerid,0xFFFFFF,string);
    }
    case 6:
    {
    SetPlayerPos(ChosenPlayer[playerid],X+1,Y,Z);
    format(string,128,"Du portest %s zu dir",ClickedPlayerName);
    SendClientMessage(playerid,0xFFFFFF,string);
    }
    case 7:
    {
    if(Muted[ChosenPlayer[playerid]] == 0)
    {
    Muted[ChosenPlayer[playerid]] = 1;
    format(string,128,"Admin %s muted %s",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist bereits gemuted");
    }
    }
    case 8:
    {
    if(Muted[ChosenPlayer[playerid]] == 1)
    {
    Muted[ChosenPlayer[playerid]] = 0;
    format(string,128,"Admin %s unmuted %s",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht gemuted");
    }
    }
    case 9:
    {
    if(Jailed[ChosenPlayer[playerid]] == 0)
    {
    ResetPlayerWeapons(playerid);
    SetPlayerPos(ChosenPlayer[playerid],197.6661,173.8179,1003.0234);
    SetPlayerInterior(ChosenPlayer[playerid],3);
    Jailed[ChosenPlayer[playerid]] = 1;
    format(string,128,"Admin %s sperrt %s ein",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist bereits im Jail");
    }
    }
    case 10:
    {
    if(Jailed[ChosenPlayer[playerid]] == 1)
    {
    SetPlayerHealth(ChosenPlayer[playerid],0.0);
    Jailed[ChosenPlayer[playerid]] = 0;
    format(string,128,"Admin %s holt %s aus dem Jail",pName,ClickedPlayerName);
    SendClientMessageToAll(0xFFFFFF,string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht im Jail");
    }
    }
    case 11:
    {
    SetPlayerHealth(ChosenPlayer[playerid],1000);
    format(string,128,"%s Ist nun unsterblich",ClickedPlayerName);
    SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
    }
    case 12:
    {
    SetPlayerHealth(ChosenPlayer[playerid],100.0);
    format(string,128,"%s Ist nun sterblich",ClickedPlayerName);
    SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
    }
    case 13:
    {
    ShowPlayerDialog(playerid,135,DIALOG_STYLE_INPUT,"Wähle einen Skin","Gib die ID deines Wunsch Skins ein :","OK","Abbrechen");
    }
    case 14:
    {
    ShowPlayerDialog(playerid,246,DIALOG_STYLE_INPUT,"Wähle dein Leben aus","Gib dein Leben an :","OK","Abbrechen");
    }
    case 15:
    {
    ShowPlayerDialog(playerid,035,DIALOG_STYLE_INPUT,"Wähle deine Rüstung aus","Gib die Anzahl der Weste an","OK","Abbrechen");
    }
    }
    }
    if(dialogid == 135)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast abgebrochen");
    }
    if(response)
    {
    if(IsNumeric(inputtext))
    {
    if(IsValidSkin(strval(inputtext)))
    {
    SetPlayerSkin(ChosenPlayer[playerid], strval(inputtext));
    format(string,128,"Admin %s setzt deinen Skin auf %d",pName,strval(inputtext));
    SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
    new string2[128]; format(string2,128,"Du setzt %s's Skin auf %d",ClickedPlayerName,strval(inputtext));
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Es sind alle Skins von 1 -> 299 verfügbar :");
    SendClientMessage(playerid,COLOR_RED,"8,65,74,86,119,149,208,265,266,267,268,269,270,271,272,273,289");
    ShowPlayerDialog(playerid,skindialog,DIALOG_STYLE_INPUT,"Wähle deinen Skin","Gib deine Skin ID ein :","OK","Abbrechen");
    }
    }
    else
    {
    SendClientMessage(playerid,0xFF0000,"Bitte benutze Nummer");
    ShowPlayerDialog(playerid,skindialog,DIALOG_STYLE_INPUT,"Wähle deinen Skin","Gib deine Skin ID ein :","OK","Abbrechen");
    }
    }
    }
    if(dialogid == 246)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast abgebrochen");
    }
    if(response)
    {
    if(IsNumeric(inputtext))
    {
    SetPlayerHealth(ChosenPlayer[playerid],strval(inputtext));
    format(string,128,"Admin %s setzt dein Leben auf %d",pName,strval(inputtext));
    SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
    new string2[128]; format(string2,128,"Du setzt %s's Leben auf %d",ClickedPlayerName,strval(inputtext));
    }
    else
    {
    SendClientMessage(playerid,0xFF0000,"Bitte benutze eine Zahl von 1 -> 100");
    ShowPlayerDialog(playerid,healthdialog,DIALOG_STYLE_INPUT,"Wähle das Leben","Gib das Leben an :","OK","Abbrechen");
    }
    }
    }
    if(dialogid == 035)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast abgebrochen");
    }
    if(response)
    {
    if(IsNumeric(inputtext))
    {
    SetPlayerArmour(ChosenPlayer[playerid],strval(inputtext));
    format(string,128,"Admin %s setzt deine Schutzweste auf %d",pName,strval(inputtext));
    SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
    new string2[128]; format(string2,128,"Du setzt %s's Schutzweste auf %d",ClickedPlayerName,strval(inputtext));
    }
    else
    {
    SendClientMessage(playerid,0xFF0000,"Bitte benutze eine Zahl von 1->100");
    ShowPlayerDialog(playerid,armourdialog,DIALOG_STYLE_INPUT,"Wähle aus","Gib die Schutzweste an","OK","Abbrechen");
    }
    }
    }
    return 1;

    }
    stock IsNumeric(string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
    }
    stock IsValidSkin(SkinID)
    {
    if((SkinID == 0)||(SkinID == 7)||(SkinID >= 9 && SkinID <= 41)||(SkinID >= 43 && SkinID <= 64)||(SkinID >= 66 && SkinID <= 73)||(SkinID >= 75 && SkinID <= 85)||(SkinID >= 87 && SkinID <= 118)||(SkinID >= 120 && SkinID <= 148)||(SkinID >= 150 && SkinID <= 207)||(SkinID >= 209 && SkinID <= 264)||(SkinID >= 274 && SkinID <= 288)||(SkinID >= 290 && SkinID <= 299)) return true;
    else return false;
    }