Дмитрий Зверев 0 Опубликовано 9 Октября 2019 Поделиться Опубликовано 9 Октября 2019 Всем привет. Есть ещё такой вопрос. Сцена, в которой бандит сначала разговаривает с ГГ, затем убивает с ружья двух наемников, которые стоят за ним на коленях. При разных ответах в диалоге -- разные условия (убить того или иного наемника либо же вступить в бой). Скрытый текст [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, после чего приступить к убиению наёмника? Какой из этих способов вообще предпочтительнее и менее глючный в долгосрочной перспективе? Заранее спасибо! Ссылка на комментарий
shahvkit 3 545 Опубликовано 10 Октября 2019 Поделиться Опубликовано 10 Октября 2019 Добрый день. Нужна небольшая помощь по правке файла gamemtl.xr из мода Anomaly 1.5.0 Знаю что эта тема по чистому ЗП и что есть специализированная тема по моему вопросу, но там последнее посещение в 2015 году, и моё сообщение вряд ли скоро заметят, если вообще обратят внимание. Поэтому и прошу в этой теме. В общем нужно исправление чтобы НПС не видели ГГ сквозь кусты, тонкие стены и так далее. Сейчас у НПС ренгеновское зрение и они видят ГГ даже если в actor.ltx выставить transparency_threshold = 0.99 Если кто то может это исправить, то вот ссылка на сам файл gamemtl.xr - https://my-files.ru/soub1v Ссылка на комментарий
Дмитрий Михалик 0 Опубликовано 14 Октября 2019 Поделиться Опубликовано 14 Октября 2019 (изменено) Всем привет, помогите плиз разобраться с скриптом. Это фрагмент из скрипта мода Сталкер Аномалия 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 Изменено 14 Октября 2019 пользователем Дмитрий Михалик Ссылка на комментарий
CortezAs02 0 Опубликовано 20 Октября 2019 Поделиться Опубликовано 20 Октября 2019 Добрый день. Если для данного вопроса есть специальная тема, то заранее прошу прощения. Долго искал - ничего более подходящего не нашёл. Так вот, проблема заключается в том, что я не могу начать новую игру в моде Парадокс: Начало. Лог вылета: Скрытый текст 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 Кто знает, в чём проблема, помогите, пожалуйста) Ссылка на комментарий
naxac 2 447 Опубликовано 22 Октября 2019 Поделиться Опубликовано 22 Октября 2019 @CortezAs02, это тебе лучше к авторам мода обратиться. Раз такая трабла с самого старта игры, то 100% должен быть патч или фикс какой-нибудь. А по вылету - какая-то ошибка в функции start_game_callback в _g.script, либо в файлах или функциях, которые из неё вызываются. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Firestarter 3 Опубликовано 26 Октября 2019 Поделиться Опубликовано 26 Октября 2019 Здравствуйте, товарищи. Я гуглил данный вопрос, но толкового ничего не нашёл. Объясните, как и что прописать в файле death_manager.script, чтобы в трупах спавнилась броня, согласно её "носителя", плюс, и самое главное, чтобы был случайный разброс в прочности костюма. Потому что если ограничиться редактированием файлов (death_items_by_communities.ltx, death_items_by_levels.ltx, death_items_count.ltx), то бронька всегда падает целёхонькая...что не круто. Ссылка на комментарий
naxac 2 447 Опубликовано 27 Октября 2019 Поделиться Опубликовано 27 Октября 2019 @Firestarter, примерный алгоритм: • получаешь визуал непися (npc:get_visual_name()); • спавнишь в него броник, соответствующий его визуалу (для этого, наверное, лучше сделать таблицу типа [имя_модели] = секция броника); • используя таймер или каллбэк на выход в онлайн (client_spawn_manager) через некоторое время после спавна получить клиентский объект броника и задать ему состояние. Это, наверное, сейчас в каждом моде имеется - подсмотри, как сделано, в том же АМК. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
WizziGun 376 Опубликовано 31 Октября 2019 Поделиться Опубликовано 31 Октября 2019 Хай, пиплс! Вопрос по шейдерам. Итак, моя задача, сделать подобное свечение. Имеем мы следующие :• статический объект грибочка• к нему присвоен шейдер как у лампочки (models\selflight) Получаем мы таким образом свечение белым цветом. Реально ли сделать свечение зелёное? Вариант с партиклом и источником света не прокатил Жду любые варианты. Заранее благодарю ☭- Пролетарии всех стран, соединяйтесь! Ссылка на комментарий
Марка демченков 5 Опубликовано 23 Ноября 2019 Поделиться Опубликовано 23 Ноября 2019 (изменено) Кто помочь может._У меня xr enige стал жаловаться на то,_что не может открыть файл fsgame.ltx. Как это исправить? Изменено 23 Ноября 2019 пользователем W.A.S.P. правописание Добавлено Опричник, 23 Ноября 2019 Следите за орфографией и пунктуацией (п.2.5 правил форума). Ссылка на комментарий
DMT 2 Опубликовано 23 Ноября 2019 Поделиться Опубликовано 23 Ноября 2019 А есть моды для ЗП, в которых сделан инвентарь мутантов? Есть какие-то попытки решения? Ссылка на комментарий
Antolich HD2 4 Опубликовано 12 Декабря 2019 Поделиться Опубликовано 12 Декабря 2019 Всем привет! У меня вопрос по погодному моду AtmosFear3, может кто то в своё время более глубоко копался в нём?!. Делаю зимний мод на Зов Припяти в связке с Atmosfear 3. Изменил время восхода-заката солнца и луны. День стал короче, ночь длиннее. Поменял данные файлов, в папке gamedata\configs\environment\weathers из Atmosfear3, но игра не запускается.. Без Atmosfear3 мода, просто в Зове Припяти, все нормально идёт. Там данные только в одном файле [default].ltx Надеюсь на помощь. Спасибо за внимание! Ссылка на комментарий
Space.Marine 466 Опубликовано 12 Декабря 2019 Поделиться Опубликовано 12 Декабря 2019 В 12.12.2019 в 03:29, Antolich HD2 сказал: но игра не запускается.. Логи где? Добавлено HellRatz, 13 Декабря 2019 Без всяких бандерлогов. 2.1 устно. Ссылка на комментарий
walet123 5 Опубликовано 17 Декабря 2019 Поделиться Опубликовано 17 Декабря 2019 Есть ли тут кто нибудь кто знает как в моде The Long Road вернуть сейвы в любых местах? Поделитесь мудростью в ЛС, заранее спасибо Добавлено Murarius, 20 Декабря 2019 Перемещено. Ссылка на комментарий
Алексей Новиков 0 Опубликовано 21 Декабря 2019 Поделиться Опубликовано 21 Декабря 2019 Возможно, уже спрашивали, но искать вопрос-ответ среди 363 страниц как-то не по себе. Итак, как отключить выбросы в ЗП (оригинал)? Или сделать так, чтоб выброс не убивал ГГ? Ссылка на комментарий
h0N0r 341 Опубликовано 22 Декабря 2019 Поделиться Опубликовано 22 Декабря 2019 @Алексей Новиков, в \configs\misc\surge_manager.ltx, [settings] condlist = false ; отключит выброс, но и респ артов, ибо он происходит после завершения первого survive = true ; гг не будет умирать https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
vlad_54rus 6 Опубликовано 8 Января 2020 Поделиться Опубликовано 8 Января 2020 Возможно ли сделать нож и бинокль видимыми в инвентаре игрока? Если да, то как? Ссылка на комментарий
WizziGun 376 Опубликовано 8 Января 2020 Поделиться Опубликовано 8 Января 2020 (изменено) @Владислав Сущих, Если делать правильно, то делать через правки в 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. Раньше нигде такого не встречал. Может кто видел что то подобное в модах? Есть у кого идеи как такое сделать можно? Изменено 8 Января 2020 пользователем WizziGun 1 1 ☭- Пролетарии всех стран, соединяйтесь! Ссылка на комментарий
rnm_016 54 Опубликовано 9 Января 2020 Поделиться Опубликовано 9 Января 2020 Не знаю, поднимался такой вопрос или нет, но все же. В ТЧ, когда зомбированные находились в атакующем или другом состоянии, они про себя обычно что-то говорили (там, мочии, и все в этом роде). Вопрос состоит в том, как вернуть подобную озвучку зомбированным в Зов Припяти? Звуки они издают только когда по ним наносишь какой либо урон. Озвучки смерти так же нет. m_stalker_zombied.ltx копал, звуки с ТЧ докидывал, не помогает. FWR modОбитаю здесь и здесь Так же известен, как: ~<Red>~ Где то на компе лежит куча стволов, и весьма хороших, фишка в том, буду ли я выкладывать их еще Ссылка на комментарий
Это популярное сообщение. Painter 3 424 Опубликовано 9 Января 2020 Это популярное сообщение. Поделиться Опубликовано 9 Января 2020 @rnm_016, открываем xr_combat_zombied.script. Находим строку 49 и убираем «--». В строке 54 добавляем аналогичное воспроизведение звука. Будет выглядеть так: Скрытый текст 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") -- воспроизведение звука 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 2 3 Портфолио Ссылка на комментарий
rnm_016 54 Опубликовано 9 Января 2020 Поделиться Опубликовано 9 Января 2020 (изменено) @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 Изменено 9 Января 2020 пользователем rnm_016 1 FWR modОбитаю здесь и здесь Так же известен, как: ~<Red>~ Где то на компе лежит куча стволов, и весьма хороших, фишка в том, буду ли я выкладывать их еще Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти