Overf1rst 1 496 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 18 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Policai 1 323 Опубликовано 29 октября, 2023 35 минут назад, Prostomod сказал: use_secondary_hit = true, ну и параметр secondary_hit_power. Есть эти секции.. Но не работает, хит наносится только когда попадаешь в аномалию, всего 1 раз, потом можно стоять в ней и ничего... Может и в оригинале так, я не проверял... Сейчас лока компилится, до завтра комп занят, а завтра зайду в игру гляну, есть там у меня аномалии стандартные из ЗП. эти самые жарки. проверю... 37 минут назад, Prostomod сказал: Постой, крышка - это партикл или как-то засунутая динамика в аномалию? Крышка люка это динамический обьект. у меня в моде их много, например со старта на Кордоне, схрон стрелка такая же крышка люка, только как дверь..))) А аномалии есть которые работает с динамическими обьектами... тот же тополиный пух к примеру, я на её основе делал и грави аномалию, и вот теперь жарку...Срабатывает аномалия. и отрабатывает анимацию динамический обьект привязанный к ней... Группа мода в VK Мод делался и тестировался на железе i5-11400, 32Гб ОЗУ, Radeon RX580 Разрешение 2560 х 1440. ВСЕ на максималке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
justrainy 84 Опубликовано 29 октября, 2023 (изменено) N42, способ не помог. Скорее всего я просто не разобрался что делать дальше. Но сделал через логику как у медика из Припяти - работает. Спасибо, в любом случае [meet@no_talk_1] use = false snd_on_use = a1_ohr_no_talk_1 [remark@no_talk_1] anim = guard target = story | actor meet = meet@no_talk_1 on_signal = sound_end | remark@no_talk_2 Дополнено 9 минуты спустя У рестриктора может быть одна активная схема? Если да, то можно ли переключаться между схемами, чтобы не плодить ректрикторы? Изменено 29 октября, 2023 пользователем justrainy Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 310 Опубликовано 29 октября, 2023 (изменено) 24 минуты назад, justrainy сказал: У рестриктора может быть одна активная схема? Если да, то можно ли переключаться между схемами, чтобы не плодить ректрикторы? Да, рестриктор может иметь лишь одну активную схему. Для переключения просто используй on_info, on_timer, on_game_timer, on_actor_inside и т.д. события, через которые можно переключиться на другие схемы. Например: on_game_timer = 30 | {+gen_oso_researches_react_on_guard} sr_idle@psi_blow %=send_message(gen_oso_researches_8)% Где: on_game_timer = 30 - это 30 секунд игрового времени, после которого начнёт выполняться триггер {+gen_oso_researches_react_on_guard} условие, при котором будет выполняться (в данном случае - наличие поршня) sr_idle@psi_blow - имя следующей секции %=send_message(gen_oso_researches_8)% - действия, которые надо выполнить при активации (в данном случае - вызвать функцию) Тут (http://stalkerin.gameru.net/wiki/index.php?title=Настройка_логики._Часть_3) можно подробнее про триггеры прочитать (да и в целом полезно про логику). Изменено 29 октября, 2023 пользователем Prostomod 1 Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
justrainy 84 Опубликовано 29 октября, 2023 Prostomod, еще подскажите? Никак не пойму: target = path | patrol_path, point_id. point_id - что это за номер? Это же не флаг, типа wp00? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 310 Опубликовано 29 октября, 2023 justrainy Когда создаёшь путь из вейпоинтов в СДК, то наверняка заметил там 2 режима: way mode и way point. Первый ставит пути, а второй - точки пути. Вот как раз point_id - индекс точки на пути (я так понял, это не флаг или имя, а порядок, в котором они установлены были в СДК), всегда целое число, меньшее чем количество точек на пути. Например, есть у тебя путь из 3 точек. Тогда в target = path | patrol_path, point_id запишешь так: target = path | <имя пути>, <номер точки на пути из диапазона [0-2]> 1 Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
justrainy 84 Опубликовано 29 октября, 2023 Завалю вопросами данный форум сегодня. Как в нужной секции логики НПС прервать действующую анимацию при переходе на следующую секцию? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 310 Опубликовано 30 октября, 2023 justrainy Мне подсказали такой способ несколько месяцев назад, работает безотказно: 1 Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
justrainy 84 Опубликовано 30 октября, 2023 Prostomod, а у меня почему-то вылетает [error] Description : e:\s.t.a.l.k.e.r.cop\gamedata\scripts\xr_effects.script:9: attempt to call global 'reset_animation' (a nil value) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Conserva 21 Опубликовано 30 октября, 2023 Здравствуйте, многоуважаемый мододелы. Хотел я, значит, сделать, чтобы после определённого инфопоршня НПС из стартовой позиции перешёл на вторую, и когда перешёл сказал фразу. Сделать-то сделал, но НПС, вместо того, чтобы перейти на новый вэйпойнт и сказать фразу, сперва говорит фразу и только потом переходит на нужный вэйпойнт. Второй позиции я прописал on_info на запуск фразы и, вероятно, из-за этого такое происходит, но меняю я инфо walker и remark, который и запускает фразу, так в игре он идёт на новую позицию, но не говорит фразу. Кто знает, почему? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Emmis 493 Опубликовано 30 октября, 2023 B0lt увидеть бы логику всего этого добра История Джона 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 310 Опубликовано 30 октября, 2023 justrainy А попробуй функцию reset_npc переместить в самый конец xr_effects.script. 1 Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Emmis 493 Опубликовано 30 октября, 2023 (изменено) justrainy проще написать свою функцию на основе той скопируй и вставь в самый конец xr_effects.script Спойлер function reset_npc_animation(actor, npc, p) local _npc if (p and p[1] ~= nil) then _npc = get_story_object(p[1]) elseif (npc ~= nil) then _npc = npc else return end local state_mgr = db.storage[_npc:id()].state_mgr if state_mgr == nil then return end local planner = _npc:motivation_action_manager() state_mgr.animation:set_state(nil, true) state_mgr.animation:set_control() state_mgr.animstate:set_state(nil, true) state_mgr.animstate:set_control() state_mgr:set_state("idle", nil, nil, nil, {fast_set = true}) state_mgr:update() state_mgr:update() state_mgr:update() state_mgr:update() state_mgr:update() state_mgr:update() state_mgr:update() _npc:set_body_state(move.standing) _npc:set_mental_state(anim.free) end вызывать так:=reset_npc_animation(стори_айди_нужного_нпс) если вызываешь эту функцию из логики нпс у которого и нужно сбросить анимку, в скобках можно ничего не указывать Изменено 30 октября, 2023 пользователем Emmis 1 История Джона 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
justrainy 84 Опубликовано 30 октября, 2023 Prostomod, ага, заработало. Примного! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 310 Опубликовано 30 октября, 2023 (изменено) Теперь мой черёд вопросы задавать: как-нибудь можно проверить, что спавн-объект находится внутри рестриктора? У меня есть комната с большим количеством источников освещения, и вручную каждый из них прописывать в скрипт я просто устану. Хотелось бы просто расставить лампы, накрыть рестриктором и через скрипт выключить всё, что внутри (ну или с проверками определёнными). Да, могу просто получить координаты центра рестриктора и сверять расстояние, но не подходит такое т.к.: легко подходит только для сферических рестрикторов если рестриктор сложен (состоит из нескольких шейпов), то придётся всё-равно много вычислений делать хотелось бы избежать изменение скрипта в случае, если мне понадобится изменять размер рестриктора Изменено 30 октября, 2023 пользователем Prostomod Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Conserva 21 Опубликовано 30 октября, 2023 36 минут назад, Emmis сказал: B0lt увидеть бы логику всего этого добра Как-то так Спойлер [walker@pri_p_leader] path_walk = leader_walk path_look = leader_look meet = meet@default on_info = {+sniper_kill_stop} walker@pri_p_leader_training combat_ignore_cond = false combat_ignore_keep_when_attacked = false gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false [meet@default] close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 2 far_distance = 0 close_snd_distance = 2 use = true allow_break = false trade_enable = false [walker@pri_p_leader_training] path_walk = leader_training_walk path_look = leader_training_look on_info = {-pri_greet_end !is_playing_sound} remark@pri_p_leader_training meet = meet@default combat_ignore_cond = true combat_ignore_keep_when_attacked = true gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false [remark@pri_p_leader_training] anim = guard on_game_timer = 250 | {-pri_sd !is_playing_sound} %=play_sound(leader_start_phrase) +pri_sd% on_signal = sound_end | walker@pri_p_leader_training %+pri_greet_end% meet = no_meet corpse_detection_enabled = false Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AfterGlow 565 Опубликовано 30 октября, 2023 8 минут назад, Prostomod сказал: Теперь мой черёд вопросы задавать: как-нибудь можно проверить, что спавн-объект находится внутри рестриктора? НПС или моб - да Лампочки - нет Назначаешь лампочкам в рестрикторе стори айди и turn_off\turn_on Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 30 октября, 2023 1 час назад, Prostomod сказал: что спавн-объект находится внутри рестриктора? Файл system.ltx Секция [script_zone] Биндер xr_zones.script Любой объект попавший внутрь рестриктора фиксирует колбек, нужно только его отсортировать либо по секции либо по клсиду и поместить в таблицу. А дальше делай с ним что хошь! 1 Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 310 Опубликовано 30 октября, 2023 (изменено) makdm Практически сработало, только я почему-то не могу получить именно источники света. Суть в чём: script_zone работает, я получаю список всех объектов внутри неё в виде таблицы с их id, но при этом при отсеивании лишних объектов я не могу получить источники света т.к. они тоже отсеиваются. А если попытаться костылями их всё-таки получить, то происходит вылет, который говорил что у объекта нет метода get_hanging_lamp(). Скрипт такой: Спойлер function test_lamps_off(actor, npc, p) local content = xr_zones.get_content("labb_boss_polter_light_restr") -- получить все объекты внутри скрипт зоны - работает ок printf("hanging_lamp clsid = [%d]", clsid.hanging_lamp) -- выводит 108 printf("script_phys clsid = [%d]", clsid.script_phys) -- выводит 111 printf("obj_phys_destroyable clsid = [%d]", clsid.obj_phys_destroyable) -- выводит 113 printf("obj_physic clsid = [%d]", clsid.obj_physic) -- выводит 110 for k,v in pairs(content) do local obj = alife():object(k) printf("obj = [%s], clsid = [%d]", obj:name(), obj:clsid()) -- среди имён есть и нужные мне лампы, но их класс ид вообще не совпадает с clsid.hanging_lamp (выводит 139) if v and obj:clsid() == clsid.hanging_lamp then -- естественно, ничего не проходит obj:get_hanging_lamp():turn_off() end end end Вывод такой: Спойлер hanging_lamp clsid = [108] script_phys clsid = [111] obj_phys_destroyable clsid = [113] obj_physic clsid = [110] obj = [labb_fireball_electric_zone_01], clsid = [220] obj = [lights_white_8m_glass_0002_07], clsid = [139] obj = [light_alarm_glass], clsid = [139] obj = [labb_boss_polter_zone_psychic], clsid = [219] obj = [lights_white_8m_glass_0002_02_00], clsid = [139] obj = [meshes\brkbl#18.ogf], clsid = [105] obj = [meshes\brkbl#22.ogf], clsid = [105] obj = [meshes\brkbl#10.ogf], clsid = [105] obj = [lights_white_8m_glass_0002_10], clsid = [139] obj = [light_alarm_glass_06], clsid = [139] obj = [light_alarm_glass_00], clsid = [139] obj = [lights_white_8m_glass_0002_06], clsid = [139] obj = [lights_white_8m_glass_0002_03_00], clsid = [139] obj = [light_alarm_glass_04], clsid = [139] obj = [light_alarm_glass_03], clsid = [139] obj = [lights_white_8m_glass_0002_06_00], clsid = [139] obj = [light_galogen_1_glass_0001_01], clsid = [139] obj = [light_alarm_glass_05], clsid = [139] obj = [lights_white_8m_glass_0002_03_00_00], clsid = [139] obj = [labb_fireball_zone_00], clsid = [220] obj = [lights_white_8m_glass_0002_00_00], clsid = [139] obj = [lights_white_8m_glass_0002_00], clsid = [139] obj = [lights_white_8m_glass_0002_00_00_00], clsid = [139] obj = [light_alarm_glass_07], clsid = [139] obj = [light_alarm_glass_01], clsid = [139] obj = [labb_fireball_zone_01], clsid = [220] obj = [meshes\brkbl#8.ogf], clsid = [105] obj = [meshes\brkbl#7.ogf], clsid = [105] obj = [lights_white_8m_glass_0002_02_00_00], clsid = [139] obj = [lights_white_8m_glass_0002_09], clsid = [139] obj = [meshes\brkbl#13.ogf], clsid = [105] obj = [lights_white_8m_glass_0002_03], clsid = [139] obj = [meshes\brkbl#12.ogf], clsid = [105] obj = [labb_fireball_electric_zone_00], clsid = [220] obj = [meshes\brkbl#11.ogf], clsid = [105] obj = [meshes\brkbl#15.ogf], clsid = [105] obj = [meshes\brkbl#17.ogf], clsid = [105] obj = [meshes\brkbl#25.ogf], clsid = [105] obj = [light_galogen_1_glass_0001], clsid = [139] obj = [meshes\brkbl#9.ogf], clsid = [105] obj = [lights_white_8m_glass_0002_07_00], clsid = [139] obj = [light_alarm_glass_02], clsid = [139] obj = [meshes\brkbl#23.ogf], clsid = [105] obj = [meshes\brkbl#14.ogf], clsid = [105] obj = [meshes\brkbl#16.ogf], clsid = [105] obj = [meshes\brkbl#24.ogf], clsid = [105] obj = [meshes\brkbl#21.ogf], clsid = [105] obj = [lights_white_8m_glass_0002_02], clsid = [139] obj = [meshes\brkbl#19.ogf], clsid = [105] obj = [light_galogen_1_glass_0001_00], clsid = [139] obj = [meshes\brkbl#20.ogf], clsid = [105] Настройки лампы такие: Спойлер Открыл в оригинальном путепроводе лампу, которая выключается - настройки такие-же (разве что story_id добавлено - и всё): Спойлер В чём может заключаться проблема? Изменено 30 октября, 2023 пользователем Prostomod Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 30 октября, 2023 Prostomod, метод get_hanging_lamp() применим к объектам класса CGameObject, а вы его требуете от объекта другого класса. Сперва получите CGameObject из obj посредством, например, some_game_object = level.object_by_id(obj:id()) после чего можно вызывать some_game_object:get_hanging_lamp() дабы получить специфичный hanging_lamp со свойствами лампы и методами on/off для неё. 1 Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 310 Опубликовано 30 октября, 2023 BarmaGlot Спасибо, получилось. Но проблема с фильтрацией осталась. Я хоть и получил экспериментальным путём нужный clsid, но мб можно это как-то исправить, чтобы вместо "какого-то" числа писать просто clsid.hanging_lamp? 1 Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 31 октября, 2023 Prostomod, тут не понятно, что требуется. Предположу, что можно "фильтровать" как раз получением объекта, возвращаемого методом get_hanging_lamp: если объект есть, то это лампа, если нет, то это не лампа. Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Diesel 225 Опубликовано 31 октября, 2023 Я может лезу не в тему про лампы, но они запрещены кажется в серверэтитиес движок для R3-R4. Возможно для сингла скриптами и вызывается, а для сетевого выделенного сервера там точно блок. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Conserva 21 Опубликовано 31 октября, 2023 12 часов назад, B0lt сказал: Как-то так Показать контент [walker@pri_p_leader] path_walk = leader_walk path_look = leader_look meet = meet@default on_info = {+sniper_kill_stop} walker@pri_p_leader_training combat_ignore_cond = false combat_ignore_keep_when_attacked = false gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false [meet@default] close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 2 far_distance = 0 close_snd_distance = 2 use = true allow_break = false trade_enable = false [walker@pri_p_leader_training] path_walk = leader_training_walk path_look = leader_training_look on_info = {-pri_greet_end !is_playing_sound} remark@pri_p_leader_training meet = meet@default combat_ignore_cond = true combat_ignore_keep_when_attacked = true gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false [remark@pri_p_leader_training] anim = guard on_game_timer = 250 | {-pri_sd !is_playing_sound} %=play_sound(leader_start_phrase) +pri_sd% on_signal = sound_end | walker@pri_p_leader_training %+pri_greet_end% meet = no_meet corpse_detection_enabled = false Впрочем, спасибо. Уже и сам разобрался. Дополнено 6 минуты спустя Зато появился другой. НПС не говорит свой диалог. Можно подумать, что из-за неправильно настроенных инфопоршней в DialogEditor, но если в character_desc_ указать не <start_dialog>, а <actor_dailog>, то есть со стороны актёра, всё прекрасно заработает, причём до этого у НПС уже стоял начальный диалог. У них что, ограниченное количество диалогов, которые они начинают? Я просто посмотрел в других character_desc_, и там вроде у большинства НПС 1-2 диалогов с их стороны. Дополнено 11 минуты спустя Впрочем, и сам разобрался. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ScarletFox 1 Опубликовано 1 ноября, 2023 Всем привет! Ситуация, реализовано 20 слотов на поясе, есть ли возможность раскидать эти слоты, как мне хочется и назначить конкретные предметы для них? Пример: Слот 1 - артефакты Слот 2 - Прикладной модуль... ну и так далее. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 900 Опубликовано 1 ноября, 2023 2 часа назад, ScarletFox сказал: Всем привет! Ситуация, реализовано 20 слотов на поясе, есть ли возможность раскидать эти слоты, как мне хочется и назначить конкретные предметы для них? Пример: Слот 1 - артефакты Слот 2 - Прикладной модуль... ну и так далее. Нет. Вероятнее всего нужно править двигло и добавлять новые слоты под прикладной модуль и тд Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты