Система регистрации на сервере SAMP (MySQL) - Часть 1

Главная » Полезные статьи » Расширение функционала при помощи плагинов

Система регистрации на сервере SAMP (MySQL) - Часть 1
11.02.2013, 20:09
В этой статье я расскажу Вам, как можно написать систему регистрации с нуля (можно и адаптировать под Ваш Godfather мод). 

Итак, для этого нам понадобятся следующие вещи:
1.Denwer 3 (2012) — через эту программу мы будем запускать и администрировать наш MySQL сервер.  Скачать Denwer 3.

2.MySQL Plugin от g-stylezzz — плагин для работы с базой данных.

Это кинуть в папку Plugins (жми на ссылку)

Это кинуть в папку с сервером (жми на ссылку)  + в server.cfg добавить строку: plugins mysql sscanf 

a_mysql.inc - это кинуть в папку Pawno\Includes

3. Sscanf Plugin — плагин, при помощи которого нам будет удобней и быстрей извлекать данные из результата при выборке из таблицы.

Начнём! 

 - Устанавливаем Denwer, запускаем сервер (на рабочем столе появится ярлык «Start Denwer»). 
 - Заходим в браузер и в адресной строке вводим «localhost» (без кавычек). 
 - Спускаемся ниже и переходим по ссылке: http://localhost/Tools/CODEmyadmin/index.CODE 
 - Итак, вы видите CODEmyadmin, сейчас мы можем управлять базой данных. 
 - Создаём таблицу: 
 - Примерно в центре есть «Create new database». 
 - Я назвал свою БД «pawno», кодировку выбрал «cp1251_bin». 

 

БД создана 



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

Name — Название таблицы, Number of Fields — количество полей. 
Мы используем 3 поля,
1. ID аккаунта, чтобы можно было его распознать в таблице, можно, конечно использовать ник, но с ИД удобней;
2. Ник игрока, думаю тут всё ясно;
3. Пароль игрока.
Таблица создана, сейчас мы настроим наши поля. 

Нажимаем Save.
Все нужное я выделил красным, теперь расскажу, что за что отвечает.
Field — название поля;
Type — тип данных, есть integer (целые числа), string (VARCHAR, TEXT), float, DATE, DATETIME, TIME и т.д., в общем как в павно, тут я использую VARCHAR для строк, и INT для целых чисел.
Length/Values — сколько «ячеек» мы выделяем для поля, для ника 24 (MAX_PLAYER_NAME), для пароля — 64.
Collation — кодировка.
AUTO_INCREMENT — генерирует значения для ID игрока в порядке возрастания (1, 2, 3...).

Так будет выглядеть пустая, без аккаунтов таблица: 

- Базу данных и таблицу мы подготовили, теперь перейдем к моду. 

 - Сверху мода, где вы подключаете все инклюды, добавляем эти строки: 

#include <a_mysql> // SQL функции.
#include <sscanf2> // Извлечение данных.


 - Чуть ниже задефайним парметры БД: 

#define SQL_HOST "localhost" // IP адресс БД.
#define SQL_USER "root" // Login БД.
#define SQL_DB "pawno" // Название БД.
#define SQL_PASS "" // Пароль БД.


- Дефайны для ID'ов диалогов и цвета сообщений. 

#define DIALOG_LOGIN 1
#define DIALOG_REGISTER 2
#define DIALOG_WRONGPAS 3
#define COLOR_LIGHTRED 0xFF6347AA
#define COLOR_YELLOW 0xFFFF00AA


- Создадим массив для хранения данных аккаунта. 

enum Variables {
aID,
aName[MAX_PLAYER_NAME],
aPassword[64],
bool: aLogged,
aWrongPassword,
};
new playerVariable[100][Variables];
// 100 - моё кол-во слотов для игроков на сервере.

- Создадим функцию для подключения и отключения к БД

ConnectMySQL() { // В OnGameModeInIt вставьте ConnectMySQL();
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS); // Тут мы используем все данные, которые мы дефайнили.
switch(mysql_ping()) { // Проверка на то, что мы подключены к БД.
case 1: print("MySQL connection: alive."); // Если подключена БД.
case -1: print("MySQL connection: dead."); // Если не подключена БД.
}
return 1;
}


DisconnectMySQL() { // Вставьте DisconnectMySQL(); в OnGameModeExit, отключаемся от БД.
mysql_close();
print("MySQL connection closed.");
}


CheckMySQLConnection() {
// Этот сток мы будем использовать для проверки, подключена ли БД перед её использованием.
if(mysql_ping() == -1) mysql_reconnect();
return 1;
}
 
Добавил: AXE | | Теги: система регистрации samp, mysql рега
Просмотров: 14536 | Рейтинг: 5.0/2