Перейти к содержимому

Хостинг SAMP-HOST


Добро пожаловать на пользовательский форум CR-MP.RU
Зарегистрируйтесь или авторизуйтесь на нашем форуме, чтобы получить доступ ко всем функциям.
Если у Вас уже имеется аккаунт, нажмите, чтобы войти.
Если у Вас нет аккаунта на нашем форуме, нажмите, чтобы перейти к регистрации. Возникли проблемы с регистрацией ? Обратитесь на почту admin@cr-mp.ru с вашей проблемой.
Фотография

Система регистрации и авторизации [MYSQL R39-2]

- - - - - Туториал crmp criminal russia gta всё для crmp pawn pawno

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 16

#1
#Rips

#Rips Modern


Репутация: 111

*
Популярное сообщение!

Доброе времени суток, Пользователи портала CR-MP.RU

Сегодня данный урок будет по написанию системы регистрации и авторизации на MYSQL R39-2

 

Что нам понадобиться.. С начало нам понадобиться сам MYSQL R39-2, данные файлы можете скачать с моей папки, которая находиться на YandexDisk.

 

Ссылка на каталог со всеми версиями MYSQL:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

 

Все файлы, которые находятся в архиве закидываем в папку с сервером. P.s если пишите мод с 0!

Создаем новый файл, после #include <a_samp> прописываем #include <a_mysql>

 

Когда, все подключили нам осталось сделать подключение к базе данных.

 

Создаем переменную, на которую будет подключиться к базе данных. Для меня это будет connects

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Когда, создали переменную давайте по пробуем скомпилировать мод, если Вам выдало варнинг о том, что-то переменная данная не используется не волнуйтесь скоро такого варнинга не будет.

 

Переходим в public OnGameModeInit()

Прописываем сток, то есть его название для меня это будет CreateMySQLConnection

В данном стоке прописываем параметры sqlhost, sqluser, sqldb, sqlpass

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Данный сток в public OnGameModeInit() должен выглядеть именно вот так: CreateMySQLConnection(sqlhost, sqluser, sqldb, sqlpass);

 

Данный stock можете прописать после переменных, или же в конце мода. Я его пропишу в конце мода, чтобы он мне не мешал

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Теперь как создали stock Нам нужно сделать дефайны(define) с помощью, которых будет подключиться к базе данных

 

Данные дефайны(define) прописываем после include!

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Теперь скомпилируем мод, если информационный диалог не выдал никаких Ошибок,Варнингов, то все отлично.

 

Теперь нам нужно убрать загрузку скриптов(filescripts)

Мы должны удалить тока это:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Завтра будет продолжение написание "Системы регистрации и авторизации на MYSQL"



#2
Alex_Dredd

нытик.


Репутация: -228

Жаль лимит лайков исчерпал  :D83DDE25:



#3
#Rips

#Rips Modern


Репутация: 111

Вот и продолжение "Системы регистрации и авторизации на MYSQL"

Теперь, нам нужно скачать DenWer или же OpenServer, я буду использовать DenWer так как он мне привычен

 

Официальный сайт DenWer'a, где Вы можете скачать сам DenWer:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Официальный сайт OpenServer'a, где Вы можете скачать сам OpenServer: Отсутствует  | P.s Найду данный сайт и добавлю его

 

На YouTube много уроков по установке Локального Сервера.

 

Когда, мы установили DenWer нам необходимо запустить денвер, нажмите по Иконке Start Denwer и ждите, когда он включиться. Когда, он включился заходим в браузер и URL поиске вводим: localhost/tools/phpmyadmin, когда Вы перешли нам нужно создать базу, а дальше смотрите по скриншотам, которые будет в спойлере

ScreenShot
1.

EsKeqTu.png

2.

GhGoOGd.png

Теперь, когда создали таблицу на Локальном сервере нам нужно сделать Enum в моде, где будут записываться данные будущего аккаунта.

 

Данный Enum после переменной connects, в данном Enum'e нам понадобиться тока, pID, pName[MAX_PLAYER_NAME], pKey[21], pLVL, pSex, pChar, pCash

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Данный Enum будет выглядеть именно вот так:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Данный Enum будет для каждого нового игрока, для этого Мы и используем MAX_PLAYERS.

 

