Случайная подборка модов
Волей Случая
3.5
Sleep Of Reason - Zulus Story 0.5
2.4
Начало. Пролог Проекта Отступник
3.2
Dream Reader-TFZ 1.1
3.7
Путь Человека. Шаг в неизвестность. Дежавю
3.4
Road To The North
3.7
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 1
  • 1
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Отсылаем сообщения главному герою методом разработчиков
Отсылаем сообщения главному герою методом разработчиков
Российская Федерация  Scouser
Среда, 16.01.2013, 01:09 | Сообщение # 1
Статус:
Опытный:
Сообщений: 1614
Награды: 16
Регистрация: 21.10.2012

Здравствуйте. Я решил создать маленький урок по выявлению сообщения ГГ. Спасибо модостроителю ColR_iT за некоторые правки. Существует несколько вариантов отослать сообщение ГГ на ПДА: схемой [sr_tip] логики объекта Space Restrictor, методом give_game_news. Однако разработчики пользовались функцией send_tip из скрипта news_manager. Так вот, эта функция спокойной отсылает сообщение на ПДА главного героя. Но стоит учитывать, что она построена на методе give_game_news класса game_object. Для меня это самый удобный способ, имхо.

1. Разберём саму функцию:
Код
function name (actor, npc)                     
                        news_manager.send_tip(db.actor, "new_sms_text", 10000, "ecolog", 18000, 902)
end


Теперь поэтапно:
name - думаю, вы догадались, что это имя функции.
(actor,npc) - в качестве аргумента указываем отправителя(актёра) и нпс.
news_manager.send_tip - ссылка на функцию. Точкой мы отделяем скрипт и саму функцию.
db.actor - устанавливаем получателя, актёра.
"new_sms_text" - текст. Можно указать переменную текста, которые хранится в текущем файле, либо прописать текст прямо тут.
10000 - время задержки отправки сообщения после того, как вызвалась функция. ( В миллисекундах).
"ecolog" - имя картинки при показа сообщения с лицом персонажа(от которого подразумевая, высылается сообщение). В данном случае, картинка с лицом, а точнее заслоном костюма эколога. Можно указать следующие параметры: default, trader, dolg, freedom, ecolog, arena, stalker, krot, barman, wolf, o_soznanie, monolith, saharov, prizrak, killer.
18000 - время показа сообщения на экране.
902 - story_id отправителя. То есть устанавливается тот объект, от которого приходит сообщения. Если этот НПС мёртв или ранен, то сообщение высылаться не будет. Обязательно это учтите. Многим персонажам прописан stody_id. Они указаны в файле game_story_ids.ltx. В данном случае, это story_id Сахарова.

Вот собственно и закончен разбор функции. Её следует прописать в любой скрипт, если вы вызываете её с помощью <action>. Но в если функция вызывается при входе в рестриктор, то должны обязательно прописать функцию в xr_effects.script и указать в логике рестриктора только имя функции.

2. Добавляем озвучку во время отправки сообщения:
Достаточно просто открыть файл news_manager.script и мы увидим вначале и немного вниз множество ссылок на звуковые файлы.

В нашем случае пишем:
Код
new_sms_text                  = xr_sound.get_safe_sound_object([[characters_voice\sound]]),


Теперь посмотрим, что тут всё это значит:

new_sms_text - переменная текста нашего сообщения. Указывать ИМЕННО её!
xr_sound.get_safe_sound_object - путь до функции, отыгрывающей звук.
([[character_voice\sound]]) - путь до звука. Без комментариев.

Ну вот собственно и всё. Очень простой способ, которым пользовались разработчики. Желаю удачи вам в моддинге, творите с удовольствием!
Сообщение отредактировал LaRento - Суббота, 07.09.2013, 15:52
  Злобная реклама
Среда, 16.01.2013, 01:09
Статус:
Сообщений: 666
Регистрация: 21.10.2012
Украина  BozKurt
Среда, 16.01.2013, 02:44 | Сообщение # 2
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

На этот раз лучше, но всё же есть неточности...
Во-первых, функция которая непосредственно отправляет сообщение - одна, для любой версии игры и для любого мода - это функция give_game_news класса game_object, но применительна она, естественно, только для актора. Собственно ты её указал среди прочих, только вот эти прочие, просто обёртка вокруг этой, для упрощения использования, т.е. в остальных используется именно функция give_game_news.
Далее по описанию...

Цитата (LaRento)
db.actor - как я понял, устанавливаем клиентский образ актёра.
Точнее сказать не устанавливаем, а передаём, причём объект, а не "образ". Вообще этот параметр, почти, бесполезен, его вообще можно убрать из функции send_tip, если в предпоследней её строчке передать не этот параметр, а непосредственно самого актора, вот так:
Код
db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(x,y,83,47), timeout*1000, showtime)
Так, вызов функции упроститься и будет выглядеть так:
Код
news_manager.send_tip("new_sms_text", 10000, "ecolog", 18000, 902)


