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

Уважаемый гость, если у Вас возникли проблемы с регистрацией, просьба обратиться в тех.поддержку или на почту admin@pawno-crmp.ru

Для полного доступа ко всем функциям форума, Вам необходимо зарегистрироваться и авторизоваться.

Форум продается!


В продажу входят: файлы, база данных, группа ВК

А также, в случае необходимости, полная установка и настройка на ваш хостинг (отдельная плата).

Обращаться в "Сообщения": vk.com/pawno.crmp

Фотография
Мануал

Создание системы регистрации msyql R40

* * * * * 2 Голосов criminal russia crmp pawno уроки crmp крмп

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

#1
offline   laku

laku
  • 3
    • Cообщений 8
    • Регистрация: 06.07.17

Когда я только начинал писать свой первый "недо код" Появилась проблема с mysql и регистрацией(авторизацией).

Эту тему создал специально для новичков, я постараюсь объяснить все понятно если будут вопросы обращайтесь, ну что же начнём, 

 

1. База данных :

Если у вас есть хост с Phpmyadmin, можете исполосовать его, что бы запустить на локалки есть программа Denwer 

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

Установка проста, ну или чекайте в инете ибо я ленивый 

 

2.Система аккаунтов:

 

1. [spoiler='Открыть/Закрыть']Выбераем бд в которой будем создавать таблицу (клик по создать таблицу) и вводим данные о таблице:
В поле "Имя таблицы" вводим "accounts"
В поле "Количество столбцов" вводим "3"[/spoiler]

2. Структуру новой таблицы заполняем следующим образом:[spoiler='Открыть/Закрыть']Первый столбец

- Имя столбца: id
- Тип столбца: INT
- Длина/значения: 11
Все остальные значения, кроме A_I, не трогаем. Находим A_I (Auto Increment) и ставим галочку.
Идентификаторов не может быть больше одного в таблице. Да оно и не нужно =)

Второй столбец
- Имя столбца: player_name
- Тип столбца: VARCHAR
- Длина/значения: 24 (так как длина ника в SA-MP не может превышать 24 символа)
Все остальные значения не трогаем.

Третий столбец
- Имя столбца: password
- Тип столбца: VARCHAR
- Длина/значения: 30 (Я ограничу длину пароля игрока 30-ю символами. Вы можете сделать меньше/больше)[/spoiler]

 

3.Запускаем pawno:

1. Данные для подключения

В начало нашего скрипта (под "#include ") добавим:

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

[spoiler='Разбор кода']

#include <a_mysq> - подключаем инклюд, в котором хранится объявление всех функций для работы с плагином.
#define MYSQL_HOST "localhost" - Этот макрос хранит в себе адрес хостинга, где хранится база данных (мы будем запускать на ПК, поэтому указываем адрес локальной сети).
#define MYSQL_USER "root" - Этот макрос хранит в себе имя пользователя, у которого имеется доступ к базе данных (так как мы запускаем мод на ПК, у нас это администратор. Когда будете запускать мод на хостинге, Вам выдадут особое имя)
#define MYSQL_DATABASE "first_database" - Этот макрос содержит в себе имя базы данных. Если при создании БД Вы прописывали имя отличное от моего, измените его на то, что указали Вы.
#define MYSQL_PASSWORD "" -- Этот макрос хранит в себе пароль, который требуется для подключения к базе данных
new mysql_connect_ID;
Это целочисленная переменная, в которой мы будем хранить ID подключения, которое потребуется для работы большинства функций.[/spoiler]
2. Подключение к базе данных

В OnGameModeInIt

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

[spoiler='Разбор кода']Данная функция возвращает ID подключения, который мы и записали в переменную.[/spoiler]

3. Ко всем enum

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

[spoiler='Разбор кода']

enum e_PLAYER_INFO -enum - англ. Enumeration (Перечисление) - это тип, состоящий из набора целочисленных констант
pID, - Первый член перечисления, а по совместительству и ячейка, в которой будет хранится ID аккаунта игрока.
pName[MAX_PLAYER_NAME], - Второй член перечисления, а по совместительству и ячейка, в которой будет хранится имя аккаунта.
pPassword[31] - Третий член массива, а по совместительству и ячейка, в которой будет хранится пароль от аккаунта.
new pInfo[MAX_PLAYERS][e_PLAYER_INFO]; - Массив, через который мы будем обращаться у нужному нам члену перечисления за данными.
[/spoiler]

4.  Поиск игрока в базе данных и запись ника в массив

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

Так же нам нужно эти данные записать в наш массив.

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

5. Создание действий для диалогов

Сначала нам нужно вспомнить о себе любимых и упростить работу с диалогами, создав ещё одно перечисление, которое будет позволять писать нам на месте ID диалога какие-то слова, намекающие нам на предназначение этого диалога, а не обычные числа. Ведь согласитесь, "dRegister" гораздо сильнее намекает нам на то, что этот диалог является диалогом регистрации, нежели просто "0", "1" или какое-либо ещё число. Но перечисление не только даст нам возможность более лучше понимать предназначение диалога по его ID, но и избавит нас от страха того, что ID диалогов могут перепутаться, ведь перечисление само определит свободный ID и установит его.

Чтоб создать такое перечисление, находим наше перечисление с данными игроков и выше него создадим ещё одно:

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

Всё =) Теперь достаточно придумывать имя каждому новому диалогу, дописывать его в этот список и тогда Вы точно никогда не запутаетесь при создании новых диалогов.

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

6. Создание/загрузка аккаунта игрока

В самый конец мода вставим этот stock:

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

А вот и сам коллбэк, который вернёт ID аккаунта:

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

Загрузка аккаунта:

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

7.  Сохранение аккаунта

Так же, в самом конце, добавим новый stock

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

И в OnPlayerDisconnect

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

8. Отключение от базы данных

Так же нужно не забыть добавить запрос к плагину MySQL на отключение от нашей базы данных. Делается это просто.

В OnGameModeExit 

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

9. Обнуление массива с данными

 

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

Делается это просто. Сначала в OnPlayerDisconnect, после "SaveAccount(playerid);" добавим:

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

А после в конец скрипта:

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

10. Проверка на авторизацию игрока

 

В начало мода, к переменным, добавим следующий массив:

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

Теперь в UploadPlayerAccount/CreateNewAccount, перед SpawnPlayer, добавить

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

В OnPlayerText добавляем следующее:

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

В начало OnPlayerCommandText

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

[spoiler='Если помог ']Ставь + [/spoiler]

 

[spoiler='Автор ']DeimoS[/spoiler]


compan (27 Июль 2017 - 17:45):
Код брать под тег "Код". До 18:36 у Вас есть время исправить или тема будет удалена. Хоть и жалко.
Elrmrnt-Kritik (27 Июль 2017 - 22:09):
Не сразу поняли что ли, что нужно код в тег "Код" брать... Почему-то одна половина правильно оформлена, другая - нет. Взял сам в BB код участки кода и табуляцию сбитую поправил.
Elrmrnt-Kritik (27 Июль 2017 - 22:09):
 Комментарий модератора 
1.10. Код больше 4-х строк и содержимое логов брать под тег "Код", в противном случае тема или пост будет удалён (на усмотрение администрации). Как использовать тег "Код"?
Единые Правила Форума (ЕПФ)

Сообщение отредактировал Elrmrnt-Kritik: 27 Июль 2017 - 22:08

  • 3

#2
offline   SeregaMaterazi

SeregaMaterazi
  • 0
    • Cообщений 3
    • Регистрация: 11.01.17

А можно скриншот регистрации/авторизации?


  • 0

#3
offline   Daniil_Poltorak

Daniil_Poltorak
  • 5
    • Cообщений 476
    • Регистрация: 08.07.15

SeregaMaterazi,Зачем скриншот? Можно текст под себя переделать. Ну если руки откуда надо растут.


  • 0

#4
offline   Desais

Desais
  • 0
    • Cообщений 1
    • Регистрация: 17.05.17

Что делать если такая ошибка?[spoiler='Код']C:\Users\nzQ\Desktop\Tournament ñ 0\gamemodes\tdm.pwn(2) : fatal error 100: cannot read from file: "a_


  • 0

#5
offline   Vitya_Vowkiv

Vitya_Vowkiv
  • 0
    • Cообщений 1
    • Регистрация: 16.11.17

У меня появляеться такая ошибка C:\Users\Þð³é\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(3) : fatal error 100: cannot read from file: "a_<span class="searchlite""


  • 0

#6
offline   Almas55541

Almas55541
  • 5
    • Cообщений 147
    • Регистрация: 31.07.17

Vitya_Vowkiv,  убрать эту строка a_<span class="searchlite" или покажите строку 3


  • 0

#7
offline   Roman345345

Roman345345
  • 0
    • Cообщений 34
    • Регистрация: 26.02.16

Многа ошибок

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


  • 0



Темы с аналогичными тегами: Мануал, criminal russia, crmp, pawno, уроки crmp, крмп

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

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


Данную тему посетили 245 пользователей