Hallo, lieber Scripter und (moment, gibts hier Scripterinnen???? egal..)!
Da viele Scripter mit Dateien arbeiten "müssen" und sich meinstens dabei schwer tun, mache ich hier ein Tutorial zu DracoBlue's Dini.
Es ist eigentlich nur eine Übersetzung von einem Tread im offiziellen Forum:
Dini: http://forum.sa-mp.com/index.php?topic=981.0
Dini englisches Tut: http://forum.sa-mp.com/index.php?topic=71935.0
VORWEG:
Falls du nicht weist, was mit einem "key" gemeint ist, schau mal das hier an:
In der Datei "Maercell.ini" ist das hier geschrieben:
Zitatlevel=1337
Maercell.ini => filename
level => key
1337 => value (nur ein Beispiel, kommt eben drauf an, war gespeichert wird)
Die Funktionen
dini_Exists(filename[])
Überprüft ob eine Datei mit dem Pfad filename existiert. Returnt true oder false
if(dini_Exists("/folder/file.ini"))
{
// Die Datei "file.ini" ist im Ordner "folder" vorhanden
}
else
{
// Die Datei "file.ini" gibt es im Ordner "folder" nicht
}
dini_Isset(filename[], key[])
Überprüft ob in einer Datei schon etwas unter key gespichert ist.
dini_Set("/folder/file.ini", "key", "text");
if(dini_Isset("/folder/file.ini", "key"))
{
// Unter "key" wurde "key" gespeichert, gibt true zurück
}
dini_Unset("/folder/file.ini", "key");
if(dini_Isset("/folder/file.ini", "key"))
{
// Unter "key" wurde nichts gespeichert, gibt false zurück
}
dini_Unset(filename[], key[])
Löscht Float/Integer/Bool/String in einer Datei
dini_Set("/folder/file.ini", "check", "true");
string = dini_Get("/folder/file.ini", "check");
print(string); // gibt true zurück
dini_Unset("/folder/file.ini", "check");
string = dini_Get("/folder/file.ini", "check");
print(string); // gibt nichts zurück
dini_Create(filename[])
Erstellt eine neue Datei
// dini_Exists würde false zurückgeben, existiert ja nicht :o
dini_Create("/folder/file.ini");
// dini_Exists würde true zurückgeben, existiert nun danke dini_Create
dini_Remove(filename[])
Löscht eine Datei
// dini_Exists würde true zurückgeben, weil die Datei noch existiert
dini_Remove("/folder/file.ini");
// dini_Exists würde false zurückgeben, weil die Datei soeben gelöscht wurde
Jetzt gehts an Speichern und Laden!!!
dini_Set(filename[], key[], value[])
Speichert eine String unter key in eine Datei
dini_Set("/folder/file.ini", "samp", "forums");
// In "file.ini" im Ordner "folder" stände jetzt:
// "samp=forums"
dini_Get(filename[], key[])
Lädt eine Strint unter key in einer Datei
string = dini_Get("/folder/file.ini", "samp");
if(strcmp(string, "forums", false) == 0)
{
// Die IF-Abfrage wird ausgeführt, da in file.ini unter "samp" "forums" gespeichert wurde, sieht dini_Set
}
Das geht aus mit Integern!!!
dini_IntSet(filename[], key[], value)
Speichert ein Integer unter key in einer Datei
dini_IntSet("/folder/file.ini", "sampforums", 1);
// Das Ergebnis in "file.ini" im Ordner "folder" ist:
// "sampforums=1"
dini_Int(filename[], key[])
Lädt ein Integer unter key in einer Datei
new number = dini_Int("/folder/file.ini", "sampforums");
if(number == 1)
{
// sampforums entspricht 1, wie bei dini_IntSet gespeichert
}
Und Positionen? Floats!
dini_FloatSet(filename[], key[], Float:value)
Speichert eine Float unter key in einer Datei
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
dini_FloatSet("/folder/file.ini", "F_X", X);
dini_FloatSet("/folder/file.ini", "F_Y", Y);
dini_FloatSet("/folder/file.ini", "F_Z", Z);
// Das ergebnis in "file.ini" im Ordner "folder"
// F_X = 0.000000
// F_Y = 0.000000
// F_Z = 0.000000
// Das wären die koordinaten von playerid
dini_Float(filename[], key[])
Lädt eine Float unter key in einer Datei
// Lädt die Koordinaten "F_X", "F_Y" und "F_Z" in die Floats X, Y, Z und teleportiert playerid
new Float:X, Float:Y, FloatZ;
X = dini_Float("/folder/file.ini", "F_X");
Y = dini_Float("/folder/file.ini", "F_Y");
Z = dini_Float("/folder/file.ini", "F_Z");
SetPlayerPos(playerid, X, Y, Z);
Nur true und false? Da reicht ein Bool-Wert!
dini_BoolSet(filename[], key[], value)
Speichert ein Bool-Wert unter key in einer Datei
dini_BoolSet("/folder/file.ini", "random_bool", true);
// Das Ergebnis in "file.ini" im Ordner "folder" ist:
// "random_bool=true"
dini_Bool(filename[], key[])
Lädt einen Bool-Wert unter key aus einer Datei
new bool:random_bool = dini_Bool("/folder/file.ini", "random_bool");
if(random_bool == true)
{
// random_bool ist true wie bei dini_BoolSet gespeichert
}
Und das wars! Du hast soeben gelernt mit dini Dateien zu erstellen, zu löschen und darin Bools, Floats, Strings und Integer zu speichern, so einfach gehts!
Ich danke hiermit DracoBlue für diese wunderbar einfache Art eines Dateiensystems.
MfG Maercell
//Goldkiller: Sticky