PDA

View Full Version : Как менять точность выстрелов?


umka01
12-09-2008, 06:29 PM
Вот столкнулся с проблемой. Где и какие параметры нужно изменить, что бы изменить точность попадания выстрелов во вражеский корабль. Пытался менять параметры в папке Weapon, но ничего не изменилось.
Как пример, в моде Фриспейс импульсное оружие имеет эффект промаха по крупным кораблям. Я хочу добиться такого эффекта в моде Вавилон 5, как это было в фильме, а не 100% точность как мов моде.

Кто в курсе этих дел, отпишитесь, только подробно, пожалуйста.:friends:

Ten
12-09-2008, 07:15 PM
За точность попаданий отвечает функция setAccuracy, которая вызывается в .wepn-файле следующим образом:

setAccuracy(<vObjectType>, <bEnable>, {<vFamilyName1> = <fValue1>}, {<vFamilyName2> = <fValue2>}, ... , {<vFamilyNameN> = <fValueN>});

Параметры:

<vObjectType> - переменная-объект (точнее, таблица), представляющее новое оружие. Указывается переменная NewWeaponType, т.к именно её мы инициализировали несколькими строками выше.

<bEnable> - включение/выключение данной настройки точности. 1 означает, что корабль будет обладать ею с самого начала, 0 – что эта особенность будет добавлена позднее по ходу игры.

<vFamilyName1>, <vFamilyName2>, ... <vFamilyNameN> - название семейства кораблей.
<fValue1>, <fValue2>, ... <fValueN> - множитель точности против данного семейства кораблей. Число с плавающей точкой, от 0 (минимальная, точнее, орудие даже не будет стрелять по указанному семейству) до 1 (не промахивается).

// UPD:
Просьба привести название корабля, точность орудий которого ты хочешь изменить. Или название оружия.

umka01
12-10-2008, 12:59 PM
Спасибо за оперативный ответ, но если чесно, то ничего из этого не понял:D, так как слабоват в этом. Только не делю как начал разбираться:cool::cool::cool:

Хочу изменить параметры точности в Моде Вавилон 5, всех кораблей, крупных. Что бы точность снизить на 50%.

Те параметры что ты привел ниже..... я их не видел в веп файле.

например..... Омега. Захожу в луашный файл, открывая его через блокнот, но таких параметров там нет.
Путь к луашке??? Data\Weapon\***.lua ??????????? там где менять надо???? Обьясни как можно подробнее. Может разрабы мода даже не внесли таких параметров, предполагая единую точность для всех кораблей, без возможности изменения??

Prisoner
12-10-2008, 02:15 PM
Может разрабы мода даже не внесли таких параметров, предполагая единую точность для всех кораблей, без возможности изменения??
:D:D
утебя раскомпилированый скрипт? или нет?

Ten
12-10-2008, 06:21 PM
Не, раскоппилированый скрипт у тебя :) А там они вполне текстовые и компилируются на лету.

Итак, Омега. Такой корабль нашёлся в папке <ХВ2>\Data\Ship\EAR_Omega (вообще, их там несколько, но принцип один и тот же). Открываем .ship-файл в поисках вызова функции StartShipWeaponConfig, т.к. именно она навешивает на корабль соответствующие орудия. Получаем целую россыпь:

StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseFront", "Weapon_FrontTurret01", "Weapon_FrontTurret01")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseFront", "Weapon_FrontTurret02", "Weapon_FrontTurret02")
StartShipWeaponConfig(NewShipType, "Ear_OmegaBeamFront", "Weapon_FrontTurret01", "Weapon_FrontTurret01Slave")
StartShipWeaponConfig(NewShipType, "Ear_OmegaBeamFront", "Weapon_FrontTurret02", "Weapon_FrontTurret02Slave")

StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideFrontRight", "Weapon_SmallTurret01", "Weapon_SmallTurret01")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideFrontLeft", "Weapon_SmallTurret02", "Weapon_SmallTurret02")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideFrontLeft", "Weapon_SmallTurret03", "Weapon_SmallTurret03")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideFrontRight", "Weapon_SmallTurret04", "Weapon_SmallTurret04")

StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideMidRight", "Weapon_SmallTurret05", "Weapon_SmallTurret05")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideMidLeft", "Weapon_SmallTurret06", "Weapon_SmallTurret06")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideMidLeft", "Weapon_SmallTurret07", "Weapon_SmallTurret07")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideMidRight", "Weapon_SmallTurret08", "Weapon_SmallTurret08")

StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideBackRight", "Weapon_SmallTurret09", "Weapon_SmallTurret09")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideBackLeft", "Weapon_SmallTurret10", "Weapon_SmallTurret10")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideBackLeft", "Weapon_SmallTurret11", "Weapon_SmallTurret11")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseSideBackRight", "Weapon_SmallTurret12", "Weapon_SmallTurret12")

StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseRear", "Weapon_Rear01", "Weapon_Rear01")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseRear", "Weapon_Rear02", "Weapon_Rear02")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseRear", "Weapon_Rear03", "Weapon_Rear03")
StartShipWeaponConfig(NewShipType, "Ear_OmegaPulseRear", "Weapon_Rear04", "Weapon_Rear04")

Я не зря выделил второй параметр – собственно, это и есть подпапки в папке <ХВ2>\Data\Weapon. В подпапках живёт единственный .wepn-файл с конфигурацией заданого оружия.

Отсеиваем дубли из кода выше и получаем 9 разных с точки зрения игры типов орудий:
Ear_OmegaPulseFront
Ear_OmegaBeamFront
Ear_OmegaPulseSideFrontLeft
Ear_OmegaPulseSideFrontRight
Ear_OmegaPulseSideMidLeft
Ear_OmegaPulseSideMidRight
Ear_OmegaPulseSideBackRight
Ear_OmegaPulseSideBackLeft
Ear_OmegaPulseRear

Хмык... Ладно, качаем. Выясняется, что все файлы <ХВ2>\Data\Weapon\EAR_OmegaPulseSide*\EAR_OmegaPulseSide*.wepn имеют одинаковые вызовы setAccuracy, а именно:

setAccuracy(NewWeaponType, 1,
{
Fighter = 0.027, -- Prob(hit/s) = 0.06
damage = 1,
},
{
Corvette = 0.4, -- Prob(hit/s) = 0.133
damage = 1,
},
{
munition = 0.18, -- Prob(hit/s) = 0.4
damage = 1,
},
{
Frigate = 0.78,
damage = 1,
},
{
SmallCapitalShip = 0.88,
damage = 1,
},
{
BigCapitalShip = 0.96,
damage = 1,
},
{
Mothership = 1.0,
damage = 1,
},
{
Capturer = 0.5,
damage = 1,
},
{
Resource = 0.5,
damage = 1,
},
{
ResourceLarge = 0.75,
damage = 1,
},
{
SubSystem = 0.5,
damage = 1,
})

Конечно, можно всё это записать одной строкой, но так гораздо нагляднее. Например, сразу видим, что против семейства SmallCapitalShip точность боковых орудий составляет 88% (0.88), а против BigCapitalShip – 96% соответственно. Если это много – корректируем :) Настройки точности против других семейств также не кусаются при изменении. Я практически ничего не знаю о сериале и понятия не имею, кто и как должен стрелять, но думаю, что с этим у вас трудностей точно не возникнет :) В других .wepn-файлах иные настройки точности, но правятся они аналогичным образом.

Чтобы узнать, к какому семейству принадлежит тот или иной корабль, нужно открыть его файл и глянуть на строчку NewShipType.AttackFamily. Для Омеги, например, она выглядит следующим образом:

NewShipType.AttackFamily = "BigCapitalShip"


umka01, как видишь, ничего тут сложного нет :) Успехов!

umka01
12-11-2008, 06:11 PM
Спасибо, братан, что помогаешь, но у меня есть еще пару вопросов, которые я не могу понять :cool:

1. Что такое Декомпилировать??
2. Как и чем это делают (прога специальная или как)??

Вот то, что я вижу, когда открываю wepn файл через блокнот:


-- Omega Front Pulse Cannons (Yellow)
--
-- Edited by Zeelich (15/03/2007)
-- Edited by CnlPepper (14/10/2007)

StartWeaponConfig(NewWeaponType,
"AnimatedTurret", -- Type
"Bullet", -- FireType
"PulseCannon_Yellow_Large", -- FireName
"Normal", -- Activation
2500, -- FireSpeed
7000, -- FireRange
0, -- FireRadius
0, -- FireLifetime
0, -- FireMisc1
0, -- FireAxis
1, -- MaxEffectsSpawned
1, -- UseVelocityPred
0, -- CheckLineOfFire
0.25, -- FireTime
1.0, -- BurstFireTime
1.5, -- BurstWaitTime
1, -- ShootAtSecondaries
1, -- ShootAtSurroundings
60, -- MaxAzimuthSpeed
50, -- MaxDeclinationSpeed
0.1, -- SpeedMultiplierWhenPointing
"Normal", -- WeaponShieldPenetration
1, -- TrackOutOfArc
0, -- UseCodeRed
0) -- BlowThroughHealth

AddWeaponResult(NewWeaponType,
"Hit",
"DamageHealth",
"Target",
282,
282,
"")

setPenetration(NewWeaponType, 5, 1,
{
MediumArmour = 1.1,
},
{
PlanetKillerArmour = 0,
},
{
SubSystemArmour = 1,
},
{
ResArmour = 0.6,
})

setAccuracy(NewWeaponType, 1,
{
Fighter = 0.021875, -- Prob(hit/s) = 0.035
},
{
Corvette = 0.0375, -- Prob(hit/s) = 0.06
},
{
munition = 0.125, -- Prob(hit/s) = 0.2
})

setAngles(NewWeaponType,
0, -- cosMaxAnglesFromNorm
-60, -- MinAzimuth
60, -- MaxAzimuth
-5, -- MinDeclination
65) -- MaxDeclination

Как видишь, почти всех классов кораблей нет, только истребители, корветы и какой-то minition (за что он отвечает и на что влияет понять не могу, по английскому двоечником был :beer: ).

Я так понял, что можно вручную прописать остальные классы кораблей??
Главное правильно прописать???

Да, вот еще, под каждым классом кораблей в твоем примере есть такой параметр как Демейдж 1, за что он отвечает и что будет если поставить значение большее или меньшее. В моем примере такого нет, хотя это файл оригинал, я его прям с игры дернул.

umka01
12-12-2008, 06:32 PM
О-о, все получилось, спасибки дружище. Я просто взял и копирнул твой пример в свой файл и изменил процентовку и все заработало:friends:

Вот еще вопросик. Я уже видел тему на форуме соответствующую, но там как-то непонятно написано.
Я хочу и з одного мода перетащить кораблик в другой мод, вместе с оружием, или просто оружие перетащить.
Как это сделать, только обьясняй как ребенку, просто я в этом очень слаб.

Спасибо тебе человеческое заранее.:friends:

Ten
12-12-2008, 07:05 PM
Корабли лежат в папке Ship, оружия – в папке Weapon, подсистемы – в Subsystem. Узнать какие оружия использует корабль можно по вызовам StartShipWeaponConfig в .ship-файле (название оружия – второй параметр), выше я про это писал под катом. В случае подсистем это вызовы StartShipHardPointConfig (названия подсистем – последние 8 параметров). Эти оружия и подсистемы находишь в одном моде и тащишь в другой с сохранением структуры каталогов. Потом нужно подправить скрипты постройки и исследований той расы, которой ты хочешь приписать новый корабль. Блин, ещё там эффекты могут быть...

Слух, Умка, напиши какой корабль и куда перетащить. Это не так сложно, просто куча рутины и очень долго объяснять, если во всех подробностях. Мне Arkatneil уже задавал подобный вопрос, но за нехваткой времени я успешно про него забыл... где-то даже валялись результаты экспериментов, гляну.

umka01
12-15-2008, 04:16 PM
Хочу просто уметь из одного мода претягивать кораблики в другой мод. Ну... например из Звездных воен, какой нить имперский крупный кораблик пертянуть в Вавилон 5. Кстати исследования не обязательно для него делать. В В5 есть режим Capture\Testing. там на старте тебе дается небольшой флот кораблей, его можно менять в папке скриптс, стартфлитс. мне бы хватило, что бы можно было имперский крупный кораблик вписать в старт, ну а если и строить можно будут..... класс:cool:

И самое главное, как оружие из мода впихнуть в другой мод???

Респект тебе, дружище.

Вообще-то я с Pandorazero по телефону консультируюсь, но он силен только в моделировании, а втаких вещах как мне надо не сильно:friends::friends: