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

Norman Eisenherz

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

    828
  • Регистрация

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

  • Дней в топе

    1
  • AMKoin

    20,604 [Подарить AMKoin]

Весь контент пользователя Norman Eisenherz

  1. Новая секция ссылается на какой-то квестовый предмет?
  2. Если идея @RayTwitty с падением лута под карту верна (и всесильна), можно вынести спавн предметов около ГГ в отдельную функцию с небольшим разбросом координат и скармливать в нее нужные секции. Пример см. в [xr_box.script] create_items.
  3. Связи с номером слота быть не должно – новые детали спавнятся просто по именам. Действия "сброс оружия из рук" тоже нет, да и все равно в руках обычная модель, а не сломанная. В SDK или в каком-нибудь OGF viewer модель [wpn_flame_brk.ogf] открывается? Еще можно к спавну этой секции дописать local test_obj = alife():create("flamethrower_bad",pos,lv,gv)) и после спавна (отдельным вызовом, не в этом же цикле) проверить if level.object_by_id( test_obj.id )
  4. Все детали указаны как секции, а не как объекты (тип "string", а не "userdata") – не должно быть отличий в спавне. В конфиге предмета "flamethrower_bad" не была назначена прозрачная модель?
  5. По поводу спавна запчастей не понял вопроса: детали "flamethrower_bad" в списке указаны, и спавн всех деталей что по-старому, что по-новому выполняется именно на пол. Для спавна в инвентарь надо указать доп. аргумент id, то есть (…, gv, npc_или_ящик:id()). Для спавна именно в инвентарь ГГ можно забить всё нулями: ("sect", vector(), 0, 0, 0). Расширение списка канистр: если годится любой объект без привязки к типу огнемета, то можно оформить через дополнительный обработчик, как показано ниже.
  6. Тогда так: local feuer = { wpn_flame = 1670, wpn_rg10_ognemet = 670,} … function use_item_ammo_flame_transfer(obj) … if ammo_elapsed > feuer[ flame:section() ] then Вторую проверку оформить аналогично. Можно взять макс. значение -150 или еще как-то.
  7. По умолчанию скрипт рассчитан на наличие одного инвентарного предмета с заданной секцией без проверки "в руках" или "в слоте". В первом приближении можно поправить так: -- подходящее оружие local feuer = { wpn_flame = true, wpn_rg10_ognemet = true, другие_секции, } function use_item_ammo_flame_transfer(obj) … local flame=db.actor:object("wpn_flame") item_in_slot(2) if flame and feuer[ flame:section() ] then
  8. Нашел такую заметку: https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/1247/#comment-1484510
  9. Какая ссылка указана в [fsgame.ltx] под именем $fs_root$?
  10. Вот тут был разбор use_object для физических объектов. Не знаю, применимы ли такие правки к ТЧ.
  11. [ТЧ 1.0006] Спасение долговца в ТД: пленный разворачивается на месте быстро для диалога с ГГ и медленно для диалога с Пулей, а Пуля всегда разворачивается медленно. Что и где надо поправить, чтобы у обоих NPC была только быстрая анимация?
  12. @Black_Raven_03 При таких условиях можно прямо указать предмет: local item = db.actor:object(sect) if item then alife():release( alife():object( item:id() ) ) end Перебор инвентаря пригодится при удалении нескольких предметов с одинаковой секцией.
  13. [ТЧ 1.0006] Задача: добавить субтитры к звуку "val_rob_guard_jeer" – угроза от охранника на ферме в ТД после покупки "гаусски за 800". В [xr_meet] приветствия вычитываются по шаблону "расстояние | анимация@звук | …" – добавлять в логику действие %…% без правок скрипта бесполезно. Попытался просто вывести название звука в сообщение в указанных ниже местах скрипта – никакой реакции. Куда надо привязаться для получения ссылки на звук? [Edit] После перезапуска игры обработался вызов meet_manager.sound. Снимаю вопрос.
  14. @DarkSnowder Возможно, слишком длинный текст. Не знаю, как в OGSR, а в оригинале есть ограничение в 232 знака, если текст указан не ссылкой string_id, а напрямую в скрипте, в том числе при сборке фразы по кусочкам.
  15. Нет, именно для этих действий точность не важна.
  16. Подсветка при выборе смещается с шагом, равным высоте элемента списка – можно регулировать только частоту переключения. Отношение 5:1 или 50:1 – как раз результат теста в игре, и множители подставлены на уровне ощущений. Движок обычный, и начинку я могу только читать.
  17. Эксперимент с device() описан чуть выше. Их можно считать на уровне скриптов? Не просто править множителями до уровня "так пойдет"?
  18. Я уперся только в то, что счетчик стоит на месте – сам апдейт есть.
  19. Такой код не дает вывода в консоль, хотя в [_g.script] применяется именно log(str). Если в старом варианте вывести не новую переменную, а сам счетчик time_global(), будет повтор одинакового значения – дело действительно в паузе и, если ее снять, при любом обращении к меню загрузки игра некоторое время будет жить своей жизнью, что нежелательно. Можно бы сделать счетчик циклов в самом скрипте, но значение device().time_delta остается на 0, а аргумент delta, в отличие от биндеров объектов, для окна не существует – неясно, какая частота обновления окна. Edit: направление было правильное, и какой-то неточный апдейт можно намутить. Соотношение циклов окна и счетчика в мс ~1:5, при загруженной игре ~1:50. Какие значения будут на другом ПК, предсказать сложно.
  20. Нет, все равно одно обновление. Может, дело в движковом выводе окна – в простом скриптовом окне обновление постоянное.
  21. Код типовой, в обычных апдейтах работает. Меню загрузки сейвов обновляется только один раз при создании окна.
  22. @RayTwitty Если загрузить игру и переключаться между игрой и меню, счетчик будет выводиться в консоль по одному разу на каждый вход в меню.
  23. @RayTwitty Добавил в [ui_load_dialog.script] код, показанный ниже: один раз сработало, дальше молчит.
  24. Как на оригинальном движке создать циклическую проверку time_global вне загруженной игры, то есть без апдейта ГГ или другого объекта? Хочу сделать перемотку списка сейвов удерживанием клавиш.
  25. По образу и подобию других функций в том же скрипте: сделать обработку стандартных для логики аргументов actor, npc, p (названия любые, типы "объект, объект, список") и читать свои значения, переданные из логики, по ссылкам p[1], p[2], …
×
×
  • Создать...