Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Система регистрации для new.pwn

Статус
В этой теме нельзя размещать новые ответы.

MaksOFF

Ученик
Всем привет. Сегодня я выложу регистрацию с моего мода Grom Role Play.

Скрины регистрации:


Теперь приступим:
1. Создаём новый мод или же открываем существующий
2. После include <a_samp> добавляем это:
PHP:
#include <mxINI>
3. Добавляем ко всем #define:
PHP:
#define PlayerInfo Player
4. Ко всем переменным (new) добавляем:
PHP:
new PAccount[MAX_PLAYERS];
5. В любое место вставляем это:
PHP:
enum pInfo
{   
pPass[64],// Пароль  
pAdmin,// Админ уровень
}
new Player[MAX_PLAYERS][pInfo];


6. В public
OnPlayerRequestClass добавляем:
PHP:
  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 символов", "Войти", "Выйти");
   }
7. В public OnPlayerConnect добавляем:
PHP:
   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// Если файла с именем нет, то выполняется это действие.
   {
      PAccount[playerid] = 0;// Аккаунта нет
   }

8. В public OnDialogResponse добавляем:
PHP:
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 символов", "Войти", "Выйти");
      }
   }
9. В конец мода добавляем:
PHP:
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;
      }
      SpawnPlayer(playerid);// Спавним игрока
   }
   return 1;
}
На этом всё.
Автор кода регистрации: Vovan228
Выложил и изменил текст регистрации: MaksOff
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу