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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


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

@Kirgudu Привязка в play_rnd срабатывает почти правильно – заметное отставание есть только в том случае, когда прибывшего на точку NPC выталкивает с этой точки кто-то другой, и анимация "дойти + развернуться" отыгрывается повторно, но это уже мелочи.

  • Нравится 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Столкнулся с весьма мерзким явлением. При сохранении (неважно каком - квиксейве или ручном) и попытке загрузиться с него происходит безлоговый вылет. При повторном заходе в игру сохранение исправно загружается. То же самое происходит даже с автосейвами при заходе на новую локацию (в т.ч. через чит-телепорт). Загрузка автосейва - безлоговый вылет. При перезаходе в игру автосейв грузится. Куда хоть копать? Уже попутно пару косяков отловил в попытке понять, в чём соль, а толку ноль.

Платформа ТЧ + x-ray extensions.

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

Вариант субтитров на ТЧ: в xr_sound.script, function play_sound

Добавить две строки:

			local sub_text = "%c[255, 238, 153, 23]"..game.translate_string(tostring(npc:character_name())).."\\n".."%c[255, 255, 255, 255]"..game.translate_string("st_"..snd.theme)
			db.actor:give_game_news(sub_text, "ui\\ui_iconsTotal", Frect():set(84,236,81,45), 0, 10000)


В данный блок:

			-- играем входные
			if db.sound[npc_id].last_snd[snd.into_id] == nil then db.sound[npc_id].last_snd[snd.into_id] = -1 end
			
			--printf("* SND: play seq [%s] for [%s]", db.sound[npc_id].last_snd[snd.into_id]+1, npc:name())
			process_tutor_on_sound(snd.theme)
			npc:play_sound(snd.into_id, 1, 0, 1, 0, db.sound[npc_id].last_snd[snd.into_id]+1)
			db.sound[npc_id].last_snd[snd.into_id] = db.sound[npc_id].last_snd[snd.into_id] + 1
			--printf("* SND: play seq [%s] for [%s]", db.sound[npc_id].last_snd[snd.into_id], npc:name())
			
			-- Вывести сабы
			-- ещё можно проверку на включение кон.команды. типа g_subtitles
			--local enable_subs = get_console():get_integer("g_subtitles")
			--if enable_subs == 1 then
			local sub_text = "%c[255, 238, 153, 23]"..game.translate_string(tostring(npc:character_name())).."\\n".."%c[255, 255, 255, 255]"..game.translate_string("st_"..snd.theme)
			db.actor:give_game_news(sub_text, "ui\\ui_iconsTotal", Frect():set(84,236,81,45), 0, 10000)
			--end
			return

Ещё нужно сделать локаль, типа st_название_темы из script_sound.ltx:

<string id="st_esc_wolf_radio">
<text>Мужики, я к вам посылаю человека. Действуйте по обстоятельствам. Если сочтёте нужным, атакуйте. Приём...</text>
</string>

 

Работает, как с флагом s=sound_theme в точки пути, так и snd = esc_wolf_radio в схеме ремарк:

soc-subtitles-test.jpg

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

Часть методов вывода звука указана в самих обработчиках:

[xr_effects.script] ответ по рации "пусть не мельтешит здесь" / Круглов / КПК Призрака

[ph_sound.script] пульты в X-16 / арена

[sr_sound2d.script] война на складах

 

Часть звуков выводится в голове ГГ. В db.sound[0] записей не появляется.

 

Значительная часть звуков ссылается на конфиг [script_sound.ltx], из которого еще надо вынуть определенную ссылку для получения номера фразы и времени отображения субтитров. Иногда надо делать поправку на номер ранее выведенной фразы с тем же заголовком (диалоги в ТД).

 

 

Я расставил ссылки в имеющихся скриптах и собрал пути/обертки в своем обработчике. Так получается значительно меньше мусорных звуков, вроде "привет / пока / убери ствол / анекдот / погода", чем при привязке ко всем звукам в [xr_sound.script] – из этого скрипта беру только номер звука при случайном выборе фразы (пленный Шустрый, например).

 

Выборочно потестил прямую привязку к [xr_sound.script]: ловятся, в основном, одинаковые типовые звуки, тогда как на фразы NPC по ходу квестов почти никакой реакции.

- АТП с Петрухой

- Бес на Свалке

- "деловое предложение" за 800 (есть только фразы охранников)

- вопли и бубнеж Круглова

- "мы не можем его так бросить"

- война Долга и Свободы

 

В общем, не все так просто в этой каше – это в ЧН уже есть почти готовый обработчик субтитров, и большая часть правок сводится к добавлению аргумента "отправитель".

  • Полезно 2

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
  28.03.2025 в 15:26, Norman Eisenherz сказал:

[ph_sound.script] пульты в X-16 / арена

[sr_sound2d.script] война на складах

Просто для понимания - префиксы - сокращение от типа объекта, для которого работает схема. ph - physic object, sr - space restrictor (не исключены другие типы). Разница в том, что у физ. объекта есть кости, от которых можно играть звук + объект может двигаться. Рестрикторы не имеют шейпа (модели) и они статичны, поэтому звук играет просто на точке спавна. То есть, к субтитрам оно вряд ли имеет отношение. Нужно смотреть то, что играет в голове ГГ.

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

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

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Математики есть?
Имеем:

db.actor:position()

db.actor:direction()

db.actor:set_actor_position( vector():set( x, y, z ) )

Как высчитать координаты для перемещения ГГ от текущей позиции - на три метра вперёд по направлению взгляда?

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий
  30.03.2025 в 21:59, Баба ЯГА сказал:

на три метра вперёд по направлению взгляда

 

local position, direction, distance = db.actor:position(), db.actor:direction(), 3
local new_position = position:add(direction:normalize():mul(distance))

 

Вместо db.actor:direction() можно использовать device().cam_dir - тогда будет учитываться не только направление взгляда вправо-влево, но ещё и его наклон.

  • Согласен 1
  • Полезно 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

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

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

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

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

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

Войти

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

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

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