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
Mit freundlichen Grüßen
TV