shape1
shape2
shape3
shape4
shape7
shape8

Создаем мод с 0,Обсуждении Регистрации(1/2)

Статус
Закрыто для дальнейших ответов.

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
Здравствуйте,это мой первый урок и мы будем обсуждать и делать регистрацию.

0)Обсуждение "на чем будет держаться мод"

1)mxINI - самый быстрый INI ридер,но при онлайне 100+ серв может слететь
2)Mysql - стабильный и удобный(но легок ко взлому)
3)Dini - в отличие от mxINI долгий,но зато держаит онлайн и под 150+

Но все же я возьму mxINI

1)Создаем Пустой скрипт и удаляем вот это:

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

и

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

#else

и вот это

#endif

2)Какие паблики нам нужны?

Нам понадобиться 4-5 паблика

OnPlayerRequestClass - будет вызывать сами диалоги
OnPlayerDisconnect - им будем сохранять данные
OnPlayerConnect - им обнуляем данные
OnDialogResponse - там будут диалоги

3)Структура Нашего Кода:

OnPlayerRequestClass
|
Вступление
| |
Рега Логин
| |
Спавн Спавн
4)А не лучше нам создать #define?

Ведь для диалогов это будет удобно,например задефайнил диалог,а если захотел поменять ид,то просто поменял :)

#define D_NULL 0//Нулевой Диалог
#define D_VSTUP 1//Вступление Диалог
#define D_AUTORIZ 2//Диалог Авторизации
#define D_REGISTER 3//Диалог Регистрации

Таким образом у нас:
#define Название_Диалога Ид_Диалога

И они должны использоваться в диалогах.

5)Начнем писать

Давайте добавим вступление к нашему коду,и добавим в OnPlayerRequestClass:

ShowPlayerDialog(playerid,D_VSTUP,DSM,"{6EF83C}[Жизнь [В]Деревне] {FFFFFF}Вступление",
"{B7FF00}Добро Пожаловать на Upgrade RP\n\n\t{FFFFFF}На нашем сервере вы встретите множество систем:\n\t\t1)Система Домов\n\t\t2)Система Заповедников\n\t\t3)Система Бизнессов\n\t\t4)Система Фракций\n\t\t5)Система Автомобиля\n\tВсе остальное вы запечитлите сами!",">>>>","");

Это как бы наше "вступление"

И перейдем к OnDialogResponse,и он должен выглядеть вот так:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid){

}
return 1;
}

и добавим под switch(dialogid){

Вот это:

case D_VSTUP:{
new stringer[126];
format(stringer,sizeof(stringer),"%s.ini",GN(playerid));
if(fexist(stringer)){
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
else{
ShowPlayerDialog(playerid,D_REGISTER,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Регистрация", "{ffffff}Добро пожаловать на сервер "ServerName"\n{ffffff}Чтобы начать игру вам необходимо пройти регистрацию\n\nВведите пароль для вашего аккаунта\nОн будет запрашиваться каждый раз,когда вы заходите на сервер\n\n\t{66cc33}Примечания:\n\t- Пароль может состоять из русских и латинских символов\n\t- Пароль чувствителен к регистру\n\t- Длина пароля от 6-ти до 15 символов", "Войти", "Выйти");
}
}

Таким образом,когда игрок нажимает на ">>>>" идет проверка,если его файл есть,то идет авторизация,а если нет то регистрация

Добавим Регистрацию и Логин:

case D_AUTORIZ:{
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
new pass[64];
strmid(pass,inputtext,0,strlen(inputtext),64);
OnPlayerLogin(playerid,pass);
}
else
{
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
}
case D_REGISTER:{
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,D_REGISTER,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Регистрация", "{ffffff}Добро пожаловать на сервер "ServerName"\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
{
ShowPlayerDialog(playerid,D_REGISTER,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Регистрация", "{ffffff}Добро пожаловать на сервер "ServerName"\n{ffffff}Чтобы начать игру вам необходимо пройти регистрацию\n\nВведите пароль для вашего аккаунта\nОн будет запрашиваться каждый раз,когда вы заходите на сервер\n\n\t{66cc33}Примечания:\n\t- Пароль может состоять из русских и латинских символов\n\t- Пароль чувствителен к регистру\n\t- Длина пароля от 6-ти до 15 символов", "Войти", "Выйти");
}
}

И добавим паблики после OnDialogResponse:

public OnPlayerRegister(playerid, password[])
{
if(IsPlayerConnected(playerid))
{
new string[64];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(string,sizeof(string), "%s.ini", playername);
new iniFile = ini_createFile(string);
if(iniFile < 0)
{
iniFile = ini_openFile(string);
}
if(iniFile >= 0)
{
strmid(PlayerInfo[playerid][pPass],password,0,strlen(password),255);
ini_setString(iniFile,"Pass",PlayerInfo[playerid][pPass]);
ini_setInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);

ini_closeFile(iniFile);
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
}
return 1;
}
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), "%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_getInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);

ini_closeFile(iniFile);
}
else
{
ini_closeFile(iniFile);
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");
SpawnPlayer(playerid);
}
return 1;
}

и сток:
 

stock SavePlayer(playerid)
{
new string[64];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "%s.ini", playername);
new iniFile = ini_openFile(string);
ini_setString(iniFile,"Pass",PlayerInfo[playerid][pPass]);
ini_setInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);
ini_closeFile(iniFile);
}

