Hallo liebe Leser,
In diesem Tutorial möchte ich euch kurz und übersichtlich die funktionen von DINI erklären will.
Vorwort
Was ist DINI eigentlich?
DINI ist ein Include-System, das es ermöglicht Daten in Dateien zu speichern.
Das kann zum Beispiel für ein Login & Register System, oder eine Fraktionskasse genutzt werden.
Entwickelt wurde es von DracoBlue (http://www.dracoblue.net )
Hinweis: Solltet ihr keine Ahnung von PAWN haben lasst besser erstmal die Finger von diesem Tutorial!
Installation
Die Installation folgt ganz einfach via Include.
Sprich: Ihr benötigt die Include und verknüpft diese dann mit eurem GameMode.
Dafür muss die Include in eurem PAWNO unterordner "Includes" liegen.
Anschließend müsst ihr in den Head-Berreich eures Scriptes bzw. irgendwo ausserhalb eines Callbacks oder eines Publics bzw. stocks die Include via #include verknüpfen.
Downloaden könnt ihr die Include Hier
Anwendung
Nach dem installieren haben wir nun erstmal einige funktionen zur Verfügung, die wir nutzen können um Inhalt zu Updaten, Dateien zu erstellen oder sonstiges. Folgende Funktionen stehen zur Verfügung:
dini_Exists(filename[])
dini_Remove(filename[])
dini_Create(filename[])
dini_Set(filename[],key[],value[])
dini_IntSet(filename[],key[],value)
dini_Int(filename[],key[])
dini_FloatSet(filename[],key[],Float:value)
dini_Float(filename[],key[])
dini_Bool(filename[],key[])
dini_BoolSet(filename[],key[],value)
dini_Unset(filename[],key[])
dini_Get(filename[],key[])
dini_Isset(filename[],key[])
Davon werden allerdings nur wenige verwendet.
Auch wenn man sich davon nun erstmal erschlagen fühlt, mit der Zeit gewinnt man an übersicht.
So, nun können wir eigentlich schon loslegen.
Fangen wir ambesten einfach mal mit einem Script an, das beim Disconnect den Standort des Spielers speichert.
new name[MAX_PLAYER_NAME],Float:pos_x,Float:pos_y,Float:pos_z,string[25];
GetPlayerName(playerid,name,sizeof(name));//---------[Wir finden den Namen des Spielers herraus]
GetPlayerPos(playerid,pos_x,pos_y,pos_z);//---------[Wir finden die Position des Spielers herraus]
format(string,sizeof(string),"%s.ini",name);//---------[Wir erstellen einen String mit dem Namen des Spielers]
dini_Create(string);//---------[Wir erstellen die Datei, falls diese nicht existiert]
dini_FloatSet(string,"Alt-X",pos_x);//---------[Wir speichern die X-Koordinate]
dini_FloatSet(string,"Alt-Y",pos_y);//---------[Wir speichern die Y-Koordinate]
dini_FloatSet(string,"Alt-Z",pos_z);//---------[Wir speichern die Z-Koordinate]
Natürlich müssen diese Daten nun auch noch bei "OnPlayerConnect" geladen werden.
Dazu hier ein kleines Beispielscript:
new name[MAX_PLAYER_NAME],Float:pos_x,Float:pos_y,Float:pos_z,string[25];
GetPlayerName(playerid,name,sizeof(name));//---------[Wir finden den Namen des Spielers herraus]
GetPlayerPos(playerid,pos_x,pos_y,pos_z);//---------[Wir finden die Position des Spielers herraus]
format(string,sizeof(string),"%s.ini",name);//---------[Wir erstellen einen String mit dem Namen des Spielers]
if(dini_Exists(string))
{
pos_x = dini_Float(string,"Alt-X");//---------[Wir übertragen die gespeicherte Koordinate in eine Variable]
pos_y = dini_Float(string,"Alt-Y");//---------[Wir übertragen die gespeicherte Koordinate in eine Variable]
pos_z = dini_Float(string,"Alt-Z");//---------[Wir übertragen die gespeicherte Koordinate in eine Variable]
SetPlayerPos(playerid,pos_x,pos_y,pos_z);//---------[Wir setzen die Position des Spielers]
}
Und Fertig. Schon haben wir ein Script, welches es uns ermöglicht die letzte Position des Spielers zu speichern und anschließend wieder zu laden.
Ich werde das Tutorial bei Nachfrage ggf. erweitern und noch einige Funktionen mehr erklären.
MfG Firer
//EDIT: Rechtschreibfehler verbessert
//EDIT: Linkfehler bei DracoBlue behoben