Цитата (LaRento)
"new_sms_text" - текст. Нужно прописать его в любой текстовый файл из папки text.
Вовсе не обязательно. Можно указать и переменную в текущем файле, которая хранит текст сообщения, либо же написать сам текст прямо в функцию.

Цитата (LaRento)
902 - story_id. То есть устанавливается тот объект, от которого приходит сообщения. Хотя это ни на что не влияет.
Вообще-то влияет. Если указать последний параметр, то скрипт проверит жив-здоров ли отправитель и в случае, если он сильно ранен (лежит и просит о помощи), либо вообще пал смертью храбрых, то сообщение отправлено не будет.

Цитата (LaRento)
Её следует ОБЯЗАТЕЛЬНО прописать именно в xr_effects.script.
Для чего - совершенно не ясно.

Теперь, что касается озвучки... Дабы не цитировать построчно - сразу скажу, что за исключением "имени скрипта из которого вызывается функция", всё остальное неверно!
Чтобы при выдаче сообщения играл звук, при этом совершенно не важно - речь это, музыка или просто звуки, нужно в таблицу news в файле news_manager.script, вписать ссылку на объект класса sound_object следующим образом:
Код
new_sms_text = xr_sound.get_safe_sound_object([[characters_voice\sound]]),
Где:
new_sms_text - это переменная будет хранить ссылку на объект звука. Она должна ОБЯЗАТЕЛЬНО называться так же как ссылка на id текста в файле локализации. Если в качестве текста, в функцию give_game_news передана либо переменная, либо сам текст, то не о каком звуке не может быть и речи - ТОЛЬКО ССЫЛКА НЕ ТЕКСТ!;
xr_sound.get_safe_sound_object - это вызов функции get_safe_sound_object из файла xr_sound.script. Эта функция возвращает уже готовый объект звука. В качестве параметра принимает путь до звукового файла относительно папки gamedata\sounds, расширение файла не указывается.

Вот теперь - всё.
  Злобная реклама
Среда, 16.01.2013, 02:44
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  Scouser
Среда, 16.01.2013, 18:23 | Сообщение # 3
Статус:
Опытный:
Сообщений: 1614
Награды: 16
Регистрация: 21.10.2012

ColR_iT, Спасибо за правки , Леонид, я глубоко в скрипты не копаюсь, только вчера разобрался более к чему. А по поводу проигрывания звука, у меня ID текста совпадал с именем функции, по этому я и подумал, что нужно указывать её имя.

Добавлено (16.01.2013, 18:23)
---------------------------------------------
ColR_iT, А вот смотри, если только give_game_news является функцией отправки сообщения на ПДА, а send_tip не будет являться?

  Злобная реклама
Среда, 16.01.2013, 18:23
Статус:
Сообщений: 666
Регистрация: 21.10.2012
Украина  BozKurt
Среда, 16.01.2013, 18:33 | Сообщение # 4
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Цитата (LaRento)
Код
function new_sms (actor, npc)
     news_manager.send_tip(db.actor, "new_sms_text", 10000, "ecolog", 18000, 902)
end
"new_sms" - имя скрипта;
"new_sms_text" - id текста.
Прямо таки одно и тоже?
И что значит твоя последняя реплика?
  Злобная реклама
Среда, 16.01.2013, 18:33
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  Scouser
Среда, 16.01.2013, 20:47 | Сообщение # 5
Статус:
Опытный:
Сообщений: 1614
Награды: 16
Регистрация: 21.10.2012

ColR_iT, ColR_iT, нет, у меня в своём сообщении было одинаково.
Ты написал, что есть только одна функция отправки сообщения - give_game_news. Тогда же что же по твоему send_tip , хотя я наверное просто не понимаю чего-тою
  Злобная реклама
Среда, 16.01.2013, 20:47
Статус:
Сообщений: 666
Регистрация: 21.10.2012
Украина  BozKurt
Среда, 16.01.2013, 22:10 | Сообщение # 6
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

LaRento, а ты загляни в файл news_manager.script и полюбуйся на функцию send_tip. smile
  Злобная реклама
Среда, 16.01.2013, 22:10
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  Scouser
Среда, 16.01.2013, 22:13 | Сообщение # 7
Статус:
Опытный:
Сообщений: 1614
Награды: 16
Регистрация: 21.10.2012

ColR_iT, Можешь даже не говорить) я в общем плане только знаю, что она делает, а детально - тёмный лес biggrin
  Злобная реклама
Среда, 16.01.2013, 22:13
Статус:
Сообщений: 666
Регистрация: 21.10.2012
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Отсылаем сообщения главному герою методом разработчиков
  • Страница 1 из 1
  • 1
Поиск: