Guten Tag liebe Brotfisher,
wie ich hier sehe arbeiten viele von euch mit RCON Administratoren. Doch ist das nicht etwas nervig sich immer wieder mit /rcon login [Passwort] einzuloggen? Grade bei einem RL-Server ist das extrem nervig für Admins. Deswegen zeige ich euch hier wie man es einfach machen kann.
Die Vorteile:
-bessere Einteilung im Script(Meinungssache)
-fasst viele Dinge auf einmal(Passwort,Adminlevel usw)
-Variable verwendbar(PlayerInfo,Zufallsspawnkoordinaten usw.)
-sobald man online kommt, hat man das Level
Zu nächst brauchen wir eine enum Struktur.
enum PlayerInfo
{
Admin,
}
Warum es enum heißt kann ich euch leider nicht sagen.
Das PlayerInfo nach enum ist eine Variable. Diese kann durch jedes Wort/Buchsabe/Zahl ersetzt werden.
Danach öffnen wir die Struktur mit einer "{"-Klammer.
Nach demn wir das haben kommt eingerückt die Variable um WAS es sich handeln soll, in diesem Falle "Admin", was das Administratorlevel werden soll.
Nach jeder Variable, auf die eine weitere folgt, kommt ein ",". Nach der letzten Variable muss eine "}"-Klammer sein.
Ein Beispiel wie es oft verwendet wird:
enum PlayerInfo
{
Pass[255], // Das Passwort, es kann bis zu 255 Zeichen lang sein
Admin, // Das Adminlevel
Money, // Geld
Kills;// Kills eben^^
}
Kommen wir nun zu der Spielerinformation(PlayerInfo).
new pInfo[MAX_PLAYERS][PlayerInfo];
das pInfo ist ein 2 dimensionaler Array. Defacto eine Variable.
MAX_PLAYERSist nur ein Wert der mit 200 definiert ist. Man könnte genauso gut 200 statt MAX_PLAYERS schreiben.
PlayerInfo verweist auf die enum-Struktur. PlayerInfo kann durch jede Variable ersetzt werden, jedoch muss der Name dem Namen einer enum Struktur gleichen, ansonsten bekommt man errors.
In der If-Abfrage kann PlayerInfo für die Werte die unter der Struktur aufgelistet sind stehn.
If-Abfrage:
Der Command kann ganz normal aufgebaut werden, man muss eben nur die If-Abfrage für PlayerInfo hinzufügen.
if(pInfo[playerid][Admin] >= 3 )
Die If-Abfrage ist wieder ganz normal aufgebaut. Man fängt an mit "if(" Nun kommt die Variable die wir bei "new"definiert haben. In diesem Falle ist es pInfo.
Danach öffnen wir ein weiteres Feld mit "["-Klammer. Dort wir entweder ein Parammeter(Ziel) oder playerid eingetragen. Playerid bezieht sich auf den CMD-Ausführenden Spieler.
Admin ist unsere Variable die wir bei der enum-Struktur eingetragen haben. In unserem Fall wollen wir somit ein Administratorsystem aufbauen.
>= 3 besagt welches Level man haben muss um den Command ausführen zu können. Hier kommt zum ersten mal das Level bei dem Adminsystem ins Spiel. Dies so definiert wie man es gerne hätte. ">" sollte jedem aus dem Mateh unterricht bekannt sein. [Admin] > X /*und*/ X < [Admin] bedeutet, dass die Variable größer als bzw kleiner als der Nachfolgende Wert X ist(bei Abfragen sein muss). Wenn man nunein "=" Einfügt heißt es größer/kleiner gleich. So viel zum Thema Mathematik.
Im prinzip ist nun unser Administrator-Level-System fertig. Die Nachstehende Variable "X"(siehe Beispiel) kann jeden Wert annehmen.
Nach dem Selben Prinzip funktioniert ein Levelsystem mit ALLEM.
Doch was wäre ein Adminsystem wenn es nicht gespeichert wird?
dini_IntSet(pFile,"Admin",pInfo[playerid][Admin]);
Dies wäre das Kommando beim Verlassen des Servers das Adminlevel zu speichern.
Nun wird in der Dini Datei folgendes gespeichert:
Admin: [Zahl = Level des Spielers]
Natürlich wird dazu noch der Dini Code beim regestrieren usw benötigt.
Ein gutes Tut für Dini Kommandos gibt es bei uns im Foum schon: [ SCRIPTING ] Dateiensystem dini - Dateien erstellen, löschen, speichern, laden
Ein Tut für ein Registersystem ist ebenfalls vorhanden:[ SCRIPTING ] Ein einfaches Register/Login System machen
Wenn ihr nun ein Adminlevelsystem erstellen wollt benötigt ihr für fast alle Administatorcmds Parameter. Hierzu gibt es ein exellentes Tut von goldkiller. Ich habe es mir 2 durchgelesen und verstehe das nun: [ SCRIPTING ] Commands mit Parametern