Перейти к контенту

[CoP] Ковыряемся в файлах


Рекомендуемые сообщения

Всем привет. Есть ещё такой вопрос.
Сцена, в которой бандит сначала разговаривает с ГГ, затем убивает с ружья двух наемников, которые стоят за ним на коленях. При разных ответах в диалоге -- разные условия (убить того или иного наемника либо же вступить в бой). 

 

Скрытый текст

 

[remark@bandit_leader]
anim = guard_na
target = story|actor
on_info = {+d_d_bandit_exodus} walker@bandit_leader_exodus
on_info2 = {+d_d_bandit_assault_fight} %=actor_enemy% -- если в диалоге выбран вариант "вступить в бой", то делаем бандита врагом ГГ;
on_info3 = {+d_d_bandit_assault_fight_with_merc} %=actor_enemy% -- то же самое, только по этому инфопоршню ещё и наёмники в бой срываются;
on_info4 = {+will_kill_balagur} remark@bandit_leader_kill_balagur -- при другом варианте уводим в схему "убить наёмника";
on_info5 = {+will_kill_ghost} remark@bandit_leader_kill_ghost -- то же самое, только другой наёмник;
danger = danger_condition@bandit_leader
combat_ignore_cond = {-d_d_bandit_assault_fight -d_d_bandit_assault_fight_with_merc} true -- игнорируем бой, чтоб не сагрился на наёмников, пока ГГ не выберет "вступить в бой";

 

[remark@bandit_leader_kill_balagur]
anim = guard_fire 
target = story|d_d_balagur_02 -- story_id из spawn_sections.ltx;
danger = danger_condition@bandit_leader
combat_ignore_cond = true
meet = no_meet
on_info = {+d_d_balagur_death_02} %+d_d_bandit_exodus% walker@bandit_leader_exodus

 

[remark@bandit_leader_kill_ghost]
anim = guard_fire 
target = story|d_d_ghost_02 -- story_id из spawn_sections.ltx;
danger = danger_condition@bandit_leader
combat_ignore_cond = true
meet = no_meet 
on_info = {+d_d_ghost_sniper_dead} %+d_d_bandit_exodus% walker@bandit_leader_exodus

 


И по этому спектаклю скопилась пара нерешённых вопросов:
1) При выборе варианта "убить такого-то наёмника" вся шайка бандитов, толпящаяся рядом становится друзьями, а оба наёмника - врагами; 
2) Бандит переходит в remark@bandit_leader_kill_***, но, несмотря на явно указанный story_id, не поворачивается в сторону наёмника, чтобы произвести по нему выстрел и вообще ведёт себя неадекватно. 

Впрочем, по второму вопросу есть пара идей - может, стоит подключать для связки промежуточный remark с анимкой guard, в которой бандит посмотрит на наёмника, а уж потом - remark с убийством? Или же пытаться увести его в walker, явно задать связку флагов walk-look, после чего приступить к убиению наёмника? Какой из этих способов вообще предпочтительнее и менее глючный в долгосрочной перспективе? 

Заранее спасибо!

Ссылка на комментарий

Добрый день.

Нужна небольшая помощь по правке файла gamemtl.xr из мода Anomaly 1.5.0

Знаю что эта тема по чистому ЗП и что есть специализированная тема по моему вопросу, но там последнее посещение в 2015 году, и моё сообщение вряд ли скоро заметят, если вообще обратят внимание.

Поэтому и прошу в этой теме.

В общем нужно исправление чтобы НПС не видели ГГ сквозь кусты, тонкие стены и так далее.

Сейчас у НПС ренгеновское зрение и они видят ГГ даже если в actor.ltx выставить transparency_threshold = 0.99

Если кто то может это исправить, то вот ссылка на сам файл gamemtl.xr - https://my-files.ru/soub1v

Ссылка на комментарий

Всем привет, помогите плиз разобраться с скриптом. Это фрагмент из скрипта мода Сталкер Аномалия 1.5 (3.0) на верстак с апгрейдом\ремонтом снаряжения.

Хотел убрать взаимоисключение апгрейдов. Я в скриптах не силен, но кое что накопал, если не ошибаюсь, то это этот фрагмент:

Скрытый текст

    local function check_same_group(gr,idx)
        local tbl = {
            [1] = 2,
            [2] = 1,
            [3] = 4,
            [4] = 3,
            [5] = 6,
            [6] = 5,
        }
        local oth = tbl[idx]
        local sec = self.upgr[gr][oth] and self.upgr[gr][oth].section 
        return not (sec and self.inst_upgr[sec])
    end
    
    local function check_upgr_scheme(gr,idx)
        local tbl = {
            [3] = {1,2},
            [4] = {1,2},
            [5] = {3,4},
            [6] = {3,4},
        }
        local pre = tbl[idx]
        if (not pre) then return true end
        
        local sec_i = self.upgr[gr][pre[1]] and self.upgr[gr][pre[1]].section
        local sec_j = self.upgr[gr][pre[2]] and self.upgr[gr][pre[2]].section
        
        return (sec_i and self.inst_upgr[sec_i]) or (sec_j and self.inst_upgr[sec_j]) or false
    end
    
    local function check_con(con, col)
        local tbl = {
            [1] = 30,
            [2] = 60,
            [3] = 90,
        }
        return tbl[col] < con
    end

 

Изменено пользователем Дмитрий Михалик
Ссылка на комментарий

Добрый день. Если для данного вопроса есть специальная тема, то заранее прошу прощения. Долго искал - ничего более подходящего не нашёл. 

Так вот, проблема заключается в том, что я не могу начать новую игру в моде Парадокс: Начало. Лог вылета:
 

Скрытый текст

Expression    : ai().script_engine().functor(start_game_callback,functor)
Function      : CALifeSimulator::CALifeSimulator
File          : D:\prog_repository\sources\trunk\xrGame\alife_simulator.cpp
Line          : 74
Description   : failed to get start game callback


Кто знает, в чём проблема, помогите, пожалуйста)

Ссылка на комментарий

@CortezAs02, это тебе лучше к авторам мода обратиться. Раз такая трабла с самого старта игры, то 100% должен быть патч или фикс какой-нибудь.

А по вылету - какая-то ошибка в функции start_game_callback в _g.script, либо в файлах или функциях, которые из неё вызываются.

  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Здравствуйте, товарищи. 
Я гуглил данный вопрос, но толкового ничего не нашёл.
Объясните, как и что прописать в файле death_manager.script, чтобы в трупах спавнилась броня, согласно её "носителя", плюс, и самое главное, чтобы был случайный разброс в прочности костюма. 

Потому что если ограничиться редактированием файлов (death_items_by_communities.ltx, death_items_by_levels.ltx, death_items_count.ltx), то бронька всегда падает целёхонькая...что не круто. 

Ссылка на комментарий

@Firestarter, примерный алгоритм:

• получаешь визуал непися (npc:get_visual_name());

• спавнишь в него броник, соответствующий его визуалу (для этого, наверное, лучше сделать таблицу типа [имя_модели] = секция броника);

• используя таймер или каллбэк на выход в онлайн (client_spawn_manager) через некоторое время после спавна получить клиентский объект броника и задать ему состояние.

 

Это, наверное, сейчас в каждом моде имеется - подсмотри, как сделано, в том же АМК.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Хай, пиплс!
Вопрос по шейдерам.
Итак, моя задача, сделать подобное свечение. Имеем мы следующие :
статический объект грибочка
к нему присвоен шейдер как у лампочки (models\selflight)

Получаем мы таким образом свечение белым цветомРеально ли сделать свечение зелёное? 
Вариант с партиклом и источником света не прокатил

Жду любые варианты. Заранее благодарю

- Пролетарии всех стран, соединяйтесь!

 

Ссылка на комментарий

Кто помочь может. меня xr enige стал жаловаться на то,_что не может открыть файл fsgame.ltx. Как это исправить?

 

Изменено пользователем W.A.S.P.
правописание
Добавлено  Опричник,

Следите за орфографией и пунктуацией (п.2.5 правил форума).

Ссылка на комментарий

Всем привет!  У меня вопрос по погодному моду AtmosFear3, может кто то в своё время более глубоко копался в нём?!.

Делаю зимний мод на Зов Припяти в связке с Atmosfear 3. Изменил время восхода-заката солнца и луны.  День стал короче, ночь длиннее. Поменял данные файлов, в папке gamedata\configs\environment\weathers  из Atmosfear3, но игра не запускается..

Без Atmosfear3 мода, просто в Зове Припяти, все нормально идёт. Там данные только в одном файле [default].ltx

Надеюсь на помощь. Спасибо за внимание!

Ссылка на комментарий
В 12.12.2019 в 03:29, Antolich HD2 сказал:

но игра не запускается..

Логи где?

Добавлено  HellRatz,

Без всяких бандерлогов.

2.1 устно.

Ссылка на комментарий

Есть ли тут кто нибудь кто знает как в моде The Long Road вернуть сейвы в любых местах? 

Поделитесь мудростью в ЛС, заранее спасибо 

Добавлено  Murarius,

Перемещено.

Ссылка на комментарий

Возможно, уже спрашивали, но искать вопрос-ответ среди 363 страниц как-то не по себе. Итак, как отключить выбросы в ЗП (оригинал)? Или сделать так, чтоб выброс не убивал ГГ?

Ссылка на комментарий

@Алексей Новиков, в \configs\misc\surge_manager.ltx,

[settings]

condlist = false ; отключит выброс, но и респ артов, ибо он происходит после завершения первого

survive = true ; гг не будет умирать

Ссылка на комментарий

@Владислав Сущих, Если делать правильно, то делать через правки в xrGame.dll (мб могу ошибаться). Но по любому работать в студии надо. Примеры : Anomaly, DeadAer, Lex Addon (самый лучший вариант по скольку там копать меньше всего придётся.) Так же ВРОДЕ есть исходники, но у меня только собранный чистый движок этого самого Lex Addon + файлы в gamedata которые из за правок движка подверглись изменениям. Вот лови - link
Вот правки его :

Скрытый текст

Автор:                              Алексей Гончаров (Suhar_)
Модификация:                        Lex Addon

Изменённый движок Stalker COP, используемый в модификации Lex Addon
Состав архива:
Конечные файлы движка.
Минимальный набор ресурсов игры для запуска на чистом Зове Припяти.
Исходный код правок.
Краткое описание правок со ссылками на затронутые файлы и датами изменений.

Несколько слов о том, как ориентироваться по коду:
Для удобства поиска все внесённые изменения промаркированы и хотя бы немного, но прокомментированы.
Отличным тегом для поиска будет фраза "Lex Addon" или дата, когда было внесено изменение.

Используя данные правки, пожалуйста, не забывайте указывать источник.

Папки bin (Win 7) и bin (Win XP) содержат скомпилированные файлы движка, отличающиеся от оригинальных.
Почему их две? Потому что одни компилировались из-под Windows XP, другие - из-под Windows 7 соответственно.
Скорее всего, никакой разницы в их работе нет. Но на всякий случай пусть будут обе.
Справочно: в самом аддоне используются файлы, собранные в Win 7.

Четвёртый рендер (xrRender_R4.dll) имеет следующую особенность:
Для его работы юзеру необходимо иметь установленные пакеты DXSDK_Mar09 и DXSDK_Jun10.
Скачать пакеты можно по ссылкам ниже. Каждый пакет, в среднем, занимает по 550 Мб.
DXSDK_Mar09: https://www.microsoft.com/en-us/download/details.aspx?id=3035
DXSDK_Jun10: https://www.microsoft.com/en-ca/download/details.aspx?id=6812
Причину этого явления выяснить не удалось, так что если кто подскажет, в чём может быть дело - буду признателен.
Двиг собирался на Microsoft Visual Studio 2008 Professional Edition.
Возможно, при сборке движка на других машинах / в других студиях, проблема решится.
К слову, устанавливать пакеты не обязательно, но тогда в настройках видео тип рендера DirectX11 будет недоступен.
И да, источник ссылок - сайт компании Microsoft, так что качаем смело, не боясь подцепить какую-нибудь дрянь :)



 

Минимальный набор файлов для запуска оригинала ЗП с указанными правками находится в папке gamedata.
На их примере можно изучить способ описания новых параметров (особенно это касается конфигураций в .xml).


xrEngine.exe
1.    Изменено стартовое изображение.

2.    Добавлена возможность управлять FOV из меню настроек.
    Файлы: Xr_input.cpp, IInputReceiver.h, xr_ioc_cmd.cpp
        Директория xrGame: Actor.cpp
    Дата: 17.09.2018
    Необходимы правки в ui_mm_opt_16.xml и ui_mm_opt.xml
        На примере ui_mm_opt_16:
        Тег tab_gameplay, после подтега check_hud_draw добавить следующее:
        <cap_base_fov x="12" y="303" width="108" height="24">
            <text r="170" g="170" b="170" font="letterica16" align="r" vert_align="c">ui_mm_base_fov</text>
        </cap_base_fov>
        <track_base_fov x="140" y="307" width="188" height="16" step="1.00">
            <options_item entry="base_fov" group="mm_opt_gameplay"/>
        </track_base_fov>
    Необходимы правки скрипта ui_mm_opt_gameplay.script
        В function opt_gameplay:InitControls добавить инициализацию элементов:
            xml:InitStatic("tab_gameplay:cap_base_fov",                self)
            xml:InitTrackBar("tab_gameplay:track_base_fov",            self)
    Если в секции ГГ прописан параметр base_fov, то он будет использован приоритетно (настройка в меню работать не будет).
        Сделано для возможности ограничивать изменение угла обзора в сетевой игре, дабы избежать читерства.
        В конфиге ГГ для одиночной base_fov закомментирован, для сетевой игры base_fov = 55.
3.    Добавлена возможность управлять дальностью положениея рук относительно камеры.
    Файл xr_ioc_cmd.cpp.
    Дата 23.09.2018
    Необходимы правки в ui_mm_opt_16.xml и ui_mm_opt.xml
        На примере ui_mm_opt_16:
        Тег tab_gameplay, после подтега check_hud_draw добавить следующее:
        <cap_hud_fov x="12" y="273" width="108" height="24">
            <text r="170" g="170" b="170" font="letterica16" align="r" vert_align="c">ui_mm_hud_fov</text>
        </cap_hud_fov>
        <track_hud_fov x="140" y="277" width="188" height="16" step="0.01">
            <options_item entry="hud_fov" group="mm_opt_gameplay"/>
        </track_hud_fov>
    Необходимы правки скрипта ui_mm_opt_gameplay.script
        В function opt_gameplay:InitControls добавить инициализацию элементов:
            xml:InitStatic("tab_gameplay:cap_hud_fov",                self)
            xml:InitTrackBar("tab_gameplay:track_hud_fov",            self)
    Работает в т.ч. для сетевой игры.

4.    Расширение пула звуков.
    Предотвращает прерывание отыгрываемых звуков посредством того, что звуковой буффер не будет пытаться самоочищаться.
    Авторство: Роман Гильмутдинов (проект Pain of Misery)
    Дата: 14.11.2018
    Файл: xr_ioc_cmd.cpp
    Внимание! Кроме xrEngine.exe требуется рекомпиляция xrSound.dll


xrGame.dll
1.    Из секции бустеров производится считывание аргумента use_caption.
    Способ задания: в секции бустера добавить строку use_caption = [аргумент].
    Аргумент должен быть типа string - ссылается на строку, которая будет высвечиваться при вызове контекстного меню по нажатию правой клавиши мыши на бустере.
    По умолчанию движок будет устанавливать st_use ("использовать").
    Даёт возможность опционально настроить надписи в контекстном меню для новых типов бустеров (например, "активировать", "установить" и прочие).

2.    Костюмы с интегрированным шлемом теперь поддерживают установку инфракрасного сканера.
    Способ задания: в секции костюма добавить строку nearest_enemies_show_dist = [аргумент].
    Аргумент должен быть задан числом (обычно это число от 1 до 50) по аналогии этого же параметра у шлемов.
    Число задаёт дальность, на которой сканер будет фиксировать цели.
    Считывание распространяется в т.ч. на апгрейды.

3.    Добавлена возможность ругулировки регенерации выносливости и коэффицента снижения запаса сил у шлемов.
    Способ задания регенерации выносливости: устанавливается параметром power_restore_speed = [число]; записывается в секцию шлема.
    Число отражает количество сил, которое будет восстановлено за один апдейт. За одну секунду движок проивзодит 10 апдейтов.
    По умолчанию движок устанавливает 0.
    При наличии апгрейдов с данным свойством учёт производится путём алгебраического сложения базового (из секции) и дополнительного значений.
    ----
    Способ задания коэффицента снижения запаса сил: устанавливается параметром power_loss = [число]; записывается в секцию шлема.
    Число отображает коэффициент замедления рагенерации сил при ношении данного шлема (этот алгоритм также справедлив и для костюмов).
    Регенерация сил уменьшается в указанное количество раз.
    По умолчанию движок устанавливает 1.00.
    Считывание распространяется в т.ч. на апгрейды.
    При наличии апгрейдов с данным свойством учёт производится путём алгебраического сложения базового (из секции) и дополнительного значений.

4.    Добавлена возможность запрещения перемещения бустеров в ячейки быстрого доступа.
    Сделано с целью предотвращения попыток вставки в ячейки крупных (более чем 1х1) бустеров, что вызывало вылет.
    Способ задания: в секции бустера добавить строку can_switch_to_fast_slot = [аргумент].
    Аргумент должен быть типа bool - разрешено (true) или запрещено (false) перетаскивать бустер в слот быстрого использования.
    По умолчанию движок будет выставлять true.
    Добавлен фильтр, запрещающий подсветку ячеек быстрого доступа при наведении курсора на такие бустеры.
    
5.    Сетевая игра: clear_start_bonus начисляется при каждом респауне игрока, а не только при отсутсвии закупки каких-либо предметов в закупке.
    
6.    Восстановлена функция вывода оранжевых иконок, характерезующих состояние активных предметов/параметров ГГ или степень опасности.
    Например, кровотечение: зеленая-слабое кровотечение, желтая-среднее, оранжевая-сильное, красная-критическое.
    Все необходимые ссылки на текстуры имеются в оригинальных xml Зова Припяти (ничего прописывать не нужно).
    
7.    Расширено количество иконок интенсивности кровотечения и радиационного заражения
    по степеням с трёх (зелёный, желтый, красный) до четырёх (+оранжевый) при открытом инвентаре.
    Внимание! Необходимы дополнительные ссылки на текстуры в файле ui_actor_hint_wnd.xml (см. примеры)
    <texture id="ui_inGame2_bleeding_inv_orange"     x="635" y="933" width="45" height="45" />
    <texture id="ui_inGame2_radiation_inv_orange"     x="681" y="933" width="45" height="45" />
    Требуемые значки имеются в оригинальных текстурах Зова Припяти (ничего рисовать не нужно).
    
8.    Оптимизирован метод расчёта длины индикаторов защиты (электрозащита, химзазита и прочие) в меню инвентаря ГГ.
    Длина каждого индикатора вычисляется как суммарная текущая защита / максимально возможная защита.
    Суммарная защита = защита шлема в слоте + защита костюма в слоте + бонус артефактов на поясе + бонус от работающих бустеров.
    Максимально возможная защита берётся из файла actor.ltx параметр [тип урона]_zone_max_power (radio_zone_max_power, например).
    Все параметры учитываются индивидуально для каждого типа повреждений.
    Незначительно изменён алгоритм отображения индикатора брони у шлемов.
    Длина показателя индикатора рассчитывается исходя из максимально возможного значения для конкретного типа повреждений.
    
9.    Добавлено чтение параметра hit_fraction_actor в апгрейдах у шлемов.
    Способ задания: hit_fraction_actor = [число]; записывается в секцию свойств апгрейда.
    Число отображает коэффициент уменьшения урона в случае непробития брони (только огнестрельные повреждения).
    Урон обратнопропорционален указанному числу.
    Учёт производится путём алгебраического сложения базового (из секции шлема) и дополнительного (из апгрейдов) значений.
    Подробно о способе учёта параметра читать в пункте 17.

10. Максимальное количество слотов под артефакты расширено с 5 до 10.
    Способ задания не отличается от оригинала: artefact_count = [целое число от 0 до 10]; записывается в секциях костюмов и апгрейдов.
    Внимание! Требуются правки файлов actor_menu.xml и actor_menu_16.xml (см. примеры)
    В тегах dragdrop_belt установить значение rows_num="2"
    Для запуска этого будет достаточно, однако для корректной работы нужна полноценная настройка координат.
    Пример настройки actor_menu.xml:
    <dragdrop_belt x="360" y="471" width="300" height="150"
        cell_width="41" cell_height="41" rows_num="2" cols_num="5"
        cell_sp_x="24" cell_sp_y="12" a="0"/>
    Пример настройки actor_menu_16.xml:
    <dragdrop_belt x="390" y="471" width="240" height="150"
        cell_width="33" cell_height="41" rows_num="2" cols_num="5"
        cell_sp_x="19" cell_sp_y="12" a="0"/>

12. Добавлено 3 свойства для артефактов и костюмов: живучесть, скорость прыжка, скорость передвижения.
    Новые параметры могут быть как позитивными, так и негативными. Добавлены фильтры, предовращающие запись в результирующие
    переменные характеристик актора отрицательные значения.
    Внимание! Требуются правки файлов af_params.xml и af_params_16.xml (см. примеры)
    Необходимо описать теги additional_max_health, additional_jump_speed, additional_walk_accel по типу уже существующих свойств.

13. Расширен список отображаемых свойств для бустеров.
    Внимание! Требуются правки файлов booster_params.xml и booster_params_16.xml (см. примеры)
    Имя тега                    Параметр в конфиге            Тип бонуса
    boost_health                eat_health                     мнгновенное лечение
    boost_wounds_heal            wounds_heal_perc            мнгновенное заживление ран
    boost_radiation                eat_radiation                мнгновенное снижение дозы радиации
    boost_power                    eat_power                    мнгновенное пополнение запаса сил
    boost_alcohol                eat_alcohol                    опьянение
    boost_psy_health            eat_psy_health                учёт движком не предусмотрен; использовать скриптами по необходимости
    boost_psy_health_restore    boost_psy_health_restore    учёт движком не предусмотрен; использовать скриптами по необходимости
    boost_sleep_factor_add        actor_sleep_factor_add        учёт движком не предусмотрен; использовать скриптами по необходимости

14.    Исправлен делитель восстановления выносливости ГГ с 0.5 на 1.0 (для удобства калибровки).
    Увеличен предел коэффициента падения сил с 1 до 10

15.    Добавлено чтение параметра fire_wound_protection у костюмов и шлемов.
    О способе учёта параметра читать в пункте 17.
    Добавлены фильтры для вычисления урона от eHitTypeWound и eHitTypeFireWound, запрещающие нанесение отрицательного урона (создавался эффект лечения).
    
16.    Переделан алгоритм расчёта хитов НПС:
    Хиты от аномалий и физических воздействий (все, кроме огнестрела fire_wound)
    hit = base_hit * npc_immunity * npc_rank_immunity
    npc_immunity - родные иммунитеты НПС (берутся из секций файла immunities.ltx)
    npc_rank_immunity - иммунитет в зависимости от ранга
    npc_rank_immunity = immunities_novice_k - (immunities_experienced_k - immunities_novice_k)*(rank/rank_max)
    immunities_novice_k, immunities_experienced_k пределы коэффицентов для минимального и максимального ранга берутся из файла game_relations (секция ranks_properties)
    rank - текущий ранг НПС (не должен превышать rank_max; если превысит, то всё, что выше, учитываться не будет)
    rank_max - предельный ранг (устанавливается в движке и равен 100)
    ----------
    Алгоритм вычисления хита для огнестрела.
    Если armor_pierce > bone_armor, то броня пробита
    delta_pierce = (armor_pierce - bone_armor)/armor_pierce
    если delta_pierce < hit_fraction, то delta_pierce = hit_fraction
    hit = base_hit * delta_pierce / bone_protection * npc_immunity * npc_rank_immunity
    Если armor_pierce < или = bone_armor, то броня НЕ пробита
    hit = base_hit * hit_fraction * npc_immunity * npc_rank_immunity
    
17.    Переделан алгоритм расчёта хитов ГГ:
    Первоначально происходит учёт защит от костюмов и шлемов
    Огнестрел (fire_wound):
        Вычисление показателя защиты кости по которой попали
        bone_armor - броня кости с учётом состояния костюма/шлема
        base_bone_armor - базовый показатель брони; второе значение из конфига damages.ltx для соответствующей кости
        condition - состояние костюма/шлема
        bone_armor = base_bone_armor * condition
        ap - показатель пробития пули
        ----------
        Если ap>bone_armor, то броня пробита
        hit_fraction_actor - показатель защищённости кости костюма/шлема с учётом состояния
        base_hit_fraction_actor - базовый показатель защищённости кости костюма/шлема (берётся из его секции; строка "hit_fraction_actor")
        hit_fraction_actor = - (1 - base_hit_fraction_actor) * condition + 1
        d_hit_power - степень пробития брони
        d_hit_power = (ap - bone_armor) / ap;
        Если d_hit_power<hit_fraction_actor, то устанавливаем d_hit_power = hit_fraction_actor
        bone_protection - уязвимость кости; первое значение из конфига damages.ltx для соответствующей кости
        Учитываем степень пробития
        hit = hit * d_hit_power
        Учитываем урон по уязвимым частям тела
        hit = hit / bone_protection
        ----------
        Если ap<=bone_armor, то броня НЕ пробита
        Уменьшаем урон пропорционально защищённости костюма/шлема
        hit = hit * hit_fraction_actor
        Учитываем урон по уязвимым частям тела
        hit = hit + hit * (1 / bone_protection - 1) * 0.05;
        ----------
        Учитываем снижение урона от огнестрела у данного бронекостюма/шлема (если есть)
        hit = hit - fire_wound_protection * condition
    ----------
    Прочие воздействия:
    protect - защита костюма/шлема от данного типа урона
    Если protect<0, то устанавливаем protect = 0
    75% урона принимают на себя обычные абсорбы
    hit1 = (hit - protect) * 0.75
    25% урона блокируется общей защищённостью костюма/шлема
    hit2 = hit * hit_fraction_actor * 0.25
    У костюмов с замкнутой системой дыхания (cyclic_air_breath = true) для химического воздействия и радиации hit2 = 0
    hit = hit1 + hit2
    ----------
    Если итоговый hit<0, то устанавливаем hit = 0
    ----------
    Далее учитываются остальные параметры
    artefacts_protection - суммарная защита от всех артефактов на поясе по данному типу хита
    boost_protection - защита активных бустеров по данному типу хита
    boost_immunity - иммунитет активных бустеров  по данному типу хита
    actor_immunity - иммунитет персонажа по данному типу хита (зависит от сложности)
    hit = hit - artefacts_protection
    hit = hit - boost_protection
    hit = hit * actor_immunity * (1 - boost_immunity)
    ----------
    Если итоговый hit<0, то устанавливаем hit = 0

18.    Дополнен алгоритм чтения параметров размера иконки апгрейда:
    Опционально в ячейке cell можно указать линейные размеры (width и height) её области.
    Данные параметры содержатся в файлах конигурации сетки апгрейдов inventory_upgrade.xml, inventory_upgrade16.xml
    ----------
    Расширено максимальное число отображаемых свойств для одного апгрейда с 3 до 20.

20.    Расширено максимальное количество видов патронов, отображаемое в свойствах оружия с двух до шести.
    Внимание! Необходимо дополнение файлов actor_menu_item.xml, actor_menu_item16.xml (см. примеры)
    Тег wpn_params дополнить static_ammo_type3, static_ammo_type4, static_ammo_type5 и static_ammo_type6 по образу static_ammo_type1
    Дата последних изменений: 7.08.2018
    Изменены файлы UIWpnParams.cpp, UIWpnParams.h, UIItemInfo.cpp, UIItemInfo.h
    Пример настройки actor_menu_item.xml:
        <static_ammo_type3 x="25" y="170" width="80" height="40" />
        <static_ammo_type4 x="130" y="170" width="80" height="40" />
        <static_ammo_type5 x="22" y="223" width="80" height="40" />
        <static_ammo_type6 x="104" y="223" width="80" height="40" />
    Пример настройки actor_menu_item16.xml:
        <static_ammo_type3 x="22" y="170" width="80" height="40" />
        <static_ammo_type4 x="104" y="170" width="80" height="40" />
        <static_ammo_type5 x="25" y="223" width="80" height="40" />
        <static_ammo_type6 x="130" y="223" width="80" height="40" />
    
21.    Визуализированы слоты ножа и бинокля.
    В слот ножа может быть установлен не только нож, но и пистолет.
    На пистолет в слоте ножа, так же как и в остальных слотах, можно установить обвесы (если предусмотрено конфигурацией).
    Предметы из слота ножа и слота бинокля могут быть выброшены нажатием соответствующей клавиши (по умолчанию клавиша "g").
    Нож может быть помещён в стандартные слоты оружия.
    Корректно настроены навигации при перемещении предметов в новые слоты.
    Для работы необходимы правки инвентаря xml + текстуры.
    См. примеры файлов actor_menu.xml, actor_menu_16.xml
    ----------
    К классам бинокля, ножа и глушителя привязана проверка, которая запрещает отображение станадартных свойств оружия у этих предметов.
    Предметы класса бинокля и ножа в инвентаре не будут иметь индикатор состояния.

22.    Добавлена регулировка fov из конфига. Это значение регулирует положение камеры относительно рук.
    Способ задания: base_fov = [значение]; в ЗП по умолчанию = 55.0
    Внимание! Параметр обязательно должен быть прописан в секции actor файла actor.ltx

23.    Добавлен параметр k_speed. Этот параметр влияет на начальную скорость пули при использовании данного типа патронов.
    Начальная скорость пули при выстреле = bullet_speed * k_speed * bullet_speed_k
    bullet_speed - начальная скорость пули (параметр оружия)
    k_speed - коэффициент изменения начальной скорости при использовании данного типа патронов
    bullet_speed_k - коэффициент изменения начальной скорости при надетом глушителе, если он есть
    Способ задания: k_speed = [значение]; прописывается в секциях патронов по типу остальных коэффициентов (k_disp, k_hit и др.)
    При k_speed=1.00 влияние на скорость оказываться не будет; k_speed>1.00 - увеличение; k_speed<1.00 - уменьшение скорости
    Внимание! Параметр обязательно должен быть прописан в каждой секции всех видов патронов (или же в родительской секции).

24.    Добавлен параметр k_angle. Этот параметр влияет на отдачу при стрельбе данным типом патронов
    Угол отдачи будет домножен на значение k_angle.
    Способ задания: k_angle = [значение]; прописывается в секциях патронов по типу остальных коэффициентов (k_disp, k_hit и др.)
    При k_angle=1.00 влияние на отдачу оказываться не будет; k_angle>1.00 - увеличение; k_angle<1.00 - уменьшение угла отдачи
    Внимание! Параметр обязательно должен быть прописан в каждой секции всех видов патронов (или же в родительской секции).

25.    Добавлена возможность управления отображением основных индикаторов худа.
    Движок при наличии определённых infoportion'ов будет убирать соответствующие индикаторы.
    "blocked_hud_minimap_info" - инфопоршн блокировки миникарты и индикаторов заметности/издаваемого шума.
    "blocked_hud_quick_slots_info" - инфопоршн блокировки показа слотов быстрого доступа.
    "blocked_hud_indicators_info" - инфопоршн блокировки показа индикаторов используемых бустеров, радиационной опасности и пр.
    "blocked_hud_right_down_pannel_info" - инфопоршн блокировки показа нижней правой панели.
    Для блокировки объекта необходимо выдать соответствующий инфопоршн (например, скриптом).
    Для разблокировки объекта необходимо забрать соответствующий инфопоршн.

26.    Добавлен скриптовый метод перебора предметов на поясе.
    Применяется аналогично методу iterate_inventorу; вызывается для клиенского объекта;
    Использование в скрипте на примере перебора предметов на поясе ГГ:
    local function test_func(npc, item)
        -- Здесь npc - клиентский объект, у которого перебираем предметы на поясе; item - клиентский объект предмета на поясе
        printf(item:section())
    end
    db.actor:iterate_belt(test_func, db.actor)
    Изменены файлы script_game_object_script3.cpp, script_game_object_inventory_owner.cpp, script_game_object.h

