Плагины CRMP — установка, настройка server.cfg и ошибки
Плагины расширяют возможности сервера CRMP и добавляют функции, которых нет в стандартном серверном ядре. Через них игровой мод может подключаться к MySQL, создавать большое количество динамических объектов, обрабатывать команды, выполнять регулярные выражения и получать расширенную информацию об ошибках Pawn-кода.
Для правильной установки недостаточно скопировать файл в папку plugins. Необходимо выбрать версию для своей операционной системы, проверить разрядность, установить системные зависимости, подключить плагин в server.cfg и убедиться, что используемый AMX совместим с его API.
В руководстве рассмотрена установка серверных плагинов CRMP на Windows и Linux, настройка строки plugins, проверка include-файлов, совместимость версий и исправление распространённых ошибок загрузки.
Подробная настройка главной конфигурации сервера:
Установка основного игрового режима:
Что такое серверный плагин CRMP
Серверный плагин — нативная библиотека, которую серверное ядро загружает при запуске. На Windows такие файлы имеют расширение .dll, а на Linux — .so.
Плагин может добавлять
- подключение к MySQL;
- динамическую загрузку объектов;
- обработку команд и параметров;
- регулярные выражения;
- работу с сетевыми запросами;
- расширенное журналирование;
- диагностику ошибок Pawn;
- криптографические функции;
- взаимодействие с внешними сервисами;
- специальные возможности конкретной сборки.
Пример каталога Windows
plugins/
├── crashdetect.dll
├── streamer.dll
├── sscanf.dll
└── mysql.dll
Пример каталога Linux
plugins/
├── crashdetect.so
├── streamer.so
├── sscanf.so
└── mysql.so
Игровой мод вызывает функции плагина через Pawn-native. Если обязательная библиотека отсутствует или имеет несовместимую версию, AMX может не запуститься.
Разница между плагином и include-файлом
При установке часто путают нативный плагин и include-файл. Они выполняют разные задачи.
| Компонент | Пример | Назначение |
|---|---|---|
| Windows-плагин | streamer.dll |
Загружается сервером во время работы. |
| Linux-плагин | streamer.so |
Загружается Linux-сервером. |
| Include | streamer.inc |
Используется Pawn-компилятором. |
| Исходник | roleplay.pwn |
Содержит код игрового мода. |
| Скомпилированный мод | roleplay.amx |
Выполняется серверным ядром. |
Include помещается в
pawno/include/
Нативная библиотека помещается в
plugins/
Пример полного комплекта Streamer
plugins/streamer.dll
pawno/include/streamer.inc
Наличие только include позволяет скомпилировать исходник, но сервер не сможет выполнить функции без DLL или SO.
Наличие только DLL или SO позволяет загрузить библиотеку, но без include будет сложно правильно скомпилировать изменённый PWN.
Какие плагины используются на серверах CRMP
MySQL
Обеспечивает соединение с базой данных и выполнение SQL-запросов.
Streamer
Используется для динамических объектов, пикапов, зон, текстовых надписей, актёров и других элементов игрового мира.
sscanf
Упрощает разбор параметров команд и строковых данных.
CrashDetect
Расширяет сведения об ошибках Pawn, включая функции и строки исходного кода при наличии отладочной информации.
Pawn.CMD и другие командные процессоры
Используются для регистрации, обработки и управления игровыми командами.
Regex
Добавляет работу с регулярными выражениями.
Дополнительные плагины
- работа с HTTP и JSON;
- кодировка русского текста;
- звуковые или голосовые системы;
- криптографическое хеширование;
- Discord-интеграция;
- специальные расширения конкретного мода.
Из чего состоит комплект серверного плагина
Архив может содержать несколько вариантов одного расширения.
Типичная структура
plugin-package/
├── plugins/
│ ├── plugin.dll
│ └── plugin.so
├── pawno/
│ └── include/
│ └── plugin.inc
├── examples/
├── README.md
├── LICENSE
└── CHANGELOG.md
Перед установкой найдите
- DLL для Windows;
- SO для Linux;
- include-файл;
- список системных требований;
- поддерживаемую разрядность;
- номер версии;
- инструкцию обновления;
- список изменений API;
- дополнительные библиотеки;
- пример подключения.
Не копируйте без разбора
- все варианты для разных систем;
- отладочные сборки;
- файлы другой архитектуры;
- старые и новые версии одновременно;
- исходники вместо готовой библиотеки;
- файлы из каталога примеров.
Проверка совместимости версий
Совместимость зависит не только от названия плагина. Значение имеют версия API, include-файл, AMX, операционная система и архитектура.
Необходимо согласовать
- версию DLL или SO;
- версию соответствующего include;
- версию AMX игрового мода;
- архитектуру серверного ядра;
- операционную систему;
- дополнительные зависимости;
- используемую версию CRMP.
Опасная комбинация
Новый include
Старый плагин
AMX от другой сборки
Наиболее надёжная комбинация
plugin.dll или plugin.so одной версии
plugin.inc той же версии
AMX, скомпилированный с этим include
Признаки несовместимости
Run time error 19;- список отсутствующих native-функций;
- аварийное завершение при запуске;
- ошибки после вызова конкретной функции;
- неправильные значения из плагина;
- предупреждения о несовместимом API;
- мод запускается, но часть систем не работает.
Резервная копия перед установкой плагина
Перед заменой нативного файла сохраните рабочую версию сервера.
Скопируйте
- текущую DLL или SO;
- соответствующий include;
- рабочий AMX;
- исходный PWN;
server.cfg;- дополнительные библиотеки;
server_log.txt;- базу данных, если меняется MySQL.
Пример каталога копии
backups/
└── plugins-before-update/
├── server.cfg
├── roleplay.amx
├── roleplay.pwn
├── mysql.dll
└── a_mysql.inc
Архив на Linux
cd /home/crmp
tar -czf \
plugins-before-update-$(date +%F).tar.gz \
server/plugins \
server/pawno/include \
server/gamemodes \
server/server.cfg
Проверка безопасности плагина
Перед загрузкой проверьте
- официальный источник или репозиторий;
- имя автора;
- историю выпусков;
- контрольную сумму, если она опубликована;
- результат антивирусной проверки;
- наличие исходного кода;
- список сетевых функций;
- разрешения и назначение плагина.
Повышенного внимания требуют
*.dll
*.so
*.exe
*.bat
*.cmd
*.sh
Красные флаги
- плагин распространяется только через неизвестный архив;
- нет информации об авторе и версии;
- архив защищён странным паролем;
- внутри находится лишний EXE;
- плагин подключается к неизвестному адресу;
- файл требует запуска с правами администратора;
- антивирусы показывают несколько серьёзных срабатываний;
- автор запрещает проверять или анализировать файл.
Проверяйте неизвестные библиотеки на отдельной тестовой машине без рабочих паролей и баз данных.
Установка серверного плагина на Windows
1. Остановите CRMP Server
Нативные библиотеки загружаются при запуске процесса. Не заменяйте DLL во время работы сервера.
2. Скопируйте файл в папку plugins
CRMP-Server/
└── plugins/
└── streamer.dll
3. Установите include для компиляции
CRMP-Server/
└── pawno/
└── include/
└── streamer.inc
4. Подключите плагин в server.cfg
plugins streamer
5. Проверьте дополнительные DLL
Некоторые расширения содержат системные или вспомогательные библиотеки. Их расположение должно соответствовать инструкции конкретной версии.
6. Запустите сервер через консоль
cd C:\CRMP-Server
samp-server-cr.exe
Название EXE зависит от используемой адаптации CRMP.
7. Проверьте журнал
server_log.txt
Установка серверного плагина на Linux
1. Остановите серверный процесс
При использовании screen сначала подключитесь к консоли и корректно завершите сервер.
screen -ls
screen -r crmp
2. Скопируйте SO в папку plugins
/home/crmp/server/
└── plugins/
└── streamer.so
3. Подключите расширение в server.cfg
plugins streamer.so
4. Проверьте архитектуру
file plugins/streamer.so
5. Проверьте зависимости
ldd plugins/streamer.so
6. Настройте владельца и права
sudo chown crmp:crmp \
plugins/streamer.so
chmod 755 \
plugins/streamer.so
7. Запустите сервер
cd /home/crmp/server
sudo -u crmp ./samp03svr-cr
Используйте фактическое имя исполняемого файла своей адаптации.
Проверка архитектуры плагина на Linux
Старые серверные ядра и многие CRMP-плагины используют 32-битную архитектуру.
Проверка серверного файла
file ./samp03svr-cr
Проверка плагина
file plugins/mysql.so
Совместимые варианты должны иметь одинаковую архитектуру
ELF 32-bit
ELF 32-bit
Несовместимая комбинация
Сервер: ELF 32-bit
Плагин: ELF 64-bit
Дополнительная проверка заголовка ELF
readelf -h \
plugins/mysql.so
Обращайте внимание на
- Class;
- Machine;
- операционную систему ABI;
- тип динамической библиотеки.
Изменить архитектуру готового SO-файла настройкой прав невозможно. Необходимо скачать или собрать подходящую версию.
Проверка зависимостей Linux-плагина
Основная команда
ldd plugins/mysql.so
Нормальный результат
libstdc++.so.6 => /lib/i386-linux-gnu/libstdc++.so.6
libm.so.6 => /lib/i386-linux-gnu/libm.so.6
libc.so.6 => /lib/i386-linux-gnu/libc.so.6
Отсутствующая зависимость
libexample.so.1 => not found
Плагин не сможет нормально загрузиться, пока библиотека отсутствует.
Базовые 32-битные пакеты Debian и Ubuntu
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install \
libc6:i386 \
libstdc++6:i386 \
libatomic1:i386 \
-y
Поиск пакета с нужной библиотекой
apt-file search \
libexample.so.1
Для использования apt-file может потребоваться установить пакет и обновить его индекс.
Настройка владельца и прав на Linux
Проверка текущих прав
ls -la plugins/
Назначение владельца
sudo chown -R \
crmp:crmp \
/home/crmp/server/plugins
Права каталогов и файлов
find /home/crmp/server/plugins \
-type d \
-exec chmod 755 {} \;
find /home/crmp/server/plugins \
-type f \
-exec chmod 644 {} \;
Для обычной динамической библиотеки права чтения обычно достаточны. Значение 755 также часто используется для упрощения настройки серверной папки.
Не используйте без необходимости
chmod -R 777 /home/crmp/server
Полный доступ всем пользователям не исправляет несовместимость и ухудшает безопасность сервера.
Подключение плагинов в server.cfg
Все серверные расширения указываются в строке plugins.
Общий формат
plugins название1 название2 название3
Названия разделяются пробелами
Правильно:
plugins crashdetect streamer sscanf mysql
Неправильно:
plugins crashdetect,streamer,sscanf,mysql
Неправильно:
plugins crashdetect; streamer; sscanf; mysql
Не указывайте путь к папке
Правильно:
plugins streamer
Нежелательно:
plugins plugins/streamer.dll
После редактирования
- Сохраните
server.cfg. - Полностью остановите сервер.
- Запустите серверный процесс заново.
- Проверьте каждую строку загрузки.
Замена строки plugins обычно требует полного перезапуска, поскольку библиотеки загружаются при старте процесса.
Строка plugins для Windows
Стандартный вариант
plugins crashdetect streamer sscanf mysql
Соответствующие файлы
plugins/
├── crashdetect.dll
├── streamer.dll
├── sscanf.dll
└── mysql.dll
Расширение .dll обычно можно не указывать.
Вариант с расширениями
plugins crashdetect.dll streamer.dll sscanf.dll mysql.dll
Некоторые ядра принимают такую запись, но для совместимости со старыми конфигурациями чаще используются названия без расширения.
Если один плагин не используется
Удалите его из строки:
plugins crashdetect streamer sscanf
Оставлять название отсутствующего файла не следует: сервер будет сообщать об ошибке при каждом запуске.
Строка plugins для Linux
Правильный вариант
plugins crashdetect.so streamer.so sscanf.so mysql.so
Соответствующие файлы
plugins/
├── crashdetect.so
├── streamer.so
├── sscanf.so
└── mysql.so
Неправильный вариант Linux
plugins crashdetect streamer sscanf mysql
Также неправильно
plugins crashdetect.dll streamer.dll mysql.dll
Linux не загружает Windows DLL в качестве серверных плагинов.
Проверка регистра
Streamer.so
streamer.so
Для Linux это разные имена. Название в конфигурации должно совпадать с реальным файлом.
Порядок загрузки серверных плагинов
Для многих независимых расширений порядок не имеет значения, однако некоторые сборки и диагностические плагины могут предъявлять собственные требования.
Практический пример
plugins crashdetect streamer sscanf mysql pawncmd
CrashDetect часто размещают первым
Это позволяет получить диагностическую информацию при последующей загрузке и выполнении игрового мода, если версия CrashDetect совместима с остальными компонентами.
Сохраняйте порядок разработчика, если
- мод распространяется с готовым
server.cfg; - в инструкции указан обязательный порядок;
- один плагин зависит от другого;
- используется старая CRMP-сборка;
- после изменения появляются новые ошибки.
Первый запуск после установки плагинов
Запуск Windows
cd C:\CRMP-Server
samp-server-cr.exe
Запуск Linux
cd /home/crmp/server
sudo -u crmp ./samp03svr-cr
Не запускайте первый тест в фоне
Оставьте консоль открытой, чтобы увидеть ошибки загрузки и момент аварийного завершения.
Проверьте файлы
server_log.txt
crashinfo.txt
На Linux наблюдайте за журналом
tail -f server_log.txt
При первом тесте
- подключайте плагины по одному;
- записывайте их версии;
- не заменяйте одновременно AMX и все библиотеки;
- сохраняйте предыдущий рабочий комплект;
- проверяйте консоль после каждого изменения.
Проверка успешной загрузки плагинов
Нормальный результат
Loading plugin: crashdetect
Loaded.
Loading plugin: streamer
Loaded.
Loading plugin: sscanf
Loaded.
Loading plugin: mysql
Loaded.
Loaded 4 plugins.
Что означает Loaded
Сервер нашёл файл и смог загрузить его как динамическую библиотеку.
Loaded не гарантирует
- полную совместимость с AMX;
- правильную версию include;
- корректную настройку MySQL;
- отсутствие ошибок при вызове функций;
- совместимость всех плагинов между собой.
После загрузки проверьте
- запуск игрового мода;
- отсутствие Runtime Error 19;
- работу функций плагина;
- отсутствие аварийного завершения;
- правильное сохранение данных;
- нагрузку на процессор и память.
Ошибка загрузки Plugin Failed
Пример
Loading plugin: streamer
Failed.
Основные причины
- файл отсутствует;
- неверно указано имя;
- используется неправильное расширение;
- не совпадает регистр букв;
- не совпадает архитектура;
- отсутствует системная зависимость;
- DLL заблокирована Windows;
- плагин повреждён;
- файл собран для другой операционной системы.
Порядок проверки
- Проверьте строку
plugins. - Убедитесь в наличии файла.
- Проверьте Windows или Linux-версию.
- Проверьте разрядность.
- Проверьте системные библиотеки.
- Верните оригинальный файл из сборки.
- Запустите сервер через консоль.
Ошибка Run time error 19
Run time error 19:
"File or function is not found"
Игровой мод вызывает Pawn-native, которую не предоставило загруженное окружение.
Возможные причины
- обязательный плагин отсутствует;
- плагин имеет статус Failed;
- установлена другая версия API;
- AMX скомпилирован с несовместимым include;
- в новом плагине функция переименована или удалена;
- на сервер загружен старый AMX;
- часть строки
pluginsудалена.
Порядок исправления
- Найдите отсутствующие функции в журнале.
- Определите, какому расширению они принадлежат.
- Проверьте загрузку этого плагина.
- Верните версию из исходной сборки.
- Сопоставьте DLL или SO с include.
- Повторно скомпилируйте PWN.
- Убедитесь, что AMX обновился.
Ошибка MSVCR, MSVCP или VCRUNTIME DLL
Примеры сообщений
MSVCR100.dll was not found
MSVCP120.dll was not found
VCRUNTIME140.dll was not found
Плагин был собран с использованием среды Microsoft Visual C++, которой нет в системе.
Что необходимо сделать
- определить требуемую версию Visual C++;
- установить официальный Redistributable;
- для старого 32-битного ядра установить вариант x86;
- перезапустить сервер;
- повторно проверить консоль.
Не скачивайте отдельную DLL с неизвестного сайта
Отдельный файл может иметь неправильную версию, содержать вредоносный код или вызвать следующую ошибку зависимости.
Также проверьте
- дополнительные библиотеки из архива плагина;
- разрядность DLL;
- блокировку файла;
- соответствие версии Windows;
- наличие всех файлов комплекта.
Ошибка Wrong ELF Class
Пример
wrong ELF class:
ELFCLASS64
32-битный сервер пытается загрузить 64-битную библиотеку или наоборот.
Проверьте
file ./samp03svr-cr
file plugins/plugin.so
Исправление
Установите SO-файл той же архитектуры, что и серверное ядро.
Нельзя исправить командами
chmod
chown
ldconfig
Эти команды не преобразуют 64-битную библиотеку в 32-битную.
Ошибка Cannot open shared object file
Пример
error while loading shared libraries:
libexample.so:
cannot open shared object file
Причины
- системная библиотека не установлена;
- файл находится вне путей загрузчика;
- не установлена 32-битная версия;
- повреждена символическая ссылка;
- плагин собран для другого дистрибутива;
- неправильно распакован архив.
Проверьте зависимости
ldd plugins/plugin.so
Обновите кэш загрузчика после системной установки
sudo ldconfig
Не добавляйте произвольные каталоги в системный путь без понимания назначения библиотеки.
Ошибка Symbol lookup error
Пример
symbol lookup error:
undefined symbol
Библиотека была найдена, но ожидаемый символ отсутствует в ней или одной из зависимостей.
Возможные причины
- установлена несовместимая версия зависимости;
- смешаны файлы нескольких выпусков;
- плагин собран для другой версии библиотеки;
- обновлён только один файл из комплекта;
- в системе загружается другая копия SO;
- плагин несовместим с серверным ядром.
Проверка зависимостей
ldd plugins/plugin.so
Поиск символа
nm -D plugins/plugin.so \
| grep SYMBOL_NAME
Самый надёжный способ исправления — вернуть полный совместимый комплект одной версии.
Segmentation fault после установки плагина
Segmentation fault
Segmentation fault (core dumped)
Возможные причины
- ошибка внутри нативного плагина;
- несовместимая версия API;
- неправильный вызов функции из Pawn;
- конфликт двух расширений;
- повреждение памяти;
- неподходящая системная библиотека;
- использование старого плагина на новой системе.
Первичная диагностика
- Отключите недавно добавленный плагин.
- Верните предыдущий AMX.
- Запустите сервер без filterscripts.
- Подключайте компоненты по одному.
- Установите совместимый CrashDetect.
- Проверьте последние строки журнала.
Проверка системного журнала
dmesg \
| tail -n 50
При наличии core-файла
Для глубокой диагностики может использоваться отладчик, но для готовой сборки сначала целесообразно вернуть рабочую версию плагина.
Плагин загружен, но игровой мод не работает
Статус Loaded означает только успешную загрузку динамической библиотеки.
Проверьте дальше
- совпадает ли версия API;
- каким include компилировался AMX;
- присутствуют ли все native-функции;
- правильно ли настроен сам плагин;
- есть ли дополнительные файлы;
- правильно ли указан путь к конфигурации;
- нет ли ошибки при первом вызове функции.
Пример с MySQL
Плагин может иметь статус Loaded, но подключение к базе не произойдёт из-за неправильного логина, пароля или адреса.
Пример со Streamer
Плагин может загрузиться, но объекты не появятся, если мод не вызывает функции создания или использует несовместимый AMX.
Пример с командным процессором
Библиотека может быть загружена, но команды не зарегистрируются из-за ошибок исходного кода.
Правильное обновление версии плагина
Не заменяйте только DLL или SO
Новый выпуск может требовать обновления include и повторной компиляции игрового мода.
Безопасный порядок обновления
- Создайте резервную копию.
- Прочитайте список изменений.
- Проверьте удалённые и переименованные функции.
- Замените нативный файл на тестовом сервере.
- Обновите include.
- Скомпилируйте PWN.
- Исправьте предупреждения и ошибки.
- Загрузите новый AMX.
- Проверьте все связанные системы.
- Только после теста обновите рабочий сервер.
Записывайте версии
MySQL: версия сборки
Streamer: версия сборки
sscanf: версия сборки
CrashDetect: версия сборки
Pawn.CMD: версия сборки
Не обновляйте всё одновременно
Последовательное обновление позволяет определить компонент, после которого появилась ошибка.
Особенности установки MySQL-плагина
MySQL-плагин особенно чувствителен к несовместимости API. Между старыми и новыми поколениями отличаются функции подключения, запросов и обработки кэша.
Необходимые компоненты
plugins/mysql.dll
plugins/mysql.so
pawno/include/a_mysql.inc
Windows
plugins mysql
Linux
plugins mysql.so
Признаки несовместимости
- Runtime Error 19;
- отсутствуют функции
mysql_tqueryилиcache_*; - мод закрывается при подключении;
- запросы не выполняются;
- не загружаются аккаунты;
- ошибки появляются после замены include.
Особенности установки Streamer Plugin
Компоненты
plugins/streamer.dll
plugins/streamer.so
pawno/include/streamer.inc
Windows
plugins streamer
Linux
plugins streamer.so
После установки проверьте
- загружаются ли динамические объекты;
- появляются ли пикапы;
- работают ли динамические зоны;
- нет ли неизвестных native-функций;
- не превышены ли лимиты;
- не появились ли ошибки в callbacks.
При обновлении
Используйте include от той же версии и повторно скомпилируйте игровой мод и filterscripts, которые вызывают Streamer API.
Особенности установки sscanf
Компоненты
plugins/sscanf.dll
plugins/sscanf.so
pawno/include/sscanf2.inc
Windows
plugins sscanf
Linux
plugins sscanf.so
При ошибках команд проверьте
- загрузился ли плагин;
- подключён ли правильный include;
- совпадает ли синтаксис форматов;
- перекомпилирован ли AMX;
- не используется ли старый командный обработчик;
- нет ли Runtime Error 19.
Использование CrashDetect для поиска ошибок
CrashDetect помогает получить больше информации о проблемах Pawn-кода и аварийных завершениях скрипта.
Windows
plugins crashdetect streamer sscanf mysql
Linux
plugins crashdetect.so streamer.so sscanf.so mysql.so
Полезная информация в журнале
- номер ошибки;
- название функции;
- стек вызовов;
- номер строки при отладочной компиляции;
- параметры вызова;
- название AMX или filterscript.
CrashDetect не исправляет ошибку автоматически
Он предоставляет диагностические сведения, по которым разработчик должен найти и исправить проблемный участок кода.
Компиляция игрового мода для диагностики
Чтобы журнал содержал номера строк исходного PWN, мод можно скомпилировать с дополнительной отладочной информацией.
Пример параметра компилятора
-d3
Пример командной строки
pawno\pawncc.exe \
gamemodes\roleplay.pwn \
-d3
После компиляции
- проверьте создание AMX;
- проверьте дату файла;
- загрузите его на тестовый сервер;
- воспроизведите ошибку;
- изучите вывод CrashDetect;
- верните обычную сборку после диагностики при необходимости.
Отладочный AMX может иметь больший размер, но значительно упрощает поиск строки, вызвавшей ошибку.
Установка плагинов на игровом хостинге
Большинство игровых хостингов используют Linux, даже если панель открывается с компьютера Windows.
Поэтому обычно требуются
mysql.so
streamer.so
sscanf.so
crashdetect.so
Порядок действий
- Остановите сервер через панель.
- Откройте файловый менеджер или FTP.
- Загрузите SO в папку
plugins. - Измените строку
plugins. - Проверьте регистр имени.
- Запустите сервер.
- Откройте консоль и журнал.
Если хостинг запрещает загрузку SO
Некоторые панели разрешают только плагины из внутреннего списка. В таком случае выберите поддерживаемую версию или обратитесь в техническую поддержку.
Не ориентируйтесь только на свой компьютер
То, что мод тестировался на Windows, не означает, что на игровом хостинге нужно загружать DLL.
Безопасность серверных плагинов
Основные правила
- загружайте файлы из доверенных источников;
- проверяйте номер версии;
- храните резервную копию;
- не запускайте сервер от root;
- не выдавайте папке права 777;
- не используйте неизвестные закрытые сборки;
- ограничивайте исходящие подключения;
- меняйте пароли после проверки чужой сборки;
- не храните рабочие данные в тестовой среде;
- обновляйте только после тестирования.
Запуск Linux от отдельного пользователя
sudo -u crmp \
./samp03svr-cr
Проверьте неизвестные сетевые соединения
sudo ss -tpn
После удаления плагина
- удалите его из
server.cfg; - проверьте PWN на вызовы его функций;
- перекомпилируйте мод;
- удалите ненужный include;
- проверьте запуск без ошибок.
Контрольный список после установки или обновления
Файлы
- DLL или SO находится в
plugins; - выбрана правильная операционная система;
- архитектура совпадает с ядром;
- include находится в
pawno/include; - не осталось двух разных версий.
server.cfg
- строка
pluginsсуществует; - названия разделены пробелами;
- на Windows расширение DLL не обязательно;
- на Linux указано
.so; - регистр букв совпадает;
- отсутствующие плагины удалены.
Совместимость
- AMX скомпилирован с подходящим include;
- API плагина соответствует коду;
- дополнительные библиотеки установлены;
- сохранена старая рабочая версия;
- изучен список изменений.
Запуск
- каждый плагин имеет статус Loaded;
- нет Runtime Error 19;
- нет missing DLL;
- нет
not foundв выводе ldd; - игровой мод запускается;
- связанные системы работают;
- сервер выдерживает повторный перезапуск.
Частые вопросы по плагинам CRMP
Куда устанавливать серверные плагины?
В папку plugins корневого каталога CRMP Server.
Куда устанавливать include-файлы?
В каталог pawno/include.
Как подключить плагин на Windows?
plugins streamer
Как подключить плагин на Linux?
plugins streamer.so
Нужно ли писать расширение DLL?
На Windows оно обычно не требуется.
Нужно ли писать расширение SO?
Да, на Linux оно указывается в строке plugins.
Как подключить несколько плагинов?
plugins crashdetect streamer sscanf mysql
Нужно ли разделять названия запятыми?
Нет. Используются обычные пробелы.
Почему плагин показывает Failed?
Проверьте файл, название, операционную систему, архитектуру и системные зависимости.
Что означает Runtime Error 19?
AMX вызывает функцию отсутствующего или несовместимого плагина.
Почему DLL работает на компьютере, но не на хостинге?
Хостинг, вероятно, использует Linux и требует SO-файл.
Почему SO не работает на Windows?
SO предназначен для Linux. На Windows нужна DLL-версия.
Как проверить архитектуру Linux-плагина?
file plugins/plugin.so
Как проверить зависимости?
ldd plugins/plugin.so
Что означает not found в ldd?
Одна из необходимых системных библиотек отсутствует.
Можно ли исправить несовместимую архитектуру через chmod?
Нет. Необходимо установить плагин подходящей разрядности.
Нужно ли перезапускать сервер?
Да. Изменение списка плагинов требует полного перезапуска процесса.
Можно ли обновить только DLL или SO?
Не всегда. Может потребоваться новый include, изменение PWN и повторная компиляция AMX.
Почему плагин Loaded, но функция не работает?
Проверьте совместимость API, настройки плагина и код игрового мода.
Нужно ли устанавливать все плагины из интернета?
Нет. Устанавливаются только расширения, которые использует конкретный игровой мод.
Можно ли удалить ненужный плагин?
Да, но сначала удалите вызовы его функций из PWN и повторно скомпилируйте игровой мод.
Как найти плагин, вызывающий сбой?
Отключайте недавно добавленные расширения по одному и проверяйте запуск на тестовой копии.
Для чего нужен CrashDetect?
Для получения расширенной информации об ошибках Pawn и стеке вызовов.
Безопасно ли запускать неизвестный плагин?
Нет. Проверяйте источник и тестируйте библиотеку отдельно от рабочего сервера и базы.
Официальные и технические источники
Заключение
Серверные плагины CRMP устанавливаются в папку plugins и подключаются через одноимённую строку файла server.cfg. На Windows обычно используются названия без расширения DLL, а на Linux необходимо указывать .so.
Include-файл из папки pawno/include применяется при компиляции PWN, а нативная DLL или SO загружается сервером во время запуска. Эти компоненты должны относиться к совместимым версиям.
Перед обновлением сохраните старый плагин, include, AMX и конфигурацию. Не заменяйте сразу все компоненты: последовательное тестирование позволяет быстрее найти источник ошибки.
При статусе Failed проверьте название файла, операционную систему, архитектуру и зависимости. Runtime Error 19 обычно означает, что игровой мод не нашёл функцию обязательного плагина или использует несовместимый API.
После установки проверяйте не только сообщение Loaded, но и работу систем, использующих расширение. Плагин может успешно загрузиться, но завершиться ошибкой при первом вызове функции.
Загружайте нативные библиотеки только из доверенных источников и запускайте CRMP Server от отдельного системного пользователя без избыточных прав.
Настройка списка плагинов:
Установка игрового мода:
Подключение MySQL:
Комментарии к инструкции
Обсудите решение, задайте вопрос или дополните инструкцию