Adminsystem per Klick

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 und herzlich Wilkommen zu meinem ersten Tutorial.
    Ich werde euch nun ein kleines "Adminsystem" vorstellen, dass folgt abläuft: Admin klickt Spieler in <TAB> an und es öffnet sich ein Dialog, wo es mehrere möglichkeiten gibt.
    Bsp Kick/Ban/Goto/Gethere(Das sind die Funktionen im Tutorial, kann ja von den Spielern noch ausgebaut werden oder ich Update bei Anfrage das Tutorial).
    Das ist zwar alles sehr simpel, aber manche können es bestimmt gebrauchen ! :)
    Fangen wir mal an, als erstes Definieren wir oben im Script
    #define DIALOG_ASYSTEM (123)
    new clickid[MAX_PLAYERS];


    Nun gehen wir zu dem Public
    public OnPlayerClickPlayer(playerid, clickedplayerid, source)


    und fügen da die Funktion ein, was passieren soll wenn man im <TAB> Menü auf einen Spieler klickt.


    clickid[playerid] = clickedplayerid;//Erstmal Definieren wir, dass "ClickID[playerid] -> clickedplayerid; sein soll und aus dem Grund weil wir sonst bei anderen Publics das Problem hätten das der Compiler sagt, dass es nicht definiert wurde
    ShowPlayerDialog(playerid, DIALOG_ASYSTEM, DIALOG_STYLE_LIST, "Adminsystem", "Kick\nBan\nZu Spieler teleportieren\nSpieler zu dir Teleportieren", "Ausführen", "Abbrechen");//Öffnet für den Spieler, der geklickt hat das Dialog "ASYSTEM"


    Nun gehen wir zu dem Public
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])


    Darein fügen wir


    if(dialogid == DIALOG_ASYSTEM)
    {
    if(response == 1)
    {
    if(listitem == 0)//Kick
    {
    new string [128];
    new namee[MAX_PLAYER_NAME];
    GetPlayerName(clickid[playerid], namee, sizeof(namee));
    format(string,sizeof string,"Du hast %s gekickt.",namee);
    SendClientMessage(clickid[playerid], Color_Red, string);
    Kick(clickid[playerid]);
    //Hier definieren wir zum einen ein neues New namens namee
    //Dann fragen wir nach dem Namen, des angeklickten
    //Erklärt sich von selbst, Spieler %s(Der angeklickte) wurde gekickt
    //clickid ist immer die ID des angeklickten
    return 1;
    }
    if(listitem == 1)//Ban
    {
    new string [128];
    new namee[MAX_PLAYER_NAME];
    GetPlayerName(clickid[playerid], namee, sizeof(namee));
    format(string,sizeof string,"Du hast %s gebannt.",namee);
    SendClientMessage(clickid[playerid], Color_Red, string);
    Ban(clickid[playerid]);
    return 1;
    //Das selbe wie oben
    }
    if(listitem == 2)//Goto
    {
    new string [128];
    new Float:x,Float:y,Float:z;
    new namee[MAX_PLAYER_NAME];
    GetPlayerName(clickid[playerid], namee, sizeof(namee));
    GetPlayerPos(clickid[playerid],x,y,z);
    SetPlayerPos(playerid,x,y,z);
    format(string,sizeof string,"Du hast dich zu %s geportet.",namee);
    SendClientMessage(clickid[playerid], Color_Red, string);
    //Hier definieren wir erstmal 3 Floats mit dem Namen XYZ
    //Definieren wieder "namee" damit wir den Namen des angeklickten raus finden können
    //GetPlayerPos (Findet die XYZ Kord. heraus, in unserem fall wieder von dem angeklickten Spieler)
    //SetPlayerPos(Teleportiert den, der auf den Spieler geklickt hat, zum ClickSpieler)
    return 1;
    }
    if(listitem == 3)//Gethere
    {
    new string [128];
    new Float:x,Float:y,Float:z;
    new namee[MAX_PLAYER_NAME];
    GetPlayerName(clickid[playerid], namee, sizeof(namee));
    GetPlayerPos(playerid,x,y,z);
    SetPlayerPos(clickid[playerid],x,y,z);
    format(string,sizeof string,"Admin %s hat dich zu sich geportet.",namee);
    SendClientMessage(playerid, Color_Red, string);
    //Das gleiche wie oben, blos damit wir den Clickspieler nun zu uns Porten
    return 1;
    }
    }
    if(response == 0)
    {
    //Was passieren soll, wenn man auf "Abbrechen klickt(Kann freigelassen werden)
    }
    }


    Das war es schon, so schnell ging es.
    Ich hoffe das kleine Tutorial hat euch gefallen und vorallem geholfen.
    Falls irgendwelche Fragen offen sind, oder Verbesserungsvorschläge & Wünsche sowie Kritik besteht, immer her damit :thumbup:


    Mit freundlichen Grüßen


    TV :thumbup:



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)