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

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

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

call of pripyat\gamedata\scripts\sim_board.script:233: attempt to call method 'create_npc'

FFFFF У меня был такой лог. Неправильно был прописан сквад в simulation.ltx. Должно быть так:

название сквада из squad_descr = название смарта где он должен находится


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

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


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

Прочтите посты выше...

Спасибо, внимание не обратил что страница новая...
Попытки тщетны что-либо сделать.
Со стори_ид вечные вылеты, сделал что-то такого.
 

Спойлер

function campfire_binder:net_spawn(server_object)
    story_objects.check_spawn_ini_for_story_id( server_object )
    if not object_binder.net_spawn(self, server_object) then
        return false
    end
    local smart_name = string.gsub(self.object:name(), "_campfire_%d*", "")
    if sim_board.get_sim_board().smarts_by_names[smart_name] then
        self.campfire:turn_off()
        if campfire_table_by_smart_names[smart_name] == nil then
            campfire_table_by_smart_names[smart_name] = {}
        end
        campfire_table_by_smart_names[smart_name][self.object:id()] = self.campfire
    end
    return true
end
 

(Снизу функции которые нашел рыская по интернету, только название функций изменил)
function turn_off_campfire(actor, npc, p)
local obj = get_story_object(p[1])
    if obj then
        local campfire = obj:get_campfire()
        campfire:turn_on()
    end
end

function turn_on_campfire(actor, npc, p)
local obj = get_story_object(p[1])
    if obj then
        local campfire = obj:get_campfire()
        campfire:turn_off()
    end
end

Спойлер

[logic]
active = sr_idle@1

[sr_idle@1]
on_info = {=actor_in_zone(test)} %=turn_off_campfire(campfire_test)% sr_idle@nil

[sr_idle@nil]

В итоге я ловлю либо вылет либо никаких результатов.
Придется делать через таблицу в db... Вот только про db я знаю ровно ничего) Где найти информацию о нём или что это вообще?
Звиняйте за беспокойство и тупые вопросы. Вопрос с отключением костров смертелен.

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


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

NewValveCom Я сделал так:

Спойлер

добавил в таблицы:


campfire_by_name = {}

Спойлер

В функцию campfire_binder:net_spawn добавил:

db.campfire_by_name[self.object:name()] = self.campfire

Спойлер

Добавил функции:

function campfire_off(actor, npc, p)
    local obj = db.campfire_by_name[p[1]]
    if obj then
        obj:turn_off()
    end

end

function campfire_on(actor, npc, p)
    local obj = db.campfire_by_name[p[1]]
    if obj then
        obj:turn_on()
    end

end

Спойлер

[logic]
active = sr_idle@on

[sr_idle@on]
on_game_timer = 50 | sr_idle@off %=campfire_off(test_campfire)%

[sr_idle@off]
on_game_timer = 50 | sr_idle@on %=campfire_on(test_campfire)%

Работает по имени костра в SDK, кроме статического освещения и DX11!

Изменено пользователем denis2000
  • Мастер! 3
  • Хабар 1
  • Спасибо 1

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

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


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

Братья Монолита! Хотел узнать истину Монолита.... Как сделать так чтоб нпс спавнился после получения инфопоршня? Ответьте скорее прошу? Очень.


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

 

 

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

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


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

Здраствуйте, у меня вопрос:

Как запретить бегать игроку, а потом обратно разрешить. Проще говоря: отключить возможность бегать игроку

Можно ли как то это сделать?


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

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


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

Извините, а где найти логику НПС ? Просто нпс заспавнить получилось ,но он спавнится не на волк поинтах ,а в центре смарт терейнов.

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

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


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

Можно ли как то это сделать?

Через движок.

6 часов назад, FFFFF сказал:

Извините, а где найти логику НПС ?

А где ты её потерял?

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


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

Товарищи, здравствуйте. У меня возникла проблема. Я смог заспавнить нпс, но он смотрит в стену, вместо того чтоб смотреть на лук_поинт. Прилагаю все матен

Спойлер

[smart_terrain]

squad_id = 1

max_population = 1

 

[exclusive]

zat_a2_stalker_nimble = labx8\zat_a2_stalker_nimble_logic.ltx

Спойлер

 

[logic@zat_a2_stalker_nimble]

active = walker@ranen

suitable = {=check_npc_name(zat_a2_stalker_nimble)}true

prior = 100

 

[walker@ranen]

path_walk = emmis_walk

path_look = emmis_look

Кто нибудь ведает, как проблему решить? 

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

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


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

FFFFF , в точках walk и look флаги должны быть одинаковыми.


Терпение... И все получится.

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


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

makdm Флаги одинаковые. На самом деле он спавнится в центре смар_террейна. Так ,что он вообще не правильно спавнится.

Теперь он вообще спавнится на другом этаже...

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

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


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

FFFFF , в точках walk и look флаги должны быть одинаковыми.

А может дело в названии логики.  есть конфиг с путем до логики, а там зачем то еще название нпс. Я давно уже не шарю в зп. Может эксклюзивы так и работают. Это совместная логика? Типа смарта или сквада? Как быстро я отупел.

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

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


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

Подскажите пожалуйста, а какой параметр нужно править, чтобы уменьшить время, которое НПС после битвы сидят на месте "ждут врагов" (когда они еще говорят фразы типа "подождем еще немного")? Мне нужно, чтобы они буквально секунды через 3 возвращались к нормальному поведению и шли к своим точкам.


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

denis2000 хочу еще спросить кое-что про ИИ сетку. Может ли из-за какой-то конфигурации ИИ сетки падать ФПС? На новой сетке замечаю, что после продолжительной игры довольно часто начинает заметно падать ФПС, до 20-15 кадров, особенно в районе завода. При том на старой сетке у меня такого словить совсем не выходит. И это на самом деле большая проблема, так как в результате старая сетка пока что играется стабильнее.

Есть теория, что это из-за зомбаков в подземке под заводом, они там без ограничений бродят (не прописана логика сейчас), а выход далеко. Может они слышат выстрелы и видят ноды над ними (с завода) и хотят идти туда, но путь ведет их так далеко (вне зоны online), что они залагивают? Может такое быть?
А на старой я вообще не уверен, насколько эта подземка была соединена с другими частями ИИ сетки (оттуда шел ряд ошибок с мутантами), может там они и не пытаются никуда уходить потому что не могут.

Если что, текущая новая сетка валидна.

EDIT: В дополнение к тому, что я писал ранее про ИИ сетку - проверил бекап, на старой там наоборот связь с заводом и подземкой была (странным образом сквозь стену), и я ее походу в какой-то момент убрал. Наверное, в этом причина, надо вернуть, т.к. основной вход в подземку реально очень далеко

EDIT: а вообще нет, черт его знает что там происходит, там кусок какой-то вне геометрии висит вообще, черт поймешь с чем он связан, не знаю короче

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

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


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

буквально секунды через 3 возвращались к нормальному поведению и шли к своим точкам.

post_combat_time = 2,4
По-моему, так это работает. Вписать в секцию logic

  • Лайк 1

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


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

Здравствуйте, как через рестриктор вызвать титры?

Исправляю косяки в моде, и почему-то гг не телепортируется в указанную точку, а просто отключается интерфейс. Причём 3 сквада телепортируются, а гг нет.

Спойлер

[logic]
active = sr_idle@plen

[sr_idle@plen]
on_info = {=actor_in_zone(pripyat_plen_sr)} sr_idle@dialog %=disable_ui =create_squad(pri_zasada_monolith_squad:pripyat_zasada)%

[sr_idle@dialog]
on_game_timer1 = 10| %=add_cs_text(plen_phrase_1)%
on_game_timer2 = 80| %=del_cs_text(plen_phrase_1)%
on_game_timer3 = 90| %=add_cs_text(plen_phrase_2)%
on_game_timer4 = 160| %=del_cs_text(plen_phrase_2)%
on_game_timer5 = 170| %=add_cs_text(plen_phrase_3)%
on_game_timer6 = 220| %=del_cs_text(plen_phrase_3)% sr_idle@dialog2

[sr_idle@dialog2]
on_game_timer1 = 1 | %=add_cs_text(plen_phrase_4)%
on_game_timer2 = 60 | %=del_cs_text(plen_phrase_4)%
on_game_timer3 = 61 | %=add_cs_text(plen_phrase_5)%
on_game_timer4 = 70 | %=del_cs_text(plen_phrase_5)% sr_idle@spawn

[sr_idle@spawn]
on_info = {=actor_in_zone(pripyat_plen_sr)} sr_idle@ui_enable %=create_squad(pri_dolg_sim_squad:pripyat_zasada)%

[sr_idle@ui_enable]
on_game_timer1 = 50 | %=enable_ui =give_task(pripyat_pogovorit_task)% sr_idle@exit

[sr_idle@exit]
on_info = {+pripyat_perehod} sr_idle@tp_actor %=run_postprocess(fade_in:2272) =disable_ui =teleport_squad(pri_dolg_squad:pripyat_perehod_walker_1_walk) =teleport_squad(pri_dolg_sim_squad:pripyat_perehod_walker_1_walk) =teleport_squad(pri_friend_squad:pripyat_perehod_diplomat_walk)%

