Kirgudu - AMK Team
Перейти к контенту

Kirgudu

Жители
  • Число публикаций

    1 670
  • Регистрация

  • Последнее посещение

  • Дней в топе

    36
  • AMKoin

    18,895 [Подарить AMKoin]

Kirgudu последний раз побеждал 21 Августа

Kirgudu - автор самых популярных публикаций!

Баланс оценок

1 328

9 подписчиков

О Kirgudu

  • День рождения 12.03.1974

Недавние посетители профиля

11 156 просмотров профиля
  1. Kirgudu

    Скриптование

    @Pavel_2000 local keys = { [DIK_keys.DIK_W] = true, [DIK_keys.DIK_A] = true, [DIK_keys.DIK_S] = true, [DIK_keys.DIK_D] = true } function actor_binder:key_hold(key) if has_alife_info("item_id_used") then if not has_alife_info("test_work_start") and keys[key] == true then test_script.test_func() end end end
  2. Kirgudu

    Инструмент

    Обновление Инструмента от 2025-08-21. 1. Функционал, описанный в предыдущем посте в пунктах 2 и 3 (новый раздел "Очистка" и доработка раздела "Переход"), полностью перенесён в конструктор для ТЧ, а также в готовые комплекты для ТЧ 1.0006, ТЧ 1.0004 и OGSR x64 v2.1.416 - v3.448+. 2. Произведена небольшая доработка разделов "Очистка" и "Переход" в конструкторе и готовом комплекте для ЧН. На очереди: конструктор для ЗП, готовые комплекты для ЗП, ОП-2.2, Фотографа. Ссылка прежняя, в шапке темы.
  3. Вызывает диссонанс. Взять, например, известного тут почти каждому пользователя Malandrinus. Зарегистрирован более полугода, за последние полгода постов не публиковал. Кажется, что подпадает, но по понятным причинам удалён быть не может. Имхо. Наверное, речь идёт только о тех, у кого 0 (ноль) постов в принципе, за всё время?
  4. @imcrazyhoudini нет, я же написал, что нужен объект. Актор или любой другой, но нужен. Для демонстрации сделал на чистой игре нижеследующие правки. В логике рестриктора mar_space_restrictor_start_sim.ltx (расположен примерно в межкомнатном проёме между Лебедевым и тактиком) добавил функцию запуска звука при появлении в области действия рестриктора, если первая обучающая миссия ещё не пройдена. [logic] active = sr_idle [sr_idle] on_actor_inside = {+mar_intro_go_to_marsh_done} sr_idle@end_section %=start_sim%, sr_idle@sound %=start_sound% ; добавил здесь ; и здесь зациклил обратно через 30 секунд [sr_idle@sound] on_timer = 30000 | sr_idle [sr_idle@end_section] Саму функцию добавил в xr_effects.script function start_sound(actor, obj) -- здесь obj - наш рестриктор "mar_space_restrictor_start_sim" local snd = sound_object("items\\guitar\\guitar_5") -- взял гитару как длительно звучащую, но подойдёт, разумеется, любой существующий звук if snd then snd:play_at_pos(obj, vector():set(-185, 0.5, -301), 1, sound_object.s3d) end end Указанные в функции координаты соответствуют точке около входа к Суслову, немного ближе к забору. Итак, пошёл к тактику, вошёл в зону рестриктора, чтобы активировать звук, при этом поначалу ничего не услышал. Быстро побежал к Суслову, на полпути к указанным координатам гитара стала слышна, а когда дошёл до места, её громкость достигла максимума. Замечу, что гитара стала различима буквально метров за 10 от точки звучания, не раньше. Это работающий пример запуска звука с привязкой к определённому объекту (не актору) и фиксированным на текущем уровне координатам.
  5. nil откуда здесь взялось?
  6. Если в качестве первого аргумента используется db.actor, то вектор во втором аргументе - это не абсолютная позиция, а смещение относительно актора. Получается, ты запускаешь звук очень далеко от своей текущей позиции, он просто не слышен. Более того, звук ещё и будет смещаться синхронно с актором, сохраняя всё ту же относительную позицию. Чтобы запустить звук в конкретной точке, нужно привязать его к любому другому объекту, кроме db.actor, указать абсолютные координаты (это сейчас правильно) и использовать флаг sound_object.s3d.
  7. Kirgudu

    Инструмент

    Новая версия Инструмента от 2025-08-02, только для ЧН. Изменения: Приму с благодарностью любые сообщения об ошибках, а также предложения по функционалу разделов Фракции и Очистка. Обновлены конструктор и готовый комплект для ЧН. Хранилище прежнее, ссылка в шапке темы. В ближайшие месяц-другой буду потихоньку переносить добавленный функционал на другие платформы, следите за новостями. Приятного использования!
  8. Вроде как не обязательно. Можно запустить от всегда имеющегося актора, но при этом задать фиксированные координаты, отличные от его позиции, чтобы звучало со стороны.
  9. В упомянутой инструкции не хватает одного маленького, но важного пункта. 5. Открываем скрипт по адресу "gamedata\scripts\state_mgr_animation_list.script" на редактирование. Находим анимацию "harmonica" (в оригинале это строки 437-452) и для элемента "into_music" меняем значение "harmonica" на "play_harmonica" (используем ровно то самое имя, которое дали добавленной в script_sound_music_and_stories.ltx секции, содержащей описание звуковых файлов). И всё заработает. Анимация гитары чуть повыше содержит правильное наименование секции звуковых файлов, поэтому с ней всё в порядке. Модераторам: прошу добавить этот пятый пункт в самом конце инструкции. Можно в виде примечания "если у вас есть анимация, но нет звука губной гармошки...".
  10. Kirgudu

    S.T.A.L.K.E.R.: Legends of the Zone Trilogy

    Ну может не все, но многие точно. Из тех глобальных модов, в которых я принимал или принимаю участие, ни один, действительно, на ЕЕ платформе не запустится без переделки. С моим "Инструментом" та же история: требуется адекватная замена использованным ранее методам из класса графа. Стоит ли овчинка выделки, пока не решил.
  11. Kirgudu

    S.T.A.L.K.E.R.: Legends of the Zone Trilogy

    Однозначно порезали, но не в этой части (по крайней мере с GetSelectedItem всё в порядке). Например, в ЧНЕЕ (другие части пока не смотрел) полностью вырезан функционал game_graph(), включая сам метод, возвращающий данный класс. Об этом нынешние разработчики GSC пишут прямо в скриптах, см. комментарии такого вида: "-- mtb-bartlomiej.kunikowski: Get rid of game_graph in Lua". Вместо этого в скриптах можно найти всего одну новую импортированную глобальную функцию: gg_vertex_level_id(gvid), и один новый глобальный метод: gg_accessible(self.disable_graph_point, true). Может быть, есть что-то ещё, но для того, чтобы это найти, нужно копаться в движке. Что это означает? Да ровно то, что моды, работающие с графом, а также универсальные модули, такие как артосовский, идут лесом. По крайней мере пока не будет найдена равнозначная замена утраченным методам или не будут переписаны сами моды.
  12. Kirgudu

    Инструмент

    @Miko к сожалению, понять, что не так могло быть в какой-то старой версии Инструмента, не представляется возможным. За год с небольшим мод претерпел множество доработок абсолютно во всех своих компонентах. Какие-то нюансы старой реализации, исправленных багов, сделанных разным способом в разное время фич я просто-напросто не помню. Помочь с адаптацией текущей версии могу, старой - не готов. Предлагаю написать, какую версию основной игры взять в качестве платформы, перечислить все дополнительные моды, которые нужно на неё накатить (где их взять и как и в каком порядке поставить, если есть нюансы), чтобы получить ту сборку, к которой следует подготовить Инструмент. Постараюсь это сделать в течение нескольких дней.
  13. Kirgudu

    Инструмент

    @Miko посмотрю на выходных. Возможно, скрытая ошибка в модуле Артоса или не всегда корректный вызов одного из его методов из модуля спавна. Какая версия Инструмента использована, от какой даты и из какого комплекта? В том модуле lua_helper, который сейчас лежит в составе комплектов Инструмента, в строке 2284 нет цикла 'for'. Очевидно, что используется более старый комплект Инструмента или в отдельные его файлы вносились изменения. Помочь смогу только с последней версией по ссылке из шапки темы, рекомендую скачать и адаптировать себе именно её по инструкции, потом вернуться сюда с ошибкой, если она снова проявится.
  14. position - координаты в виде объекта с типом vector, можно подставить как vector():set(x, y, z), где x, y, я - соотв. координаты по каждой из осей lvid - id level вертекса. Например, для текущего положения героя вычисляется функцией db.actor:level_vertex_id() gvid - id game вертекса. Например, для текущего положения героя вычисляется функцией db.actor:game_vertex_id() Конкретные значения? Откуда я знаю, это уже определять самостоятельно, смотря куда что должно заспавниться. А вообще, об это я и говорю. Всё вышеописанное - такие азы, без изучения и знания которых далеко продвинуться не удастся, а водить за ручку слишком накладно. Крайне рекомендую поизучать скрипты оригинала, тему "справочник по функциям и классам" здесь, на форуме, другие темы, и только после этого приходить с более сложными вопросами.
  15. А вот здесь сложнее, по крайней мере в оригинале. Модифицированные и расширенные движки, возможно, содержат нужный функционал, но это коллегам по цеху виднее, я не в курсе. В оригинале отсутствует коллбэк на взятие предмета из контейнеров, отличных от инвентарных ящиков, в том числе из трупов. Можно завязаться на событие callback.on_item_take, но оно не передаёт сведения об источнике предмета, а значит мы не можем сразу проверить, пуст исходный контейнер или ещё содержит в себе что-то. Получается, что необходимо при открытии любого контейнера (не ящика) предварительно запоминать, какой именно объект открыт. Для трупов монстров это можно сделать, например, в модуле bind_monster.script по событию callback.use_object, для трупов сталкеров аналогичные действия, скорее всего, можно произвести в модуле xr_motivator.script по такому же событию. Что-то такое в голове вырисовывается, хотя не исключаю, что есть способ проще. В любом случае это уже простор для самостоятельных дополнительных изысканий.
×
×
  • Создать...