Здравствуйте, ув. пользователи PP :3, сегодня я хотел бы представить вам свою регистрацию на инклуде mxINI.
Сразу смотрим есть ли у нас такой инклуд:
PHP код:
#include <mxINI>
Если да то двигаем дальше, иначе ищем в гугле :D.
Добавим enum с 1 переменной:
PHP код:
enum pInfo
{
pPassword[34],
pName[MAX_PLAYER_NAME],
bool:PLogged,
bool:PAccount
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Добавили? Идем дальше.
Ищем OnPlayerConnect и добавляем вот такой код:
PHP код:
for(new pInfo:e; e < pInfo; ++e) PlayerInfo[playerid][e] = 0; // Обнуляем все
new string[MAX_PLAYER_NAME+14];// Объявим переменную
GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);//Узнаем имя
format(string,sizeof string,"Accounts/%s.ini", PlayerInfo[playerid][pName]);//Ищем Аккаунт в папке 'Accounts', и формартируем текст
PlayerInfo[playerid][PAccount] = (fexist(string)) ? (true) : (false);//Если есть акк, то значение PlayerInfo[playerid][PAccount] = истина, иначе ложь
Вот с этим пабликом покончили, двигаем в OnPlayerRequestClass:
Видим что-то типа:
PHP код:
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
Удаляем !
И добавим вот это:
PHP код:
SetPlayerCameraPos(playerid, -2498.0146, 1447.5419, 126.1710);
SetPlayerCameraLookAt(playerid, -2498.6477, 1448.3204, 126.1411);
if(PlayerInfo[playerid][PAccount] == true){ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");}
else{ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");}
Идем в OnPlayerDisconnect:
И суем вот это:
PHP код:
SavePlayer(playerid);
Осталось только диалоги сделать, да и паблики реги и сохранения :3.
В OnDialogResponse:
PHP код:
switch(dialogid)
{
case 1:
{
if(!response || !strlen(inputtext)) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");
OnPlayerLogin(playerid,inputtext);
return 1;
}
case 2:
{
if(!response || !strlen(inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");
OnPlayerRegister(playerid,inputtext);
return 1;
}
}
Ну и три функции, отвечающие за загрузку/сохранение/регистрацию:
PHP код:
SavePlayer(playerid)
{
if(!PlayerInfo[playerid][PLogged]) return 1;
new string[MAX_PLAYER_NAME+14];
format(string, sizeof string, "Accounts/%s.ini", PlayerInfo[playerid][pName]);
new iniFile = ini_openFile(string);
ini_setString(iniFile,"Password",PlayerInfo[playerid][pPassword]);
ini_closeFile(iniFile);
return 1;
}
OnPlayerRegister(playerid, password[])
{
if(!IsPlayerConnected(playerid)) return 1;
new string[MAX_PLAYER_NAME+14];
format(string,sizeof string, "Accounts/%s.ini", PlayerInfo[playerid][pName]);
new iniFile = ini_createFile(string);
ini_setString(iniFile,"Password",password);
ini_closeFile(iniFile);
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");
return 1;
}
OnPlayerLogin(playerid,password[])
{
if(!IsPlayerConnected(playerid)) return 1;
new string[MAX_PLAYER_NAME+14], pass[34];
format(string,sizeof string, "Accounts/%s.ini", PlayerInfo[playerid][pName]);
new iniFile = ini_openFile(string);
ini_getString(iniFile,"Password",pass,34);
ini_closeFile(iniFile);
if(strcmp(pass,password,true) == 0)
{
strmid(PlayerInfo[playerid][pPassword],pass,0,strlen(pass),34);
SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");
PlayerInfo[playerid][PLogged] = true;
SpawnPlayer(playerid);
return 1;
}
else return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");
}
Автор я Snoopdy
Помогал мне в оптимизации m1n1w
Писал для своего проекта, кому понадобится, берите!