Hi,
da ein freund mich gerade gefragt hat ob ich ihm ein Tutorial für ein Admin System mit 4 Leveln schreibe, mache ich das jetzt mal für alle, damit nicht nur er was lernt ;).
Wir wollen also ein Admin System machen mit 4 Leveln, welche diese sind:
- Support
- Moderator
- Super Moderator
- Fulladmin
Diese hat er sich auch ausgedacht, deshalb nehmen wir jetzt diese ^^.
Gut, was wird benötigt? :
- Wir brauchen ein Login & Register System damit wir das ganze auch darein Scripten können, er hat jetzt schon ein MySQL Login & Register System von mir und dort wird alles mit pInfo abgefragt, dieses könnt ihr dann nachher beliebig ändern.
- Wir benötigen dcmd, damit wir die Befehle 1. schneller haben und 2. einfacher schreiben können.
Mehr benötigen wir eigentlich nicht.
Nun überlegen wir mal was das Admin System so alles für den Anfang haben soll, dafür habe ich mir schon etwas ausgedacht.
Es gibt ein paar Befehle für den Anfang nur welche folgenden sein werden:
- /MakeAdmin (Um Andere Admin zu machen)
- /Ban (Um andere Spieler zu bannen)
- /Kick (Um andere Spieler zu kicken)
- /Veh (Um sich ein Admin Fahrzeug zu erstellen)
Dafür brauchen wir, wie oben schon erwähnt dcmd, weil man damit die Befehle viel leichter Scripten kann, und wieso sollte es schwer gemacht werden wenn es auch Leicht geht ?
Fangen wir nun an mit dem Scripten.
Als erstes fügen wir die DCMD Funktion ein, diese sollte am besten ganz oben sein.
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Damit haben wir nun die DCMD Funktion eingebunden und können damit nun auch scripten, diese erkläre ich jetzt nicht wie sie oben steht sondern werde sie im Laufe des Tutorials erklären.
Zuerst machen wir beim einloggen folgendes rein, damit der Spieler auch weiss was er für einen Rang hat.
if(pInfo[playerid][Admin] == 1)//Fragt ab ob der Spieler Supporter ist{ SendClientMessage(playerid,0xFF0000AA,"Du wurdest erfolgreich als Supporter eingeloggt!");}if(pInfo[playerid][Admin] == 2)//Fragt ab ob der Spieler Moderator ist{ SendClientMessage(playerid,0xFF0000AA,"Du wurdest erfolgreich als Moderator eingeloggt!");}if(pInfo[playerid][Admin] == 3)//Fragt ab ob der Spieler Super Moderator ist{ SendClientMessage(playerid,0xFF0000AA,"Du wurdest erfolgreich als Super Moderator eingeloggt!");}if(pInfo[playerid][Admin] == 4)//Fragt ab ob der Spieler Fulladmin ist{ SendClientMessage(playerid,0xFF0000AA,"Du wurdest erfolgreich als Fulladmin eingeloggt!");}
So, damit haben wir unsere Ränge schonmal ein wenig für die Team Member deutlicher gemacht ^^.
Nun machen wir als erstes den /MakeAdmin Befehl.
Aber vorher sollte ich euch noch zeigen wie die Befehle bei OnPlayerCommandText stehen müssen:
dcmd(MakeAdmin,9,cmdtext); //Makeadmin für den Befehl /MakeAdmin und die 9 ist dafür, wie viele Buchstaben MakeAdmin hat.dcmd(Ban,3,cmdtext);//Selbe wie obendcmd(Kick,4,cmdtext);//Selbe wie obendcmd(veh,3,cmdtext);//Selbe wie oben
Nun fahren wir fort mit dem Befehl.
dcmd_MakeAdmin(playerid,params[]){ new pID, AdminLevel;//Das sind die Variablen, /MakeAdmin [pID] [AdminLevel] if(sscanf(params, "ud",pID,AdminLevel))//Damit werden die einzelnen Variablen unterschieden in playerid und d = Integer { return SendClientMessage(playerid,COLOR_WHITE,"Benutze: /Makeadmin [playerid] [Admin Level]");//Nachricht wird gesendet wenn der Spieler /MakeAdmin nur eingibt. } if(!IsPlayerConnected(pID))//Wenn der Spieler nicht Online ist { return SendClientMessage(playerid,COLOR_GRAD2,"Kein Spieler mit angegebener ID Online!"); } if(pInfo[playerid][Admin] == 4)//Prüft ob der Spieler Fulladmin ist { new string[256];//Definition des Strings für den Spieler new astring[256];//Definition des Strings für den Admin new AdminName[MAX_PLAYER_NAME];//AdminName, z.B. Hugo new Name[MAX_PLAYER_NAME];//Spieler Name z.B. Hans GetPlayerName(playerid, AdminName, sizeof(AdminName));//Prüft den Namen des Admins GetPlayerName(pID, Name, sizeof(Name));//Prüft den Namen des Spielers if(AdminLevel >= 5)//Wenn das Admin Level über 5 ist { SendClientMessage(playerid,COLOR_WHITE,"Das Admin Level kann nur von 1 - 4 Sein!"); return 1; } if(AdminLevel == 0)//Wenn das Admin Level auf 0 gesetzt wird = Keine Rechte { format(string, sizeof(string),"Fulladmin %s hat dir die Team Mitglieder Rechte entzogen!",AdminName);//String für den Spieler den er bei SendClientMessage bekommt format(astring, sizeof(astring),"Du hast %s Team Mitglieder Rechte entzogen!",Name);//String für den Admin den er bei SendClientMessage bekommt SendClientMessage(pID,COLOR_GREEN,string);//String wird als Nachricht an den Spieler gesendet SendClientMessage(playerid,COLOR_GREEN,astring);//AString wird als Nachricht an den Spieler gesendet pInfo[pID][Admin] = 0;//Admin Level wird auf 0 gesetzt } if(AdminLevel == 1)//Selbe wie oben nur mit Level 1 {//Alles was jetzt kommt ist genauso wie oben nur das er diesmal als Supporter eingetragen wird format(string, sizeof(string),"Fulladmin %s hat dich zum Supporter gemacht!",AdminName); format(astring, sizeof(astring),"Du hast %s zum Supporter gemacht!",Name); SendClientMessage(pID,COLOR_GREEN,string); SendClientMessage(playerid,COLOR_GREEN,astring); pInfo[pID][Admin] = 1; } else if(AdminLevel == 2) { format(string, sizeof(string),"Fulladmin %s hat dich zum Moderator gemacht!",AdminName); format(astring, sizeof(astring),"Du hast %s zum Moderatoren gemacht!",Name); SendClientMessage(pID,COLOR_RED,string); SendClientMessage(playerid,COLOR_RED,astring); pInfo[pID][Admin] = 2; } else if(AdminLevel == 3) { format(string, sizeof(string),"Fulladmin %s hat dich zum Super Moderator gemacht!",AdminName); format(astring, sizeof(astring),"Du hast %s zum Super Moderator gemacht!",Name); SendClientMessage(pID,COLOR_LIGHTBLUE,string); SendClientMessage(playerid,COLOR_LIGHTBLUE,astring); pInfo[pID][Admin] = 3; } else if(AdminLevel == 4) { format(string, sizeof(string),"Fulladmin %s hat dich zum Fulladmin gemacht!",AdminName); format(astring, sizeof(astring),"Du hast %s zum Fulladmin gemacht!",Name); SendClientMessage(pID,COLOR_LIGHTBLUE,string); SendClientMessage(playerid,COLOR_LIGHTBLUE,astring); pInfo[pID][Admin] = 4; } } else//Wenn er kein Fulladmin ist { return SendClientMessage(playerid,COLOR_RED,"Du bist kein Fulladmin!"); } return 1;}
So, nun fahren wir fort mit dem Ban Befehl.
dcmd_ban(playerid,params[]){ new banID;//Definiert die Spielerid if(sscanf(params, "u",banID))//u ist wieder playerid { return SendClientMessage(playerid,COLOR_WHITE,"{f86464}Benutze:{FFFFFF} /ban [playerid]");//Wenn er nur /ban macht } if(pInfo[playerid][Admin] >= 3)//Prüft ob der Spieler Super Mod ist. { new banstring[256];//Der String für den Ban gleich new BanName[MAX_PLAYER_NAME];//Der Name des Spielers der gebannt werden soll GetPlayerName(banID,BanName,sizeof(BanName));//Prüft den Spieler Namen der gebannt werden soll new AdminName[MAX_PLAYER_NAME];//Der Name des Super Mods. GetPlayerName(playerid,AdminName,sizeof(AdminName));//Prüft den Namen des Super Mods. format(banstring, sizeof(banstring),"{f86464}AdminCMD{FFFFFF} - {f86464}%s{FFFFFF} wurde von {f86464}%s{FFFFFF} gebannt.",BanName,AdminName);//Macht einen string für die Nachricht welcher Spieler von wem gebannt wurde. SendClientMessageToAll(COLOR_WHITE,banstring);//Sendet den string ab Ban(banID);//Bannt den Spieler } else//Wenn er kein Super Mod. oder darüber ist. { SendClientMessage(playerid,COLOR_WHITE,"Du hast nicht die benötigten Rechte dazu!"); } return 1;}
Weiteres unten.....