Приветствую Вас, Гость! Регистрация RSS
Вторник, 17.06.2025
[ Главная страница · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: po61  
Урок 2. Скажем нет Нон-РП
po61Дата: Воскресенье, 23.09.2012, 09:09 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 9

И так, я сразу говорю что ДМ, ТДМ и Стант серверами я заниматься не буду, возможно когда-нибудь будет РПГ, но мы будем делать РП мод,
Первым делом мы напишем регистрацию...

Сначала после
Code
#include <a_samp>
добавим
Code
#include <mxINI>


Потом добавляем после
Code
#endif

Code
enum pInfo
{

};

и в pInfo после открытой скобки пишем
Code
pPass[64],
pReg,

Должно получится вот так:

Code
enum pInfo
{
pPass[32],
pReg,
};


После закрытой скобки с ;, отступаем одну строку, и добавляем
Code
new Player[MAX_PLAYERS][pInfo];         
         new Log[MAX_PLAYERS];
new PlayerInfo[MAX_PLAYERS][pInfo];


После NEW, надо добавить это:
Code
forward OnPlayerLogin(playerid,password[]);         
         forward OnPlayerRegister(playerid, password[]);


После ищем
Code
OnPlayerRequestClass(playerid, classid)


и после открывающей скобочки отступаем одну строку, и добавляем это
Code
if(Log[playerid] == 1)         
               {         
                ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Добро пожаловать на наш сервер\n Ваш ник уже зарегестрирован\nВведите пароль...","Ввод","");
               }
               else         
               {         
                ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Добро пожаловать на наш сервер \nПожалуйста.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");
               }


После ищем
Code
public OnPlayerConnect(playerid)

и после открывающей скобочки отступаем одну строку, и добавляем это
Code
new playername[MAX_PLAYER_NAME];
               new string[128];
               GetPlayerName(playerid,playername,sizeof(playername));
               format(string,sizeof(string),"acc/%s.ini", playername);
               if(fexist(string))
               {
                   Log[playerid] = 1;
               }
               else
               {
                   Log[playerid] = 0;
               }
PlayerInfo[playerid][pReg] = 0;
}

Ищем
Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])


и после октрывающей скобки, одну строку отступаем и вставляем это
Code
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        
                  {        
                      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        
                  {        
                      ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");        
                  }        
              }

После идем в конец мода, и создаем данные паблики ( копируйте )...

Code
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), "acc/%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_closeFile(iniFile);        
                  }        
                  else        
                  {        
                      ini_closeFile(iniFile);        
                      ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");        
                      return 1;        
                  }        
                  SendClientMessage(playerid,0xFF00000,"Добро пожаловать в Next City");        
                  SpawnPlayer(playerid);        
              }        
              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), "acc/%s.ini", playername);        
                  new iniFile = ini_createFile(string);        
                  if(iniFile < 0)        
                  {        
                      iniFile = ini_openFile(string);        
                  }        
                  if(iniFile >= 0)        
                  {        
                      strmid(Player[playerid][pPass],password,0,strlen(password),255);        
                      ini_setString(iniFile,"Pass",Player[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), "acc/%s.ini", playername);        
              new iniFile = ini_openFile(string);        
              ini_setString(iniFile,"Pass",Player[playerid][pPass]);        
              ini_closeFile(iniFile);        
        }


И теперь конец, ищем
Code
OnPlayerDisconnect(playerid, reason)

И вставляем после скобочки
Code
SavePlayer(playerid);
Прикрепления: urok2.pwn (7.1 Kb)
 
po61Дата: Пятница, 28.09.2012, 21:29 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 9

Кстати, после компилирования, возникает вопрос, что-же за ошибка 217...
Эта ошибка показывает на то, что мод не табулирован, а как это легко сделать, описано в данной статье (не реклама )

КЛИК(кликабельно)
 
RaabДата: Пятница, 28.09.2012, 22:46 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 8

у меня тоже самое :D[u]
 
BaZuKaДата: Суббота, 29.09.2012, 22:41 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 3

po61, Делай мод с нуля Поши в тебя талант
 
po61Дата: Воскресенье, 30.09.2012, 17:48 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 9

BaZuKa, не вариант, я в павно давно не захожу, вот система lvl пока и лежит в корзинке sad
я месяца два назад писал, сейчас уже не помню :{
 
  • Страница 1 из 1
  • 1
Поиск:

Вверх