Overf1rst 1 502 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
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 542 Опубликовано 26 февраля 4 минуты назад, SoDizzari сказал: [nil] тебе не нужно создавать секцию nil. может в ней проблема? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 26 февраля 3 часа назад, SoDizzari сказал: А как вывести имя смарт ковера? Вы хотя бы расширенный лог включите, разблокировав функцию abort из _g.script Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoDizzari 51 Опубликовано 26 февраля ScR1pt Она должна быть пустой, нулевой Защитим мир от заразы - Зоны Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ScR1pt 542 Опубликовано 26 февраля SoDizzari Я понимаю, но тебе не нужна новая секция в логике, если ты переводишь её в nil Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Toplol4ik 41 Опубликовано 26 февраля 2 минуты назад, SoDizzari сказал: on_game_timer = 50| nil %=del_cs_text() [nil] Поставь sr_idle@nil и пробел после = 50 1 час назад, FFFFF сказал: Как сделать так, чтоб после получения инфопоршня, свет на локации выключался Дай всему динамическому освещению (статическое выключить нельзя) стори ид и потом через логику выключи: %=turn_off(стори_ид_освещения)%. Всему освещению можно дать один стори ид. По поводу смены звуков не знаю. 1 Просто создаю свой мод... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 26 февраля 1 час назад, FFFFF сказал: Как сделать так, чтоб после получения инфопоршня, свет на локации выключался, а звуки локации менялись? Создайте секцию погоды с нужными характеристиками и переключитесь на нее функцией: %=set_weather( имя_секции:true )% Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 30 Опубликовано 26 февраля Итересcно а есть проверка на наличие определённого предмета в inventory box? пытался гуглить ничего не нашёл Дополнено 35 минуты спустя может какие то костыли есть? «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 27 февраля 8 часов назад, Pavel2000 сказал: Итересcно а есть проверка на наличие определённого предмета в inventory box? В оригинале - нет, а напишете - будет. Все необходимое есть в наличии (а может и функцию такую уже писали модеры). Суть такова: Даете своему inventory box стори_ид, затем передаете в самописную функцию параметры - стори_ид ящика и имя секции искомого предмета. Затем в скрипте xr_conditions создаете функцию в которой по стори_ид получаете inventory box, как объект, применяете к нему метод iterate_inventory box, один из аргументов этого метода - функция которая будет вызвана для каждого объекта из ящика, и в этой функции вы сравниваете имя секции предмета с искомым и если есть совпадение выставляете флаг - нашел. Результат работы вашей самописной функции и есть этот флаг. 1 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 30 Опубликовано 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 971 Опубликовано 27 февраля Да. Функция item_in_inventory_box работает, как я и описал. 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 30 Опубликовано 27 февраля denis2000 ещё один вопрос, мне этот скрипт в xr_conditions добавить или можно его из xr_effects вызывать(прошу прощения если задаю глупые вопросы) «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 27 февраля Pavel2000 В xr_conditions конечно. Это проверка, а не действие. 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 30 Опубликовано 27 февраля denis2000 спасибо. а куда прописывать искомые предметы? Дополнено 3 минуты спустя я так понимаю нужно сделать таблицу предметов Дополнено 36 минуты спустя подскажите пожалуйста что мне ещё нужно дописать что оно работало Дополнено 2 минуты спустя поменял if v:name() == p[2] then на if v:section() == p[2] then и всё заработало но я не понял почему) «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Вобла 0 Опубликовано 27 февраля Извините, а что в логике рестрикторе надо прописать, чтоб после получения инфопоршня проигровается звук. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 30 Опубликовано 27 февраля Вобла on_info = {+info1} %=play_sound(sound_name)% on_signal = sound_end | nil «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Вобла 0 Опубликовано 27 февраля Pavel2000 А где посмотреть названия звуков? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 30 Опубликовано 27 февраля Вобла в папке sounds распакованной gamedata «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 30 Опубликовано 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 80 Опубликовано 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 30 Опубликовано 28 февраля 8 минут назад, Pepel сказал: t=n, где n - время а куда это прописать? «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 28 февраля 17 минут назад, Pavel2000 сказал: а куда это прописать? скорее всего это должно выглядеть вот так [logic] active = sr_idle@start | t=2000, например или [logic] active = sr_idle@start t=2000 Но думаю, если что, опытные заметят этот коммент, поправят, я надеюсь. Но то что t=n - это факт общеизвестный. Как задержку на лукпоинтах выставляют всегда для нпс. Вроде для телепортов тоже работать должно. Не могу проверить к сожалению. Но ты пробуй. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vasyan54636 132 Опубликовано 28 февраля @Вобла Важно знать, что для проигрывания звук через %=play_sound()% нужно обязательно прописать этот звук в script_sound.ltx файле, а так же звук должен иметь параметры: моно, 16-бит, 44100ГЦ. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoDizzari 51 Опубликовано 28 февраля Здравствуйте, создал НПСов которые должны стоять внутри скадовска. Смарт внутри, Смарт Каверы тоже внутри, Вэй поинты внутри, а НПС почему то выходят на улицу и занимают позиции или левее или правее нужной снаружи. Защитим мир от заразы - Зоны Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 971 Опубликовано 29 февраля SoDizzari НПС не могут добраться до указанных мест по причине: работы не на АИ-сетке, баг АИ-сетки в этом месте, баг движка. Могу предложить только подвигать точки работ. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты