06:48
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Dima-kun  
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [Tutorial] Создание системы регистрации (c использованием Y_INI)
[Tutorial] Создание системы регистрации
MyatKOДата: Четверг, 07.06.2012, 14:29 | Сообщение # 1
Уверенный в себе
Группа: Продвинутые
Сообщений: 156
Награды: 2
Город: Казань
Репутация: 121
Замечания: 0%
Статус:
Здравствуйте пользователи портала samp-rus.com. Предлагаю вашему вниманию урок по созданию системы регистрации, используя Y_INI. Надеюсь, что эта статья кому-нибудь пригодится.

Для начала давайте скачаем необходимые инклюды.
Скачать

Перед нами 5 папки: pawno, внутри нее папка include, внутри нее папка YSI; PHP; scriptfiles, внутри нее папка YSI.

Теперь разместим файлы в папках своего сервера. Из архива берем папку YSI (которая лежит в pawno/include) и помещаем ее в свою папку pawno/includes. Дальше из архива в папке scriptfiles берем папку YSI (уже другую!) и помещаем ее в папку scriptfiles вашего сервера. И папку PHP помещаем в главную директорию вашего сервера. Все, с файлами мы закончили.




Теперь открываем ваш мод и наверх ко всем инклюдам добавляем строку
Код
#include <YSI\y_ini>


Приступим к основной части. Во-первых добавляем ко всем #define вот эти строки:


Код

#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2





Вот эту строчку:

Код
#define PATH "/Users/%s.ini"





И цвета, которые нам еще понадобятся:

Код
#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"





Далее нам необходимо создать некий "хранитель" информации:


После всех new (если они у вас есть) добавляем вот это:

Код
enum pInfo
{
             pPass,
             pCash,
             pAdmin,
             pKills,
             pDeaths
}
new PlayerInfo[MAX_PLAYERS][pInfo];





Теперь нам необходимо создать stock, чтобы наша информация сохранялась (деньги, пароль, уровень админки, кол-во убийств и смертей)

Код

forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
             INI_Int("Password",PlayerInfo[playerid][pPass]);
             INI_Int("Cash",PlayerInfo[playerid][pCash]);
             INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
             INI_Int("Kills",PlayerInfo[playerid][pKills]);
             INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
             return 1;
}





Дальше создаем вот этот stock

Код
stock UserPath(playerid)
{
             new string[128],playername[MAX_PLAYER_NAME];
             GetPlayerName(playerid,playername,sizeof(playername));
             format(string,sizeof(string),PATH,playername);
             return string;
}


И вот этот:

Код
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}





Теперь мы должны сделать так, чтобы при подключении игрока на сервер ему на экран выводилось диалоговое окно.

В паблик
Код
public OnPlayerConnect(playerid)
{
            return 1;
}


Перед return 1; добавить вот это
Код

             if(fexist(UserPath(playerid)))
             {
                 INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Вход на сервер",""COL_WHITE"Пожалуйста, введите Ваш пароль","Ввод","Выход");
             }
             else
             {
                 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Регистрация на сервере",""COL_WHITE"Пожалуйста, введите Ваш пароль, чтобы зарегистрировать аккаунт","Регистрация","Выход");
             }
             





Чтобы наши диалоговые окна работали, мы должны в паблик

Код
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
            return 1;
}


Перед return 1; добавить вот это:

Код

             switch( dialogid )
             {
                 case DIALOG_REGISTER:
                 {
                     if (!response) return Kick(playerid);
                     if(response)
                     {
                         if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Регистрация",""COL_RED"Вы ввели некорректный пароль.\n"COL_WHITE"Пожалуйста, введите Ваш пароль, чтобы зарегистрироваться.","Регистрация","Выход");
                         new INI:File = INI_Open(UserPath(playerid));
                         INI_SetTag(File,"data");
                         INI_WriteInt(File,"Password",udb_hash(inputtext));
                         INI_WriteInt(File,"Cash",0);
                         INI_WriteInt(File,"Admin",0);
                         INI_WriteInt(File,"Kills",0);
                         INI_WriteInt(File,"Deaths",0);
                         INI_Close(File);

                         SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                         SpawnPlayer(playerid);
                     }
                 }

                 case DIALOG_LOGIN:
                 {
                     if ( !response ) return Kick ( playerid );
                     if( response )
                     {
                         if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                         {
                             INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                             GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
                         }
                         else
                         {
                             ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Вход на сервер",""COL_RED"Вы ввели некорректный пароль.\n"COL_WHITE"Пожалуйста, введите Ваш пароль","Вход","Выход");
                         }
                         return 1;
                     }
                 }
             }





Теперь мы должны сделать так, чтобы при выходе наша статистика сохранялась:

в паблик
Код
public OnPlayerDisconnect(playerid, reason)
{
            return 1;
}

Код

             new INI:File = INI_Open(UserPath(playerid));
             INI_SetTag(File,"data");
             INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
             INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
             INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
             INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
             INI_Close(File);





