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

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


Halford

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

Огср - это как раз почти ТЧ. Ну, в теории должно работать все, кроме мультплэера, который все равно не работал.

Если не работает что-то еще - или внимательно читать про изменения, которые надо внести, или сообщать разработчикам о проблеме.

 

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


Ссылка на сообщение
(изменено)

по звукам:


function play_sound( npc, t_themes, timeout )
    local t, n = {}, 0    -- список тем
    local tt
    for k, v in pairs( t_themes ) do    -- проверяем существование и перекладываем в i-таблицу
        tt = t_list[v]
        if tt then n = n + 1; t[n] = v
        else
            log( "error", "play_sound, ivalid theme %s [%s]", to_str( v ), to_str( npc ) )
            return false
    end    end
    -- log( "info", "play_sound, themes: %s (%s)", n, to_str( npc ) )
    if n == 0 then return false end

    n = t[math.random(n)]    -- из списка тем выбираем одну
    t = { ["theme"] = n }
    get_sound( t_list[n], t, npc )    -- получаем настройки

    n = t.max_snd    -- проверяем корректность, t  - настройки
    if n then
        tt = t_grps[ get_key(npc) ]    -- tt - теперь группа для непися
        tt.idle = math.random( t.min_snd, n ) * 1000
    else    -- если, например, воюют, то таблица пустая, играть ничего не надо
        -- log( "info", "play_sound, busy ( theme: %s )", t.theme, to_str( npc ) )
        return false
    end

    n = t.into_max    -- последовательный список из настроек
    if n and n ~= 0 then
        local into = t.into_id
        tt = db.sound[npc:id()].last_snd    -- что играли до этого момента
        local id = tt[into]
        -- log( "info", "play_sound, check into: %s:%s, last id: %s (%s)", t.theme, into, tostring( id ), to_str( npc ) )
        if id then
            if id < n - 1 then id = id + 1
            else    -- вышли за пределы ( при n == 1 максимальный id == 0 )
                if t.into_cycled then id = 0
                else
                    -- log( "info", "play_sound, not cycled, already played (%s)", id )
                    return false    -- для xr_kamp !
            end    end
        else id = 0
        end
        tt[into] = id
        -- process_tutor_on_sound( t.theme )
        npc:play_sound( into, 1, 0, 1, 0, id )
        -- log( "info", "play_sound, into: %s:%s, id: %s (%s)", t.theme, into, id, to_str( npc ) )
        return true
    end
    n = t.rnd_max    -- выбираем 1 случайный звук
    if n and n ~= 0 then
        local rnd = t.rnd_id
        local id = 0
        if tt.last_snd then    -- а здесь мы проверяем id не непися, а группы
            tt = tt.last_snd
            if n >= 2 then    -- больше одного варианта, исключаем повторы
                if id == tt[rnd] then
                    id = math_random( n - 1 )    -- 0, если уже что-то было
                    if id == tt[rnd] then id = 0 end    -- криво, кстати
                else id = math_random( 0, n - 1 )    -- если новый, то сразу от 0
                end
            -- elseif tt[rnd] then tt[rnd] = false; return    -- нефиг попугайствовать
            -- пока закомментировано из-за того, что одноразовые определены как рэндом,
            -- взрывы вертолетов, например
            end
            tt[rnd] = id    -- сохраняем в группу играемый звук
        else    -- таблица last_snd почему-то не создана
            if n >= 2 then id = math_random( 0, n - 1 ) end
            tt.last_snd = { [rnd] = id }
        end

        -- log( "info", "play_sound, rnd: %s:%s, id: %s (%s), timeout: %s", t.theme, rnd, id, to_str( npc ), timeout or 0 )
        if timeout then npc:play_sound( rnd, timeout + 1, timeout, 1, 0, id )
        else npc:play_sound( rnd, 1, 0, 1, 0, id )
        end
        return true
    end
    return false
end

Ну и что именно здесь непонятно?

Изменено пользователем Dennis_Chikin
  • Полезно 1

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


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

team - ну, например, xr_walker.script

self.move_mgr:reset( st.path_walk, t_walk, st.path_look, t_look, st.team, st.suggested_state )

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


Ссылка на сообщение
(изменено)

И добавлю еще, что "не езда" БТРа - проблема комбинированная, движково/скриптовое.

Если БТР по какой-то причине не может разогнаться, скриптик вырубает ему движение совсем. Но "неразгон" без видимых причин - это именно где-то глубоко в потрохах.

 

По звукам - ну я и спрашиваю: что именно непонятно ?

min_snd, max_snd -  пауза между звуками, чтоб не было аццкого винегрета.

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

prior - еще более древняя древность, которая вроде как не используется.

 

Касательно юмора - ну вон по отношениям неписей со смартами разжевал уж куда подробнее, результат - вполне ожидаемый, чуть выше по теме наблюдаемый.

 

2Okichi: так я про прозекторскую и говорю. Собственно, после этого и понял, что смысла нет.

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

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


Ссылка на сообщение
(изменено)

"Ставлю min_snd = 7, max_snd = 10

Вроде нормальные паузы, но иногда вторая фраза идёт сразу после первой. Ну и хотелось-бы пореже."

 

Оно для группы в основном. Для одиночек я, кажется, дополнительно прикручивал правильную паузу.

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

Для одиночных обычно используется сингл или рэндом, но в ремарке, с переходом по окончанию звука к следующей секции. Тут, естественно, будет именно сразу и однократно, пока опять на эту же секцию не вернется ("Проходи, не задерживайся!" - ага).

 

Вообще, вся система крайне запутанная, половина звуков используется не по назначению, для второй половины что-то где-то неправильно сконфигурировано. Правильно - это все оторвать, и вызывать всю нужную озвучку через %=mysounds.soundXXXX%, либо вообще дописать для xr_logic  поддержку select = myscript.myfunc, где и проверяться все что надо будет, с возвратом секции, на которую переходить, и выполняться сразу все, что нужно, если нужно.

 

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

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


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

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

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


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

А может просто не прописывать центр костра как точку для сидения?

Впрочем, и скриптовых чисто правок, исключающих эту точку, чтоб не лазить в олспавн - полно.

  • Нравится 1

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


Ссылка на сообщение
(изменено)

в kat_2_center должна быть явно указана точка, в которой сидеть нельзя. И остальные, в которых можно.

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

Изменено пользователем Dennis_Chikin
  • Согласен 2

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


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

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

AMK-Team.ru

×
×
  • Создать...