Когда, создали Enum PlayerInfo нам нужно перейти в public OnPlayerConnect(playerid).

 

В данном паблике объявляем переменную с определенном количество ячейк. Все спросят как ее объявить? Мы сделаем данную переменную локальную к данному public'y.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Теперь нужно нам определить игровой ник игрока, с которого заходит игрок для этого воспользуемся функцией GetPlayerName. В которой параметры: playerid, const name[], len

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Мы объявим ее вот так:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

На данный момент у Вас должно выглядеть именно вот так:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Теперь нужно создать с помощью format запрос:

Подробную информацию о данной функции можете посмотреть на wiki.sa-mp.com:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Параметры mysql_function_query, а точнее натив:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

connectionHandle - Подключение к базе данных

query - Строка для хранения полученного имени, передаётся по ссылке P.s Точно не могу объяснить что данный query делает, просто забыл :c

callback[] - Паблик в, котором будет все происходить

format[] - Отсутствует. Если появиться информация, то она будет добавлена

{float, _}:... - Отсутствует. Если появиться информация, то она будет добавлена 

 

Теперь после инклудов(include) создадим макросы, которые будут использоваться в дальнейшем уроке.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Данный макрос убирает forward и public, теперь мы можем использовать тока publics, который мы создали.

 

Теперь мы должны создать publics, в котором будут показываться диалоги регистрации и авторизации.

Данный publics Вы можете создать после переменных и enum'oв или же в конце мода перед stock'aми.

 

Я буду писать данный publics перед stock'ами

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Завтра будет продолжение написание "Системы регистрации и авторизации на MYSQL"



#4
#Rips

#Rips Modern


Репутация: 111

Вот и продолжение "Системы регистрации и авторизации на MYSQL" #3

Мы остановили на том, что сделали publics где будут показывать диалоги регистрации и авторизации.

Нам в данном publics, понадобиться сейчас тока проверка в else. Нам нужно выводить диалог где будет написано о регистрации.

В else { 'Именно внутри этой проверки' } нам нужно прописать 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

SPD - Это макрос, который мы делали в позапрошлом посту. Параметры ShowPlayerDialog:

(playerid, dialogid, style, caption[], info[], button1[], button2[])

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Вид диалогов можете узнать на официальном сайта SA-MP'a:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

В данный момент будет выглядеть вот так:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Теперь нам нужно перейти в public OnDialogResponse

В данном publics должны прописать switch(dialogid)

 

Что такое switch?
Оператор switch – это оператор выбора. Он удобен в первую очередь тем, что может заменить много условий if, которые проверяют значение одной переменной. Представим себе такой пример. У нас есть
целочисленная переменная pawn, значение которой нужно проверить. И в зависимости от того, какое значение у данной переменной выполнить соответствующий код.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Обратите внимание, если в фигурных скобках указано одно действие, его можно упростить так же как в случае с обычной условной конструкцией.

Но, что если переменная не попадает ни под одно условие в операторе switch. Тогда можно использовать default, он выполняется только в том случае, если switch не попадает ни в один из case.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

То же самое можно сделать и с помощью обычной условной конструкции if, тогда код выглядел бы следующим образом:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Этот способ удобнее и читабельнее чем много if конструкций идущих подряд. Еще одно отличие, что в case можно указать диапазон значений куда проще, чем в обычной условной конструкции if.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Для закрепления знаний по данному урока продемонстрирую вам один из примеров использования данного оператора в функции OnPlayerDisconnect. В данной функции параметр reason возвращает ID причины отключения игрока от сервера. Благодаря этому параметру можно сделать вот такой код оповещения игроков об уходе игрока с сервера с пояснением причины.
 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Этот пример можно упростить с помощью вот такой stock функции.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

В этом случае функцию GetPlayerName можно просто убрать из switch, а вместо переменной plname подставить вызов данной функции. Саму переменную plname также нужно удалить.

Автор данной информации: Cloud

 

Когда, мы прописали switch(dialogid) он должен выглядеть именно вот так:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Теперь нужно прописать номер нашего диалога:

Внутри switch(dialogid) должны прописать вот так:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

