Слет аккаунтов
#1

Ребят вопрос конечно хорош, начну с кода:

Код:
#include <mxINI>
#include <md5>

enum pInfo{
pBank,
pAdmin,
pScore,};

forward SaveAccounts();

stock SaveAccount(playerid){
new PlayerName[MAX_PLAYER_NAME], account[128];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
format(account,sizeof(account), "users/%s.ini", PlayerName);
new iniFile = ini_openFile(account);
ini_setInteger(iniFile, "Bank", Player[playerid][pBank]);
ini_setInteger(iniFile, "Score", GetPlayerScore(playerid));
ini_setInteger(iniFile, "Level", Player[playerid][pAdmin]);
ini_closeFile(iniFile);
return true;}

pubblic OnPlayerConnect(playerid){
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
new account[128];
format(account,sizeof(account),"users/%s.ini",PlayerName);
if(!fexist(account)) {
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Зарегистрируйтесь! Введите пароль", "ок", "");
}else{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "{FFFFFF}Àâòîðèçàöèÿ", "Авторизуйтесь! Введите пароль", "ок", "");}
return true;}

public OnPlayerDisconnect(playerid, reason){
new PlayerName[MAX_PLAYER_NAME], account[128];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
format(account,sizeof(account), "users/%s.ini", PlayerName);
new iniFile = ini_openFile(account);
ini_setInteger(iniFile, "Bank", Player[playerid][pBank]);
ini_setInteger(iniFile, "Score", GetPlayerScore(playerid));
ini_closeFile(iniFile);
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
if(dialogid == 1){
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Зарегистрируйтесь! Введите пароль", "ок", "");
if(response){
if(IsPlayerConnected(playerid)){
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
new account[128];
format(account,sizeof(account),"users/%s.ini",PlayerName);
if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйтесь! Введите пароль", "ок", "");
new iniFile = ini_createFile(account);
if(iniFile < 0) ini_openFile (account);{
ini_setString(iniFile,"Ïàðîëü",inputtext);
ini_setInteger(iniFile, "Bank", 0);
ini_setInteger(iniFile, "Score", 0);
ini_setInteger(iniFile, "Level", 0);
ini_closeFile(iniFile);
SetPVarInt(playerid, "Logged", 0);
if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйтесь! Введите пароль", "ок", ""); }
}else{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Зарегистрируйтесь! Введите пароль", "ок", "");}}}

if(dialogid == 2){
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйтесь! Введите пароль", "ок", ""); 
if(response){
new PlayerName[MAX_PLAYER_NAME], password[64];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
new account[128];
format(account,sizeof(account),"users/%s.ini",PlayerName);
if(IsPlayerNPC(playerid))return true;
new iniFile = ini_openFile(account);
ini_getString(iniFile, "Пароль",password);
if(!strcmp(inputtext, password, true)){
ini_getInteger(iniFile, "Bank", Player[playerid][pBank]);
ini_getInteger(iniFile, "Score", Player[playerid][pScore]);
ini_getInteger(iniFile, "Level", Player[playerid][pAdmin]);
SetPlayerScore(playerid, Player[playerid][pScore]);
GivePlayerMoney(playerid, Player[playerid][pMoney]);
ini_closeFile(iniFile);
logged[playerid] = 1;
GameTextForPlayer(playerid, "~y~Logged in!",2000,1);
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
if(Player[playerid][pAdmin] == 0){
GetPlayerName(playerid, PlayerName, 30);
format(string, sizeof(string), "Загруженный как: %s, игрок", PlayerName);
SendClientMessage(playerid, 0x33AA33AA, string);}
if(Player[playerid][pAdmin] == 100){
GetPlayerName(playerid, PlayerName, 30);
format(string, sizeof(string), "Загруженный как: %s, уровень 1 (Администратор)", PlayerName);
SendClientMessage(playerid, 0x33AA33AA, string);}
if(Player[playerid][pAdmin] == 101){
GetPlayerName(playerid, PlayerName, 30);
format(string, sizeof(string), "Загруженный как: %s, уровень 2 (Владелец ресурса)", PlayerName);
SendClientMessage(playerid, 0x33AA33AA, string);}
return true;
}else{
SendClientMessage(playerid, 0xFF0000AA, "Неверно указан пароль! Попробуйте еще раз");
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйтесь! Введите пароль", "ок", ""); 
return true;}
}else{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйтесь! Введите пароль", "ок", ""); 
return false;}}
return false;}

public SaveAccounts(){
for(new f; f < GetMaxPlayers(); f++){
if(!IsPlayerConnected(f))continue;
SaveAccount(f);}}
Сама суть проблемы:
В данном коде указана система регистрации. Проблема в том, что через некоторое время (примерно день или пол дня) аккаунт недееспособен.
К примеру:
Вчера был я админом с 100 фрагами, сегодня захожу - бац обычный игрок и фрагов нет. При этом аккаунт на хосте не тронут. После перезагрузки сервера все становится обратно. Все бы ничего, но получается что не грузит файл аккаунта.
Помогите кто-нибудь разобраться. Голову изломал не могу решения найти.

Стоит учесть что путь акков таков: users/%s.ini (папка scriptfiles)
Reply


Messages In This Thread
Слет аккаунтов - by Кирилл - 04.07.2013, 17:20
Re: Слет аккаунтов - by TC-52 - 04.07.2013, 18:53
Re: Слет аккаунтов - by Кирилл - 04.07.2013, 19:33
Re: Слет аккаунтов - by Кирилл - 04.07.2013, 19:57
Re: Слет аккаунтов - by [Saint] - 04.07.2013, 22:03
Re: Слет аккаунтов - by TC-52 - 05.07.2013, 11:35
Re: Слет аккаунтов - by stabker - 05.07.2013, 12:31
Re: Слет аккаунтов - by Кирилл - 06.07.2013, 08:05
Re: Слет аккаунтов - by Кирилл - 06.07.2013, 13:09
Re: Слет аккаунтов - by ZN-Freedom - 08.07.2013, 10:32

Forum Jump:


Users browsing this thread: 1 Guest(s)