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

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


Halford

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

Вот вылет:

Expression : !object->used_ai_locations() || ai().level_graph().valid_vertex_id(object->m_tNodeID)
Function : CALifeSwitchManager::add_online
File : D:\prog_repository\sources\trunk\xrGame\alife_switch_manager.cpp
Line : 64
Description : Invalid vertex for object
Arguments : sim_default_stalker_500257

 

 

 

Как быть!? В спавне не было и нет такого и в помине! :(

Заранее спасибо.

P.S.: пробовал это вписать в bind_stalker.script:

перед этой строчкой:

 

function actor_binder:update(delta)

 

вписал это:

 

local se_obj = alife():object("sim_default_stalker_500257")
if se_obj then
alife():release(se_obj, true)
end

 

 

 

Не помогло. Вылет:

Привожу кусочек лога:

 

* [Loading IB] 1048575 indices, 2047 Kb
* [Loading IB] 1048572 indices, 2047 Kb
* [Loading IB] 1048575 indices, 2047 Kb
* [Loading IB] 1048566 indices, 2047 Kb
* [Loading IB] 351276 indices, 686 Kb
* phase time: 1945 ms
* phase cmem: 321332 K
* phase time: 215 ms
* phase cmem: 324806 K
* phase time: 15 ms
* phase cmem: 324806 K
     WARNING: Occlusion map 'd:\Рабочий Стол(Диск d)\program files\s.t.a.l.k.e.r. - Зов Припяти\gamedata\levels\l03_agroprom\level.hom' not found.
* phase time: 14 ms
* phase cmem: 324806 K
* phase time: 37 ms
* phase cmem: 324806 K
* phase time: 29 ms
* phase cmem: 324806 K
! Can't find texture 'crete\crete_walls_old_03'
! Can't find texture 'veh\veh_avtobus'
* t-report - base: 1171, 471899 K
* t-report - lmap: 2, 2048 K
* WARNING: player not logged in
! Can't find texture 'map\map_escape_build'
! Can't find texture 'map\map_l03_agroprom'
* phase time: 8019 ms
* phase cmem: 326926 K
* phase time: 51 ms
* phase cmem: 326926 K
* [win32]: free[651812 K], reserved[148896 K], committed[1296380 K]
* [ D3D ]: textures[502986 K]
* [x-ray]: crt heap[326926 K], process heap[10820 K], game lua[6048 K], render[254 K]
* [x-ray]: economy: strings[10818 K], smem[10487 K]
stack trace:

001B:0299B7ED lua.JIT.1.1.4.dll, lua_yield()

 

 

Версия игры(на всякий случай):Зов Припяти, 1.6.02

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


Ссылка на сообщение

Artos, KD87, извините, но level.hom нет на уровне вообще. Я попробую создать.

И ещё. Как Вы думаете в чём может быть проблема?

Ещё я скажу Вам точно: на уровне один граф поинт.

Вроде признался во всём. Спасибо, что растолковали мне что к чему :)

Буду эксперементировать.

 

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

--/Artos

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

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


Ссылка на сообщение

А можно ли как-то сделать зону, в которой не будет звучать звуки амбиента и фоновой музыки?

Если да, то как?

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


Ссылка на сообщение

Решил добавть зону ранодомного звука.

1) Файл script_sound.ltx.

#include "script_sound_los.ltx"
[list]:list_script_sound_los

 

 

2) Файл script_sound_los.ltx

[list_script_sound_los]
ambient_podzemka

[ambient_podzemka]
type = 3d
path = ambient\ugrnd\
shuffle = rnd
idle = 3,5,100

 

 

3) Логика space_restrictor:

[logic]
active = sr_sound

[sr_sound]
snd = ambient_podzemka
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)

 

 

 

P.S.: Добавил это в конец файла xr_sound.script:

--' Таблица для хранения созданных саунд обжектов.
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

 

 

И sr_sound прописал в modules.script.

Тот же вылет.

Прошу помощи. Заранее, благодарю за разъяснение :)

 

Добавлено через 41 мин.:

CuJIbBEP, в папке configs есть папка environment.

В ней есть папка weather. В ней файл [default]. Это основной конфиг погоды для поверхностных локаций.

Для подземелий используется indoor. В файлах погоды идут ссылки на солнце(suns.ltx), грозовые эффекты(thunderbolts), звуковой амбиент(ambients.ltx, в котором содержаться секции цикла дня(день, ночь, вечер и т.д.), и sound_channels.ltx(сами ссылки и настройки на звуковые файлы)), ссылки на текстуры неба, облаков, эффекты живого мира(effects.ltx) и т.д.

Это в кратце. Надеюсь, я правильно тебя понял.

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


Ссылка на сообщение

Clayman, звук должен играть рандомно. Так ведь можно? По крайней мере в ТЧ можно было.

Т.е. мне надо зону, при входе в которую начинают воспроизводиться звуки(рандомно).

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


Ссылка на сообщение

rusMAFIA, проблема с моделью. Либо игру заново начинать, либо ствол заменять.

Clayman, всё сделал. Запустилось. Но при входе в зону с рандомными звуками вылет такого типа:

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...r. - Зов Припяти\gamedata\scripts\sound_theme.script:672: bad argument #1 to 'select_next_sound' (interval is empty)

 

 

Звкивписать что-ли надо в sound_theme.script?

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

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


Ссылка на сообщение

Clayman, просто я хотел сделать так, чтобы проигрывалась вся папка....

Ладно.

[x]

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

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


Ссылка на сообщение

Добрый вечер. Наверняка, всем известно, что есть в ТЧ и ЧН схема sr_silence(укрытие амбиент-звуков и фоновой музыки). Есть эта схема и в ЗП. Но не работает почему-то...Подскаэите пожалуйста, есть ли альтернатива этой схме, или может можно её как-нибудь "оживить"?

Заранее спасибо за ответ.

Изменено пользователем ColR_iT
Перенёс.

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


Ссылка на сообщение

Artos, я попробовал сделать как Вы сказали.

Ну результат немного плачевный :(

В игре остались только два звука в рабочем состоянии(т.е. громкость у них не убрана).

Глав.меню и фоновая музыка. Остальные звуки не звучат. Никакие(не встрелы, ни амбиент, ни вступительный ролик, ничего...)...

При входе в зону "беззучия" фоновая музыка затухает.

При выходе не начинает играть вновь. Только при выходе в глав.меню. и обратно в игру музыка начинает играть вновь.

Может я чего-то не так сделал, может игре что-то не нравиться, но описал я всё в точности.

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

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


Ссылка на сообщение

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

Сделал, как предположил товарищ Clayman:

"Логика рестриктора"
[logic]
active = sr_idle@off

[sr_idle@off]
on_actor_inside = sr_idle@on %=amb_stop%

[sr_idle@on]
on_actor_outside = sr_idle@off %=amb_start%


И функции в xr_effects.script:

"По аналогии с ui_sleep_dialog.script"
function amb_start()
_G.mus_vol = get_console():get_float("snd_volume_music")
_G.amb_vol = get_console():get_float("snd_volume_eff")
get_console():execute("snd_volume_music 0")
get_console():execute("snd_volume_eff 0")
end

function amb_stop()
get_console():execute("snd_volume_music "..tostring(_G.mus_vol))
get_console():execute("snd_volume_eff "..tostring(_G.amb_vol))
_G.amb_vol = 0
_G.mus_vol = 0
end

 

Вроде ничего не упустил. То, что получилось в игре, я уже описывал выше.

P.S.: CoP, 1.6.02. Если что-то забыл написать поправьте пожалуйста.

P.S.S.: Совет я Ваш принял, и попытался использовать в правильном напрвлении. Получилось, но не совсем так, как хотелось бы.

 

Используй тег код, а не цитату. И спойлер. Cyclone

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


Ссылка на сообщение

Artos, большое спасибо за объяснени и потраченное на нас время:-). Но мы оказывается не допоняли друг друга.

Рестриктор глушит все(!!!) звуки, а надо только фоновую музыку и амбиент!:-). Вот в чём наша проблема. Это возможно?

 

Artos, вот Вы мне объяснили всё, и я сразу всё понял.

Сделал так: при входе в рестриктор затухает фоновая музыка(snd_volume_music)

А snd_volume_eff как я понял это все остальные звуки. Возможно ли как-то вынести внешний амбиент на отдельную переменную(допустим snd_volume_amb)? Или это только движок редактировать? Или новый скрипт писать?

Или уже есть какой-то другой способ, чтобы убрать только(!) внешний амбмент, а все остальные звуки оставить?

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

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


Ссылка на сообщение

Artos, я перешёл в тему ЗП.

Так как в скриптах я не очень соображаю, но эта функция нужна срочно, то я попытался составить логику для смены погоды:

[logic]
active = sr_idle@in

[sr_idle@in]
on_actor_in_zone = agr_sr_weather_indoor | sr_idle@out %=set_weather(<indoor>:true)%

[sr_idle@out]
on_actor_not_in_zone = agr_sr_weather_indoor | sr_idle@in

 

 

Вылет при заходе в рестриктор:

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:648: attempt to index global 'xr_effects' (a nil value)

 

 

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

 

Исправь синтаксическую ошибку в скрипте 'xr_effects' и в дальнейшем используй чекеры.

И не заннимайся отсебятиной, а пиши конфиги/скрипты в соответствии с допустимым синтаксисом. Откуда ты использование треугольных скобок для задания аргумента взял?

И ... спешка нужна при ловле блох. Тут раздел "Школа" - а наспех не учатся ... --/Artos

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

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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