В данном case 1, Мы должны сделать проверки на нажатие первой кнопки, пустое поле, на определенное количество символов и на русские символы

Данный код будет выглядеть вот так:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Продолжение будет в течение 2-4 часов.



#5
Elrmrnt-Kritik

Всея игрового портала


Репутация: 95


Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

гораздо удобнее в данном случае.

 


Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Кто Вас научил весь код писать в одну строку?

 

А так плюс за старания... Быть может и не Вы автор, но кому-нибудь будет полезно.



#6
Na'Vi

Всея игрового портала


Репутация: 48

Хороший урок



#7
Miron_Moraev

Уважаемый


Репутация: 21

Хороший урок. Но, таких регистраций/авторизаций пруд пруди. Если хочешь можешь сделать на ОРМ запросах, будет полезней.



#8
Wеb

Всея игрового портала


Репутация: 241

ORM не нужен. То что выше, вырезано. Можно сделать и лучше. Лучший мануал по созданию авторизации и регистрации в сети от Деймоса. Возможно ее сюда уже выкладывали. Ну и врятли бы он разрешил ее сюда выложить.


Сообщение отредактировал Wеb: 10 Июль 2017 - 00:27


#9
#Rips

#Rips Modern


Репутация: 111

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

,на счет функции благодарю, а на счет второго я че не много ступил, когда это писал 



#10
Bakston

Гражданин


Репутация: 0

А где продолжение!?



#11
Elrmrnt-Kritik

Всея игрового портала


Репутация: 95

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

, а что тебе еще надо? Вообще, уже давно есть более новые версии MySQL с примерами реализации на них системы регистрации. Эти примеры непосредственно от автора библиотеки MySQL для серверов.



#12
Bakston

Гражданин


Репутация: 0

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

, да я пытаюсь начать нулячий мод (учусь только)! В принципе в логах, по этому примеру, подключение идёт, но с одной поправочкой

Если убрать:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

то при компиляции проблем нет!

Если добавить строку Pawno ругается

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

Может поэтому, когда захожу на сервер, окна регистрации/авторизации нет!? И сервер постоянно перезапускается!



#13
Elrmrnt-Kritik

Всея игрового портала


Репутация: 95

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

, скинь-ка весь include a_mysql. Вообще такого быть не должно. Скорее всего кто-то лез в файл a_mysql (чего делать не рекомендуется, в будущем будут проблемы).



#14
Bakston

Гражданин


Репутация: 0

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

, вот:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст



#15
Elrmrnt-Kritik

Всея игрового портала


Репутация: 95

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

, зачем тебе такая древняя версия?) Уже давно доказано, что R41 среди всех имеющихся на данный момент самая шустрая. Плюс к этому в каждой новой версии исправлены предыдущие баги и добавлено что-то новое, возможно, нужное тебе (пусть даже и не сейчас). Просто R39-2 даже в списке официальных релизов MySQL нет. А значит, скорее всего, в ней присутствует многозначимая ошибка. Советую даже не копаться в причине ошибки и переходить на другую версию (запомни: чем новее, тем лучше. На данный момент R41-4 самая новая). Список официальных релизов: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

.

 

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



#16
Bakston

Гражданин


Репутация: 0

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

,спасибо за содействие в моих начинаниях! Повторюсь, я только начал сам писать свой мод (до этого пробовал слитые сервера перелопачивать (были удачи), что как то не айс) и пока решил довольствоваться системой регистрации (ну я так понимаю это начало начал). Ну чтоб хоть можно было побегать на своём сервере, но пока даже зайти на него не могу. Ломаю голову, перебираю туториалы, короче пока голова болит от столкновения о стену))) 



#17
Elrmrnt-Kritik

Всея игрового портала


Репутация: 95

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

, пиши, задавай все вопросы (вообще неважно по какому поводу), не стесняйся. Я ценю людей, стремящихся разбираться в чем-либо и с удовольствием им помогаю. Вот пример регистрации на одной из последних версий MySQL (правда ORM, что не во всем хорошо): 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

.







Темы с аналогичным тегами Туториал, crmp, criminal russia, gta, всё для crmp, pawn, pawno

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных


Ice-Host