Отдельный плагин AMX Mod X создает по одной тестовой модели для каждого игрока. Он проверяет материалы studio и weapon_finish, подкраску скрытых частей, обводку и свечение скрытых участков, видимых участков или всего силуэта, растворение (dissolve), шумовую прозрачность, деформацию геометрии с разделением RGB и передачу вне PVS. Требуются AMX Mod X 1.9+, модули Fakemeta и JSON, обновленный модуль NextClientServerApi и готовый клиент NextClient 2.6+ с r_studio_shader 1 и r_studio_materials 1. Плагин использует штатные модели leet, AK47 и курицы.
Плагин подключается отдельно от nextclient_testlab. Для него требуется обновленный модуль NextClientServerApi с ncl_mat_through_walls; стандартные сценарии TestLab не требуют этого модуля.
- Скомпилируйте
nextclient_materials_test.smaпо инструкции ниже или возьмитеnextclient_materials_test.amxxиз готового пакета. - Скопируйте
.amxxв игровой каталог сервера:addons/amxmodx/plugins/nextclient_materials_test.amxx. - Скопируйте содержимое
test_support/plugins/nextclient_materials_test/resources/в игровой каталог сервера, сохранив путиmaterials/test_nextclient/material_effects.matиmaterials/test_nextclient/effects/dissolve.png. Плагин регистрирует оба файла в системе приватной загрузки ресурсов. - Добавьте
nextclient_materials_test.amxxвaddons/amxmodx/configs/plugins.iniи смените карту.
Откройте меню командой ncl_fx или ncl_fx_menu в клиентской консоли либо сообщением /ncl_fx в общем или командном чате. Права администратора не требуются. Каждое действие изменяет только собственную модель игрока.
Главное меню показывает готовность API и результат привязки материала к модели. Оно позволяет создать или заменить leet, AK47 или курицу, переключить studio и weapon_finish, изменить режим обводки и передачу вне PVS, открыть настройки эффектов и расстояния, вывести состояние и удалить модель. Создание модели устанавливает начальные значения эффектов из таблицы команд. После смены программы значения числовых параметров сохраняются. Действия с материалами требуют готового API NextClient; вывод состояния и удаление доступны независимо от готовности.
Пункт Edit effect parameters содержит все параметры из таблицы ниже. После выбора параметра можно уменьшить или увеличить значение, сменить шаг, установить минимум или максимум либо выбрать Enter a number. Число вводится через стандартную строку сообщения. Ввод cancel отменяет изменение. Повторное открытие меню или выполнение консольной подкоманды отменяет ожидаемый числовой ввод. Числовые параметры принимают конечные значения типа float в единицах, указанных в таблице. NaN и бесконечность недопустимы. Шаги меню задают только приращение при нажатии. Прямой числовой ввод сохраняет точность float. Режим обводки принимает только 0, 1 или 2.
| Параметр | Обычный шаг | Точный шаг | Крупный шаг |
|---|---|---|---|
dissolve, noise, fill, glitch |
0.125 |
1/256 |
0.25 |
outline |
0.5 пикселя |
0.25 пикселя |
2 пикселя |
glow |
0.25 |
1/64 |
1 |
glitch_speed, noise_speed |
1 |
0.25 |
10 |
glitch_seed, noise_seed |
1 |
1 |
100 |
outline_mode |
1 |
1 |
1 |
Пункт Move target along view размещает модель в 64, 160, 256, 512, 1024, 2048, 4096 или 8192 единицах от текущей камеры. Размещение следует лучу взгляда и может проходить сквозь стену. Для другого расстояния в допустимом диапазоне используется ncl_fx move distance. Из каждого подменю можно вернуться назад или закрыть меню. При отключении игрока или выгрузке плагина меню закрывается, ожидаемый ввод отменяется, а тестовая модель удаляется.
Команды управления моделью выполняются из клиентской консоли игрока. Каждый игрок управляет своей тестовой сущностью. Модель не мешает перемещению и остается в заданной точке. Отключение игрока, замена модели и выгрузка плагина удаляют сущность и очищают привязку материала.
| Команда | Действие |
|---|---|
| ncl_fx / ncl_fx_menu / say /ncl_fx / say_team /ncl_fx | Открывает игровое меню. |
| ncl_fx spawn [leet|ak47|chick] | Создает или заменяет модель в 160 единицах перед камерой. По умолчанию leet: подкраска 0.5, обводка 2, свечение 1, обводка только скрытых участков и включенная передача вне PVS. |
| ncl_fx move [distance] | Ставит модель перед текущей камерой на расстоянии 16..8192 единицы. Размещение может проходить сквозь стену. |
| ncl_fx program studio | Применяет стандартный материал ко всем текстурам модели. |
| ncl_fx program weapon_finish | Применяет weapon_finish с сохранением текущих значений числовых параметров. |
| ncl_fx pvs 0 / ncl_fx pvs 1 | Отключает или включает явную передачу вне PVS. |
| ncl_fx set parameter value | Меняет параметр в обычных единицах. Плагин передает конечное значение float в единицах параметра. |
| ncl_fx status | Выводит индекс сущности, модель, программу, результат привязки, флаг передачи, готовность клиента, значения параметров float. |
| ncl_fx remove | Очищает материал и удаляет модель. |
| ncl_fx_check_numbers | Проверяет вывод чисел без тестовой модели; не изменяет состояние. |
Команда ncl_fx_check_numbers доступна из серверной консоли и консоли подключенного игрока. Она проверяет, что семь контрольных чисел после вывода и повторного чтения сохраняют точность float. Ожидаемый итог: [NCL FX] number formatting: PASS (7/7). Тестовая модель не требуется, состояние плагина не меняется.
| Параметр команды set | Диапазон |
|---|---|
dissolve, noise, fill, glitch |
0..1 |
outline |
0..16 пикселей |
glow |
0..4 |
glitch_speed, noise_speed |
0..60 изменений в секунду |
glitch_seed, noise_seed |
0..32767 |
outline_mode |
0: только скрытые участки (по умолчанию), 1: всегда, весь силуэт; 2: только видимые участки |
Глитч включает деформацию геометрии и разделение RGB. Смещение, число полос и ширина RGB-разделения берутся из манифеста; их можно изменить в пресете или редакторе. При glitch_speed 0 рисунок неподвижен. Пресет задает оранжевую подкраску, синюю обводку и радиус свечения 10 пикселей. Для dissolve используется копия штатной крупной шумовой маски.
В сетевой игре подкраска и обводка включаются только командами параметров, полученными от сервера. Привязка пресета без таких команд оставляет эффекты отключенными. Команда pvs отдельно управляет передачей вне PVS. Локальные .mat и команды r_mat_bind/r_mat_param не включают подсветку в сетевой игре.
ncl_fx spawn leet
ncl_fx status
Посмотрите на модель напрямую, затем поставьте между ней и камерой стену. Видимые поверхности сохраняют обычный цвет. Скрытые поверхности получают оранжевую подкраску, синюю внешнюю обводку и свечение. Пересечение со стеной не создает линию внутри силуэта. При перемещении и повороте камеры контур должен следовать граням без смещения.
Сравните режимы обводки:
ncl_fx set outline_mode 0
ncl_fx set outline_mode 1
ncl_fx set outline_mode 2
Режим 0 рисует контур и свечение только там, где силуэт скрыт геометрией. Режим 1 рисует весь внешний контур и свечение, включая видимые участки. Режим 2 рисует контур и свечение только на видимой части внешнего силуэта. Подкраска во всех трех режимах остается только на скрытых поверхностях. Повторите проверку с полностью видимой, частично скрытой и полностью скрытой моделью. Ширина обводки 0 отключает контур и свечение.
Для отдельной проверки подкраски:
ncl_fx set outline 0
ncl_fx set glow 0
Для проверки контура и свечения:
ncl_fx set fill 0
ncl_fx set outline 2
ncl_fx set glow 1
Для деформации геометрии и разделения RGB:
ncl_fx set fill 0
ncl_fx set outline 0
ncl_fx set glow 0
ncl_fx set glitch 1
ncl_fx set glitch_speed 12
Команда ncl_fx set glitch_speed 0 останавливает рисунок. Измените glitch_seed для другой деформации. Значение glitch 0 отключает глитч. Проверьте ncl_fx set dissolve 0.5 и ncl_fx set noise 0.5 отдельно, затем вместе с подкраской, обводкой и глитчем. Значение 1 для любого из этих двух параметров полностью убирает поверхность и ее эффекты. Повторите проверки с ncl_fx program weapon_finish, ncl_fx spawn ak47 и ncl_fx spawn chick.
Для проверки вне PVS оставьте модель в другой комнате или за границей области карты и сравните ncl_fx pvs 1 и ncl_fx pvs 0. Второй обычный клиент должен сохранять штатные правила видимости. Ограничения GameDLL и максимальное число сущностей в одном пакете движка остаются в силе. Кэш видимости GameDLL может ненадолго сохранять недавно видимую сущность после отключения флага. Консоль показывает заданный флаг передачи и результат привязки материала; проверка изображения вне PVS требует подключенных клиентов и не выполняется автоматически.
Создайте каталог build/materials-test. Запустите компилятор из корня репозитория, указав каталоги установленного AMX Mod X и NextClientServerApi:
amxxpc test_support/plugins/nextclient_materials_test/nextclient_materials_test.sma "-i<amxx>/scripting/include" "-i<api>/addons/amxmodx/scripting/include" "-obuild/materials-test/nextclient_materials_test.amxx"
В Windows используется amxxpc.exe. В WSL компилируйте копию исходника и заголовков на файловой системе Linux: 32-битный компилятор AMXX несовместим с некоторыми операциями DrvFs. ReAPI не требуется. Для проверки пресета используйте matgen check с актуальными встроенными манифестами клиента. Имена всех текстур штатных моделей в пресете учитывают регистр.