6)Ошибки

Какие ошибки могут быть:

1)Не найден "ServerName":

#define ServerName "Жизнь [В]Деревне"//Свое название

2)Нету GN:
 

В конец мода:
stock GN(p){new pl[MAX_PLAYERS];GetPlayerName(p,pl,sizeof(pl));return pl;}

7)Конец

Если будут ошибки,то пишите!

P.S Второй урок по реги ждите в ближайшую неделю

Удачи!

 
Последнее редактирование модератором:

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
Забыл.

В начало мода:
 

enum pInfo
{
pPass[64],
pAdmin
}
new PlayerInfo[MAX_PLAYERS][pInfo];

В OnPlayerDisconnect:

Код:
SavePlayer(playerid);
 

MADDD

Освоившийся
Пользователь
02.03.2015
181
25
0
25
Не совсем лучший варинт... Лучше с использование public OnPlayerLogin

 

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
Не совсем лучший варинт... Лучше с использование public OnPlayerLogin
Эмм,совсем не понял что вы хотели написать

Код:
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), "%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_getInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);
 
         ini_closeFile(iniFile);
      }
      else
      {
         ini_closeFile(iniFile);
         ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
         return 1;
      }
      SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");
      SpawnPlayer(playerid);
   }
   return 1;
}
 

MADDD

Освоившийся
Пользователь
02.03.2015
181
25
0
25
Эмм,совсем не понял что вы хотели написать

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), "%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_getInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);
 
         ini_closeFile(iniFile);
      }
      else
      {
         ini_closeFile(iniFile);
         ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
         return 1;
      }
      SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");
      SpawnPlayer(playerid);
   }
   return 1;
}
Ты отредактировал то что я имел ввиду.

 

TheSeLToN

Участник
Пользователь
21.09.2014
452
125
0
Зачем всё время добавлять:

new playername[MAX_PLAYER_NAME];

????

Не проще ли создать просто одну глобальную.

 

Moks

Учитель русского языка
Пользователь
28.02.2014
539
7
81
0
Да-да, при каждом вызове стока GN будет создаваться переменная.

А можно сделать вот так:
 

new plname[MAX_PLAYERS][MAX_PLAYER_NAME];
#define GN(%1) plname[%1]
И в OnPlayerConnect:
 

Код:
GetPlayerName(playerid, plname[playerid], MAX_PLAYER_NAME);
 
Последнее редактирование модератором:

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
Да-да, при каждом вызове стока GN будет создаваться переменная.

А можно сделать вот так:

new plname[MAX_PLAYERS][MAX_PLAYER_NAME];
#define GN(%1) plname[%1]
И в OnPlayerConnect:

GetPlayerName(playerid, plname[playerid], MAX_PLAYER_NAME);
можно,а можно все переменные с GetPlayerName убрать,а сток оставить и объявлять,меньше строк будет

 

MotoSport

Pawno-Crmp.Ru || Живи вечно!
Пользователь
08.03.2015
921
168
0
21
Хороший урок. Ставлю плюс

 

