Вступление
Все, кто когда-нибудь интересовался SA-MP, а именно администрированием своего сервера, сталкивались с попытками запустить интересный мод, который требует БД MySQL.
В этой статье будет рассматриваться пример с запуском готовой сборки Grand RP.
Mysql R39-5. Версия сервера SA-MP 0.3.7 R-2.
Так-же будут рассмотрены некоторые ошибки и их устранение.
Первым делом после скачивания мы сразу же бежим изучать интернет.
А что же такое этот MySQL, и как его запустить для моего SA-MP сервера на домашнем компьютере? И сразу натыкаемся на огромное количество уроков, где предлагают бежать и устанавливать Denwer. Я не противник denwer, но для возрастной категории игроков SA-MP этот инструмент очень сложный, ведь он изначально предназначен для выполнения множества других задач. И после этого сразу же начинают возникать проблемы и вопросы: А что? А как? А почему не работает? и т.д.
В этой статье я предлагаю использовать XAMPP.
На мой взгляд, он очень прост в установке и мы можем запустить phpMyAdmin всего в пару (3) кликов.
Т.к. это что-то вроде гайда, то разделю действия на шаги.
1. Запуск программы XAMPP
2. Запускаем модули Apache и MySQL
Нажатием на кнопки Start у модулей Apache и MySQL запускаем сервер Apache и сервер MySQL.
3. Переходим в phpMyAdmin
Нажимаем на кнопку Admin у модуля MySQL. Тем самым у нас в браузере откроется новая вкладка и мы перейдём на наш локальный phpMyAdmin. Альтернативный адрес: http://localhost/phpmyadmin/
4. Создание БД
Дальше идёт этап загрузки БД от мода. Он одинаковый и ничем не отличается от таких же загрузок на denwer или хостингах. Если в сборке идёт готовый sql запрос на создание и наполнение БД, то просто делаем импорт. Если нет, как в нашем случае на сборке Grand, то сначала создаём пустую БД
5. Импорт таблиц из файла
Если была готовая база то скорее всего у нас уже создались и заполнились таблицы. В нашем же случае нужно импортировать таблицы из файла. Для этого мы выберем нашу созданную БД и в верхнем меню нажмём Импорт. В качестве файла выбираем ./Grand/database/grandbase.sql
6. Ошибка при импорте
В качестве следующего шага я решил рассмотреть ошибку при импорте. Т.к. это обучающая статья, то подобное может возникнуть при запуске любой другой сборки. Мы должны быть готовы.
Тут нам чёрным по #ffc0cb написано, что ошибка в синтаксисе и даже указаны строчки. Решать эту проблему будем простым путём. Просто удалим лишние на мой взгляд строчки. Для этого откроем файл с запросом через Блокнот либо другой удобный нам редактор. Я предпочту Notepad++
Серым я выделил строчки, которые удалю. После этого сохраним файл (сочетание клавиш CTRL+S) и повторим шаг номер 5.
7. Успешный импорт
По количеству приятных зелёных галочек можно понять, что всё успешно. Так-же слева под названием нашей БД появились таблицы.
И вроде бы на этом можно и закончить, но всё-же мы доведём свой запуск сервера до конца.
8. Проверка строчек подключения запускаемого мода
Переходим в папку pawno и запускаем компилятор. Компилятор находится в директории нашей сборки ./Grand/pawno/pawno.exe
В открывшемся окне компилятора нажимаем File>Open (CTRL+O) и выбираем наш мод, который находится в папке gamemodes (./Grand/gamemodes/grandgm.pwn)
Нас интересуют строчки 61-64
#define SQL_HOST "localhost"
#define SQL_USER "root"
#define SQL_DB "2280"
#define SQL_PASS ""
В нашем случае, нужно изменить только строчку с названием нашей БД, которую мы создавали в шаге номер 4. Для этого мы изменим "2280" на наше название - grandbase. Вариант после изменения показан ниже.
#define SQL_HOST "localhost"
#define SQL_USER "root"
#define SQL_DB "grandbase"
#define SQL_PASS ""
Теперь нужно откомпилировать скрипт. Для этого нажмём F5.
9. Запуск сервера
Возвращаемся в директорию с нашей сборкой (./Grand/) и запускаем файл samp-server.exe
В случае успешного запуска можем наслаждаться игрой на нашем локальном сервере. Для этого в окне клиента SA-MP добавим в избранное сервер с IP адресом и портом: 127.0.0.1:7777
Теперь я хочу рассмотреть одну из проблем, которая может возникнуть при запуске сервера
Такое может возникнуть потому что XAMPP использует MariaDB и сервер не может найти библиотеку для работы с этой БД.
Решением будет добавить файл с библиотекой в директорию своей сборки. Убедитесь, что библиотека libmariadb.dll находится в одной папке с samp-server.exe
А у меня на этом всё.