Форумы Homeworld3.RU

Форумы Homeworld3.RU (http://www.homeworld3.ru/forum/index.php)
-   Верфи близ Сарума [HW2 Modding] (http://www.homeworld3.ru/forum/forumdisplay.php?f=24)
-   -   Как менять точность выстрелов? (http://www.homeworld3.ru/forum/showthread.php?t=1599)

umka01 12-09-2008 06:29 PM

Как менять точность выстрелов?
 
Вот столкнулся с проблемой. Где и какие параметры нужно изменить, что бы изменить точность попадания выстрелов во вражеский корабль. Пытался менять параметры в папке Weapon, но ничего не изменилось.
Как пример, в моде Фриспейс импульсное оружие имеет эффект промаха по крупным кораблям. Я хочу добиться такого эффекта в моде Вавилон 5, как это было в фильме, а не 100% точность как мов моде.

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

Ten 12-09-2008 07:15 PM

Re: Как менять точность выстрелов?
 
За точность попаданий отвечает функция setAccuracy, которая вызывается в .wepn-файле следующим образом:

Lua:

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

Re: Как менять точность выстрелов?
 
Спасибо за оперативный ответ, но если чесно, то ничего из этого не понял:D, так как слабоват в этом. Только не делю как начал разбираться:cool::cool::cool:

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

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

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

Prisoner 12-10-2008 02:15 PM

Re: Как менять точность выстрелов?
 
Quote:

Originally Posted by umka01 (Post 29963)
Может разрабы мода даже не внесли таких параметров, предполагая единую точность для всех кораблей, без возможности изменения??

:D:D
утебя раскомпилированый скрипт? или нет?

Ten 12-10-2008 06:21 PM

Re: Как менять точность выстрелов?
 
Не, раскоппилированый скрипт у тебя :) А там они вполне текстовые и компилируются на лету.

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

Lua-код под катом

Я не зря выделил второй параметр – собственно, это и есть подпапки в папке <ХВ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, а именно:

Lua-код под катом

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

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

Lua:

NewShipType.AttackFamily = "BigCapitalShip"

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

umka01 12-11-2008 06:11 PM

Re: Как менять точность выстрелов?
 
Спасибо, братан, что помогаешь, но у меня есть еще пару вопросов, которые я не могу понять :cool:

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

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


Lua:

-- 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

Re: Как менять точность выстрелов?
 
О-о, все получилось, спасибки дружище. Я просто взял и копирнул твой пример в свой файл и изменил процентовку и все заработало:friends:

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

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

Ten 12-12-2008 07:05 PM

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

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

umka01 12-15-2008 04:16 PM

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

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

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

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


All times are GMT +3. The time now is 01:12 PM.