В отличии от "БПО" в "Лисе" очень сильно расширились возможности настроек визоров, попытаюсь объяснить что к чему.
- Все файлы, отвечающие за их настройку, лежат тут: set\vision\vision.set - распределение файлов для сингла и МП.
- settings.set - определение юнитов, оружия, с которого ведут стрельбу, и настройка отображения зон видимости при клике на враге
- generic.inc - основные макросы
- mp.inc, single.inc - конфиги для сингла и МП.
Итак, открываем mp.inc и что мы тут видим:
{"mp_soldier"
{uncover 5}
("vision_human" args 40)
{h_fov 90}
{v_fov 120}
{wide 2}
}
- mp_soldier - имя визора. Визор закрепляется за тем или иным юнитом. Для пехоты присваиваются в set\breed\, для остальных юнитов в properties или непосредственно в .def
- uncover - радиус в метрах, на которой юниту не закрывает обзор растительность. Чтобы пехотинцу, лежащему в кусте не мешал этот же куст.
- vision_human - вызов макроса vision_human из generic.inc и передача в него значения 40 для переменной %0
- h_fov горизонтальный сектор видимости в градусах
- v_fov верикальный сектор видимости в градусах
- wide параметр, который меняет форму визора вместо острого угла на параболу. Чем больше число, тем шире основание параболы.
Самым главным является вызов макроса. Именно в макросе формируются коэффициенты видимости от переданного параметра.
Код макроса vision_human:
(define "vision_human"
{radius %0}
{rules
{human 1
{firing 1.5
{firing_silent 0.1}
{firing_delisle 0.2}
{knife_ger 0.1}
{knife_rus 0.1}
{knife_union 0.1}
{f1 0.1}
{m18 0.1}
{m24 0.1}
{m24x5 0.1}
{m39 0.1}
{m61 0.1}
{mk1 0.1}
{molotov_coctail 0.1}
{n73at 0.1}
{pwm1 0.1}
{rg42x3 0.1}
{rpg40 0.1}
{rpg43 0.1}
{smoke 0.1}
{type_3_at 0.1}
{type_97 0.1}
{cover 1}
}
{cover 0.15
{crawl 0.1
{sniper 0.07}
{stealth 0.07}
}
}
{squat 0.85
{sniper 0.5}
{stealth 0.5}
}
{crawl 0.5
{still 0.45
{sniper 0.25}
{stealth 0.25}
}
{sniper 0.3}
{stealth 0.3}
}
{still 0.9}
{visible 1.3}
}
{cannon_01 1.1 ;heavy mgun, infantry mortar
{firing 1.3}
{visible 1.3}
{still 1}
}
{cannon_02 1.1 ;light gun
{firing 1.3}
{visible 1.3}
{still 1}
}
{cannon_03 1.4 ;middle gun
{firing 1.6}
{visible 1.6}
{still 1.2}
}
{cannon_04 1.5 ;heavy gun
{firing 1.7}
{visible 1.7}
{still 1.3}
}
{cannon_05 2 ;howitzer
{firing 2.5}
{visible 1.7}
{still 1.8}
}
{vehicle_00 1.3 ;moto
{firing 1.5}
{visible 1.5}
{still 1.3}
}
{vehicle_01 1.4 ;jeep
{firing 1.6}
{visible 1.6}
{still 1.2}
}
{vehicle_02 1.5 ;light armoredcars
{firing 1.7}
{visible 1.7}
{still 1.3}
}
{vehicle_03 1.5 ;light SPA, armoredcars, trucks
{firing 1.7}
{visible 1.7}
{still 1.3}
}
{vehicle_04 1.6 ;light tanks
{firing 1.8}
{visible 1.8}
{still 1.4}
}
{vehicle_04_spa 1.7 ;middle SPA
{firing 1.9}
{visible 1.9}
{still 1.5}
}
{vehicle_05 1.8 ;middle tanks
{firing 2}
{visible 2}
{still 1.6}
}
{vehicle_06 2 ;heavy tanks
{firing 2.2}
{visible 2.2}
{still 1.8}
}
{vehicle_07 1.5 ;rocket artillery
{firing 2.2}
{visible 1.5}
{still 1.3}
}
}
{mods
{stand 1}
}
)
radius %0 - общий радиус сектора визора, %0 - переменная, которая передается при его вызове.
Все цифры, которые идут ниже, - это коэффициенты к этому радиусу. Т.е. если радиус при вызове был задан 40 метров, то при {human 1} мы будем видить человека на 40 метрах, при {human 2} - на 80, при {human 0.5} - на 20 метрах. При этом, если есть какие-то другие параметры, опеределяющие положение бойца, оружие, с которого ведется огонь, - то модификаторы берутся внутренние.
Простой пример
{rules
{human 1
{firing 1.5
{f1 0.1}
}
{cover 0.15
{crawl 0.1
{sniper 0.07}
}
}
{squat 0.85
{sniper 0.5}
}
{crawl 0.5
{still 0.45
{sniper 0.25}
}
{sniper 0.3}
}
{still 0.9}
{visible 1.3}
}
Здесь описано, что боец обнаружится на 1, если он
- стреляет(firing) - 1.5, если кидает гранату(firing -> f1) - 0.1,
- скрытый в кустах(cover) - 0.15,
- скрытый в кустах и ползающий (cover -> crawl) - 0.1,
- скрытый в кустах ползающий снайпер(cover -> crawl -> sniper) - 0.07,
- сидящий(squat) - 0.85, сидящий снайпер(squat -> sniper) - 0.5,
- в положении лежа(crawl) - 0.5,
- в положении лежа неподвижный(crawl -> still) - 0.45,
- в положении лежа неподвижный снайпер(crawl -> still -> sniper) - 0.25,
- ползающий снайпер(crawl -> sniper) - 0.3,
- неподвижный(still) - 0.9,
- исчезает после любого обнаружения(visible) - 1.3
Это был пример для пехоты. Дальше еще проще - остальные юниты.
Код:
{vehicle_05 1.8 ;middle tanks
{firing 2}
{visible 2}
{still 1.6}
}
vehicle_05 - это юнит, у которого в .def в блоке props прописано vision_lev05. Соотношения vehicle_05 -> vision_lev05 настраивается в блоке {terms ...} в settings.set. Здесь же настраивается связи для стрелкового оружия\гранат. В блоке {ranges ...} прописываются те сектора, которые вы хотите видеть при клике на вражеском юните. В оригинале это 2 сектора, на пехоту и на тяжелые танки.
Кроме макроса vision_human, есть и другие макросы, для оптики, офицера и т.д., они соответсвенно вызываются в нужных визорах. Вы также можете создать свои.
Список визоров
- human - танкисты, гражданские
- mp_soldier - бойцы
- mp_officer - офицер
- mp_sniper - снайпер
- mp_specnaz - разведчик
- soldier_focused - визор для снайпера или офицера, когда те целятся. Не путать с круговым визором, бегающим за прицелом.
- rifle_telescope - визор снайперки
- field_glass - бинокль
- cannon_main - основной визор для пушек
- cannon_mgun - основной визор для станковых пулеметов
- cannon_main-far - основной визор для гаубиц, минометов, флак 18
- cannon_crew - дополнительный визор расчета для пушек, минометов
- vehicle_main - машины
- vehicle_top_mgun - визор зенитного пулеметчика
- vehicle_top_turret - визор пулемета для hetzer
- moto_crew - экипаж мотоцикла
- moto_around - круговой визор для мото
- tank_main-l - основной визор для легких танков
- tank_main-m - основной визор для средних танков
- tank_main-h - основной визор для тяжелых танков
- tank_driver - визор маханика-водителя
- tank_around-l, tank_around-m, tank_around-h - круговые визоры для легких, средних, тяжелых танков.