Визоры

Материал из BestWay wiki
Перейти к: навигация, поиск

В отличии от БПО в Лисе очень сильно расширились возможности настроек визоров, попытаюсь объяснить что к чему.

Все файлы отвечающие за их настройку лежат тут 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, есть и другие макросы, для оптики, офицера и т.д., они соответсвенно вызываются в нужных визорах. Вы также можете создать свои.

Список визоров

wide2
No wide
  • 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_back - визор для кормового пулемета
  • tank_around-l, tank_around-m, tank_around-h - круговые визоры для легких, средних, тяжелых танков.