[sr_idle@tp_actor]
on_game_timer1 = 10 | sr_idle@nil %=teleport_actor(pripyat_perehod_v_pripyat_actor_walk:pripyat_perehod_v_pripyat_actor_look) =stop_postprocess(fade_in:2272) =enable_ui%

[sr_idle@nil]

 

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

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


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

Здравствуйте, как через рестриктор вызвать титры?

=game_credits

3 часа назад, Skala сказал:

почему-то гг не телепортируется в указанную точку

Какая-то из точек не существует. Пересоздай.

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


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

Neptun Пересоздавал точки актёра, но всё тоже самое

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


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

Skala как обходной вариант, можно телепортировать ГГ напрямую по координатам через lua 

db.actor:set_actor_position(vector():set(x,y,z),level_vertex_id,game_vertex_id)

Вроде так это делается. 


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

Да, а сами координаты можно вот так смотреть - https://www.youtube.com/watch?v=WXuF4WmIbBI

Это ТЧ но на ЗП вроде так же работает.

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

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


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

Mawrak А куда это прописывать и как вызвать?

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


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

Skala чтобы вызывать из логики, в xr_effects.script создаем функцию, например

function my_new_teleport()
    db.actor:set_actor_position(vector():set(32.442,-11.221,-241.626),79341,37)
end

А потом из логики вызываем через %=my_new_teleport% как обычную функцию, в вашем случае

on_game_timer1 = 10 | sr_idle@nil %=my_new_teleport =stop_postprocess(fade_in:2272) =enable_ui%

Но все же хочу спросить, почему такая сложная схема? Почему не телепортировать ГГ прямо вместе со сквадами, зачем там отдельная секция и таймер?

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


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

Mawrak Раньше была одна секция вместе со сквадами и всё работало, потом как добавил задание на разговор с персонажем, работать перестало и решил попробовать так. Так тоже не работает

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


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

Skala а, то есть у вас сейчас +pripyat_perehod выдается через диалог? Тогда я думаю что не в самом телепорте проблема, а в том, что ГГ в диалоге в этот момент. Попробуйте добавить

<action>dialogs.break_dialog</action>

Перед выдачей инфы в диалоге:

<action>dialogs.break_dialog</action>
<give_info>pripyat_perehod</give_info>

ну или как у вас там все сделано

  • Лайк 1

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 22.12.2023 в 14:11, denis2000 сказал:

NewValveCom Я сделал так:

  db.script (Показать контент)

добавил в таблицы:


campfire_by_name = {}

  bind_campfire.script (Показать контент)

В функцию campfire_binder:net_spawn добавил:

db.campfire_by_name[self.object:name()] = self.campfire

  xr_effects.script (Показать контент)

Добавил функции:

function campfire_off(actor, npc, p)
    local obj = db.campfire_by_name[p[1]]
    if obj then
        obj:turn_off()
    end

end

function campfire_on(actor, npc, p)
    local obj = db.campfire_by_name[p[1]]
    if obj then
        obj:turn_on()
    end

end

  Файл логики рестриктора (Показать контент)

[logic]
active = sr_idle@on

[sr_idle@on]
on_game_timer = 50 | sr_idle@off %=campfire_off(test_campfire)%

[sr_idle@off]
on_game_timer = 50 | sr_idle@on %=campfire_on(test_campfire)%

Работает по имени костра в SDK, кроме статического освещения и DX11!

Спасибо! Жаль, что не будет работать на всех рендерах, но разберусь.
 


Хочу реализовать субтитры с их появлением через light_anim, и появление субтитров я реализовал с помощью скрипта:
 

Спойлер

function add_text_no_blink_subtitle(actor, npc, p)
    if p[1] then
  local hud = get_hud()
  local cs_text = hud:GetCustomStatic("text_on_screen_subtitle_no_blink")
  if cs_text then
   hud:RemoveCustomStatic("text_on_screen_subtitle_no_blink")
  end
  hud:AddCustomStatic("text_on_screen_subtitle_no_blink", true)
  cs_text = hud:GetCustomStatic("text_on_screen_subtitle_no_blink")
  cs_text:wnd():TextControl():SetText(game.translate_string(p[1]))
    end
end

+логика: %=add_text_no_blink_subtitle(test)%

Попытался реализовать затухание субтитра через отдельный скрипт (но с тем же кодом, надеясь, что так сработает, ну да) и поменял цвета в фреймах light_anim (черный и белый), но в таком случае просто появляется текст практически также, т.е. нужно, чтобы он затухал также, как и появился, а не резко заканчивался.
Это реально сделать, если поменять тот скрипт или нужно вообще новый код?

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


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

Mawrak Да, инфопоршень через диалог выдаётся. Попробую сделать как вы сказали

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


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

Товарищи, приветствую. Как сделать так чтоб нпс спавнился только после получения предмета/ инфопоршня?

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти

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