
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.
 
		 
		
		
	 
			
									
		




 *traurig reingug*" mein erste [inc] gleich nach hinten losgegangen"
 *traurig reingug*" mein erste [inc] gleich nach hinten losgegangen"
