Mode Unknown

Запустили сервер, но мод не загрузился, а в мультиплеере у сервера Mode Unknown? Расскажем, как это исправить.

Причина ошибки #1 - не все плагины загружены

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

Убедитесь, что:

  1. Все нужные моду плагины загружены в папку plugins, имеют расширение .so (например, streamer.so);
  2. Все плагины присутствуют в server.cfg, и прописаны без расширений. Например, для streamer.so и mysql.so в строке plugins нужно указать "plugins streamer mysql".
  3. Если в папке plugins только .dll файлы, а .so отсутствуют, то найдите и загрузите их. Как правило, они есть в архиве с модом.

Плагины прописаны и загружены, но ошибка сохраняется?

Причина ошибки #2 - несовпадение версий плагинов

Чтобы разобраться с причиной этой ошибки, откройте server_log.txt из папки /ip-port/samp. В конце лога найдите последний запуск сервера, он всегда начинается со строк "Ru-hoster Launcher Nausica (2017)".

Лог может выглядеть вот так:

Ru-hoster Launcher Nausica (2017)
Start the server at 29-05-2017 19:30 MSK
Checking server.cfg file ... Done

----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3.7-R2, (C)2005-2015 SA-MP Team

[19:30:00]
[19:30:00] Server Plugins
[19:30:00] --------------
[19:30:00] Loading plugin: streamer.so
[19:30:00]

*** Streamer Plugin v2.8.2 by Incognito loaded ***

[19:30:00] Loaded.
[19:30:00] Loading plugin: sscanf.so
[19:30:00]

[19:30:00] ===============================

[19:30:00] sscanf plugin loaded.

[19:30:00] Version: 2.8.1

[19:30:00] (c) 2012 Alex "Y_Less" Cole

[19:30:00] ===============================

[19:30:00] Loaded.
[19:30:00] Loading plugin: regex.so
[19:30:00]

[19:30:00] ______________________________________

[19:30:00] Regular Expression Plugin v0.2.1 loaded
[19:30:00] ______________________________________

[19:30:00] By: Fro (c) Copyright <TBG> 2009-2011
[19:30:00] ______________________________________

[19:30:00] Loaded.
[19:30:00] Loading plugin: PointToPoint.so
[19:30:00] PointToPoint Plugin Loaded.
[19:30:00] Loaded.
[19:30:00] Loading plugin: sql.so
[19:30:00] >> SQL plugin v2.6 successfully loaded.
[19:30:00] + MySQL support is enabled.
[19:30:00] Loaded.
[19:30:00] Loading plugin: mysql.so
[19:30:00] >> plugin.mysql: R34 successfully loaded.
[19:30:00] Loaded.
[19:30:00] Loading plugin: FileFunctions.so
[19:30:00] Loaded.
[19:30:00] Loading plugin: iTD.so
[19:30:00] Failed (plugins/iTD.so: cannot open shared object file: No such file or directory)
[19:30:00] Loading plugin: crashdetect.so
[19:30:00] In order for runtime error detection to work CrashDetect must be loaded before streamer.so.
[19:30:00] CrashDetect v4.10 is OK.
[19:30:00] Loaded.
[19:30:00] Loading plugin: antiattack.so
[19:30:00] Failed (/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by plugins/antiattack.so))
[19:30:00] Loading plugin: jit.so
[19:30:00] Failed (plugins/jit.so: cannot open shared object file: No such file or directory)
[19:30:00] Loaded 8 plugins.

[19:30:00]
[19:30:00] Filterscripts
[19:30:00] ---------------
[19:30:00] Loading filterscript 'yom_buttons.amx'...
[19:30:00] *** Streamer Plugin: Include file version (0x26105) does not match plugin version (0x282001) (script might need to be recompiled with the latest include file)
[19:30:00] Loading filterscript 'pockets.amx'...
[19:30:00] FS SCRIPT LOAD
[19:30:00] Loaded 2 filterscripts.

[19:30:00] Script[gamemodes/new.amx]: Run time error 19: "File or function is not found"
[19:30:00] Number of vehicle models: 0

Тут мы ищем:

  1. Ошибки GLIBCXX. Если они присутствуют, то вам поможет эта инструкция;
  2. Ошибка "(plugins/iTD.so: cannot open shared object file: No such file or directory" говорит о том, что файл плагина не существует в папке plugins. Поверьте еще раз, что такие файлы существуют.

Crashdetect спешит на помощь!

Если таких ошибок нет, либо они исправлены, а мод по прежнему Unknown, то требуется зайти в панель управления сервером и установить плагин Crashdetect в разделе Моды/Плагины. Перезапустите сервер после установки, убедитесь что плагин загрузился:

[19:35:50] Server Plugins
[19:35:50] --------------
[19:35:50]  Loading plugin: crashdetect.so
[19:35:50]   CrashDetect v4.13.1-lse is OK.
[19:35:50]   Loaded.
Успешная загрузка crashdetect

Далее вновь проверьте лог. В нем вы найдете отладочную информацию:

[19:55:21] [debug] Run time error 19: "File or function is not found"
[19:55:21] [debug]  cache_get_value_index
[19:55:21] [debug]  cache_get_value_index_int
[19:55:21] [debug]  cache_get_value_name
[19:55:21] [debug]  cache_get_value_name_int
[19:55:21] [debug]  cache_get_value_index_float
[19:55:21] [debug]  cache_get_value_name_float

В данном логе мы видим, что мод не загрузился из-за отсутствующих функций, и их список.

Далее вам нужно поискать функции из этого списка в Google. Набрав в поисковике "cache_get_value_index_int", попадаем на страницу https://wiki.sa-mp.com/wiki/MySQL/R40. Обратите внимание на версию MySQL-плагина R40. Нужная моду функция появилась в версии 40+, у нас же судя по server_log.txt видно, что загружается R34. Именно из-за этого сервер не может загрузиться.

Заметим, что в каждом конкретном случае набор отсутствующих функций будет разным, и плагины, требующие обновления будут отличаться. Вам нужно поискать каждую функцию в Google и найти нужный плагин нужной версии (версию часто можно найти по changelog плагина).

Теперь когда мы знаем причину, то можем зайти в управление сервером, раздел Моды/Плагины, и установить MySQL R41 (она совместима с R40). Либо, если нужного плагина (или нужной версии) в панели управления нет, то найдем в интернете нужный плагин (требуется версия для Linux CentOS 7) и загрузим в папку plugins через FTP.

Результат - наш сервер запущен и готов к игре.

С любовью,
команда Ru-hoster ❤