Da ich viele sehe die immer aus dem GF kopieren & meinen das es ach so schwer so sei , hier hab ich mal ein Beispiel vorbereitet,
daraus könnt ihr einige Informationen fassen & schauen wie das ganze Funktioniert, hab das Speichern in diesem Fall mit meinen Ini ähnlichen System gemacht ( bfx_ini )
Schaut euch das Beispiel an & lernt eventuelle draus
- Registrierung umfasst { Abfragen ob der Account existiert oder nicht > Datei erstellen > Datei Öffnen > Passwort eintragen > Speichern & Schließen }
- Login umfasst { Abfragen ob Account existiert oder nicht > Datei Öffnen > Passwort Laden > Passwort abfragen > entscheiden ob richtig oder Falsch > Handeln }
#define MAX_PASS 13 // 13 = Maximale Passwort Länge.. kann verändert werden
#define ACC_EXIST 5 // Fehler Codes damit ihr wisst welche Nummer für welchen Fehler steht...
#define ACC_NOT_EXIST 8
#define LOGGED_IN 9
#define NOT_LOGGED_IN 10
#define REGISTER_FAILED 11
#define PASS_LEN_ERR 12
new bool:player_logged[MAX_PLAYERS];
OnPlayerRegister(playerid,Passwort[])
{
if(fexist(accform(playerid)))return ACC_EXIST;
if(strlen(Passwort) >=MAX_PASS)return PASS_LEN_ERR;
CreateINI(accform);
if(OpenINI(accform))
{
SetKeyString("passwort",Passwort);
SaveINI();
CloseINI();
return 1;
}
return REGISTER_FAILED;
}
OnPlayerLogin(playerid,Passwort[])
{
if(!fexist(accform(playerid)))return ACC_NOT_EXIST;
new readpw[MAX_PASS];
if(OpenINI(accform(playerid))
{
strmid(readpw,ReadStringKey("passwort"),MAX_PASS);
CloseINI();
}
return (!strcmp(readpw,Passwort)) ? (LOGGED_IN):(NOT_LOGGED_IN);
}
/* Beispiel
switch(OnPlayerLogin(playerid,"Pass bla"))
{
case LOGGED_IN:
{
// Weitere Ladevorgänge...
player_logged[playerid] = true;
}
case ACC_NOT_EXIST:return SendClientMessage(playerid,0xFF0000FF,"Dieser Account existiert nicht!");
usw...
}
Bei OnPlayerRegister Funktionierts genau so
*/
accform(playerid)
{
new acc[MAX_PLAYER_NAME+5];
format(acc,sizeof acc,"%s.acc",spielername(playerid));
return acc;
}
spielername(playerid)
{
new player[MAX_PLAYER_NAME];
GetPlayerName(playerid,player,sizeof player);
return player;
}
Das System gibt Fehler Codes zurück je nach Fehler Code kann man dann entscheiden was passiert & Spieler Daten Laden aber das müsst ihr dann selber übernehmen, sollte kein Ding sein für
etwas fortgeschrittene, wie gesagt nicht einfach kopieren & machen, hier müsst ihr schon selber denken