Просмотров: 61561

Как сделать регистрацию на mxini самп

Закрыть ... [X]


Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама Страница 1 из 2 1 2 » Модератор форума: Dima-kun   [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

Мастер джэдай

Группа: Продвинутые

Сообщений: 2651

Награды: 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

Группа: Администратор

Сообщений: 6568

Награды: 156

Город: Ильичёвск

Репутация: 3887 Файл перезалит.

Love will set you free!



Не совсем понятно что будет дальше, но ведь так во всём, даже бросая ровно в корзину бумагу, будучи уверенным на все 100%, что попадёшь, в последний момент дуновение ветра может сменить его траекторию.
Только продолжая свой путь, ты можешь зацепиться за жизнь так, что успеешь сделать всё, что задумал. Главное ставить себе цели, которые тебя волную.
Будь не тем, кем пытается сделать тебя жизнь, а тем, кем пытаешься сделать себя ты. Тогда жизнь поможет стать тем, кем хочешь. massaoff Дата: Пятница, 15.02.2013, 11:48 | Сообщение # 8

Местный

Группа: I'm V.I.P.

Сообщений: 530

Награды: 4

Город: Березники

Репутация: 195 Замечания: 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)
---------------------------------------------
Помогитеееее!!!!!!! :(:(:(wallwallsuicide2suicide2suicide2suicide2

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

Группа: Ангел Хранитель

Сообщений: 1246

Награды: 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

Группа: Разработчики

Сообщений: 6261

Награды: 72 Репутация: 3482 Замечания: 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. Я его сам находил, после чего могу его открывать и тд, но мод всё равно не может найти
Страница 1 из 2 1 2 »

Источник: http://www.samp-rus.com/forum/42-22326-1


Поделись с друзьями



Рекомендуем посмотреть ещё:



Похожие новости


Как сделать параметры страницы
Как украсить торт девочке своими руками
Как сделать слепки ручки
Как своими руками уложить линолеум на
Кладка дома из пеноблоков своими руками


Как сделать регистрацию на mxini самп
Как сделать регистрацию на mxini самп


Урок Регистрация на mxINI Форум
Как Сделать Регистрацию в диалоговом окне Форум



ШОКИРУЮЩИЕ НОВОСТИ