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

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

 
 
В 04.06.2026 в 22:49, Pavel2000 сказал:

вопрос по анимациям

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

  логика (Показать контент)

[logic]
active = remark

[remark]
anim = wait
on_info = {+xxx} remark@2

[remark@2]
anim = hide

заметил такой момент что когда происходит переключение с секции на секцию нужная анимация запускается с задержкой и задержка эта зависит от предыдущей анимации т.е в любом случае сначала до конца проигрывается первая анимация а только потом вторая. 
и вот вопрос: Есть ли способы принудительно запустить анимацию?

крч, вроде как следующая анимация не запустится пока до конца не отыграется прошлая. Я как-то использовал такую функцию, она принудительно останавливает анимацию, что позволит новой сразу начаться (смотрится не рвано, нормально)

Спойлер

function reset_npc_animation(actor, npc, p)
    local npc_obj

    if (p and p[1] ~= nil) then
        npc_obj = get_story_object(p[1])
    elseif (npc ~= nil) then
        npc_obj = npc
    else
        return
    end

    local state_mgr = db.storage[npc_obj:id()].state_mgr

    if state_mgr == nil then
        return
    end

    local planner = npc_obj: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_obj:set_body_state(move.standing)
    npc_obj:set_mental_state(anim.free)
end

 

 в твоем случае использовать так надо будет
 

Спойлер

[logic]
active = remark

[remark]
anim = wait
on_info = {+xxx} %=reset_npc_animation% remark@2

[remark@2]
anim = hide

 

Изменено пользователем Emmis
  • Спасибо 1

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


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

моя беда с нпс продолжается, нашёл способ спавнить через рестриктор после инфопоршня, нпс спавнится, но когда иду к месту его спавна вылет связанный с job_data, прочекал в инете, говорят это логика, по гайду прописал нпс в смарте логику, но не помогает. В гайде было что нужно прописать в логике смарт террейна exclusive и там уже всё указать.

Спойлер

 

Логика смарт террейна

[smart_terrain];Смарт Посыльного
squad_id = 6
max_population = 1

[exclusive]
esc_spawn_posylni_posylni = escape\bandit_posylni_logic.ltx

 

Спойлер

 

Логика указанная в exclusive

[logic@esc_spawn_posylni_posylni]
active = walker@stay
suitable = {=check_npc_name(esc_bandit_posylni)} true
prior = 200

[walker@stay]
path_look = esc_posylni_look
pawh_walk = esc_posylni_walk

 

Помогите решить

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 06.06.2026 в 00:15, Disam сказал:

Я верно понял? У меня оно будет выглядеть примерно так:

on_info = {esc_bayn_what_stop}

%=spawn_object(esc_bandit_posilny:esc_posilny_walk) %

Эт неправильно, т.к. симуляция в ЗП - перемещающиеся сквады (*) живности по смартам.

* состоят из секций, что в creatures\m_ltx

И спавнить их надо: =create_squad(sq_name:smart_name)

для добавления в существующий отряд: =create_squad_member(sq_name_new:sq_name_exist)


Точки пути, являющиеся работой в смарте, должны называться так: a_b_n_walk (и look также), где:

a - имя смарта; b - тип работы из gulag_general.script; n - номер работы, от 1 и далее

пример: zat_b100_collector_1_walk

для тех, кто в [exclusive] не требуется указывать тип / номер - zat_b100_mynpc_walk

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


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

т неправильно, т.к. симуляция в ЗП - перемещающиеся сквады (*) живности по смартам.

* состоят из секций, что в creatures\m_ltx

И спавнить их надо: =create_squad(sq_name:smart_name)

для добавления в существующий отряд: =create_squad_member(sq_name_new:sq_name_exist)

Могу с тобой поспорить, ему надо за спавнить не сквад, а одного нпс по определенному условию и это делается так как и спавнят допустим труп ну или убирают одного нпс, если этого нпс прописать в сквад, то его надо спавнит в смарте, а так он один спавнится на вейпоинте и он работает строго по логике которую ты ему пропишешь и к симуляции он не как не относится.


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

Disam Братан с этого и надо было начинать, если спавнишь в смарте, то это сквад и у него логика другая.
в смарте пишешь условие спавна данного сквада и тогда логика данного нпс будет начинаться по другому.
вот так, а не как я тебе написал думая о том, что ты спавнишь просто нпс
[logic@esc_sim_10_stalker_waran]
suitable = {=check_npc_name(esc_sim_10_stalker_waran)} true
prior = 200
active = walker@esc_sim_10_stalker_waran

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

Адаптации ганслингера на моды зов припяти
Всегда на связи в телеге @Mervin62
 

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 05.06.2026 в 18:41, Disam сказал:

Хз как заспавнить нпс скриптом, нашёл ток как заспавнить предмет. Нашёл вроде на stalker-mods.su

function esc_bayn_posylni()
    alife():create("esc_bandit_posylni", vector():set(28.2, 0.2, -72), 338201, 4)
end

То что было на том сайте
выдаёт ошибку что не может найти айди предмета. Мне нужно не сразу после начала игры.

данный способ выдаёт ошибку потому что нпс не прописан в spawn_sections_локация.ltx


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

и как раз таки там и можно указать этому нпс логику
 


 1540412914_ezgif.com-optimize(1).gif.ec7250e918399802d8fe85d6d4fd7081.gif

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами

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


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

я случайно развёл что-то похожее на срач, начнём.

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

Эт неправильно, т.к. симуляция в ЗП - перемещающиеся сквады (*) живности по смартам.

* состоят из секций, что в creatures\m_ltx

И спавнить их надо: =create_squad(sq_name:smart_name)

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

 

Disam Братан с этого и надо было начинать, если спавнишь в смарте, то это сквад и у него логика другая.
в смарте пишешь условие спавна данного сквада и тогда логика данного нпс будет начинаться по другому.
вот так, а не как я тебе написал думая о том, что ты спавнишь просто нпс
[logic@esc_sim_10_stalker_waran]
suitable = {=check_npc_name(esc_sim_10_stalker_waran)} true
prior = 200
active = walker@esc_sim_10_stalker_waran

 

Я не смог заспавнить по способу Mervin, я писал как у него, только потом после неудачи попробовал create_squad, он сработал.

 

2 часа назад, Pavel2000 сказал:

данный способ выдаёт ошибку потому что нпс не прописан в spawn_sections_локация.ltx


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

и как раз таки там и можно указать этому нпс логику
 

Тебе спасибо, я бы не додумался что беда там. Теперь всё выходит.

 

Спасибо всем кто помогал, в некоторых моментах у меня конечно нехватка мозгов, но всем спасибо ещё раз. Спустя 3 дня мучений и попыток я допёр что меня отделяла одна строчка.

 

Сталкер не для простофиль, когда я в spawn_sections_escape сменил нпс логику он выдалёт вылет, уже даже откатил изменения, но ничего.

Спойлер

 

FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ...l.k.e.r. - Зов Припяти\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)
 

stack trace:

0023:69737365 atiumdva.dll

 

 

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

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


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

utils.script:469: bad argument #1

Ошибка в логике нпс, скорее всего, неправильно указали активную схему

 


 1540412914_ezgif.com-optimize(1).gif.ec7250e918399802d8fe85d6d4fd7081.gif

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами

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


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

Ошибка в логике нпс, скорее всего, неправильно указали активную схему

 

Уже даже убирал spawn_sections_escape, не помогло. Скрипт на спавн убирал тоже, та же ситуация. Щас попробую убрать всё что связно с рестрикторами и моим способом спавна до этого.


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

помогло

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


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

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

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

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

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

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

Войти

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

Войти

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

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек. Оставаясь на сайте, вы подтверждаете свое согласие на их использование. Политика конфиденциальности | Условия использования