Hallo,
ich weiß zwar nicht, was ich gemacht habe, aber seit kurzem werden Skins und andere (Geld, Adminlevel, Premium-Rank usw.) nach einem Relog oder Server-Restart nicht gespeichert.
Woran kann das liegen?
Mein Script basiert momentan auf dini. Ich poste euch hier mal den "LoadAccount", den "SaveAccount", den "ResetAccount", den "Login" und die "Registration" als Code.
Vielleicht könnt ihr mir so am schnellsten sagen, warum es nicht funktioniert. Ich habe den Fehler nicht entdecken können.
Achja, zu dem spielt das Geld-System total verrückt.
Registration
stock Registration(playerid,key[])
{
new Account[64],string[500];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Account,sizeof(Account),"/Accounts/%s.ini",name);
dini_Create(Account);
dini_Set(Account,"Passwort",key);
SendClientMessage(playerid,WEIß,"SERVER: Du hast dich erfolgreich registriert.");
new stunde,minute,sekunde,jahr,monat,tag;
gettime(stunde,minute,sekunde);
getdate(jahr,monat,tag);
new dateiname[50];
format(dateiname,sizeof(dateiname),"Registration/d.d.d.ini",tag,monat,jahr);
new File:datei=fopen(dateiname,io_append);
new string1[256];
format(string1,sizeof(string1),"[d:d:d] %s hat sich registriert.\r\n",stunde,minute,sekunde,Name(playerid));
fwrite(datei,string1);
fclose(datei);
SetPlayerScore(playerid,0);
GivePlayerMoney(playerid,0);
SetPlayerFightingStyle(playerid,4);
SetPlayerSkin(playerid,101);
dini_IntSet(Account,"Adminlevel",0);
dini_IntSet(Account,"Banned",0);
dini_IntSet(Account,"Premium",0);
dini_IntSet(Account,"Mute",0);
dini_IntSet(Account,"Skin",101);
dini_IntSet(Account,"Fahrzeug",0);
dini_IntSet(Account,"Kills",0);
dini_IntSet(Account,"Tode",0);
dini_IntSet(Account,"Levelkills",0);
SetPlayerColor(playerid,WEIß);
format(string,sizeof(string),"Willkommen auf Deathmatch-Reloaded!\nUm dir den Start und die Registration etwas zu erleichtern,\nsind hier erstmal Befehle aufgelistet die dir zunächst bestimmt weiterhelfen.\n\n/skin - Zum ändern des Skin's\n/arenen - Für eine Liste der Arenen auf Deathmatch-Reloaded\n\n{FF0000}Für eine Liste aller Befehle tippe /commands bzw. /cmds oder /help.\n\n{00FF78}Viel Spaß auf Deathmatch-Reloaded!\n\n{FFFFFF}Tippe ''gelesen'' zum fortfahren.");
ShowPlayerDialog(playerid,DIALOG_REGHELP,DIALOG_STYLE_INPUT,"Deathmatch-Reloaded: Hilfe und Befehle",string,"Fertig!","");
return 1;
}
Login
stock Login(playerid,key[])
{
new Account[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Account,sizeof(Account),"/Accounts/%s.ini",name);
if(!strcmp(key,dini_Get(Account,"Passwort"),false))
{
AccountInfo[playerid][banned]=dini_Int(Account,"Banned");
if(AccountInfo[playerid][banned]==1)return Kick(playerid);
SendClientMessage(playerid,WEIß,"SERVER: Du hast dich erfolgreich eingeloggt.");
LoadAccount(playerid);
}
else
{
SendClientMessage(playerid,TEAMDMROT,"Das eingegebene Passwort war nicht korrekt.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Deathmatch-Reloaded: Login","Willkommen zurück!\nDein Account wurde in unserer Datenbank gefunden.\nGebe bitte zur Verfizierung deiner Person dein Passwort ein.\nDas Passwort muss mindestens 5 Zeichen beinhalten.","Login","Abbrechen");
}
return 1;
}
LoadAccount (Account laden lassen)
stock LoadAccount(playerid)
{
new Account[64],string[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Account,sizeof(Account),"/Accounts/%s.ini",name);
AccountInfo[playerid][eingeloggt]=1;
SetPlayerScore(playerid,dini_Int(Account,"Level"));
GivePlayerMoney(playerid,dini_Int(Account,"Geld"));
SetPlayerSkin(playerid,dini_Int(Account,"Skin"));
SetPlayerFightingStyle(playerid,dini_Int(Account,"Kampfstil"));
AccountInfo[playerid][premium]=dini_Int(Account,"Premium");
if(AccountInfo[playerid][premium]>=1)
{
SendClientMessage(playerid,WEIß,"SERVER: Du besitzt ein {9BFF00}Premium-Account{FFFFFF}.");
SetPlayerColor(playerid,LEMONGRÜN);
TextDrawShowForPlayer(playerid,Premium);
}
else
{
SetPlayerColor(playerid,WEIß);
}
AccountInfo[playerid][admlevel]=dini_Int(Account,"Adminlevel");
if(AccountInfo[playerid][admlevel]>=1)
{
format(string,sizeof(string),"SERVER: Du bist ein %s%s{FFFFFF}.",Admincolor(playerid),Adminrang(playerid));
SendClientMessage(playerid,WEIß,string);
}
AccountInfo[playerid][mute]=dini_Int(Account,"Mute");
if(AccountInfo[playerid][mute]>=1)
{
SendClientMessage(playerid,TEAMDMROT,"HINWEIS: Du bist noch gemutet! Unter deinen {FFFFFF}/stats{FF0000} kannst du dir die Dauer anzeigen lassen.");
}
AccountInfo[playerid][fahrzeug]=0;
AccountInfo[playerid][kills]=dini_Int(Account,"Kills");
AccountInfo[playerid][tode]=dini_Int(Account,"Tode");
AccountInfo[playerid][levelkills]=dini_Int(Account,"Levelkills");
SpawnPlayer(playerid);
return 1;
}
SaveAccount (Account speichern lassen)
stock SaveAccount(playerid)
{
if(AccountInfo[playerid][eingeloggt]==1)
{
new Account[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Account,sizeof(Account),"/Accounts/%s.ini",name);
dini_IntSet(Account,"Level",GetPlayerScore(playerid));
dini_IntSet(Account,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Account,"Skin",AccountInfo[playerid][spielerskin]);
dini_IntSet(Account,"Adminlevel",AccountInfo[playerid][admlevel]);
dini_IntSet(Account,"Banned",AccountInfo[playerid][banned]);
dini_IntSet(Account,"Premium",AccountInfo[playerid][premium]);
dini_IntSet(Account,"Mute",AccountInfo[playerid][mute]);
dini_IntSet(Account,"Kampfstil",GetPlayerFightingStyle(playerid));
dini_IntSet(Account,"Kills",AccountInfo[playerid][kills]);
dini_IntSet(Account,"Tode",AccountInfo[playerid][tode]);
dini_IntSet(Account,"Levelkills",AccountInfo[playerid][levelkills]);
}
return 1;
}
Und der ResetAccount, den ich ganz unten beim "OnPlayerDisconnect" verwende, um den Account auf 0 zu setzen
stock ResetAccount(playerid)
{
AccountInfo[playerid][levelscore]=0;
AccountInfo[playerid][spielerskin]=0;
AccountInfo[playerid][admlevel]=0;
AccountInfo[playerid][mute]=0;
AccountInfo[playerid][premium]=0;
TextDrawHideForPlayer(playerid,Premium);
AccountInfo[playerid][banned]=0;
ResetPlayerMoney(playerid);
AccountInfo[playerid][fightstyle]=0;
AccountInfo[playerid][kills]=0;
AccountInfo[playerid][tode]=0;
AccountInfo[playerid][fahrzeug]=0;
AccountInfo[playerid][levelkills]=0;
AccountInfo[playerid][eingeloggt]=0;
AOND[playerid]=0;
TutSpecten[playerid]=0;
KillStreak[playerid]=0;
SetPlayerColor(playerid,WEIß);
}
Ich hoffe, ihr könnt mir helfen.
MfG