07.04.2012, 15:16
Hello everyone. I have scripted a dini registration, but I have a problem. If player relogs, his account variables resets to 0. Maybe there is a solution?
public OnPlayerDisconnect(playerid, reason)
{
new targetName[MAX_PLAYER_NAME], file[256];
GetPlayerName(playerid, targetName, sizeof(targetName));
format(file, sizeof(file), USER_FILES, targetName);
if(PlayerLogged[playerid] == 1)
{
dini_IntSet(file, "AdminLevel", PlayerInfo[playerid][AdminLevel]);
dini_IntSet(file, "Money", PlayerInfo[playerid][Money]);
dini_IntSet(file, "Skin", PlayerInfo[playerid][Skin]);
dini_IntSet(file, "Origin", PlayerInfo[playerid][Origin]);
dini_IntSet(file, "Age", PlayerInfo[playerid][Age]);
dini_IntSet(file, "Tutorial", PlayerInfo[playerid][Tutorial]);
dini_IntSet(file, "Job", PlayerInfo[playerid][Job]);
dini_IntSet(file, "CarParts", PlayerInfo[playerid][CarParts]);
dini_IntSet(file, "PayCheck", PlayerInfo[playerid][PayCheck]);
dini_IntSet(file, "WorkHours", PlayerInfo[playerid][WorkHours]);
}
PlayerLogged[playerid] = 0;
OfferedPrice[playerid] = 0;
Offered[playerid] = 0;
AlreadyWorking[playerid] = 0;
LeftJobVehicle[playerid] = 0;
return 1;
}
public OnPlayerUpdate(playerid)
{
new targetName[MAX_PLAYER_NAME], file[256];
GetPlayerName(playerid, targetName, sizeof(targetName));
format(file, sizeof(file), USER_FILES, targetName);
if(PlayerLogged[playerid] == 1)
{
dini_IntSet(file, "AdminLevel", PlayerInfo[playerid][AdminLevel]);
dini_IntSet(file, "Money", PlayerInfo[playerid][Money]);
dini_IntSet(file, "Skin", PlayerInfo[playerid][Skin]);
dini_IntSet(file, "Origin", PlayerInfo[playerid][Origin]);
dini_IntSet(file, "Age", PlayerInfo[playerid][Age]);
dini_IntSet(file, "Tutorial", PlayerInfo[playerid][Tutorial]);
dini_IntSet(file, "Job", PlayerInfo[playerid][Job]);
dini_IntSet(file, "CarParts", PlayerInfo[playerid][CarParts]);
dini_IntSet(file, "PayCheck", PlayerInfo[playerid][PayCheck]);
dini_IntSet(file, "WorkHours", PlayerInfo[playerid][WorkHours]);
}
return 1;
}
case REGISTRATION:
{
if(!strlen(inputtext))
{
SendClientMessage(playerid, GREY, "[Kļūda]: Paroles lauks nedrīkst būt neaizpildīts.");
return ShowPlayerDialog(playerid, REGISTRATION, DIALOG_STYLE_INPUT, "Reģistrācija", "Zemāk ievadi vēlamo paroli, lai piereģistētu profilu.", "Apstiprināt", "");
}
new targetName[MAX_PLAYER_NAME], file[256];
GetPlayerName(playerid, targetName, sizeof(targetName));
format(file, sizeof(file), USER_FILES, targetName);
dini_Create(file);
dini_IntSet(file, "Password", udb_hash(inputtext));
dini_IntSet(file, "AdminLevel", PlayerInfo[playerid][AdminLevel] = 0);
dini_IntSet(file, "Money", PlayerInfo[playerid][Money] = 300);
dini_IntSet(file, "Skin", PlayerInfo[playerid][Skin] = 0);
dini_IntSet(file, "Origin", PlayerInfo[playerid][Origin] = 0);
dini_IntSet(file, "Age", PlayerInfo[playerid][Age] = 0);
dini_IntSet(file, "Tutorial", PlayerInfo[playerid][Tutorial] = 0);
dini_IntSet(file, "Job", PlayerInfo[playerid][Job] = 0);
dini_IntSet(file, "CarParts", PlayerInfo[playerid][CarParts] = 0);
dini_IntSet(file, "PayCheck", PlayerInfo[playerid][PayCheck] = 0);
dini_IntSet(file, "WorkHours", PlayerInfo[playerid][WorkHours] = 0);
ClearChatbox(playerid);
SendClientMessage(playerid, WHITE, "[Info]: Jaunais konts tika veiksmīgi saglabāts servera datubāzē.");
ShowPlayerDialog(playerid, ORIGIN, DIALOG_STYLE_LIST, "Dzinums", "Vīrietis\nSieviete", "Apstiprināt", "");
SetSpawnInfo(playerid, 0, 12, -1971.9584, 146.1756, 27.6875, 143.1446, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
PlayerLogged[playerid] = 1;
}
case AUTHORIZATION:
{
if(!strlen(inputtext))
{
SendClientMessage(playerid, GREY, "[Kļūda]: Paroles lauks nedrīkst būt neaizpildīts.");
return ShowPlayerDialog(playerid, AUTHORIZATION, DIALOG_STYLE_INPUT, "Autorizācija","Zemāk ievadi savu paroli, lai autorizētos profilā.", "Apstiprināt", "");
}
new targetName[MAX_PLAYER_NAME], file[256], password;
GetPlayerName(playerid, targetName, sizeof(targetName));
format(file, sizeof(file), USER_FILES, targetName);
password = dini_Int(file, "Password");
if(udb_hash(inputtext) != password)
{
SendClientMessage(playerid, GREY, "[Kļūda]: Ievadītā parole nav pareiza. Pārbaudi vēlreiz.");
ShowPlayerDialog(playerid, AUTHORIZATION, DIALOG_STYLE_INPUT, "Autorizācija","Zemāk ievadi savu paroli, lai autorizētos profilā.", "Apstiprināt", "");
}
else
{
ClearChatbox(playerid);
PlayerLogged[playerid] = 1;
PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel");
GivePlayerMoney(playerid, dini_Int(file, "Money")-GetPlayerMoney(playerid));
SendClientMessage(playerid, ORANGE, "[Info]: Esi laipni lūgts mūsu serverī.");
SetSpawnInfo(playerid, 0, 12, -1971.9584, 146.1756, 27.6875, 143.1446, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
}
}
public OnPlayerConnect(playerid)
{
ClearChatbox(playerid);
new targetName[MAX_PLAYER_NAME], file[256];
GetPlayerName(playerid, targetName, sizeof(targetName));
format(file, sizeof(file), USER_FILES, targetName);
PlayerLogged[playerid] = 0;
if(!dini_Exists(file))
{
ShowPlayerDialog(playerid, REGISTRATION, DIALOG_STYLE_INPUT, "Reģistrācija", "Zemāk ievadi vēlamo paroli, lai piereģistētu profilu.", "Apstiprināt", "");
}
if(fexist(file))
{
ShowPlayerDialog(playerid, AUTHORIZATION, DIALOG_STYLE_INPUT, "Autorizācija", "Zemāk ievadi savu paroli, lai autorizētos profilā.", "Apstiprināt", "");
}
SetTimerEx("PlayerCamera", 1000, false, "i", playerid);
return 1;
}