Overf1rst 1 424 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 16 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoDizzari 51 Опубликовано 26 февраля 25 минут назад, denis2000 сказал: Выведите в лог имя смарт_ковера, которого не может найти движок и от него пляшите. Насколько я понял вы сами-же и назначили такую логику поведения, а теперь нас спрашиваете, что сделали не так? А как вывести имя смарт ковера? Защитим мир от заразы - Зоны Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 77 Опубликовано 26 февраля 16 минут назад, Pavel2000 сказал: а есть способ спавна объекта(предмета) зависшего в воздухе по скрипту? Помотай выше, там описан способ установки спавн-обтекта. Не по скрипту правда, но может сообразишь как по скрипту его заспавнить. У меня без скрипта висят аномалии Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FFFFF 0 Опубликовано 26 февраля (изменено) Приветствую. Довольно необычный вопрос: Как сделать так, чтоб после получения инфопоршня, свет на локации выключался, а звуки локации менялись? Изменено 26 февраля пользователем FFFFF Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoDizzari 51 Опубликовано 26 февраля Подскажите почему не срабатывает автосохранение в зоне: [logic] active = sr_idle@text [sr_idle@text] on_info = {=actor_in_zone(zat_a1_lager_restr)} sr_idle@timer %=add_cs_text(st_zat_a1_lager_restr_podskazka_name)% [sr_idle@timer] on_game_timer = 50| nil %=del_cs_text() =scenario_autosave(st_zat_a1_lager_restr_podskazka_save_name)% [nil] Надпись cs_text высвечивается, а сейва нет Защитим мир от заразы - Зоны Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ScR1pt 501 Опубликовано 26 февраля 4 минуты назад, SoDizzari сказал: [nil] тебе не нужно создавать секцию nil. может в ней проблема? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 761 Опубликовано 26 февраля 3 часа назад, SoDizzari сказал: А как вывести имя смарт ковера? Вы хотя бы расширенный лог включите, разблокировав функцию abort из _g.script Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoDizzari 51 Опубликовано 26 февраля ScR1pt Она должна быть пустой, нулевой Защитим мир от заразы - Зоны Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ScR1pt 501 Опубликовано 26 февраля SoDizzari Я понимаю, но тебе не нужна новая секция в логике, если ты переводишь её в nil Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Toplol4ik 35 Опубликовано 26 февраля 2 минуты назад, SoDizzari сказал: on_game_timer = 50| nil %=del_cs_text() [nil] Поставь sr_idle@nil и пробел после = 50 1 час назад, FFFFF сказал: Как сделать так, чтоб после получения инфопоршня, свет на локации выключался Дай всему динамическому освещению (статическое выключить нельзя) стори ид и потом через логику выключи: %=turn_off(стори_ид_освещения)%. Всему освещению можно дать один стори ид. По поводу смены звуков не знаю. 1 Просто создаю свой мод... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 761 Опубликовано 26 февраля 1 час назад, FFFFF сказал: Как сделать так, чтоб после получения инфопоршня, свет на локации выключался, а звуки локации менялись? Создайте секцию погоды с нужными характеристиками и переключитесь на нее функцией: %=set_weather( имя_секции:true )% Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 20 Опубликовано 26 февраля Итересcно а есть проверка на наличие определённого предмета в inventory box? пытался гуглить ничего не нашёл Дополнено 35 минуты спустя может какие то костыли есть? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 761 Опубликовано 27 февраля 8 часов назад, Pavel2000 сказал: Итересcно а есть проверка на наличие определённого предмета в inventory box? В оригинале - нет, а напишете - будет. Все необходимое есть в наличии (а может и функцию такую уже писали модеры). Суть такова: Даете своему inventory box стори_ид, затем передаете в самописную функцию параметры - стори_ид ящика и имя секции искомого предмета. Затем в скрипте xr_conditions создаете функцию в которой по стори_ид получаете inventory box, как объект, применяете к нему метод iterate_inventory box, один из аргументов этого метода - функция которая будет вызвана для каждого объекта из ящика, и в этой функции вы сравниваете имя секции предмета с искомым и если есть совпадение выставляете флаг - нашел. Результат работы вашей самописной функции и есть этот флаг. 1 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 20 Опубликовано 27 февраля 5 часов назад, denis2000 сказал: (а может и функцию такую уже писали модеры мне кажется сгм 2.2 такое было(я даже специально скачал его, но никак не найду) а насчёт описаного вами метода, для меня пока что это выглядит очень не понятно, но попробую поищу может что найду Дополнено 48 минуты спустя В 25.04.2023 в 18:54, denis2000 сказал: Код (Показать контент) alife():create(секция_предмета, координаты_ящика, lv_id_ящика, gv_id_ящика, id_ящика) function delete_item_in_inventory_box(actor, npc, p) --p[1] - стори_ид_ящика --p[2] - имя_предмета local inv_box = get_story_object(p[1]) local items_table = {} local release_item = true local function add_items(inv_box, item) table.insert(items_table, item) end inv_box:iterate_inventory_box(add_items, inv_box) for k,v in pairs(items_table) do if (v:name() == p[2]) and release_item then alife():release(alife():object(v:id()), true) release_item = false end end end function item_in_inventory_box(actor, npc, p) --p[1] - стори_ид_ящика --p[2] - имя_предмета local inv_box = get_story_object(p[1]) local items_table = {} local item_in_box = false local function add_items(inv_box, item) table.insert(items_table, item) end inv_box:iterate_inventory_box(add_items, inv_box) for k,v in pairs(items_table) do if v:name() == p[2] then item_in_box = true end end return item_in_box end нашёл ваш ответ, это ведь то что я ищу? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 761 Опубликовано 27 февраля Да. Функция item_in_inventory_box работает, как я и описал. 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 20 Опубликовано 27 февраля denis2000 ещё один вопрос, мне этот скрипт в xr_conditions добавить или можно его из xr_effects вызывать(прошу прощения если задаю глупые вопросы) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 761 Опубликовано 27 февраля Pavel2000 В xr_conditions конечно. Это проверка, а не действие. 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 20 Опубликовано 27 февраля denis2000 спасибо. а куда прописывать искомые предметы? Дополнено 3 минуты спустя я так понимаю нужно сделать таблицу предметов Дополнено 36 минуты спустя подскажите пожалуйста что мне ещё нужно дописать что оно работало Дополнено 2 минуты спустя поменял if v:name() == p[2] then на if v:section() == p[2] then и всё заработало но я не понял почему) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Вобла 0 Опубликовано 27 февраля Извините, а что в логике рестрикторе надо прописать, чтоб после получения инфопоршня проигровается звук. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 20 Опубликовано 27 февраля Вобла on_info = {+info1} %=play_sound(sound_name)% on_signal = sound_end | nil Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Вобла 0 Опубликовано 27 февраля Pavel2000 А где посмотреть названия звуков? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 20 Опубликовано 27 февраля Вобла в папке sounds распакованной gamedata Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 20 Опубликовано 28 февраля Здравствуйте, у меня есть скрипт на телепортацию который вызывается из gametutorials при использовании рестриктора function gaus_laz_v_af() if xr_conditions.actor_in_zone(actor, npc, {"gaus_laz_v_af_sr"}) then db.actor:give_info_portion("gaus_run_tutor") teleport_actor(nil, nil, {"gaus_prolez_af_way","gaus_prolez_af_look"}) end end [logic] active = sr_idle@start [sr_idle@start] on_info2 = {=actor_in_zone(gaus_laz_v_af_sr)} %=run_tutorial(gaus_laz_v_af_tutor)% on_info3 = {+gaus_run_tutor} sr_idle@tutorial %=run_postprocess(black:666)% [sr_idle@tutorial] on_info = {!actor_in_zone(gaus_laz_v_af_sr)} %=stop_tutorial% on_info2 = {+gaus_run_tutor} %-gaus_run_tutor% on_game_timer = 30 | sr_idle@start %=stop_postprocess(666)% прописал в логике рестриктора запуск пост процесса на чёрный экран и при использовании актёр мгновенно телепортируется и это выглядит не очень как можно сделать задержку телепортации на две секунды? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 77 Опубликовано 28 февраля 2 часа назад, Pavel2000 сказал: Здравствуйте, у меня есть скрипт на телепортацию который вызывается из gametutorials при использовании рестриктора function gaus_laz_v_af() if xr_conditions.actor_in_zone(actor, npc, {"gaus_laz_v_af_sr"}) then db.actor:give_info_portion("gaus_run_tutor") teleport_actor(nil, nil, {"gaus_prolez_af_way","gaus_prolez_af_look"}) end end [logic] active = sr_idle@start [sr_idle@start] on_info2 = {=actor_in_zone(gaus_laz_v_af_sr)} %=run_tutorial(gaus_laz_v_af_tutor)% on_info3 = {+gaus_run_tutor} sr_idle@tutorial %=run_postprocess(black:666)% [sr_idle@tutorial] on_info = {!actor_in_zone(gaus_laz_v_af_sr)} %=stop_tutorial% on_info2 = {+gaus_run_tutor} %-gaus_run_tutor% on_game_timer = 30 | sr_idle@start %=stop_postprocess(666)% прописал в логике рестриктора запуск пост процесса на чёрный экран и при использовании актёр мгновенно телепортируется и это выглядит не очень как можно сделать задержку телепортации на две секунды? t=n, где n - время Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 20 Опубликовано 28 февраля 8 минут назад, Pepel сказал: t=n, где n - время а куда это прописать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 77 Опубликовано 28 февраля 17 минут назад, Pavel2000 сказал: а куда это прописать? скорее всего это должно выглядеть вот так [logic] active = sr_idle@start | t=2000, например или [logic] active = sr_idle@start t=2000 Но думаю, если что, опытные заметят этот коммент, поправят, я надеюсь. Но то что t=n - это факт общеизвестный. Как задержку на лукпоинтах выставляют всегда для нпс. Вроде для телепортов тоже работать должно. Не могу проверить к сожалению. Но ты пробуй. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты