У кого нет этого include, то вот: Скачать
1) К include пропишем:
#include <mxINI>
Дальше после инклудов пропишем forward:
forward OnPlayerRegister(playerid, password[]); forward OnPlayerLogin(playerid,password[]);
Ниже forward вставляем это:
enum pInfo
{
pPass[64],
pMoney
};
new PlayerInfo[MAX_PLAYERS][pInfo];
new PAccount[MAX_PLAYERS];
Дальше находим:
public OnPlayerRequestClass(playerid, classid)
И вставляем туда это:
{
if(PAccount[playerid] == 1) // аккаунт есть
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт зарегистрирован\nВведите свой пароль","Ввод","");// показываем диалог
}
else // если нет аккаунта в папке
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
}
Пример:
public OnPlayerRequestClass(playerid, classid)
{
if(PAccount[playerid] == 1) // аккаунт есть
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт зарегистрирован\nВведите свой пароль","Ввод","");// показываем диалог
}
else // если нет аккаунта в папке
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
}
return 1;
}
Потом в
public OnPlayerConnect(playerid)
{
Вставляем вот этот код:
new playername[MAX_PLAYER_NAME];// Масив для имени игрока
new string[128];// Путь до папки с именем игрока
GetPlayerName(playerid,playername,sizeof(playername));// Узнаём имя игрока
format(string,sizeof(string),"users/%s.ini", playername);// Путь к файлу с аккаунтом
if(fexist(string))// Проверка на файл, если он есть то выполняется следующее действие.
{
PAccount[playerid] = 1;// Аккаунт есть
}
else// Если файла с именем нет, то выполняется это действие.
{
PAccount[playerid] = 0;// Аккаунта нет
}
Пример:
public OnPlayerConnect(playerid)
{
new playername[MAX_PLAYER_NAME];// Масив для имени игрока
new string[128];// Путь до папки с именем игрока
GetPlayerName(playerid,playername,sizeof(playername));// Узнаём имя игрока
format(string,sizeof(string),"users/%s.ini", playername);// Путь к файлу с аккаунтом
if(fexist(string))// Проверка на файл, если он есть то выполняется следующее действие.
{
PAccount[playerid] = 1;// Аккаунт есть
}
else// Если файла с именем нет, то выполняется это действие.
{
PAccount[playerid] = 0;// Аккаунта нет
}
return 1;
}
Это в конец мода:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)// Ид диалога Для Логина
{
if(response)// Если игрок нажал первую кнопку входа
{
if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт зарегистрирован\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
return 1;
}
new pass[64];// Масив с паролем
strmid(pass,inputtext,0,strlen(inputtext),64);// считывание текста с диалога
OnPlayerLogin(playerid,pass);//паблик входа
}
else// Если игрок нажал Escape,то покажем ему диалог
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт зарегистрирован\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
}
}
if(dialogid == 2)// Ид диалога для регистрации
{
if(response)// Если игрок нажал первую кнопку
{
if(!strlen(inputtext))// Если игрок не написал ничего,то выводим диалог снова
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт зарегистрирован.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
return 1;
}
new pass[64];// Масив с паролем
strmid(pass,inputtext,0,strlen(inputtext),64);// Считываем текст с диалога
OnPlayerRegister(playerid,pass);// Запускаем паблик регистрации
}
else// Если игрок нажал Escape
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт зрегистрирован.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
public OnPlayerRegister(playerid, password[])// Паблик регистрации
{
if(IsPlayerConnected(playerid))
{
new string[64];// Масив с путём для файла
new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "users/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_createFile(string);// Создаём файл с именем игрока в папке players
if(iniFile < 0)// Если Файла нет
{
iniFile = ini_openFile(string);// Открываем
}
if(iniFile >= 0)// Если файл есть
{
strmid(PlayerInfo[playerid][pPass],password,0,strlen(password),255);// Присваиваем масиву pPass, значение password[]
ini_setString(iniFile,"Pass",PlayerInfo[playerid][pPass]);// Записываем пароль игрока в файл
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт зарегистрирован\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
}
}
return 1;
}
stock SavePlayer(playerid)
{
new string[64];// Масив с путём для файла
new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string, sizeof(string), "users/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
ini_setString(iniFile,"Pass",PlayerInfo[playerid][pPass]);// Записываем пароль игрока в файл
ini_closeFile(iniFile);// Закрываем файл
}
public OnPlayerLogin(playerid,password[])
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Масив с путём для файла
new pass[64];// Масив с паролем
new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "users/%s.ini", playername);// Добавляем имя игрока, в путь для загрузки
new iniFile = ini_openFile(string);// Открываем файл
ini_getString(iniFile,"Pass",pass,64);// Загружаем пароль
if(strcmp(pass,password,true) == 0)// Если введёный пароль, соответсвует паролю при регистрации, то загружаем акк
{
ini_getString(iniFile,"Pass",PlayerInfo[playerid][pPass],64);// Загружаем пароль
ini_closeFile(iniFile);// Закрываем файл
}
else// Если пароль не верен..
{
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт зарегистрирован\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
return 1;
}
SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");// Выводим игрок сообщение
SpawnPlayer(playerid);// Спавним игрока
}
return 1;
}
Нажимаем F5 и это все, регистрация готова. Автор я, + помощь от Clapse. Если будут ошибки, пишите, вместе исправим.
P.S. Код сразу построен лесенкой.
А вот и new.pwn с встроенной регистрацией.
Прикрепленные файлы [Показать]
Вход
Регистрация
Помощь















