Перейти к контенту

[CS] Ковыряемся в файлах


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

@monk интересный способ конечно...

Тогда такой вопрос: как можно сделать, чтобы начался играться звук после определённого инфопоршня и заканчивался так же? Причём звук не в голове, а в определённом месте.

По информации с вики - sr_sound активируется только когда игрок находится в рестрикторе, а ph_sound в ЧН судя по всему не работает.

Ссылка на комментарий
49 минут назад, Norman Eisenherz сказал:

потребуется создать объект для привязки позиции

Вроде как не обязательно. Можно запустить от всегда имеющегося актора, но при этом задать фиксированные координаты, отличные от его позиции, чтобы звучало со стороны.

  • Нравится 1
Ссылка на комментарий

Так, создал такое:
 

Скрытый текст

local slowmo_snd_off = sound_object("anomaly\\steam")
function sound_start()
    slowmo_snd_off:play_at_pos(db.actor, vector():set(-248.8643, 10.7530, 207.8199), 0, sound_object.s2d)
end

 

function sound_spot()
    slowmo_snd_off:stop()
end

Но, увы - нет звука от позиции.

Сам инфопоршень выдаётся, ибо вкинул туда выдачу месседжа на ПДА.

Что не так?

Ссылка на комментарий
34 минуты назад, imcrazyhoudini сказал:

play_at_pos(db.actor, vector():set(-248.8643, 10.7530, 207.8199), 0, sound_object.s2d)

Если в качестве первого аргумента используется db.actor, то вектор во втором аргументе - это не абсолютная позиция, а смещение относительно актора. Получается, ты запускаешь звук очень далеко от своей текущей позиции, он просто не слышен. Более того, звук ещё и будет смещаться синхронно с актором, сохраняя всё ту же относительную позицию.

Чтобы запустить звук в конкретной точке, нужно привязать его к любому другому объекту, кроме db.actor, указать абсолютные координаты (это сейчас правильно) и использовать флаг sound_object.s3d.

Ссылка на комментарий

@Kirgudu 

Скрытый текст

local slowmo_snd_off = sound_object("anomaly\\steam")
function sound_start()
    slowmo_snd_off:play_at_pos(nil, vector():set(-248.8643, 10.7530, 207.8199), 0, sound_object.s3d)
end

function sound_spot()
    slowmo_snd_off:stop()
end


Итог тот же.

Ссылка на комментарий

@imcrazyhoudini нет, я же написал, что нужен объект. Актор или любой другой, но нужен.

Для демонстрации сделал на чистой игре нижеследующие правки.

В логике рестриктора mar_space_restrictor_start_sim.ltx (расположен примерно в межкомнатном проёме между Лебедевым и тактиком) добавил функцию запуска звука при появлении в области действия рестриктора, если первая обучающая миссия ещё не пройдена.

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = {+mar_intro_go_to_marsh_done} sr_idle@end_section %=start_sim%, sr_idle@sound %=start_sound% ; добавил здесь

; и здесь зациклил обратно через 30 секунд
[sr_idle@sound]
on_timer = 30000 | sr_idle

[sr_idle@end_section]

Саму функцию добавил в xr_effects.script

function start_sound(actor, obj)
	-- здесь obj - наш рестриктор "mar_space_restrictor_start_sim"
	local snd = sound_object("items\\guitar\\guitar_5") -- взял гитару как длительно звучащую, но подойдёт, разумеется, любой существующий звук
	if snd then snd:play_at_pos(obj, vector():set(-185, 0.5, -301), 1, sound_object.s3d) end
end

Указанные в функции координаты соответствуют точке около входа к Суслову, немного ближе к забору.

Итак, пошёл к тактику, вошёл в зону рестриктора, чтобы активировать звук, при этом поначалу ничего не услышал. Быстро побежал к Суслову, на полпути к указанным координатам гитара стала слышна, а когда дошёл до места, её громкость достигла максимума. Замечу, что гитара стала различима буквально метров за 10 от точки звучания, не раньше.

Это работающий пример запуска звука с привязкой к определённому объекту (не актору) и фиксированным на текущем уровне координатам.

  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

1. 

 

Как поправить это зависание собак на одном месте?
2. При удалении контролёра скриптом звук играет в голове и дальше.
Как править?

Ссылка на комментарий

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

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

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...