|
Оффлайн
Пятница, 18.07.2014, 20:05 | Сообщение # 1
|
|
"Здравствуйте, уважаемые форумчане! В этой теме я научу Вас, как... " - Создать Регистрацию на своем сервере new.pwn. Специально для игрового портала isamp.3dn.ru. Автор: ARTEM_SKOROBAGACH
После #include <a_samp>
Код #include <mxINI> // Подключаем ini ридер new PAccount[MAX_PLAYERS];// Есть аккаунт, или нет enum pInfo { pPass[64],// Пароль pAdmin,// Админ уровень } #define PlayerInfo Player new Player[MAX_PLAYERS][pInfo];
В OnPlayerRequestClass
if(PAccount [playerid]== 1)// Если аккаунт есть { ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", ""); } else// Если аккаунта нет { ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Регистрация", "{ffffff}Добро пожаловать на сервер NAME\n{ffffff}Чтобы начать игру вам необходимо пройти регистрацию\n\nВведите пароль для вашего аккаунта\nОн будет запрашиваться каждый раз,когда вы заходите на сервер\n\n\t{66cc33}Примечания:\n\t- Пароль может состоять из русских и латинских символов\n\t- Пароль чувствителен к регистру\n\t- Длина пароля от 6-ти до 15 символов", "Войти", "Выйти"); }
В OnPlayerConnect
Код new playername[MAX_PLAYER_NAME];// Массив для имени игрока new string[128];// Путь до папки с именем игрока GetPlayerName(playerid,playername,sizeof(playername));// Узнаём имя игрока format(string,sizeof(string),"1/%s.ini", playername);// Путь к файлу с аккаунтом if(fexist(string))// Проверка на файл, если он есть то выполняется следующее действие. { PAccount [playerid]= 1;// Аккаунт есть } else// Если файла с именем нет, то выполняется это действие. {
В OnDialogResponse
Код if(dialogid == 1)// Ид диалога Для Логина { if(response)// Если игрок нажал первую кнопку входа { if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова { ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", ""); return 1; } new pass[64];// Массив с паролем strmid(pass,inputtext,0,strlen(inputtext),64);// Считываем текст с диалога OnPlayerLogin(playerid,pass);// Запускаем паблик входа } else// Если игрок нажал Esc, вернём ему диалог { ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", ""); } } if(dialogid == 2)// Ид диалога для регистрации { if(response)// Если игрок нажал первую кнопку { if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова { ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Регистрация", "{ffffff}Добро пожаловать на сервер NAME\n{ffffff}Чтобы начать игру вам необходимо пройти регистрацию\n\nВведите пароль для вашего аккаунта\nОн будет запрашиваться каждый раз,когда вы заходите на сервер\n\n\t{66cc33}Примечания:\n\t- Пароль может состоять из русских и латинских символов\n\t- Пароль чувствителен к регистру\n\t- Длина пароля от 6-ти до 15 символов", "Войти", "Выйти"); return 1; } new pass[64];// Массив с паролем strmid(pass,inputtext,0,strlen(inputtext),64);// Считываем текст с диалога OnPlayerRegister(playerid,pass);// Запускаем паблик регистрации } else// Если игрок нажал Esc, вернём ему диалог { ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Регистрация", "{ffffff}Добро пожаловать на сервер NAME\n{ffffff}Чтобы начать игру вам необходимо пройти регистрацию\n\nВведите пароль для вашего аккаунта\nОн будет запрашиваться каждый раз,когда вы заходите на сервер\n\n\t{66cc33}Примечания:\n\t- Пароль может состоять из русских и латинских символов\n\t- Пароль чувствителен к регистру\n\t- Длина пароля от 6-ти до 15 символов", "Войти", "Выйти"); } } В конец мода
Код stock SavePlayer(playerid) { new string[64];// Массив с путём для файла new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока format(string, sizeof(string), "1/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали. ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Записываем уровень админа ini_closeFile(iniFile);// Закрываем файл }
forward OnPlayerRegister(playerid, password[]); public OnPlayerRegister(playerid, password[])// Паблик регистрации { if(IsPlayerConnected(playerid))// Проверка на подключение игрока { new string[64];// Массив с путём для файла new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока format(string,sizeof(string), "1/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения new iniFile = ini_createFile(string);// Создаём файл с именем игрока в папке players if(iniFile < 0)// Если Файла нет { iniFile = ini_openFile(string);// Открываем } if(iniFile >= 0)// Если файл есть { strmid(Player[playerid][pPass],password,0,strlen(password),255);// Присваиваем массиву pPass, значение password[] ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);
ini_closeFile(iniFile);// Закрываем файл ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", ""); } } return 1; }
forward OnPlayerLogin(playerid,password[]); 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), "1/%s.ini", playername);// Добавляем имя игрока, в путь для загрузки new iniFile = ini_openFile(string);// Открываем файл ini_getString(iniFile,"Pass",pass,64);// Загружаем пароль if(strcmp(pass,password,true) == 0)// Если введёный пароль, соответсвует паролю при регистрации, то загружаем акк { ini_getString(iniFile,"Pass",Player[playerid][pPass],64);// Загружаем пароль ini_getInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Загружаем уровень админа
ini_closeFile(iniFile);// Закрываем файл } else// Если пароль не верен.. { ini_closeFile(iniFile);// Закрываем файл ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", ""); return 1; } SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");// Выводим игрок сообщение SpawnPlayer(playerid);// Спавним игрока } return 1; } Всем спасибо:) |
|