Vorwort:
Ich habe mir mal etwas Überlegt mit dem man das normale Abspeichern von Daten in .ini oder sonst irgendwelchen Datentypen zu erleichtern.
Dabei ist etwas entstanden das sehr hilfreich ist und genauso schnell auf dem Server ist wie die Herkömmliche variante die zum Beispiel im GF verwendet wird.
Die Funktionen:
- Funktionen bei 0.2:
native PwWrong(file[],Key[],&savepasswort[],passwort[]);//key = Key1
native ClosePw();
native ReadFilePw();
native ..
native WriteFile(file[]);
native StopWrite();
native ReadFile(file[]);
native StopRead();
native ..
native Save(Key[],params);//key = Key2
native SaveInt(Key[],initger);//key = Key1
native SaveFloat(Key[],Float);//key = Key1
native SaveString(Key[],string[]);//key = Key1
native ..
native LoadInt(Key[],&Int);//key = Key1
native LoadFloat(Key[],&Float);//key = Key1
native LoadString(Key[],&String[]);//key = Key1
file[] = Fileadresse die man Öffnen will zB: "user/USERNAME.ini"
Key1 = wie bei dini auch der Key zB: "Geld"
Key2 = wie bei dem Herkömmlichen GF Speichersystem zB: "Geld=%d\n" oder "Passwort=%s\n" oder "Spawnx=%.1f\n"
params[] = die variable die man einspeichern will.(aber immer mit der richtigen Key2 verwenden!!)
&savepasswort[] = die variable in der man das Userpasswort speichern will.
passwort[] = die variable die der User eingegeben hat um sich Einzuloggen.
Anwendung Beispiele:
- Beispiel Für OnPlayerLogin(playerid,password[]):
Spoiler anzeigen
public OnPlayerLogin(playerid,passwort[])
{
new file[60];
format(file,60,"23.ini");
PwWrong(file,"PW",PlayerInfo[playerid][pPasswort],passwort);
{
Kick(playerid);
return 1;
}
ClosePw();
ReadFile(file);
{
key = ini_GetKey(Data);//<------Wichtig!! (bei 0.3 KKKEEEYYY = ini_GetKey(DDDAAATTTAAA);)
LoadString("PW",PlayerInfo[playerid][pPasswort]);
LoadFloat("Spawnx",PlayerInfo[playerid][pSpawnx]);
LoadInt("Level",PlayerInfo[playerid][pLevel]);
}
StopRead();
return 1;
}
//zweite art:
public OnPlayerLogin(playerid,passwort[])
{
new file[60];
format(file,60,"23.ini");
PwWrong(file,"PW",PlayerInfo[playerid][pPasswort],passwort);
{
Kick(playerid);
return 1;
}
WriteFilePw();//<-------Wichtig
{
key = ini_GetKey(Data);//<------Wichtig!! (bei 0.3 KKKEEEYYY = ini_GetKey(DDDAAATTTAAA);)
LoadString("PW",PlayerInfo[playerid][pPasswort]);
LoadFloat("Spawnx",PlayerInfo[playerid][pSpawnx]);
LoadInt("Level",PlayerInfo[playerid][pLevel]);
}
StopRead();
return 1;
}
-
Beispiel Für OnPlayerRegister(playerid,password[])oder auch PlayerUpdate(playerid):
Spoiler anzeigen
public PlayerUpdate(playerid)
{
new file[60];
format(file,60,"23.ini");
WriteFile(file);
{
SaveString("PW",PlayerInfo[playerid][pPasswort]);
SaveFloat("Spawnx",PlayerInfo[playerid][pSpawnx]);
SaveInt("Level",PlayerInfo[playerid][pLevel]);
// oder:
Save("PW=%s\n",PlayerInfo[playerid][pPasswort]);
Save("Spawnx=%.1f\n",PlayerInfo[playerid][pSpawnx]);
Save("Level=%d",PlayerInfo[playerid][pLevel]);
//oder auch mixen ist egal
}
StopWrite();
return 1;
}
Bitte beachtet das man nicht OnPlayerUpdate benutzt um Acc's zu Speichern!!
Hier ein Post dazu: Godfather - onplayerupdate - massiv Performance steigern! unbedingt LESEN !
easy_ini hat folgende vorteile:
- easy_ini ist genauso schnell in der Ausführung wie das herkömmliche(GF) Speichern in ini
- esay_ini ist einfach und schnell Einsetzbar.
- esay_ini ist vielseitig nutzbar.
easy_ini hat folgende nachteile: man hat die gleichen nachteile wie bei einem herkömlichen Speicher system(bei GF)
- Man muss immer alle gleichzeitig einspeichern
Changelog:
- 0.1 zu 0.2:
Spoiler anzeigen PwWrong(file[],Key[],&savepwasswort[],passwort[];
ClosePw();
WriteFilePw();Spoiler anzeigen WriteFile(file);
StopWrite();
Download:
0.2:
http://pastebin.com/nhz8JXke
0.3 beta:
Fragen Anregungen?? bitte per PN an mich.