Okay
Eigentlich funktioniert alles, man kann sich registrieren und in den Scriptfiles wird auch eine Datei mit den dem Name erstellt.
Das Problem ist wen man neu connected muss man sich immer und immer wieder neu registrieren....
Hier das ganze Register/Login Script:
#include <Dini>
#include <MD5>
#define REGISTER 1
#define LOGIN 2
enum SpielerDaten
{
Adminlevel,
Level,
Fraktion,
Team,
sLogin
};
new sSpieler[MAX_PLAYERS][SpielerDaten];
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,Admin,"Herzlich Willkommen auf San Francisco Roleplay");
ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dir einen Account zu erstellen!","Registrieren","Abbrechen");
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "%s hat den Server Betreten.", pName);
SendClientMessageToAll(0xAAAAAAAA, string);
return 1;
new Spieler[64];
new Sname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Sname,sizeof(Sname));
format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
if(dini_Exists(Spieler))
{
SendClientMessage(playerid,Blau,"Herzlich Willkommen auf San Francisco Roleplay");
ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde in unserer Datenbank gefunden, bitte gebe nun dein Passwort ein und logge dich somit ein.","Login","Abbrechen");
return 1;
}
else
{
SendClientMessage(playerid,Blau,"Herzlich Willkommen auf San Francisco Roleplay");
ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dir einen Account zu erstellen!","Registrieren","Abbrechen");
return 1;
}
}
sSpieler[playerid][sLogin] = 0;
SpielerSpeichern(playerid);
new pName[MAX_PLAYER_NAME];
new string[56];
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == LOGIN)
{
if(response == 0)
{
SendClientMessage(playerid,Blau,"Du hast den Authenfizierungs Prozess abgebrochen...");
Kick(playerid);
return 1;
}
if(response == 1)
{
Login(playerid,MD5_Hash(inputtext));
return 1;
}
}
if(dialogid == REGISTER)
{
if(response == 0)
{
SendClientMessage(playerid,Blau,"Du hast den Registrierungs Vorgang abgebrochen");
Kick(playerid);
return 1;
}
if(response == 1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,Blau,"Bitte gebe ein Passwort ein");
ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dir einen Account zu erstellen!","Registrieren","Abbrechen");
return 1;
}
Register(playerid,MD5_Hash(inputtext));
return 1;
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
stock Register(playerid,key[])
{
new Spieler[64];
new Sname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Sname,sizeof(Sname));
format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
SpielerReset(playerid);
dini_Create(Spieler);
dini_Set(Spieler,"Passwort",key);
dini_IntSet(Spieler,"Adminlevel",0);
dini_IntSet(Spieler,"Level",0);
dini_IntSet(Spieler,"Fraktion",0);
dini_IntSet(Spieler,"Team",0);
SendClientMessage(playerid,Blau,"Du hast dich erfolgreich registriert");
SpawnPlayer(playerid);
return 1;
}
stock Login(playerid,key[])
{
new Spieler[64];
new Sname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Sname,sizeof(Sname));
format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
{
SendClientMessage(playerid,Blau,"Login erfolgreich . . . Spielerdaten werden geladen!");
SpielerLaden(playerid);
return 1;
}
else
{
SendClientMessage(playerid,Blau,"Das eingebene Passwort ist inkorrekt!");
ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","{FEFEFE}Dein {FF9600}Account {FEFEFE}wurde in unserer Datenbank gefunden, bitte gebe nun dein Passwort ein und logge dich somit ein.","Login","Abbrechen");
return 1;
}
}
stock SpielerSpeichern(playerid)
{
new Spieler[64];
new Sname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Sname,sizeof(Sname));
format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
if(dini_Exists(Spieler))
{
dini_IntSet(Spieler,"Adminlevel",sSpieler[playerid][Adminlevel]);
dini_IntSet(Spieler,"Level",sSpieler[playerid][Level]);
dini_IntSet(Spieler,"Fraktion",sSpieler[playerid][Fraktion]);
dini_IntSet(Spieler,"Team",sSpieler[playerid][Team]);
}
return 1;
}
stock SpielerLaden(playerid)
{
new Spieler[64];
new Sname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Sname,sizeof(Sname));
format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
if(dini_Exists(Spieler))
{
SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
sSpieler[playerid][Level] = dini_Int(Spieler,"Level");
sSpieler[playerid][Fraktion] = dini_Int(Spieler,"Fraktion");
sSpieler[playerid][Team] = dini_Int(Spieler,"Team");
sSpieler[playerid][sLogin] = 1;
SpawnPlayer(playerid);
}
return 1;
}
stock SpielerReset(playerid)
{
sSpieler[playerid][Adminlevel] = 0;
sSpieler[playerid][Level] = 0;
sSpieler[playerid][Fraktion] = 0;
sSpieler[playerid][Team] = 0;
return 1;
}
//Login
stock IstSpielerLogged(playerid)
{
if(sSpieler[playerid][sLogin] == 1) return 1;
return 0;
}
//Edit 1 Code bearbeitet