Hallo
Mein Loginsystem speichert nur passwort. Ich wollte jetzt wissen wie man macht das er Score money AdminLevel speichert. Bitte ein toturial MAchen oder so erklären das ich direkt weis wo ich wa smachen muss.
danke
Loginsytem soll speicher
Passwort(macht er schon)
Money(noch net)
Score(noch net)
AdminLevel(noch net)
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
wie werden die daten gespeichert? (dini, standart-dateifunktionen, mysql...?)
-
mit dini in eine .ini datei die den namen des spierlers tragt
-
benutzte mal die sufu es giebt genug tuts...
-
habe aber bis jetzt nur doofe tut gefunden die mir net weiter geholfen haben
-
okay ich werde dir helfen. könntest du dein enum posten?
-
ja kann ich
enum spieler_daten
{
pKills,
pCash,
pPassword [256],
pLeader,
score,
pDeaths,
pMember,
Float:lastx,Float:lasty,Float:lastz,
eingeloggt,
Bank,
}
new PlayerInfo[MAX_PLAYERS][spieler_daten]; -
Welches Dateisystem benutzt du poste mal etwas Code vom speichern
-
jo public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.ini",pname);
if(response)
{
switch(dialogid) // dialogid auswählen
{
case DIALOG_LOGIN:
{
if(!strlen(inputtext))//diese if-abfrage sagt, dass der Spieler nicht Nichts eingeben darf
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter"); //Hier wird dem Spieler ein Dialog erstellt. Erklärung unten.
return SendClientMessage(playerid,0xFFFFFFFF,"Kein Passwort angegeben!");//wenn kein Passwort eingegeben wurde kommt diese Nachricht.
}
if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0) // Hier wird das Passwort aus der Datei geladen.
{
PlayerInfo[playerid][lastx] = dini_Float(accFormat,"lastx");//Hier werden die
PlayerInfo[playerid][lasty] = dini_Float(accFormat,"lasty");//Koordinaten des Spielers
PlayerInfo[playerid][lastz] = dini_Float(accFormat,"lastz");//geladen
PlayerInfo[playerid][Bank] = dini_Int(accFormat,"bankmoney"); //geld auf der bank
PlayerInfo[playerid][pCash] = dini_Int(accFormat,"money"); //geld in de rhand
PlayerInfo[playerid][eingeloggt] = 1; // Hier wird eingeloggt auf 1 gesetzt. Das heißt, der Spieler ist nun eingeloggt.
SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");//Sende dem Spieler eine Nachricht.
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
}
}
case DIALOG_REG:
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort ist zu kurz!");
}
dini_Create(accFormat);
dini_Set(accFormat,"Passwort",inputtext);
dini_IntSet(accFormat,"bankmoney",40000);
dini_IntSet(accFormat,"money",10000);
PlayerInfo[playerid][eingeloggt] = 1;
SendClientMessage(playerid,0xFFFFFFFF,"Account wurde angelegt und du wurdest eingeloggt.");
}
}
}
else
{
switch(dialogid)
{
case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
}
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.ini",pname);
if(fexist(accFormat) && PlayerInfo[playerid][eingeloggt])
{
dini_FloatSet(accFormat,"lastx",PlayerInfo[playerid][lastx]);
dini_FloatSet(accFormat,"lasty",PlayerInfo[playerid][lasty]);
dini_FloatSet(accFormat,"lastz",PlayerInfo[playerid][lastz]);
}
PlayerInfo[playerid][eingeloggt] = 0;
PlayerInfo[playerid][lastx] = (0.0);
PlayerInfo[playerid][lasty] = (0.0);
PlayerInfo[playerid][lastz] = (0.0);
return 1;
} -
ui ui ist aber nicht selfmade oder? sieht ja wie godfather aus.. was genau funktioniert da nicht oder willst du hinzufügen?
-
-
also ich will da ahm
Score
money und adminlevel hinzufügen -
ähm ja haste ein score system? also hast du iwas wo die score erhöht wird?
-
ne muss ich noch machen ich suche kurz tut und amche mal schnell
-
naja, hier mal ein paar grundlagen:
ich würde zuerst eine liste mit allen spielerdaten (enum), die du brauchst, erstellen, z.B:
enum e_player_info
{
pPassword[32],
pMoney,
pScore,
pAdmin //usw, halt alles, was du speichern (und laden) willst...
};dann brauchst du ne globale variable, in der genug platz für jeden spieler ist.
new g_PlayerInfo[MAX_PLAYERS][e_player_info]; //so, nun können hier die obigen daten für jeden spieler gespeichert werden.
wenn jetzt der spieler den server betritt, werden seine daten aus seiner .ini file geladen:
//OnPlayerConnect
new pname[MAX_PLAYER_NAME], pfile[100];
GetPlayerName(playerid, pname, sizeof(pname)); //name in pname gespeichert
format(file, sizeof(file), "Userfiles\%s.ini", pname); //evtl. Pfad ändern
//so, jetzt die daten aus der datei in das array:
g_PlayerInfo[playerid][pPassword]=dini_Get(file, "Password");
g_PlayerInfo[playerid][pMoney]=dini_Get(file, "Money");
//usw...so, wenn der spieler den server verlässt, sollen die daten gespeichert werden:
//OnPlayerDisconnect
new pname[MAX_PLAYER_NAME], pfile[100];
GetPlayerName(playerid, pname, sizeof(pname)); //name in pname gespeichert
format(file, sizeof(file), "Userfiles\%s.ini", pname); //evtl. Pfad ändern
dini_IntSet(file, "Money", GetPlayerMoney(playerid));
dini_IntSet(file, "Score", GetPlayerScore(playerid));
//usw... -
ahm okay ich habe was gefunden das probiere oich mala us und ich schliese mal das teama