Dennis_Chikin 3 663 Опубликовано 27 Января 2019 Огср - это как раз почти ТЧ. Ну, в теории должно работать все, кроме мультплэера, который все равно не работал. Если не работает что-то еще - или внимательно читать про изменения, которые надо внести, или сообщать разработчикам о проблеме. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 28 Января 2019 (изменено) по звукам: 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 Ну и что именно здесь непонятно? Изменено 28 Января 2019 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 28 Января 2019 team - ну, например, xr_walker.script self.move_mgr:reset( st.path_walk, t_walk, st.path_look, t_look, st.team, st.suggested_state ) Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 29 Января 2019 (изменено) И добавлю еще, что "не езда" БТРа - проблема комбинированная, движково/скриптовое. Если БТР по какой-то причине не может разогнаться, скриптик вырубает ему движение совсем. Но "неразгон" без видимых причин - это именно где-то глубоко в потрохах. По звукам - ну я и спрашиваю: что именно непонятно ? min_snd, max_snd - пауза между звуками, чтоб не было аццкого винегрета. rnd - на сколько я знаю, рудимент звуковых рестрикторов, который лучше не трогать вообще, prior - еще более древняя древность, которая вроде как не используется. Касательно юмора - ну вон по отношениям неписей со смартами разжевал уж куда подробнее, результат - вполне ожидаемый, чуть выше по теме наблюдаемый. 2Okichi: так я про прозекторскую и говорю. Собственно, после этого и понял, что смысла нет. Изменено 29 Января 2019 пользователем Dennis_Chikin 1 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 29 Января 2019 Оно самое. 100 - полностью блокирует оный рэндом. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 30 Января 2019 (изменено) "Ставлю min_snd = 7, max_snd = 10 Вроде нормальные паузы, но иногда вторая фраза идёт сразу после первой. Ну и хотелось-бы пореже." Оно для группы в основном. Для одиночек я, кажется, дополнительно прикручивал правильную паузу. Плюс, это именно когда задали тему, и дальше они тупо ее повторяют - выбирая случайные звуки из загруженных. Для одиночных обычно используется сингл или рэндом, но в ремарке, с переходом по окончанию звука к следующей секции. Тут, естественно, будет именно сразу и однократно, пока опять на эту же секцию не вернется ("Проходи, не задерживайся!" - ага). Вообще, вся система крайне запутанная, половина звуков используется не по назначению, для второй половины что-то где-то неправильно сконфигурировано. Правильно - это все оторвать, и вызывать всю нужную озвучку через %=mysounds.soundXXXX%, либо вообще дописать для xr_logic поддержку select = myscript.myfunc, где и проверяться все что надо будет, с возвратом секции, на которую переходить, и выполняться сразу все, что нужно, если нужно. Изменено 30 Января 2019 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 30 Января 2019 Квестовый и с открытым лицом - тут по любому странно будет выглядеть. Как раз самое то, чтобы и звук и анимацию задавать через ремарк одноразово пофразно. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 30 Января 2019 А может просто не прописывать центр костра как точку для сидения? Впрочем, и скриптовых чисто правок, исключающих эту точку, чтоб не лазить в олспавн - полно. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 30 Января 2019 (изменено) в kat_2_center должна быть явно указана точка, в которой сидеть нельзя. И остальные, в которых можно. Впрочем, Борян вроде тоже правил, чтобы эта точка исключалась из доступных автоматически. Ну, я его так понял. Изменено 30 Января 2019 пользователем Dennis_Chikin 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 7 Февраля 2019 level.set_time_factor( number ) Есть же тема рядом. 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение