Подключение Базы Данных к серверу ARMA 3 (extDB3)

Автор: BlackTok[BT] (участник нашего Discord)

Для подключения к серверу базы данных понадобятся две вещи. Сама база данных SQL и аддон ExtDB3 для Arma 3. Скачать можно по сылке ниже.

СКАЧАТЬ

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

В скачанном по ссылке архиве будет находиться тестовая миссия с описанием скриптов.

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

1. После установки заходим в БД и создаем нового пользователя для сервера Армы. Я создал пользователя armauser  с паролем 12345. Доступ по ip 127.0.0.1. Не забываем поставить галочку на глобальные права.

2. Создаем саму базу данный. В моем случае она называется просто db.

3. Теперь создаем таблицу. В примере это players

4. Создаем столбцы, где будут храниться нужные нам данные (можете сильно не вникать, а просто скопировать то, как сделал я)

а. Первый столбец — это порядковый номер

б. Второй — UID игрока

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

5. Копируем папку @extDB3 в корневую папку игру. Также кидаем в корень игры 2 файла — tbbmalloc.dll и tbbmalloc_x64.dll

6. Заходим в папку @extDB3 и открываем файл extdb3-conf.ini. Настраиваем

[db] ;имя нашей базы
IP = 127.0.0.1
Port = 3306
Username = armauser ;пользователь которого мы создали
Password = 12345 ;пароль пользователя
Database = db ;имя нашей базы

7. Далее открываем файл custom.ini, который находится в папке sql_custom и так же производим настройки.

[newPlayer] ;блок для создания нового пользователя в БД
Return InsertID = false
Prepared Statement = true

SQL1_1 = INSERT INTO
SQL1_2 =     players (uid, name, pos, score) ;players - название таблицы БД, а в скобках названия столбцов, в которые запишутся данные
SQL1_3 = VALUES
SQL1_4 =     (?,?,?,?)

SQL1_INPUTS = 1,2,3,4

[loadPlayer] ;блок загрузки данных пользователя
Return InsertID = false
Prepared Statement = true

SQL1_1 = SELECT
SQL1_2 =     pos, ;столбец с позицией
SQL1_3 =     score ;столбец с очками
SQL1_4 = FROM
SQL1_5 =     players ;таблица из которой загружать
SQL1_6 = WHERE
SQL1_7 =     uid = ? ;собственно по переданному нами UID игрока и будут находиться данные в таблице
SQL1_8 = LIMIT 1

SQL1_INPUTS = 1

[savePlayer] ;блок сохранения игрока
Return InsertID = false
Prepared Statement = true

SQL1_1 = UPDATE
SQL1_2 =     players ;таблица
SQL1_3 = SET
SQL1_4 =     name = ?, ;имя, в случае, если игрок его изменил
SQL1_5 =     pos = ?, ;позиция
SQL1_6 =     score = ? ;очки
SQL1_7 = WHERE
SQL1_8 =     uid = ? ;собственно по переданному нами UID игрока и будут сохраняться данные в таблице
SQL1_9 = LIMIT 1

SQL1_INPUTS = 1,2,3,4

8. Теперь необходимо сделать скрипты, по которым наш сервер поймет как и когда связываться с БД и какие данные передавать и забирать.

Так же по extDB3 читайте нашу статью:

extDB3 часть 2. Соединение с базой данных. Отправка запросов.

Обсудить эту статью можно в нашем Discord канале