Russian Homeworld Wiki
Advertisement

Содержимое файла[]

Здесь будет рассмотрено содержимое файлов *.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"
)

Ссылки[]


Advertisement