27.    Расширен алгоритм отображения количества патронов в правой панели.
    Поскольку изначально алгоритм был рассчитан только на два типа патронов,
    при использовании оружия с 3 и более подерживаемыми типами, счётчики работали некооректно.
    Изменены файлы WeaponMagazined.cpp, WeaponMagazinedWGrenade.cpp

28. Чтение новых свойств у костюмов при апгрейдах:
    actor_visual - визуал ГГ в костюме
    player_hud_section - руки
    helmet_avaliable - блокировка слота шлема
        Внимание! Если идёт изменение параметра helmet_avaliable на false костюма, находящегося в слоте, и при этом слот шлема не пуст,
        то переброс шлема в инвентарь осуществится некорректно. Все необходимые действия проивзодятся, однако визуально шлем остаётся в слоте до момента
        перезапуска меню инвентаря.
        Проблема, по сути, безобидная, но глаз режет. К сожалению, решить/обойти не удалось; принудительный апдейт и прочие методы не помогли.
        Альтернативный метод: после применения данного типа апгрейда закрывать инвентарь скриптом (чтобы обновить отображение; это решает проблему).
    Изменены файлы CustomOutfit.cpp, CustomOutfit.h
    ----------
    Имзенён алгоритм чтение параметра hit_power при апгрейдах оружия.
    Ранее параметр считывался из конфига и заново записывался (new_hit_power = upgrade_hit_power)
    Теперь учёт осуществляется путём сложения (new_hit_power = old_hit_power + upgrade_hit_power)
    Изменён файл WeaponUpgrade.cpp

29. Расширен список иконок тайников и важных объектов для фильтров на карте КПК.
    treasure_blue, treasure_red, treasure_yellow, treasure_violet - тайники;
    explosive_mark - важные объекты;
    Изменён файл UITaskWnd.cpp

30.    Добавлена подсветка слотов на поясе для любых предметов, имеющих параметр belt = true.
    Ранее подсветка осуществлялась только для класса артефактов.
    Изменён файл UIActorMenu.cpp

31.    Введён опциональный порядок вывода значения параметра свойств артефактов и бустеров.
    Возможен вывод 0, 1, 2 или 3 знаков после запятой.
    Способ задания: в файлах af_params.xml, af_params_16.xml, booster_params.xml, booster_params_16.xml
    в теге конкретного параметра указать accuracy="x" (подтег value).
    x - число знаков после запятой, которое необходимо отобразить.
    Данный параметр не является обязательным. Его отсутствие не приведёт к ошибкам/вылетам. По умолчанию движок будет устанавливать 0 знаков после запятой.
    Пример:
    <additional_weight x="0" y="0" width="257" height="20" >
        <caption x="0" y="0" width="257" height="20" complex_mode="0">
            <texture>ui_am_propery_carry_weight_blue</texture>
            <text color="ui_3" font="letterica16" vert_align="c" x="22" y="0"/>
        </caption>
        <texture_minus>ui_am_propery_carry_weight_red</texture_minus>
        <value x="160" y="0" width="30" height="20" magnitude="1" unit_str="st_kg" accuracy="2">
            <text font="letterica16" vert_align="c"/>
        </value>
    </additional_weight>
    Изменены файлы ui_af_params.cpp, ui_af_params.h

32.    Для класса key_bindings добавлено дополнительное свойство kACTIVE_JOBS,
    позволяющее отследить в скриптах нажатие на клавишу, привязанную к вызову КПК.
    Изменён файл key_binding_registrator_script.cpp
    ----------
    Для класса CUIGameCustom добавлен дополнительный метод ShowPdaMenu,    позволяющий открыть окно КПК из скрипта.
    Изменён файл UIGameCustom_script.cpp
    ------------------------------------------------------------------------------------------------------------------------
    ------------------------------------------------------------------------------------------------------------------------
    По нажатии клавиши вызова КПК (по умолчанию клавиша "p"), движок будет обращаться к скриптовой функции _g.need_run_script_pda(),
        чтобы выполнять проверку на необходимость запуска скриптового КПК.
        Если функция возвратит true, то будет запускать скриптовый КПК; если false - движковый.
        Если данная функция в скрипте отсутствует, будет запущен движковый КПК.
    Запуск скриптового КПК будет производиться через функцию _g.run_script_pda().
        Если функция не прописана - запускается движковый.
    ----------
    В основное окно КПК добавлена кнопка "switch_button" (название тега в pda.xml).
        При нажатии на кнопку будет запущена скриптовая функция _g.pda_action_switch (если таковая имеется) и запустить скриптовый КПК
    ----------
    Функция _g.can_run_script_pda() вызывается для проверки на необходимость отображения кнопки switch_button.
        Если функция вовзратит true, то кнопка будет отображена; false - будет скрыта.
    ----------
    Совокупность данных правок позволяет расширить стандартный КПК путём добавления скриптовых интерфейсов.
    Изменены файлы: UIGameSP.cpp, xrgame_dll_detach.cpp, alife_simulator.cpp, UIPdaWnd.cpp, UIPdaWnd.h
    Дата последних изменений: 14-15.08.2018

33.    Исправлена ошибка оригинала, при которой прицелы с регулируемым увеличением давали зум бесконечной кратности.
    Добавлено сохранение настроенной кратности для регулируемых прицелов и биноклей в пределах одной игровой сессии.
    Изменены файлы Weapon.cpp, WeaponBinoculars.cpp
    Дата последних изменений: 24.10.2018

34.    Добавлена возможность включать/отключать ПНВ, встроенный в прицел или бинокль, нажатием забинденной клавиши.
    Изменёны файлы Weapon.cpp, ActorInput.cpp, Torch.cpp, Torch.h
    Дата изменений: 23.04.2017 (апдейт 24.10.2018)

35.    Исправлен недочёт с неверным отображением индикатора заметности в момент загрузки сохранения.
    Изменён файл UIMotionIcon.cpp

36.    Исправлено направление ведения огня в режиме камеры от третьего лица.
    Дата последних изменений: 22.06.2018
    Код частично заимствован у проекта X-Ray Oxygen.
    Изменены файлы: ActorCameras.cpp, Actor_Weapon.cpp, Actor.cpp, cameralook.h, script_game_object_inventory_owner.cpp