Rwmont2000

Новичок
Пользователь
18.12.2014
304
14
0
21
Ошибки. Я делал для симпла.

Код:
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(52) : error 010: invalid function or declaration
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(53) : error 074: #define pattern must start with an alphabetic character
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(129) : error 017: undefined symbol "DSM"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1084) : warning 235: public function lacks forward declaration (symbol "OnPlayerRegister")
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1092) : error 017: undefined symbol "ini_createFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1095) : error 017: undefined symbol "ini_openFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1100) : error 017: undefined symbol "ini_setString"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1101) : error 017: undefined symbol "ini_setInteger"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1103) : error 017: undefined symbol "ini_closeFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1109) : warning 235: public function lacks forward declaration (symbol "OnPlayerLogin")
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1118) : error 017: undefined symbol "ini_openFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1119) : error 017: undefined symbol "ini_getString"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1122) : error 017: undefined symbol "ini_getString"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1123) : error 017: undefined symbol "ini_getInteger"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1125) : error 017: undefined symbol "ini_closeFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1129) : error 017: undefined symbol "ini_closeFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1118) : warning 204: symbol is assigned a value that is never used: "iniFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1144) : error 017: undefined symbol "ini_openFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1145) : error 017: undefined symbol "ini_setString"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1146) : error 017: undefined symbol "ini_setInteger"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1147) : error 017: undefined symbol "ini_closeFile"
C:\Users\Rwmont\Desktop\Ñèìïë\gamemodes\simple.pwn(1144) : warning 204: symbol is assigned a value that is never used: "iniFile"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


18 Errors.
 

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
Насчет DSM - 4 пункт

а остальное у вас не подключен mxINI

 

West

Освоившийся
Пользователь
30.03.2015
104
18
0
24
Здравствуйте,это мой первый урок и мы будем обсуждать и делать регистрацию.

0)Обсуждение "на чем будет держаться мод"

1)mxINI - самый быстрый INI ридер,но при онлайне 100+ серв может слететь
2)Mysql - стабильный и удобный(но легок ко взлому)
3)Dini - в отличие от mxINI долгий,но зато держаит онлайн и под 150+

Но все же я возьму mxINI

1)Создаем Пустой скрипт и удаляем вот это:

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

и

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

#else

и вот это

#endif

2)Какие паблики нам нужны?

Нам понадобиться 4-5 паблика

OnPlayerRequestClass - будет вызывать сами диалоги
OnPlayerDisconnect - им будем сохранять данные
OnPlayerConnect - им обнуляем данные
OnDialogResponse - там будут диалоги

3)Структура Нашего Кода:

OnPlayerRequestClass
|
Вступление
| |
Рега Логин
| |
Спавн Спавн
4)А не лучше нам создать #define?

Ведь для диалогов это будет удобно,например задефайнил диалог,а если захотел поменять ид,то просто поменял :)

#define D_NULL 0//Нулевой Диалог
#define D_VSTUP 1//Вступление Диалог
#define D_AUTORIZ 2//Диалог Авторизации
#define D_REGISTER 3//Диалог Регистрации

Таким образом у нас:
#define Название_Диалога Ид_Диалога

И они должны использоваться в диалогах.

5)Начнем писать

Давайте добавим вступление к нашему коду,и добавим в OnPlayerRequestClass:

ShowPlayerDialog(playerid,D_VSTUP,DSM,"{6EF83C}[Жизнь [В]Деревне] {FFFFFF}Вступление",
"{B7FF00}Добро Пожаловать на Upgrade RP\n\n\t{FFFFFF}На нашем сервере вы встретите множество систем:\n\t\t1)Система Домов\n\t\t2)Система Заповедников\n\t\t3)Система Бизнессов\n\t\t4)Система Фракций\n\t\t5)Система Автомобиля\n\tВсе остальное вы запечитлите сами!",">>>>","");

Это как бы наше "вступление"

И перейдем к OnDialogResponse,и он должен выглядеть вот так:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid){

}
return 1;
}

и добавим под switch(dialogid){

Вот это:

case D_VSTUP:{
new stringer[126];
format(stringer,sizeof(stringer),"%s.ini",GN(playerid));
if(fexist(stringer)){
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
else{
ShowPlayerDialog(playerid,D_REGISTER,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Регистрация", "{ffffff}Добро пожаловать на сервер "ServerName"\n{ffffff}Чтобы начать игру вам необходимо пройти регистрацию\n\nВведите пароль для вашего аккаунта\nОн будет запрашиваться каждый раз,когда вы заходите на сервер\n\n\t{66cc33}Примечания:\n\t- Пароль может состоять из русских и латинских символов\n\t- Пароль чувствителен к регистру\n\t- Длина пароля от 6-ти до 15 символов", "Войти", "Выйти");
}
}

Таким образом,когда игрок нажимает на ">>>>" идет проверка,если его файл есть,то идет авторизация,а если нет то регистрация

Добавим Регистрацию и Логин:

case D_AUTORIZ:{
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
new pass[64];
strmid(pass,inputtext,0,strlen(inputtext),64);
OnPlayerLogin(playerid,pass);
}
else
{
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
}
case D_REGISTER:{
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,D_REGISTER,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Регистрация", "{ffffff}Добро пожаловать на сервер "ServerName"\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
{
ShowPlayerDialog(playerid,D_REGISTER,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Регистрация", "{ffffff}Добро пожаловать на сервер "ServerName"\n{ffffff}Чтобы начать игру вам необходимо пройти регистрацию\n\nВведите пароль для вашего аккаунта\nОн будет запрашиваться каждый раз,когда вы заходите на сервер\n\n\t{66cc33}Примечания:\n\t- Пароль может состоять из русских и латинских символов\n\t- Пароль чувствителен к регистру\n\t- Длина пароля от 6-ти до 15 символов", "Войти", "Выйти");
}
}

И добавим паблики после OnDialogResponse:

public OnPlayerRegister(playerid, password[])
{
if(IsPlayerConnected(playerid))
{
new string[64];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(string,sizeof(string), "%s.ini", playername);
new iniFile = ini_createFile(string);
if(iniFile < 0)
{
iniFile = ini_openFile(string);
}
if(iniFile >= 0)
{
strmid(PlayerInfo[playerid][pPass],password,0,strlen(password),255);
ini_setString(iniFile,"Pass",PlayerInfo[playerid][pPass]);
ini_setInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);

ini_closeFile(iniFile);
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
}
return 1;
}
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), "%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_getInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);

ini_closeFile(iniFile);
}
else
{
ini_closeFile(iniFile);
ShowPlayerDialog(playerid,D_AUTORIZ,DIALOG_STYLE_INPUT, "[Жизнь [В]Деревне] Авторизация", "{FFFFFF}Добро пожаловать на "ServerName"\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");
SpawnPlayer(playerid);
}
return 1;
}

и сток:

stock SavePlayer(playerid)
{
new string[64];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "%s.ini", playername);
new iniFile = ini_openFile(string);
ini_setString(iniFile,"Pass",PlayerInfo[playerid][pPass]);
ini_setInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);
ini_closeFile(iniFile);
}

6)Ошибки

Какие ошибки могут быть:

1)Не найден "ServerName":

#define ServerName "Жизнь [В]Деревне"//Свое название

2)Нету GN:

В конец мода:
stock GN(p){new pl[MAX_PLAYERS];GetPlayerName(p,pl,sizeof(pl));return pl;}

7)Конец

Если будут ошибки,то пишите!

P.S Второй урок по реги ждите в ближайшую неделю

Удачи!
Вот что выдало  error 001: expected token: "#endif", but found "-end of file-"

 

Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 513
3
550
0
26
definehost.ru
Скриптер
Ошибочное суждение на счет mxini и dini.

И, лучше не узнавать ник как у вас в коде. Лучше всего узнать ник при коннекте и далее его использовать.

 

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
Ошибочное суждение на счет mxini и dini.

И, лучше не узнавать ник как у вас в коде. Лучше всего узнать ник при коннекте и далее его использовать.
Ну вы используете как хотите,для меня это так.

Вот что выдало  error 001: expected token: "#endif", but found "-end of file-"
убери там #endif

 
Статус
Закрыто для дальнейших ответов.