Содержимое файла[]
Здесь будет рассмотрено содержимое файлов *.wepn.
Типы данных[]
В дальнейших описаниях вместо конкретных данных будут встречаться записи вроде bFlag, что является "кодовым" обозначением переменной, состоящей из буквы для типа переменных и слова для названия.
- b, boolean - может принимать значения "true/да"(1) или "false/нет"(0);
- i, integer - только целые положительные числа;
- f, float - можно вписывать дроби;
- s, string - текстовые данные, писать в "кавычках";
Функция StartWeaponConfig()[]
StartWeaponConfig( <sWeaponName>, -- ссылается на оружие; обычно это NewWeaponType(новый тип оружия);
<sWeaponType>, -- как пушка отслеживает цели;
Возможны значения:
- "Gimble" - указывает на то, что это не оружейная башня, но может нацеливаться на цели в пределах определённого конуса;
- "AnimatedTurret" - указывает, что оружие установлено как видимая, вращающаяся оружейная башня;
- "Fixed" - указывает что пушка может стрелять только в зафиксированном(не меняющемся) направлении, как ионная пушка на ионном фрегате;
<sWeaponFireType>, -- тип снаряда;
Возможны значения:
- "InstantHit" - обычно используется лучевым оружием. Ущерб(чужому кораблю) и прочие эффекты(?) появляются сразу, как только эта пушка начинает стрелять;
- "Bullet" - указывает на неуправляемый снаряд;
- "Mine" - указывает на снаряд, который размещается там же, где находится корабль, и взорвется, если вражеские корабли подлетят к нему слишком близко;
- "Missile" - указывает на управляемый снаряд;
- "SphereBurst" - указывает на область действия оружия; "SphereBurst" определяет результат промаха или попадания по цели. Смотри для примера hgn_smallemp.wepn и hgn_smallempburst.wepn;
<sWeaponFireName>, -- название/вид сценария огня (*.wf - Data\Scripts\weaponfire), который определяет эффекты;
<sActivation>, -- указывает на ситуацию, в которой оружие будет использовано;
Возможны значения:
- "Normal" - указывает, что орудие постоянно используется в течении атаки;
- "Special Attack" - указывает, что орудие может быть использовано только после исследования, как обычная или спец-атака;
- "Normal Only" - указывает, что орудие используется только тогда, когда специальная атака не исследована;
- "Dropped" - указывает на то, что орудия стреляют только тогда, когда используется кнопка «Поставить мины»;
<fWeaponFireSpeed>, -- указывает на скорость снаряда;
Для "Missile" - это начальная скорость. Для "InstantHit" and "SphereBurst" это значение начинается с 0.
<fWeaponFireRange>, -- максимальная дистанция до цели, при которой орудие может стрелять (но не максимум полёта снаряда); <fWeaponFireRadius>, -- только для "SphereBurst": определяет радиус сферы поражения; <fWeaponFireLifetime>, -- только для лучевого оружия: время жизни луча в секундах;
<fWeaponFireMisc1>, -- только для лучевого оружия: задержка перед появлением луча;
То есть, после наведения на цель, лучевое оружие сначала заряжается и только потом стреляет (кстати, если цель умрет во время зарядки оружия, то это приведет к срыву залпа и потере огневой мощи).
<iWeaponFireAxis>, -- только для "Missile": направление выбрасывания ракет;
Возможны значения:
- 0 - перед собой;
- 1 - влево;
- 2 - вверх;
<iMaxEffectsSpawned>, -- максимальное количество эффектов повреждения, которые порождаются во время стрельбы оружия: если fWeaponFireLifetime = 0, то 1 эффект будет порожден.; <iUseVelocityPred>, -- орудие будет вести/следить за целью, если это возможно; иначе цель будет атакована; <iCheckLineOfFire>, -- если это возможно, орудие будет проверять перед стрельбой наличие союзников на линии огня; <fFireTime>, -- задержка между выстрелами в секундах; <fBurstFireTime>, -- длительность залпа в секундах: поделив это значение на iFireTime, получим кол-во выстрелов за один залп; <fBurstWaitTime>, -- задержка между залпами в секунду; <iShootAtSecondaries>, -- если орудие не сможет атаковать главную цель, то оно будет атаковать близлежащие цели; <iShootAtSurroundings>, -- если орудие не может стрелять по данным целям, то оно будет искать противников, которые находятся рядом.(МЕДЛЕННО!); <fMaxAzimuthSpeed>, -- скорость вращения башни орудия, градусов в секунду; <fMaxDeclinationSpeed>, -- скорость подъема/опускания ствола, градусов в секунду; <fSpeedMultiplierWhenPointingAtTarget>, -- коэффициент скорости при наведении на цель; используйте значения меньше 1, чтобы сделать лучи медленнее цели;
<sWeaponShieldPenetration>, -- эта функция не содержит очевидного эффекта в использовании; случайность прохождения снаряда через силовой щит, поставленный setPenetration функцией;
Возможные значения:
- "Normal"
- "Enhanced"
- "Bypass"
<iTrackTargetsOutsideRange>, -- если это возможно, орудие следит за целью, даже если она не находится в зоне стрельбы; <fWaitUntillCodeRedState>, -- оружие не сможет стрелять, пока анимация не завершится (к примеру, открытие ракетных люков); <iInstantHitThreshold>, -- если цель имеет меньше здоровья, чем снимает одним выстрелом, луч пройдёт через цель; )
Функция AddWeaponResult()[]
AddWeaponResult(NewWeaponType, "Hit", -- "Miss"; "DamageHealth", --"Push", "SpawnWeaponFire", "Disable", "LatchWithTarget"; "Target", 135, --damage 135, --damage "" --"Hgn_BurstCannonBurst", "Hgn_SmallEMPBurst", "Vgr_SmallEMPBurst"; )
Функция setPenetration()[]
setPenetration(NewWeaponType, 5, 1, {ResArmour = 0.2,}, ... --watch in familylist.lua; {TurretArmour = 0.45,} )
Функция setAccuracy()[]
Описывает точность попадания по цели.
setAccuracy состоит из
( <vObjectType>, <bEnable>, {<vFamilyName1> = <fValue1>,}, {vFamilyName2> = <fValue2>,}, {<vFamilyNameN> = <fValueN>,} )
Пример
setAccuracy( NewWeaponType, 1, {Fighter = 0.25,}, {Corvette = 0.4,}, {munition = 0.2,}, {Frigate = 0.6, damage = 1,}, {SmallCapitalShip = 0.6, damage = 1,}, {BigCapitalShip = 0.6, damage = 1,}, {ResourceLarge = 0.6, damage = 1,} )
Описание
- <vObjectType>: как правило, это NewWeaponType.
- <bEnable>: включает/отключает способность. 0 означает, что способность будет включена при каких то условиях. 1 означает, что способность включена с самого начала.
- <vFamilyName1>-<vFamilyNameN>: имя семьи кораблей. Описано в data\scripts\familylist.lua.
- <fValue1>-<fValueN>: Множитель точности против названной семьи. Может быть между 0 и 1. 0 означает, что оружие не будет попадать по цели никогда. 1 означает, что оружие будет всегда попадать по цели.
Функция setAngles()[]
Описывает максимальные углы наведения, из которых: первое число - сектор наведения самого оружия (используется для Gimble)
Второе и третье - горизонтальное наведение
Четвертое и пятое - вертикальная наводка.
Пример: vgr_flechettecannonassaultfrigateleft (левая пушка штурмового фрегата)
setAngles(NewWeaponType, 0, -180, 13, -10, 60 )
Турель полностью обстреливает левую сторону (-180°), может немного заходить на правую (на 13°), имеет угол наклона ствола -10°, и подъема 60°
Функция setMiscValues()[]
Отвечает за взаимодействие оружия со скриптом корабля или подсистемы (файлы .events). Например: наличие этой функции в vgr_heavyfusionmissilelauncherbc (ракеты крейсера) отвечает за поочередный запуск ракет, а её отсутствие может привести к выстрелу из всех шахт залпом и одновременно.
Для пушек аналогично: наличие - выстрел из первого ствола, затем из второго. отсутствие - стреляет из двух одновременно.
Важно: в файле events прописано количество пусковых точек, а так же время активации их эффектов и звука. Отсутствие setMiscValues() приводит к пустой работе эффектов
setMiscValues(NewWeaponType, 0, 0 )
Функция addAnimTurretSound()[]
addAnimTurretSound(NewWeaponType, "Data:Sound/SFX/ETG/SPECIAL/SPECIAL_ABILITIES_TURRET_ON" )
Ссылки[]
- Homeworld 2 Tutorials: StartWeaponConfig - тема на хв3.ру;