Выходим на финишную прямую. Нам нужно добавить в паблик:

Код
public OnPlayerDeath(playerid, killerid, reason)
{
           return 1;
}


Перед return 1; вот это

Код

PlayerInfo[killerid][pKills]++;
PlayerInfo[playerid][pDeaths]++;


Вот и все, теперь при входе на сервер вы сможете зарегистрировать аккаунт, сохранять статистику и заходить на свой аккаунт снова.

Урок сделан пользователем портала sa-mp.com Kush.



Сообщение отредактировал MintBerryCrunch - Вторник, 12.06.2012, 10:53
MckenzyДата: Четверг, 07.06.2012, 15:29 | Сообщение # 2
Советчик
Группа: I'm V.I.P.
Сообщений: 1212
Награды: 130
Город: Ярославль
Репутация: 2125
Замечания: 80%
Статус:
А чем это лучше mxINI?
FortescueДата: Вторник, 03.07.2012, 14:52 | Сообщение # 3
Освоившийся
Группа: Продвинутые
Сообщений: 106
Награды: 1
Город: Харьков.
Репутация: 43
Замечания: 40%
Статус:
По-моему лучше юзать: "dini", который - медленный, но стабильнее чем: "mxINI".
ZiGGiДата: Вторник, 03.07.2012, 18:40 | Сообщение # 4
Мастер джэдай
Группа: Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус:
Quote (Fortescue)
По-моему лучше юзать: "dini", который - медленный, но стабильнее чем: "mxINI".

Медленнее в 200 раз. И MxINI стабильный ;)

Quote (Kämpfer)
По моему лучше "юзать" mysql, и не еб**ть себе мозги, неужели ещё не все это поняли?!

Не для всех нужна БД, некоторым достаточно и файлов.



Бложе
[indent]Мой блог
Уроки по Pawn
[/indent]

Open-GTO
[indent]Блог разработчиков
GitHub: https://github.com/Open-GTO/Open-GTO
Сборки мода с сервером тут
[/indent]
446_StiLДата: Четверг, 02.08.2012, 17:03 | Сообщение # 5
Уверенный в себе
Группа: Пользователи
Сообщений: 218
Награды: 1
Город: Kotovsk city
Репутация: 8
Замечания: 20%
Статус:
Отлично, 6 ошибок.... Помогите разобраться, всё делал по инструкции.

Code
E:\G'z Up\Films Server\Village RP\gamemodes\Village.pwn(104) : error 017: undefined symbol "UserPath"
E:\G'z Up\Films Server\Village RP\gamemodes\Village.pwn(106) : error 017: undefined symbol "UserPath"
E:\G'z Up\Films Server\Village RP\gamemodes\Village.pwn(107) : error 017: undefined symbol "DIALOG_LOGIN"
E:\G'z Up\Films Server\Village RP\gamemodes\Village.pwn(107) : error 017: undefined symbol "COL_WHITE"
E:\G'z Up\Films Server\Village RP\gamemodes\Village.pwn(107) : warning 215: expression has no effect
E:\G'z Up\Films Server\Village RP\gamemodes\Village.pwn(107) : error 001: expected token: "-string end-", but found "-identifier-"
E:\G'z Up\Films Server\Village RP\gamemodes\Village.pwn(107) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

6 Errors.



Если помог ставь +


[GM]Village RolePlay ~ 0% (старт проекта)
MyatKOДата: Четверг, 02.08.2012, 18:56 | Сообщение # 6
Уверенный в себе
Группа: Продвинутые
Сообщений: 156
Награды: 2
Город: Казань
Репутация: 121
Замечания: 0%
Статус:
Строчки 104-107 покажи.
AXEДата: Понедельник, 11.02.2013, 15:45 | Сообщение # 7
Группа: Администратор
Сообщений: 6575
Награды: 156
Город: Ильичёвск
Репутация: 3907
Статус:
Файл перезалит.


Love will set you free!



Не совсем понятно что будет дальше, но ведь так во всём, даже бросая ровно в корзину бумагу, будучи уверенным на все 100%, что попадёшь, в последний момент дуновение ветра может сменить его траекторию.
Только продолжая свой путь, ты можешь зацепиться за жизнь так, что успеешь сделать всё, что задумал. Главное ставить себе цели, которые тебя волную.
Будь не тем, кем пытается сделать тебя жизнь, а тем, кем пытаешься сделать себя ты. Тогда жизнь поможет стать тем, кем хочешь.
massaoffДата: Пятница, 15.02.2013, 11:48 | Сообщение # 8
Местный
Группа: I'm V.I.P.
Сообщений: 535
Награды: 4
Город: Березники
Репутация: 187
Замечания: 40%
Статус:
Stil, делай по новой все, если пишет undefined symfol, значит не хватает какой то переменной, то есть ты что то пропустил.


