Vorwort:
- Ich habe mir mal gedacht das wenn man schon mal eine Vereinfachung Für die Speicherung von Accs macht das man die dann auch vorstellen / Erklären muss.
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 = Key1file[] = 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.
Anwendungsbeispiel:
- Beispiel Für OnPlayerLogin(playerid,password[]):
public OnPlayerLogin(playerid,passwort[])
{
new file[60];
format(file,60,"%s.ini",PlayerName(playerid));
PwWrong(file,"PW",PlayerInfo[playerid][pPasswort],passwort);//Hiermit list man das Passwort, schreibt es in einen String und Überprüft ob es richtig ist.
{//In diese Klammern kommt dann das rein Was passieren soll wen das Passwort falsch ist.
Kick(playerid);
return 1;
}
ReadFilePw();//Dies Funktion kann man nur benutzten wenn man vorher PwWrong(); benutzt hat!!!! (man öffnet wie bei ReadFile(file[]); den file.)
{
key = ini_GetKey(Data);//<------Wichtig!! (ansonsten wird nichts gelesen.)
LoadString("PW", PlayerInfo[playerid][pPasswort]);//man läd einen String in PlayerInfo[playerid][pPasswort](kann natürlich beliebig geändert werden!!)
LoadFloat("Spawnx", PlayerInfo[playerid][pSpawnx]);//man läd eine Float(Kommazahl) in PlayerInfo[playerid][pSpawnx](kann natürlich beliebig geändert werden!!)
LoadInt("Level", PlayerInfo[playerid][pLevel]);//man läd einen Int(Zahl) in PlayerInfo[playerid][pLevel](kann natürlich beliebig geändert
}
StopRead();//schlisst den File wieder!!
return 1;
} - Beispiel Für OnPlayerRegister(playerid,password[])oder auch PlayerUpdate(playerid):
public PlayerUpdate(playerid)
{
new file[60];
format(file,60,"%s.ini",PlayerName(playerid));
WriteFile(file);//Öffnet den File zum reinschreiben!
{
SaveString("PW", password);//<------ wichtig bei OnPlayerRegister!
SaveString("PW", PlayerInfo[playerid][pPasswort]);//Speichert den Variablen String PlayerInfo[playerid][pPasswort] in den File.
SaveFloat("Spawnx", PlayerInfo[playerid][pSpawnx]);//Speichert die Variable Float PlayerInfo[playerid][pSpawnx] in den File.
SaveInt("Level", PlayerInfo[playerid][pLevel]);//Speichert die Variable Float PlayerInfo[playerid][pSpawnx] in den File.
// oder:
Save("PW=%s\n", PlayerInfo[playerid][pPasswort]);//wichtig bei Save(); ist das der Key mit "=%* \n" geschriben wird!! * = je nach dem welche Variable man einspeichern will.
Save("Spawnx=%.1f\n", PlayerInfo[playerid][pSpawnx]);
Save("Level=%d", PlayerInfo[playerid][pLevel]);
//oder auch mixen ist egal
}
StopWrite();//schlisst den File wieder!!
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. (Man muss nur einmal file einsetzen.)
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
Download:
Die Funktion PlayerName(playerid); :
stock PlayerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}
Fragen Anregungen?? bitte per PN an mich.