37.    Переделаны алгоритмы отображения информации у костюмов и шлемов.
        Теперь в описании будут отображаться все основные необходимые игроку характеристики, такие как количество контейнеров под артефакты,
        поддержка ПНВ и прочее.
        Параметр "Броня" будет отображаться не в виде ползунка, а в виде числового значения.
        Для удобства отслеживания, отдельно выведен параметр защиты головы.
    Необходимы правки следующих конфигов xml:
        actor_menu_item_16.xml, actor_menu_item.xml
        Поскольку изменений достаточно много, здесь они не приведены; ознакомиться с ними можно в приложенных файлах.
    В файле postprocess.ltx в секциях ПНВ необходимо указать параметр nightvision_level, который позволит отображать и сравнивать ПНВ.
    Число интерпретируется как номер поколения.
    Пример:
        Секция ПНВ второго поколения, соответственно параметр nightvision_level    = 2
        [effector_nightvision_2]
        pp_eff_name         = nightvision_2.ppe
        pp_eff_cyclic         = 1
        pp_eff_overlap         = false
        nightvision_level    = 2
    Если данный параметр не вписать, то алгоритм отображения свойств посчитает, что на данном предмете ПНВ не установлен.
    Дата последних изменений: 5.08.2018
    Изменены файлы: UIOutfitInfo.cpp, UIOutfitInfo.h

38.    Добавлена возможность скрывать свойства улучшений в окне описания предметов (оружия/защита).
    Прописывается в секциях файла upgrades_properties.ltx
    Пример:
        Рассмотрена секция свойства заживления ран из Lex Addon
        Параметр attach_to_describe = false говорит о запрещении показа этого свойства у содержащих его костюмов
        Это значит, что при наведении курсора на такой костюм, данное свойство в списке апгрейдов отображено не будет
        Однако в описании улучшения (в меню у техника) всё остаётся как и прежде
        Если данный параметр установить true или же не вписывать вообще, то свойство будет отображаться
        [prop_restore_bleeding]
        name    = st_prop_restore_bleeding
        icon    = ui_am_propery_bleeding_blue
        functor    = inventory_upgrades.property_functor_d
        params    = fire_wound_immunity, cost
        attach_to_describe = false
    Применяется в связке с новой системой отображения свойств, дабы избежать дублирования уже описанных параметров
    Дата последних изменений: 5.08.2018
    Изменены файлы: UIInvUpgradeProperty.h, UIInvUpgradeProperty.cpp, inventory_upgrade_property.h, inventory_upgrade_property.cpp

39.    В окно описания предметов добавлен статик количества улучшений.
    Отображается только если количество улучшений больше нуля.
    Дата последних изменений: 1.08.2018
    Изменены файлы: UIItemInfo.cpp, UIItemInfo.h
    Необходимы следующие правки конфигов xml:
        actor_menu_item.xml:
            <static_upgrades_count x="80" y="40" width="144" height="16">
                <text align="r" font="letterica18" r="210" g="210" b="210"/>
            </static_upgrades_count>
        actor_menu_item_16.xml
            <static_upgrades_count x="136" y="40" width="144" height="16">
                <text align="r" font="letterica18" r="210" g="210" b="210"/>
            </static_upgrades_count>
    Добавляется после тега static_weight

40.    Дополнены алгоритмы отображения информации у оружия.
    Добавлено 2 ползунка: отдача и настильность.
    Необходимы правки следующих конфигов xml:
        actor_menu_item_16.xml, actor_menu_item.xml
            Добавить теги:
            static_bullet_speed, static_recoil - иконки
            cap_bullet_speed, cap_recoil - заголовки
            progress_bullet_speed, progress_recoil - ползунки
    Дата последних изменений: 7.08.2018
    Изменены файлы: IUWpnParams.cpp, UIWpnParams.cpp, UIWpnParams.h
        В скрипте ui_wpn_params.script добавить функции GetBulletSpeed и GetRecoil (вычисление параметров для ползунков)

41.    Для костюмов добавлен параметр замкнутой системы дыхания (ЗСД) cyclic_air_breath типа bool.
    Учитывается при вычислении урона, наносимого радиацией и химическим ожогом
        (костюмы с таким параметром полностью блокируют вторую часть урона (см. алгоритм расчета))
    Способ задания: в секции нужного костюма прописать параметр cyclic_air_breath = значение (true - ЗСД иметтся; false - отсутствует)
        Параметр, кроме того, может быть задан через секции апгрейдов.
    Дата изменений: 10.08.2018
    Изменены файлы: CustomOutfit.h, CustomOutfit.cpp

42.    Фикс инициатора взрыва гранаты. Исправляет краш логики в некоторых случаях.
    Автор правки: NanoBot-AMK
    Дата последних изменений: 19.08.2018
    Изменены файлы: script_game_object2.cpp

43.    Исправление Death callback
    Автор правки: Alundaio
    Дата последних изменений: 19.08.2018
    Изменены файлы: DestroyablePhysicsObject.cpp

44.    Включена возможность воздействия аномалий на НПС (в зависимости от настроек конфига)
        Для работы необходима секция следующего вида в системном дереве конфигов:
        [npc_additional_engine_options]
        anomaly_can_damage_stalker            = true        ; Параметр типа bool
            Внимание! Включение опции в некоторых случаях может повлечь нарушения в работе логики НПС.
            В частности, замечены глюки с наемниками при квесте дяьдки Яра на Юпитере. Предположительно, после прохождения ими радиоактивного участка.
            Возможно, необходимо заменить движковую схему поведения на некую скриптовую.
        В прикреплённой gamedata секция прописана в system.ltx
    Автор идеи: Shredder, доработано: Suhar_
    Дата последних изменений: 19.08.2018
    Изменены файлы: space_restrictor.cpp

45.    Обход вылета из-за конфилкта наличия положительного здоровья у погибших НПС при попытке запроса нет-пакета.
        Иногда возникали ситуации, когда чувак вроде как умер, но по каким-то причинам его здоровье на уровне движка остается положительным.
        При запросе на чтение нет-пакета этого чувака происходит вылет, с руганью на строку
        !(get_health() > 0.0f && get_killer_id() != u16(-1))) файла xrServer_Objects_ALife_Monsters.cpp
        Это означает, что у чувака поле killer_id заполнено (то есть имеется тот или то, что нанесло смертельный хит), !=u16(-1)
        В это же время get_health()>0.0f показывает, что здоровье у чувака вроде как еще есть.
        Попытка получения величины здоровья и его изменение в сторону нуля через скрипт не помогает, т.к. скрипт считает, что здоровье трупа и без того =-1.
            В данной правке при обнаружении положительного значения здоровья у погибшего НПС это значение принудительно устанавливается -1.
    Файл: xrServerEntities\xrServer_Objects_ALife_Monsters.cpp
    Дата: 25.09.2018

46.    Добавлен скриптовый метод add_upgrade для установки апгрейда по клиентскому объекту.
    item:add_upgrade(upgrade_section)
        item - клиентский объект
        upgrade_section - секция апгрейда, который хотим установить
    Метод содержит фильтр, исключающий возможность установки уже существующего апгрейда.
    Однако при попытке установить апгрейд, для которого нужны некие предыдущие улучшения (родительские), отсутствующие на момент обращения к методу,
        получим вылет со ссылкой на устанавливаемый апгрейд и недостающий родительский.
    Дата: 8.10.2018
    Затронуты файлы: inventory_item.h, inventory_item_upgrade.cpp, inventory_upgrade_manager.cpp, inventory_upgrade_manager.h, script_game_object.cpp, script_game_object.h, script_game_object_script2.cpp

47.    Добавлен скриптовый метод upgrade_exist для проверки, установлен ли на предмете апгрейд, по клиентскому объекту.
    result = item:upgrade_exist(upgrade_section)
        result - возвращает логический тип данных (true - установлен, false - не установлен)
        item - клиентский объект
        upgrade_section - секция запрашиваемого
    Дата: 8.10.2018
    Затронуты файлы: script_game_object_script2.cpp, script_game_object.cpp, script_game_object.h

48.    Правка направлеия света фонарика в режиме от 3 лица
    Файлы: Torch.cpp, Actor.h
    Дата: 2.11.2018

49.    Корректировка генерации случайных величин при обновлении ассортимента у торговца
    Конструкция CPU::QPC() при последовательном вызове метода process в течении очень короткого промежутка времени выдаёт значения,
    которые мало отличаются от предыдущих;
    это приводит к тому, что в ассортименте при малой вероятности может долго не быть определённых наименований,
    а затем они появляются все одним разом.
    Использован другой способ получения случайных чисел.
    Дата: 14.11.2018
    Файл: purchase_list.cpp

50.    Дополнительные скриптовые методы клиентского объекта для работы с аддонами
    object:detach_scope()                    - Отсоединить прицел
    object:get_scope_name()                    - Получить название установленного прицела
    object:detach_grenade_launcher()        - Отсоединить подствольник
    object:get_grenade_launcher_name()        - Получить название установленного подствольника
    object:detach_silencer                    - Отсоединить глушитель
    object:get_silencer_name                - Получить название установленного глушителя
    object:attach_addon(addon_id)            - Присоединить аддон (addon_id - айди объекта)
    Дата: 18.11.2018
    Файлы: script_game_object_script2.cpp, script_game_object.h, script_game_object.cpp

51.    Предметам разрешено иметь отрицательную массу.
    Файлы: Inventory.cpp, inventory_item.cpp, ui\UIActorMenuTrade.cpp
    Дата: 29.11.2018
    
52.    Костюмы и шлемы даже при полном износе дают небольшую защиту (10% от максимума)
    Файлы: ActorHelmet.cpp, CustomOutfit.cpp, ui\UIActorStateInfo.cpp, ui\UIOutfitInfo.cpp
    Дата 7.12.2018


xrRender_R1.dll
xrRender_R2.dll
xrRender_R3.dll
xrRender_R4.dll
xrParticles.dll
1.    16.09.2018 Незначительно переработан алгоритм получения данных о выставляемой плотности травы.
    Доступно полное отключение показа травы при настройках (крайнее левое положение ползунка).
    Директория Layers\xrRender\
    Файлы: DetailManager_Decompress.cpp, xrRender_console.cpp

2.    16.09.2018 Увеличена дальность отрисовки травы.
    Директория Layers\xrRender\
    Файл DetailManager.h

 

 

 

 

Товарищи, у меня тут вопрос возник по поводу space_restr.
Вообщем, что надо :
Актёр заходит в рестриктор №1, тем временем логика (on_actor_inside) даёт сигнал для одноразового проигрывания заданного партикла в рестриктор №2
Раньше нигде такого не встречал. Может кто видел что то подобное в модах? Есть у кого идеи как такое сделать можно?

Изменено пользователем WizziGun
  • Нравится 1
  • Полезно 1

- Пролетарии всех стран, соединяйтесь!

 

Ссылка на комментарий

Не знаю, поднимался такой вопрос или нет, но все же.
В ТЧ, когда зомбированные находились в атакующем или другом состоянии, они про себя обычно что-то говорили (там, мочии, и все в этом роде).
Вопрос состоит в том, как вернуть подобную озвучку зомбированным в Зов Припяти? Звуки они издают только когда по ним наносишь какой либо урон.
Озвучки смерти так же нет.
m_stalker_zombied.ltx копал, звуки с ТЧ докидывал, не помогает.

FWR mod
Обитаю здесь и здесь

Так же известен, как: ~<Red>~

Где то на компе лежит куча стволов, и весьма хороших, фишка в том, буду ли я выкладывать их еще

:)

Ссылка на комментарий

@Jurok, вроде как получилось, правда пришлось еще строчку добавить (со скрипта версии ТЧ)
Но в какой моменте у них идет обработка смерти я так и не понял

 

function action_zombie_shoot:initialize()
    action_base.initialize( self )

--    self.object:set_node_evaluator      ()
--    self.object:set_path_evaluator      ()
    self.object:set_desired_direction   ()
    self.object:set_detail_path_type    ( move.line )
    self.last_state = nil
    local be  = self.object:best_enemy()
    self.enemy_last_seen_pos = be:position()
    self.enemy_last_seen_vid = be:level_vertex_id()
    self.last_vid   = nil
    self.valid_path = false
    self.turn_time  = 0
    self.st.cur_act = act_shoot

    xr_sound.set_sound_play(self.object:id(), "fight_enemy")
    xr_sound.set_sound_play(self.object:id(), "zombied_fight_attack")
end

function action_zombie_shoot:set_state( state, be, pos )
    self.t.look_object = be

    if be then
        self.t.look_position = self.enemy_last_seen_pos
    else
        self.t.look_position = pos
    end

    state_mgr.set_state( self.object, state, nil, nil, self.t )

    self.last_state = state
    xr_sound.set_sound_play(self.object:id(), "fight_attack")
end

 

 

Изменено пользователем rnm_016
  • Полезно 1

FWR mod
Обитаю здесь и здесь

Так же известен, как: ~<Red>~

Где то на компе лежит куча стволов, и весьма хороших, фишка в том, буду ли я выкладывать их еще

:)

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...