Клиенту доступны следующие команды Metamod:
meta version
Metamod v1.17.4p17 2005/02/19 by Will Day http://www.metamod.org/ Patch: Metamod-P (mm-p) v17 by Jussi Kivilinna http://koti.mbnet.fi/axh/ compiled: Feb 19 2005, 23:17:48 EET (optimized)
meta list
Currently running plugins: [ 1] Trace HLSDK API, v1.XX.93, 2003/02/17, by Will Day <willday@metamod.org>, see http://www.metamod.org/ [ 2] Adminmod, v2.50.56 (MM), Jul 13 2003, by Alfred Reynolds <alfred@valvesoftware.com>, see http://www.adminmod.org/ 2 plugins
Для установки Metamod, вы должны сделать следующее:
Скопировать библиотеку Metamod (.dll для win32, или .so для linux) в директорию с вашей игрой. К примеру для Counter-Strike, работающем на win32 это будет вот так:
half-life/cstrike/addons/metamod/dlls/metamod.dll
Отредактируйте файл liblist.gam в директории вашей игры, заменив имя файла библиотеки вашей игры, на библиотеку Metamod. К примеру, для Counter-Strike, вы должны сменить:
gamedll "dlls/mp.dll" gamedll_linux "dlls/cs_i386.so"
на:
gamedll "addons/metamod/dlls/metamod.dll" gamedll_linux "addons/metamod/dlls/metamod_i386.so"
Для автоматической загрузки плагинов во время старта игры вам необходимо создать файл plugins.ini, содержащий список плагинов для загрузки.
У Metamod есть несколько способов конфигурирования. Частично так сложилось исторически, одни методы появились первыми, потом добавились другие. А также потому что одни способы удобнее других, в зависимости от ситуации.
Есть два основных метода передачи параметров для Metamod:
Запутанность конфигурирования зачастую состоит в том, что имена файлов конфигурации могут быть переопределены через параметры командной строки, или они могут быть заданы в других конфигурационных файлах.
В любом случае Metamod использует вот эти переменные конфигурации для определения имен конфигурационных файлов (перечислены в порядке приоритета):
Расположение по умолчанию: $gamedir/addons/metamod/plugins.ini, к примеру так cstrike/addons/metamod/plugins.ini.
Плагины в файле plugins.ini описываються в необходимом порядке загрузки по одному на строку вот в таком формате:
<platform> <filepath> [<description>]
Поля разделены пробелами или символом табуляции.
Пример файла cstrike/addons/metamod/plugins.ini, все строки в котором валидны:
plugins.ini
// linux dlls/mybot.so
# win32 dlls/mybot-old.dll Mybot old
win32 dlls/mybot.dll Mybot current
linux /tmp/stub_mm_i386.so
win32 /tmp/stub_mm_i386.dll
linux ../dlls/trace_mm_i386.so
win32 ../dlls/trace_mm_i386.dll
linux dlls/admin_MM_i386.so
win32 dlls/admin_MM_i386.dll
Этот файл перечитываеться при смене уровня, и принудительно по команде meta refresh:
Вы можете переопределить имя этого файла с помощью поля mm_pluginsfile параметра +localinfo.
Для совместимости с предыдущими версиями, Metamod также просматривает файл metamod.ini в директории игры, к примеру как cstrike/metamod.ini.
Расположение по умолчанию: $gamedir/addons/metamod/config.ini, к примеру так cstrike/addons/metamod/config.ini.
Содержит базовую информацию о конфигурации. На данный момент дублирует большинство переменных, задаваемых через +localinfo, но в будущем позволит расширить список опций. Также позволяе избежать порчи некоторых параметров передаваемых через +localinfo, в частности лидирующих точек в путях, к примеру как здесь '../dlls/blah.dll'.
Формат строк в конфиге:
<option> <value>
Поля разделяються пробелами или символом табуляции. Коментарии в файле разрешены, но должны начинаться в начале строки в стиле shell '#' или в стиле С '//'. Ниже приведен список текущих опций, их дефолтных значений и примеры использования.
Examples
debuglevel 0 debuglevel 42
Examples
gamedll dlls/hl.dll gamedll ../podbot/podbot.dll gamedll /home/bots/dlls/mybot.dll
Examples
plugins_file cfg/clanmode.ini plugins_file ../private.ini plugins_file /home/half-life/testing.ini
Examples
exec_cfg configs/debugging.cfg exec_cfg ../clan/match.cfg
Размещение по умолчанию: $gamedir/addons/metamod/exec.cfg, к примеру вот так: cstrike/addons/metamod/exec.cfg.
Этот файл необходим для плагинов которые должны быть настроены раньше стандартного порядка активации сервера ServerActivate, но autoexec.cfg подгружаеться слишком рано, а server.cfg слишком поздно. В частности, я нашел это необходимым для настройки плагина трассировки, чтобы отследить порядок вызовов RegUserMsg вызванных в процессе ServerActivate.
Вы можете изменить имя этого файла с помощью параметра +localinfo mm_execcfg командной строки.
Для совместимости с предыдущими версиями, Metamod также просматривает файл metaexec.cfg в директории игры, такой как cstrike/metaexec.cfg.
Некоторые конфигурационные переменные Metamod могут быть определены как поля параметра командной строки hlds +localinfo. Применение аналогично клиентской консольной команде setinfo:
+localinfo <field> <value>
Несколько примеров
./hlds_run -game cstrike +localinfo mm_pluginsfile mylist.ini ./hlds_run -game cstrike +localinfo mm_execcfg mysettings.cfg ./hlds_run -game cstrike +localinfo mm_gamedll dlls/pod_bot.so ./hlds_run -game cstrike +localinfo mm_debug 7
Все консольные команды являються cуб-командами к единственной команде meta, с дополнительными параметрами:
meta
usage: meta <command> [<arguments>]
valid commands are:
version - display Metamod version info (покажет версию Metamod)
list - list plugins currently loaded (список запущенных плагинов)
cmds - list console cmds registered by plugins (список команд зарегистрированных плагинами)
cvars - list cvars registered by plugins (список переменных зарегистрированных плагинами)
refresh - load/unload any new/deleted/updated plugins
config - show config info loaded from config.ini (покажет информацию о конфигурации загруженной из config.info)
load <name> - find and load a plugin with the given name (поиск и загрузка плагина по имени)
unload <plugin> - unload a loaded plugin (останов запущенного плагина)
reload <plugin> - unload a plugin and load it again (выгрузить и запустить плагин по новой)
info <plugin> - show all information about a plugin (покажет всю информацию о плагине)
pause <plugin> - pause a loaded, running plugin (приостанвка загрженного и запущенного плагина)
unpause <plugin> - unpause a previously paused plugin (продолжение работы ранее приостановленного плагина)
retry <plugin> - retry a plugin that previously failed its action (попытка повторить неудавшуюся последнюю операцию)
clear <plugin> - clear a failed plugin from the list (удалить ошибочные плагины из списка)
force_unload <plugin> - forcibly unload a loaded plugin (принудительная выгрузка запущенного плагина)
require <plugin> - exit server if plugin not loaded/running (останов сервера если плагин не загрузился)
Также доступна единственная переменная:
meta_debug - set debugging level (установка уровня отладки)
Плагины могут быть вызваны также по индексу или по частичному имени файла.
К примеру имеем:
meta list
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] Trace HLSDK API RUN - mm_trace_i386.so v0.90 ini ANY Pause
[ 2] adminmod RUN - admin_MM.so v2.11 ini Start Start
[ 3] stub RUN - mm_stub_i386.so v0.90 ini ANY Pause
2 plugins, 2 running
Можно выгрузить плагин трассировки (Trace) любым из приведенных способов:
meta unload [index|частично имя]
meta unload 1 meta unload trace meta unload mm_trace
В процессе запуска/останова плагины могут находиться в разных состояниях (колонка stat в выводе команды meta list):
Также в процессе работы плагина он может ожидать перехода в следующее состояние (показываеться в колонке pend вывода команды meta list), и означает следующее:
Примеры выполнения команд:
meta info
meta info admin
name: adminmod
desc: Adminmod
status: running
action: none
filename: dlls/admin_MM.so
file: admin_MM.so
pathname: /home/willday/test/cstrike/dlls/admin_MM.so
index: 3
source: ini file
loadable: at server startup
unloadable: at server startup
version: 2.11
date: 2001/02/04
author: Alfred Reynolds <alfred@mazuma.net.au>
url: http://www.adminmod.org/
logtag: ADMIN
last loaded: Mon Feb 5 02:06:34 2001
DLLAPI functions:
GameDLLInit
DispatchThink
ClientConnect
ClientCommand
ClientUserInfoChanged
ServerActivate
6 functions (dllapi)
No DLLAPI-Post functions.
No NEWAPI functions.
No NEWAPI-Post functions.
No Engine functions.
No Engine-Post functions.
Registered commands:
admin_command
1 commands
Registered cvars: float value string value
users_file 0.000000 users.ini
maps_file 0.000000 mapvote.txt
default_access 1.000000 1
ips_file 0.000000 0
reserve_slots 1.000000 1
reserve_slots_msg 0.000000 0
admin_debug 1.000000 1
password_field 0.000000 admin_password
alarm_message 0.000000 0
alarm_time 0.000000 0
use_regex 1.000000 1
models_password_field 0.000000 0
models_file 0.000000 models.ini
models_kick_msg 0.000000 Invalid model
script_file 0.000000 cstrike/dlls/admin.amx
help_file 0.000000 admin_help.txt
vote_freq 360.000000 360
encrypt_password 1.000000 1
pretty_say 1.000000 1
admin_mod_version 2.110000 2.11
reserve_type 1.000000 1
map_ratio 60.000000 60
kick_ratio 75.000000 75
words_file 0.000000 0
password_timeout 1800.000000 1800
file_access_read 0.000000 0
file_access_write 0.000000 0
public_slots_free 20.000000 20.000000
allow_client_exec 0.000000 0
admin_balance_teams 0.000000 0
30 cvars
meta cmds
meta cmds
Registered plugin commands:
plugin command
[ 1] API trace trace_version
[ 2] API trace trace
[ 3] API trace untrace
[ 4] API trace showtrace
[ 5] Adminmod admin_command
5 commands, 5 available
meta cvars
meta cvars
Registered plugin cvars:
plugin cvar float value string value
[ 1] API trace trace_debug 3.000000 3.000000
[ 2] API trace trace_dllapi 8.000000 8
[ 3] API trace trace_newapi 0.000000 0
[ 4] API trace trace_engine 8.000000 8
[ 5] Adminmod users_file 0.000000 users.ini
[ 6] Adminmod maps_file 0.000000 mapvote.txt
[ 7] Adminmod default_access 1.000000 1
[ 8] Adminmod ips_file 0.000000 0
[ 9] Adminmod reserve_slots 1.000000 1
[ 10] Adminmod reserve_slots_msg 0.000000 0
[ 11] Adminmod admin_debug 1.000000 1
[ 12] Adminmod password_field 0.000000 admin_password
[ 13] Adminmod alarm_message 0.000000 0
[ 14] Adminmod alarm_time 0.000000 0
[ 15] Adminmod use_regex 1.000000 1
[ 16] Adminmod models_password_fiel 0.000000 0
[ 17] Adminmod models_file 0.000000 models.ini
[ 18] Adminmod models_kick_msg 0.000000 Invalid model
[ 19] Adminmod script_file 0.000000 cstrike/dlls/admin.amx
[ 20] Adminmod help_file 0.000000 admin_help.txt
[ 21] Adminmod vote_freq 360.000000 360
[ 22] Adminmod encrypt_password 1.000000 1
[ 23] Adminmod pretty_say 1.000000 1
[ 24] Adminmod admin_mod_version 2.110000 2.11
[ 25] Adminmod reserve_type 1.000000 1
[ 26] Adminmod map_ratio 60.000000 60
[ 27] Adminmod kick_ratio 75.000000 75
[ 28] Adminmod words_file 0.000000 0
[ 29] Adminmod password_timeout 1800.000000 1800
[ 30] Adminmod file_access_read 0.000000 0
[ 31] Adminmod file_access_write 0.000000 0
[ 32] Adminmod public_slots_free 20.000000 20.000000
[ 33] Adminmod allow_client_exec 0.000000 0
[ 34] Adminmod admin_balance_teams 0.000000 0
34 cvars, 34 available
meta unload
meta unload stub
Unloaded plugin 'Stub plugin'
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] Trace HLSDK API RUN - mm_trace_i386.so v0.90 ini ANY Pause
[ 2] adminmod RUN - admin_MM.so v2.11 ini Start Start
2 plugins, 2 running
meta load
meta load stub
Loaded plugin 'stub' successfully
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] Trace HLSDK API RUN - mm_trace_i386.so v0.90 ini ANY Pause
[ 2] adminmod RUN - admin_MM.so v2.11 ini Start Start
[ 3] stub RUN - mm_stub_i386.so v0.90 cmd ANY Pause
3 plugins, 3 running
Дискуссия