PorShen, гляди, покажу тебе пример на работе сквадов, надеюсь, ты у нас умный и адаптируешь сам:
Code
target_smart = {=is_day} esc_a1, esc_a2 - днем отряд находится в esc_a1, в любом другом случае (ночью) в esc_a2
target_smart = {!is_day} esc_a1, {=is_rain} esc_a2, esc_a3 - если наступает ночь, сквад идет в esc_a1, если идет дождь - в esc_a2, в остальных случаях топает в esc_a3
Lagos, видел ответ на сталкерине. Не забываем по нему шустрить, у меня помимо форума ещё есть жизнь и ответить я могу не всегда... Насчёт дождя вообще не понял. Тебе нужно его в погодный цикл прописать?
Ушёл с ресурса из-за занятости. Если что-то экстренное - пишите в ЛС: приду, посмотрю, отвечу. Полноправно вернуться в сообщество планирую после релиза второй части игры. ----------------------------------------------------------------- Всем удачи и не скучать.
Репутация: 1197
Регистрация: 17.02.2011
Город: Воронеж
SibireaStalker, про дождь разобрался сам. Про звук не нашёл ничего на сталкерине И вот ещё. Схема sr_sound: Поставил space_restrictor, прописал логику:
[logic] active = sr_sound
[sr_sound] type = podzem_sound_random ;snd = ambient\wind1, ambient\sparks1 rnd = 100 ;position = random idle = 5 delay = 7
И следует вылет:
Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:405: attempt to index field '?' (a nil value)
SibireaStalker, я так понял можно и в on_info записать так: on_info = {=is_day} esc_a1 |walker@... За умного-спасибо) Lagos Ну во-первых: type не может быть от балды. Это либо: actor. Задает звук, играемый со стороны актора. Это — звуки пда, всякие сообщения по смс, переговоры пилотов вертолета — все, что нужно играть без потери громкости от удаления источника. За инициализацию и проигрывание звука отвечает скриптовый класс actor_sound. Либо: npc. Задает звук, играемый неписем. За инициализацию и проигрывание звука отвечает скриптовый класс npc_sound. Либо: 3d. Задает звук, играемый объектами. За инициализацию и проигрывание звука отвечает скриптовый класс object_sound. Либо: looped. Задает звук, играемый зацикленно. Пример — звуки землетрясения при выбросе. За инициализацию и проигрывание звука отвечает скриптовый класс looped_sound.
Во-вторых проверь привязку схемы sr_sound в xr_sound.script,если её там нету,то кину в ЛС.
Сообщение отредактировал PorShen - Четверг, 01.03.2012, 16:00:58
Нет,ты не понял. 1.Звуки и пути к ним прописываются в файлах script_sound_локация.ltx,которые находятся в configs/misc/. 2.А в type,даже,если ты и зарегистрировал звук в sr_sound.script ты не можешь указать другой тип,свой,т.к это требует врезки в код движка.
3.Думаю ситуация разъясниться,если ты сделаешь так(сохрани бекап файлов,на всяк случай): [пример на основе script_sound_music_and_stories.ltx] В самом начале,после [list_music_and_stories] идёт список "ссылок" на конфиг звука,который находится ещё ниже. После [list_music_and_stories],пишешь podzem_sound_random.
В самом низу: [podzem_sound_random] type = 3d npc_prefix = false path = путь shuffle = rnd idle = 10,15,100
В саму логику: [logic] active = sr_sound
[sr_sound] snd = podzem_sound_random rnd = 100 position = random idle = 5 delay = 7
Насчёт привязки,это касается ph_sound,которая устарела и в ЗП не использовалась.На счёт sr_sound я не знаю или не помню. Пробуй,если всё равно вылет,значит дело в привязке.
Сообщение отредактировал PorShen - Четверг, 01.03.2012, 16:22:25
[sr_sound] snd = ambient_podzemka rnd = 100 position = random idle = 5 delay = 7
4)Вылет:
Expression : error handler is invoked! Function : invalid_parameter_handler File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp Line : 815 Description :
Всё таки привязка? P.S.S.: поправил script_sound_los.ltx, оставил только один звук, появился такой вылет:
Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:405: attempt to index field '?' (a nil value)
Это уже точно привязка ...
Сообщение отредактировал Lagos - Четверг, 01.03.2012, 17:54:53
Репутация: 1197
Регистрация: 17.02.2011
Город: Воронеж
PorShen, каким образом? Я поставил спейс рестриктор в сдк, написал для него логику, скомпилил спавн. Поправил конфиги. Вылет. И то что я создал новый файл роли не играет. У меня для ключевых НПС(моих), уже много файлов для каждой локации и т.д..... P.S.: Добавил это в конец файла xr_sound.script: [spoiler]
Code
--' Таблица для хранения созданных саунд обжектов. sound_object_by_theme = {} --' type = [random|seq|looped] function get_sound_object(theme, t_type) if sound_theme.ph_snd_themes[theme] == nil then abort("ph_snd_themes for theme %s", tostring(theme)) return end
if sound_object_by_theme[theme] == nil then sound_object_by_theme[theme] = {} end
if t_type == nil then t_type = "random" end
--' Выбор следующего айдишника local play_id = -1 local table_size = table.getn(sound_theme.ph_snd_themes[theme]) if sound_object_by_theme[theme].last_id == nil then if t_type == "random" then if table_size >= 2 then play_id = math.random(1, table_size) else play_id = 1 end else play_id = 1 end else if t_type == "random" then if table_size >= 2 then play_id = math.random(1, table_size - 1) if play_id >= sound_object_by_theme[theme].last_id then play_id = play_id + 1 end else play_id = 1 end else if sound_object_by_theme[theme].last_id < table_size then play_id = sound_object_by_theme[theme].last_id + 1 else if type == "looped" then play_id = 1 end end end end
printf("SOUND_OBJECT: selected id [%s] for theme [%s], type [%s], size [%s]", tostring(play_id), tostring(theme), tostring(type), table_size)
if play_id == -1 then return end --' Проверяем создан ли у нас соответствующий саунд обжект или его надо создать if sound_object_by_theme[theme][play_id] == nil then if type(sound_theme.ph_snd_themes[theme][play_id]) == "table" then sound_object_by_theme[theme][play_id.."_r"] = get_safe_sound_object(sound_theme.ph_snd_themes[theme][play_id][1].."_r") sound_object_by_theme[theme][play_id.."_l"] = get_safe_sound_object(sound_theme.ph_snd_themes[theme][play_id][1].."_l") else sound_object_by_theme[theme][play_id] = get_safe_sound_object(sound_theme.ph_snd_themes[theme][play_id]) end end
sound_object_by_theme[theme].last_id = play_id
--' Возвращаем саунд обжект if type(sound_theme.ph_snd_themes[theme][play_id]) == "table" then return sound_object_by_theme[theme][play_id.."_r"], sound_object_by_theme[theme][play_id.."_l"] else return sound_object_by_theme[theme][play_id] end end
local sound_object_by_path = {} --' Обертка вокруг функции, возвращающий звуковой объект. function get_safe_sound_object(path) if sound_object_by_path[path] == nil then sound_object_by_path[path] = sound_object(path) end return sound_object_by_path[path] end
function stop_all_sound_object() for k,v in pairs(sound_object_by_path) do if v:playing() then v:stop() end end end function clear_all_sound_object() sound_object_by_theme = {} end [/spoiler]
И sr_sound прописал в modules.script. Тот же вылет.
Сообщение отредактировал Lagos - Четверг, 01.03.2012, 21:20:21
Репутация: 1197
Регистрация: 17.02.2011
Город: Воронеж
Jakoro, спросил бы, научили. Это проще, чем через ACDC. PorShen, всё, полностью разобрался. Остался теперь другой вопрос. Зона, в которой не будет слышен внешний амбиент и фоновая музыка. В ТЧ возможно было. В ЗП убрали. Возможно как-либо заменить\восстановить? Или есть альтернатива?
Сообщение отредактировал Lagos - Воскресенье, 04.03.2012, 01:23:31