- Учимся рипать сайт
- Memfiso-RPG мод
Оказываю платную помощь, в создании и редактировании(доработка, исправление багов, реализация ваших идей) ваших модов/скриптов выполненных в pawno.
Обращайтесь в скайп: massaoff РАБОТАЮ ТОЛЬКО С 50% ПРЕДОПЛАТОЙ!

Dimka_KartinkaДата: Понедельник, 19.05.2014, 22:17 | Сообщение # 9
Новенький
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Замечания: 0%
Статус:
[size=18][font=Arial][color=orange][bgcolor=red][b][i]

Добавлено (19.05.2014, 22:17)
---------------------------------------------
Люди мне пишет ошибка symbol is never used: "PlayerInfo" - символ никогда не используется: "PlayerInfo"
ЧТО ДЕЛАТЬ?

Vlad_CoolДата: Пятница, 06.06.2014, 14:26 | Сообщение # 10
Новенький
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Замечания: 0%
Статус:
suicide2
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2109) : error 025: function heading differs from prototype
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2176) : warning 235: public function lacks forward declaration (symbol "OnEnterExitModShop")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2243) : error 025: function heading differs from prototype
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2310) : error 025: function heading differs from prototype
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2379) : warning 235: public function lacks forward declaration (symbol "OnVehicleDamageStatusUpdate")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2706) : warning 235: public function lacks forward declaration (symbol "OnRconLoginAttempt")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2773) : warning 235: public function lacks forward declaration (symbol "OnPlayerUpdate")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2836) : warning 235: public function lacks forward declaration (symbol "OnPlayerStreamIn")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2901) : warning 235: public function lacks forward declaration (symbol "OnPlayerStreamOut")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(2966) : warning 235: public function lacks forward declaration (symbol "OnVehicleStreamIn")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(3031) : warning 235: public function lacks forward declaration (symbol "OnVehicleStreamOut")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(3096) : warning 235: public function lacks forward declaration (symbol "OnDialogResponse")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(3167) : warning 235: public function lacks forward declaration (symbol "OnPlayerClickPlayer")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(3234) : warning 235: public function lacks forward declaration (symbol "OnPlayerTakeDamage")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\pawno\include\YSI\y_hooks.inc(3303) : warning 235: public function lacks forward declaration (symbol "OnPlayerGiveDamage")
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(75) : error 017: undefined symbol "ShowPlayerDialog"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(79) : error 017: undefined symbol "ShowPlayerDialog"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(81) : warning 217: loose indentation
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(87) : warning 225: unreachable code
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(87) : warning 217: loose indentation
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(90) : error 017: undefined symbol "PlayerInfo"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(91) : error 017: undefined symbol "PlayerInfo"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(92) : error 017: undefined symbol "PlayerInfo"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(94) : warning 209: function "S@@_OnPlayerDisconnect" should return a value
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(103) : error 017: undefined symbol "PlayerInfo"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(104) : error 017: undefined symbol "PlayerInfo"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(105) : warning 217: loose indentation
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(228) : error 017: undefined symbol "ShowPlayerDialog"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(248) : error 017: undefined symbol "PlayerInfo"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(251) : error 017: undefined symbol "PlayerInfo"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(255) : error 017: undefined symbol "ShowPlayerDialog"
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(261) : warning 217: loose indentation
C:\Users\Âëàäèê\Desktop\Other Files\SAMP\Ñåðâåð ñàìï\gamemodes\multi.pwn(301) : warning 203: symbol is never used: "gVisitors"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

14 Errors.

Добавлено (06.06.2014, 14:26)
---------------------------------------------
Помогитеееее!!!!!!! :( :( :( wall wall suicide2 suicide2 suicide2 suicide2

TheFarmtorДата: Воскресенье, 15.06.2014, 21:20 | Сообщение # 11
Новенький
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Замечания: 0%
Статус:
fatal error 100: cannot read from file: "YSI/y_ini"(Не удаётся прочитать файл) Всё получается, но тут завис... Помогите, пожалуйста
WeddewДата: Понедельник, 16.06.2014, 16:41 | Сообщение # 12
Группа: Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус:
TheFarmtor, проверь, есть ли файл y_ini в папке YSI, которая находится в include



www.weddew-shop.ru
TheFarmtorДата: Понедельник, 16.06.2014, 22:15 | Сообщение # 13
Новенький
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Замечания: 0%
Статус:
Файл есть, но павно почему-то не может его найти.
Dima-kunДата: Понедельник, 16.06.2014, 22:42 | Сообщение # 14
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
TheFarmtor, файл в папке pawno? или pawno/includes/YSI ?


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
TheFarmtorДата: Вторник, 17.06.2014, 11:56 | Сообщение # 15
Новенький
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Замечания: 0%
Статус:
В папке Pawno/includes/YSY. Я его сам находил, после чего могу его открывать и тд, но мод всё равно не может найти
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [Tutorial] Создание системы регистрации (c использованием Y_INI)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua