Перейти к содержанию

Рекомендуемые сообщения

 
 
25 минут назад, denis2000 сказал:

Выведите в лог имя смарт_ковера, которого не может найти движок и от него пляшите.


Насколько я понял вы сами-же и назначили такую логику поведения, а теперь нас спрашиваете, что сделали не так?

А как вывести имя смарт ковера?


 

Защитим мир от заразы - Зоны                   Долг.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
16 минут назад, Pavel2000 сказал:

а есть способ спавна объекта(предмета) зависшего в воздухе по скрипту?

Помотай выше, там описан способ установки спавн-обтекта. Не по скрипту правда, но может сообразишь как по скрипту его заспавнить. У меня без скрипта висят аномалии 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую. Довольно необычный вопрос: Как сделать так, чтоб после получения инфопоршня, свет на локации выключался, а звуки локации менялись?

Изменено пользователем FFFFF

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите почему не срабатывает автосохранение в зоне: 

[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 высвечивается, а сейва нет


 

Защитим мир от заразы - Зоны                   Долг.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
4 минуты назад, SoDizzari сказал:

[nil]

тебе не нужно создавать секцию nil. может в ней проблема?


ed1c85bd8aba2500209219c6df96c254.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 часа назад, SoDizzari сказал:

А как вывести имя смарт ковера?

Вы хотя бы расширенный лог включите, разблокировав функцию abort из _g.script

 


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ScR1pt Она должна быть пустой, нулевой


 

Защитим мир от заразы - Зоны                   Долг.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

SoDizzari Я понимаю, но тебе не нужна новая секция в логике, если ты переводишь её в nil


ed1c85bd8aba2500209219c6df96c254.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 минуты назад, SoDizzari сказал:

on_game_timer = 50| nil %=del_cs_text()

[nil]

Поставь sr_idle@nil и пробел после = 50

1 час назад, FFFFF сказал:

Как сделать так, чтоб после получения инфопоршня, свет на локации выключался

Дай всему динамическому освещению (статическое выключить нельзя) стори ид и потом через логику выключи: %=turn_off(стори_ид_освещения)%. Всему освещению можно дать один стори ид.
По поводу смены звуков не знаю.

  • Жму руку 1

Просто создаю свой мод...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, FFFFF сказал:

Как сделать так, чтоб после получения инфопоршня, свет на локации выключался, а звуки локации менялись?

Создайте секцию погоды с нужными характеристиками и переключитесь на нее функцией: %=set_weather( имя_секции:true )%


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Итересcно а есть проверка на наличие определённого предмета в inventory box? пытался гуглить ничего не нашёл


Дополнено 35 минуты спустя

может какие то костыли есть?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
8 часов назад, Pavel2000 сказал:

Итересcно а есть проверка на наличие определённого предмета в inventory box?

В оригинале - нет, а напишете - будет. Все необходимое есть в наличии (а может и функцию такую уже писали модеры).
Суть такова:
Даете своему inventory box стори_ид, затем передаете в самописную функцию параметры - стори_ид ящика и имя секции искомого предмета. Затем в скрипте xr_conditions создаете функцию в которой по стори_ид получаете inventory box, как объект, применяете к нему метод iterate_inventory box, один из аргументов этого метода - функция которая будет вызвана для каждого объекта из ящика, и в этой функции вы сравниваете имя секции предмета с искомым и если есть совпадение выставляете флаг - нашел. Результат работы вашей самописной функции и есть этот флаг.

  • Лайк 1
  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
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

 

 

 

 

 

 

 

нашёл ваш ответ, это ведь то что я ищу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Да. Функция item_in_inventory_box работает, как я и описал.

  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 ещё один вопрос, мне этот скрипт в xr_conditions добавить или можно его из xr_effects вызывать(прошу прощения если задаю глупые вопросы)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pavel2000 В xr_conditions конечно. Это проверка, а не действие.

  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 спасибо. а куда прописывать искомые предметы? 


Дополнено 3 минуты спустя

я так понимаю нужно сделать таблицу предметов 


Дополнено 36 минуты спустя

подскажите пожалуйста что мне ещё нужно дописать что оно работало


Дополнено 2 минуты спустя

поменял

 if v:name() == p[2] then

на 

 if v:section() == p[2] then

и всё заработало

но я не понял почему)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Извините, а что в логике рестрикторе надо прописать, чтоб после получения инфопоршня проигровается звук. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Вобла 

on_info = {+info1} %=play_sound(sound_name)%

on_signal = sound_end | nil

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pavel2000 А где посмотреть названия звуков?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Вобла в папке sounds распакованной gamedata

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Здравствуйте, у меня есть скрипт на телепортацию который вызывается из 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)%

прописал в логике рестриктора запуск пост процесса на чёрный экран и при использовании актёр мгновенно телепортируется и это выглядит не очень

как можно сделать задержку телепортации на две секунды?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
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 - время 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
8 минут назад, Pepel сказал:

t=n, где n - время 

а куда это прописать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
17 минут назад, Pavel2000 сказал:

а куда это прописать?

скорее всего это должно выглядеть вот так

[logic]

active = sr_idle@start | t=2000, например или

[logic]

active = sr_idle@start

t=2000

Но думаю, если что, опытные заметят этот коммент, поправят, я надеюсь. Но то что t=n - это факт общеизвестный. Как задержку на лукпоинтах выставляют всегда для нпс. Вроде для телепортов тоже работать должно. Не могу проверить к сожалению. Но ты пробуй.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу