Это небольшой, но гибкий плагин, позволяющий фильтровать и добавлять объекты на карту, так же как Stripper2 для Half-Life 1, от botman. Вы можете отфильтровать объекты по определённым значениям или регулярными выражениями, или объявлять новые объекты, которые нужно добавить. Вы также можете указать на карте эту конфигурацию. 2. Установка
Во-первых, убедитесь, что у вас установлены все необходимые инструменты. Вам необходим Metamod:Source 1.8.6 или выше.
*Примечание. Более ранние версии Stripper: Source, при использовании ранних версий Metamod: Source, вы можете найти, пройдя по этой ссылке. 3. Конфигурация
Существуют два основных файла конфигурации Stripper:Source. Первый это addons/stripper/global_filters.cfg, который запускается при каждой смене карты. Второй позволяет настроить конфигурацию для каждой карты в addons/stripper/maps/.cfg (например, addons/stripper/maps/l4d_hospital01_apartment.cfg). Он будет использовано только при запуске конкретной карты.
В Stripper:Source конфигурационные файлы хранятся в следующем формате:
Заметьте, что синтаксис не является гибким - вы должны отделить каждый пункт или знак на отдельную строку, как показано выше. Каждый блок должен находиться между { и } содержащий описание объекта. Каждая строка в блоке описывает свойства объекта. Два свойства на одной строке должны находиться в кавычках и разделяться пробелом. Первое свойство в кавычках ключ (key), второе значение (value). Например, этот блок описывает заложников:
Чтобы добавить объект (entity) используйте маркер "add:". Обратите внимание, что вам не нужно указывать этот маркер для каждого блока, он будет действовать, пока вы не воспользуетесь другим маркером (например, "filter:"). В приведённом ниже примере на карту добавляются заложники:
Чтобы отфильтровать объекты на карте, каждый блок должен содержать объекты, которые вы хотите убрать. Например, следующий блок будет удалять любой объект, являющийся заложником:
Код
filter: { "classname" "hostage_entity" }
Также вы можете указать различные параметры, пример отфильтровать только одно заложника, которого мы добавили ранее см. выше:
Наконец,вы можете использовать регулярные выражения для сравнения структур. Дополнительную информацию о регулярных выражениях можно узнать посетив Perl Regex. Это позволит вам определить модели для сравнения. Например, этот удаляет любые лица и любые объекты физического типа:
Код
filter: { "classname" "/prop_phys.*/" }
Обратите внимание, что правила выполняются в указанном порядке, правила добавленные в будущем могут фильтровать предыдущие. 4. Новинка! - Расширенная фильтрация/Модификация
Версия 1.1 Stripper:Source добавляет новый мощный метод фильтрации объектов с помощью блока свойств. Это добавляет новую директиву под названием "modify." Модификация блоков имеют четыре под-блока: Match, Replace, Delete, Insert. Под-блок Match позволяет указать, определённые свойства блоков для поиска. Для каждого подобранного блока, замещает, удаляет и вставляет под-блоки.
Эта конфигурация заменит все мусорные баки заложниками. Как это работает?
Match: Соответствие всех объектов, которые имеют перечисленные модели и имя класса. Вы можете использовать регулярные выражения (//) для любых ключей и значений.
Replace: Заменяет значения любых свойств, которые имеют одинаковое ключевое имя. В примере выше "prop_physics_multiplayer" станет "hostage_entity".
Delete: Удаляет любые свойства, соответствующие и ключевому имени и значению строки. Значение может иметь строка регулярных выражений (//). В этом примере, модель мусорного ведра, удаляется.
Insert: Определяет дополнительную пару ключей и значений для вставки. В примере, произвольный коэффициент масштабирования добавляется к объекту.
"Match" является обязательным под-блоком, а Replace, Delete, Insert являются дополнительными. Вы можете указать их в любом порядке, однако они всегда обрабатываются в таком порядке. Match первый, затем Replace, затем Delete и Insert последним. 5. Свойства объектов
К сожалению, я не знаю, все свойства объектов. Таким образом, чтобы помочь пользователям, вы можете использовать команду: "stripper_dump" (требуется RCON или доступ к консоле сервера). Это сбросит файл в аaddons/stripper/dumps с именем карты, который содержит каждый объект и все его свойства, которые инициализируются при загрузке карты. Этот файл будет примерно 120-200 KB и обеспечит всем необходимым для удаления или добавления объектов. 6. Скриншоты
Заложник на карте de_dust
Больше нет лишних объектов!
Больше нет лишних объектов, часть 2!
Мусор может быть заменен заложниками
7. Авторы, Лицензия, Благодарности
Идея пришла из stripper2 от Ботмена (ссылка в 1. Введение). Я получил начальную идею этого плагина от Mani, который обнаружил, что, вызывая новые объекты строк через LevelInit, Вы можете изменить список объектов карты.
Регулярные Выражения осуществлены с PCRE (Perl Compatible Regular Expression Library). Благодарю Freecode для скриншоты, и PM OnoTo за то что сделал SourceHook настолько удивительным.
2011/04/15 - Version 1.2.2 - Automated builds, updated for latest OB engine. 2009/10/13 - Version 1.2.1 - Greatly improved map parsing performance.2009/06/06 - Version 1.2 - Separated game logic from stripper logic (separate binaries). - Removed IStripper interface (this was pretty pointless, I'm sure no one used it). - Added L4D support. - Cleaned code to use soft tabs. - Imported PCRE-7.9. 2007/10/07 - Version 1.1b - Now runs on Metamod:Source 1.6 and 1.4, as well as TF2/Orange Box. 2006/10/05 - Version 1.1a - Fixed old filters not working correctly. 2006/08/15 - Version 1.1 - Now requires Metamod:Source 1.3. - Added new syntax for more flexible entity modification. - Improved load-time performance. - Fixed long paths being chopped off. - Cleaned up source code and updated to PCRE 6.7. 2006/01/07 - Version 1.01 - Now requires Metamod:Source 1.2. - Supports other stripper-style plugins modifying the map state. 2005/12/10 - Version 1.00 - Initial Release
Краткий мануал чё да как?! Для тех кто не понял выше написанного.
Рассмотрим несколько примеров. Все манипуляции пишем в файле конфигурации в глобальном или для конкретной карты это уже вам решать.
Для начала обзаведитесь плагином для sourcemod Dev Cmds (1.1) Плагин содержит несколько полезных команд, которые в дальнейшем нам очень сильно понадобятся.
Для начала рассмотрим несколько простых функций. 1) Удаление объектов.
Мы хотим удалить какой-то объект, скажем телевизор на первой карте "Нет милосердию"
. Для удаления нам необходимы какие-то данные об объекте. Для этого наводим курсор на телевизор и вводим команду: sm_ent (команда плагина Dev Cmds см. выше) видим следующую информацию об объекте: 157 Class: prop_physics Targetname: monitor3 Model: models/props_interiors/tv.mdl
И уже сейчас мы можем отфильтровать объект по модели:
Удалятся все объекты содержащие эту модель. Но в том случае, если скажем таких объектов несколько, а нам нужно удалить определённый, а остальные оставить данная функция не подойдёт. Как же быть?!
Для этого в игре для каждого объекта существует свой уникальный идентификатор, известный как "hammerid" Но как же его узнать?! Плагинов для его определения я не нашёл. Ну, это и не надо. Чтобы определить hammerid объекта воспользуемся текстовым редактором и его поиском. В качестве текстового редактора я посоветую воспользоваться просмотрщиком (Lister) встроенного в Total Commander, с другими редакторами всегда возникали какие-то проблемы с прогрузкой файлов, всё тормозила и зависало, если не тормаза то некорректное отображение.
Вся информация об объектах храниться в файле с расширением .bsp с именем карты в директории \maps (D:\Games\Left 4 Dead\l4d\left4dead\maps)
В нашем случае с телевизором открываем l4d_hospital01_apartment.bsp редактором и врубаем поиск (Ctrl F) Для удобного отображения в редакторе во вкладке вид выбираем "Только текст" или "UTF-8"
Ищем объект по модели models/props_interiors/tv.mdl По запросу нашёл 9 совпадений какой же наш?! Для определения воспользуемся координатами.
Полезная информация об объекте:
Код
{ "origin" "1871.66 1214.28 190.5" - координаты "rendercolor" "255 255 255" - цвет "model" "models/props_interiors/tv.mdl" - модель (по ней и искали) "angles" "0.263672 180.791 -0.307622" - углы поворота "classname" "prop_physics" - класс объекта (при не совпадение класса, который должен быть -> объект не появится) "count" "1" - количество объектов для одной модели (для оружия) "solid" "6" - плотность (0 проходим сквозь объект) "fadescale" "0" - если 1 то объект не будет виден издалека на низких настройках "hammerid" "16425" - уникальный идентификатор }
Уже в игре вблизи телевизора вводим в консоль команду: getpos или getpos_exact - стандартные команды игры. В ответ нам выведется текущее наше расположение setpos 1741.528442 1143.632324 363.190430 и угол под которым мы смотрим setang 42.378380 -94.203163 0.000000
Возвращаемся в редактор и по полученным координатам ищем близкие значения координат объекта. В моём случае это самый первый объект. Далее отфильтровываем его по hammerid
Небольшое изменение для Suicide Blitz. Для этого нам понадобится Stripper Source, ссылка на скачивание см. выше.
Изменение коснётся только первой карты, а именно включение функционала кнопки запуска лифта. Сохраняем файл конфига l4d_stadium1_apartment.cfg в директорию ..\Games\SERVER\l4d\left4dead\addons\stripper\maps\
Небольшое фикс для I Hate Mountains. Для этого нам понадобится Stripper Source, ссылка на скачивание см. выше.
Изменение коснётся только четвёртой карты, а именно исправлен баг с не разрушением здания краном. Сохраняем файл конфига l4d_ihm04_lumberyard.cfg в директорию ..\Games\SERVER\l4d\left4dead\addons\stripper\maps\
Небольшое фикс для Dead Echo. Для этого нам понадобится Stripper Source, ссылка на скачивание смотрите в первом посте. Изменение коснётся только 5-ой карты, исправлен баг с не рабочей кнопкой запуска генератора.
Сохраняем файл конфига l4d_de05_echo.cfg в директорию ..\left4dead\addons\stripper\maps\