Моды Тень Чернобыля Моды Зов Припяти Моды Чистое Небо
Форум Тень Чернобыля Форум Чистое Небо Форум Зов Припяти

☢ Информационный портал по модификациям к серии игр S.T.A.L.K.E.R. ☢

                                                                                                                                                                                     

Понедельник, 14.07.2025, 23:29 | Приветствую Вас Гость | RSS | Главная | Регистрация | Вход

PDA сайта


Разделы каталога
Обзор игр [29]
Статьи, информация по играм, системные данные для установки игр.
Информация, рассказы - все что касается STALKER [84]
Книги - тематика STALKER [28]
Новинки модов
STALKER Complete 1.5
Просмотров: 149
Добавлено: 20.04.2025

Путь Человека. Дежавю - Remake (2025)
Просмотров: 160
Добавлено: 20.04.2025

Мёртвая Лощина - Dead Hollow
Просмотров: 158
Добавлено: 08.04.2025

Fallen God (Падший Бог) - Remake
Просмотров: 216
Добавлено: 08.04.2025

Тайна Зоны - Remaster 2025
Просмотров: 141
Добавлено: 08.04.2025

Dead Air: Книга мёртвых - Update 02.04.25
Просмотров: 439
Добавлено: 08.04.2025

Летопись Времени (Билд от 30.12.24)
Просмотров: 125
Добавлено: 08.04.2025

Dead Air: Weapons Evolution (2025)
Просмотров: 156
Добавлено: 01.04.2025

Hibernation Evil - Эпизод V
Просмотров: 304
Добавлено: 01.04.2025

Anomaly Origin 3.0
Просмотров: 289
Добавлено: 01.04.2025

Лидеры просмотров
SOC WEAPON PACK
Просмотров: 40188
Добавлено: 23.05.2018

Новый Арсенал 5.1 + Спавнер
Просмотров: 31536
Добавлено: 21.06.2018

Правки для ОП 2.1 с патчем 8.2
Просмотров: 27165
Добавлено: 02.07.2019

Спавнер - Пространственная аномалия 4.1
Просмотров: 25910
Добавлено: 22.05.2018

Дополнения - Объединенный Пак 2.1
Просмотров: 24528
Добавлено: 05.01.2019

СТАЛКЕР - ТЕНЬ ЧЕРНОБЫЛЯ (Чистая игра)
Просмотров: 24507
Добавлено: 08.10.2018

Тень Вонючки 0.03+
Просмотров: 21766
Добавлено: 21.05.2018

Сталкер - Приключения Толика
Просмотров: 19402
Добавлено: 19.01.2019

Спавн-Меню - Новый Арсенал 5.0
Просмотров: 18877
Добавлено: 23.05.2018

Спавнер для ОП 2.1
Просмотров: 16423
Добавлено: 03.01.2019

Главная » Статьи » Информация, рассказы - все что касается STALKER

Скрипты в игре «Сталкер» Часть 1
1. Привязка сталкера к конкретной позиции ( к vertex_id)

xr_position.setPosition(obj, position)
obj – обжект сталкера, обычно это self.object
position – vertex_id ноды, к которой он будет привязан.
Если вам нужно, чтобы в каком то экшине он был в данной позиции, то нужно сделать:
action:add_precondition (world_property(properties["position"], true))
где properties["position"] = xr_evaluators_id.position


2. Смена положений тела

xr_state.change_state(object, new)

object – объект, которому нужно изменить положение тела
new – id нового положения тела
Чтобы во время смены положений избежать действий ваших экшнов, нужно сделать следующее
action:add_precondition (world_property(properties["state_end"], true))
где properties["state_end"] = xr_evaluators_id.state_change

-- ОПИСАНИЕ ИДЕНТИФИКАТОРОВ ПОЗИЦИЙ:
Xr_state.stand
Xr_state.sit_wait
Xr_state.sleep

3. Рандомное проигрывание звуков

Xr_sound.set_sound(npc, sound, now)
-- Пример конструктора, описывающего звуки
--
-- self.sound = {idle = 0, -- служебное поле
-- begin = nil, -- служебное поле
-- maxidle = 10, -- максимальное время между звуками
-- sumidle = 10, -- надбавочное время, добавляется к рандомно выбранному от 1 до максимального.
-- rnd = 100, -- вероятность, с которой будет проигран звук, если пришло время
-- lastsound = nil, -- служебное поле
-- sounds = { {pack = sounds["idle"], id = 0}, -- пачка звуков, из которых будет выбираться
-- {pack = sounds["idle"], id = 1},
-- {pack = sounds["idle"], id = 3},
-- {pack = sounds["idle"], id = 4},
-- {pack = sounds["idle"], id = 7},
-- {pack = sounds["idle"], id = 9},
-- {pack = sounds["idle"], id = 11},
-- {pack = sounds["idle"], id = 12},
-- {pack = sounds["idle"], id = 14} }}
--
--
-- Проигрыш саундов (By Stohe)
-- npc - object который будет играть звук
-- sound - конструктр звуков, см выше
-- now - если звук отыграть надо прямо сейчас


4. Проверка, находится ли объект в онлайне

is_object_online (object_id)
передавать ID объекта

5. Проверка, является ли данный итем оружием

isWeapon(id)
передавать cls_id объекта

6. Настройка реакций

Реакции можно настраивать через кастом дату и в рантайме.
В кастом дате:
[reactions]
rule_1 = rule
rule_2 = rule
и так далее

В рантайме можно добавлять и удалять правила
xr_reactions.add_rule(obj, rule)
xr_reactions.remove_rule(obj, rule)
где obj – объект, которому вы добавляете правило
rule – правило.

В кастом дате правила нужно писать без кавычек, а в функциях – в кавычках.

Список поддерживаемых правил:
"no_item” - игнорирует все вещи
"no_check” - никогда не ходить проверять источник, только смотрит на него
"ignore” – игнорирует все раздражители
"silence” – не издавать звук (не говорить реплики)

7. Время суток в мс
function day_time()

8. Время суток в часах
function local_hours()

9. Парсит строку вида "ааа, ббб, ввв..." в таблицу { "ааа", "ббб", "ввв", ... }
function parse_names( s )

10. Взвешенная случайная выборка из таблицы вида { obj1 = weight1, obj2 = weight2, ... }
Возвращает один из obj. Веса >= 0
function random_choice_weighted( a )

11. Звуковая система
Живет в xr_sound.script. Для инициализации нужно вызвать из мотиватора функцию load_sounds с параметром game_object:
xr_sounds.load_sounds (self.object).
Использование:
function play_sound (obj, delay, theme, sub_theme, phrase_set, sub_phrase)
где obj – NPC, delay – задержка перед воспроизведением (время в миллисекундах), theme – тема (строка), sub_theme – подтема (если несколько),
phrase_set – набор фраз в подтеме, sub_phrase – номер фразы в наборе.
Первые 3 параметра обязательны, остальные нет. Для необязательных параметров
Будут выбраны рандомные значения.

function create_sound_constructor (theme, sub_theme) – возвращает sound constructor. Параметры обязательны и соответствуют тому, что изложено выше.
Пример конструктора, описывающего звуки
self.sound = {
idle = 0, -- служебное поле
begin = nil, -- служебное поле
maxidle = 10, -- максимальное время между звуками
sumidle = 10, -- надбавочное время, добавляется к рандомно выбранному от 1 до максимального.
-- rnd = 100, -- вероятность, с которой будет проигран звук, если пришло время
-- lastsound = nil, -- служебное поле
-- sounds = { {pack = sounds["idle"], id = 0}, -- пачка звуков, из которых будет выбираться
-- {pack = sounds["idle"], id = 1},
-- {pack = sounds["idle"], id = 3},
-- {pack = sounds["idle"], id = 4},
-- {pack = sounds["idle"], id = 7},
-- {pack = sounds["idle"], id = 9},
-- {pack = sounds["idle"], id = 11},
-- {pack = sounds["idle"], id = 12},
-- {pack = sounds["idle"], id = 14} }}
--

Добавление своих тем.
Тема – ассоциативный массив (таблица) в которой хранятся таблицы подтем. Подтема – таблица, в которой хранится идентификатор загруженных звуков и их количество. Пример:
themes["commander_radio"] =
{
--speech1
{
sounds_base,
obj:add_sound ("script_replics\\radio\\message\\radio_turn_on_", 30,
snd_type.talk, 2, 1, sounds_base + 0),
obj:add_sound ("script_replics\\radio\\commander\\radio_start_", 30,
snd_type.talk, 2, 1, sounds_base + 1),
obj:add_sound ("script_replics\\radio\\message\\radio_voice_", 30,
snd_type.talk, 2, 1, sounds_base + 2),
obj:add_sound ("script_replics\\radio\\commander\\radio_reply_", 30,
snd_type.talk, 2, 1, sounds_base + 3),
obj:add_sound ("script_replics\\radio\\message\\radio_voice_", 30,
snd_type.talk, 2, 1, sounds_base + 4),
obj:add_sound ("script_replics\\radio\\commander\\radio_finish_", 30,
snd_type.talk, 2, 1, sounds_base + 5),
obj:add_sound ("script_replics\\radio\\message\\radio_turn_off_", 30,
snd_type.talk, 2, 1, sounds_base + 6)
}
}
Здесь объявлена тема commander_radio с одной подтемой. Для добавления еще одной подтемы нужно добавить еще одну таблицу к теме и прописать по аналогии с существующей (соответственно с нужными параметрами).
Необходимо, чтобы поле sound_base четко соответствовало своему значению, иначе может произойти вылет движка.
11. Прекращение проигрывания звука
stop_play_sound(obj)

12. Определения типа обьекта
object_type(obj)

obj - объект из памяти

возращает тип обькта:

"monster”,
"stalker”,
"item”,
"none”,
"corpse”

13. Выбор точки пути с заданным битом
point_with_bit(patrol_path, bit, old_point)

patrol_path - патрульный путь
bit - заданный бит
old_point - индекс точки, которую не надо выбирать( параметр не обязательный)

Если точек несколько, то произвольно выберет одну из них

Если не находит ни одной точки, то возвращает nil. Сразу видно, что путь построен не так, как задумывал разработчик.

Рекурсивная распечатка таблицы
Print_table(table)

Система проигрывания анимаций
Xr_state.anim_update(type, npc)
Где type:
Nil – прекратить проигрывание
"idle” – стоячий айдл
"prisluh” - прислушивание
"poisk” – поиск чего либо
"hide” – ожидание в засаде (mental.state Должен быть danger)

"hello” – приветствие
Примеры использования смотрите в коде или спрашивате в справочной.
Xr_state. anim_safe_to_break(npc) – указывает можно ли прервать анимации, чтобы не было сильно заметных рывков.

Контекстно-зависимая озвучка
Эта схема нужна для случаев, когда нужно проиграть случайный звук из набора, соответствующего текущим условиям (погода, здоровье, класс объекта, класс объекта, в чей адрес должна прозвучать реплика и т.п.).
Состоит из двух этапов:
Формирование таблицы-конструктора озвучки. Это обычно можно делать в initialize. Пример:
self.sound = {
maxidle = 10, -- максимальное время (сек) между звуками (умолчание = 10)
sumidle = 10, -- надбавочное время, добавляется к рандомно выбранному от 1 до максимального. (умолчание = 10)
rnd = 75, -- вероятность, с которой будет проигран звук, если пришло время (умолчание = 100)
themes = { "weather", "state" } -- список тем для разговора
}

Минимальный пример:

self.sound = { themes = { "тема” } }

Проигрывание этого набора с помощью xr_sound.sound_update. Это нужно делать в execute, разумеется.
function sound_update(npc, sound, now)
npc – npc
sound – таблица-конструктор
now – если true, то проиграть звук немедленно без задержки. Если число, то с этой задержкой.

перечень возможных тем:
-- фразы о погоде
"weather"
-- состояния тела, а также всяческие «покашливания»
"state"
-- просьба о помощи
"help"
-- окрик
"hail"
-- ожидание
"wait"
-- угрозы
"threat_weap" – оружие
"threat_back" – свали отседа
"threat_stop" - стоять, не сместа
-- реакции
"reac_hear"
"reac_see"
"reac_search"
"reac_find_monstr"
"reac_find_enemy"
"reac_crps_monstr"
"reac_crps_enemy"
"reac_crps_neutral"
"reac_crps_friend"
"reac_nothing"
-- болтовня
"talk_hello"
"talk_bye"
"talk_accept"
"talk_reject"
"talk_abuse"
-- торговля
"trade_yes"
"trade_no"

Использование xr_sound для проигрывания сюжетных/одноразовых звуков.
Нужно создать свои темы, а потом просто вызывать sound_update. Пример создания темы:
В функции load_sound() внизу в соответствии с уровнем дописать тему:
-- бандиты на заводе
theme["escape_factory_bandits_novice"] = load_theme("esc_f_band_novice")

То, что выделено жирным – ключ в таблице наборов звуков. Набор звуков для темы нужно прописать вверху файла в табличке snd_files. Например:
-- бандиты на заводе
esc_f_band_novice = "l_escape\\factory_bandits\\bandit_about_novice_",

Использование:
Эти темы можно использовать вместе с темами контекстно-зависимой озвучки. А можно и для одноразового проигрывания какой-то реплики.
Создадим таблички (!!!причём лучше один раз при загрузке скрипта!!!):
local rnd_phrases = {
maxidle = 8,
sumidle = 2,
themes = {
"weather",
"state",
"escape_factory_bandits_novice",
"escape_factory_bandits_zone",
"escape_factory_bandits_place"
}
}

local snd_novice_again = { themes = { "escape_factory_bandits_novice_again" } }

Первую табличку можно использовать в execute для того, чтобы бандит время от времени говорил о погоде, новичке, зоне и т.д.:
xr_sound.sound_update( self.object, rnd_phrases )

Вторую табличку можно использовать для проигровки звука по теме в определённый момент (например, когда бандиты увидели новичка):
xr_sound.sound_update( npc, snd_novice_again, true )
Причём взведён флажок now, что означает моментальную проигровку звука без задержек. Если в now передать число, то оно будет считаться задержкой (в мс), по истечению которой проиграется звук.
Категория: Информация, рассказы - все что касается STALKER | Добавил: ferr-um (01.05.2011) | Автор: ferr-um E
Просмотров: 1163 | Теги: правка скриптов в сталкере, скрипты в сталкере, информация по скриптам
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
PDA Stalker-Mods


Форма входа
Поиск по сайту
ADVERT
Популярные моды
Повелитель Зоны v. 1.1/ Gode of zone v. 1.1
Просмотров: 12193
Добавлено: 26.11.2011

Новый Арсенал 5.1 + Спавнер
Просмотров: 31536
Добавлено: 21.06.2018

COP Weapons Mod
Просмотров: 9398
Добавлено: 19.06.2011

Оружейный пак от Moonlight1986
Просмотров: 12415
Добавлено: 25.06.2012

Спавнер - Пространственная аномалия 4.1
Просмотров: 25910
Добавлено: 22.05.2018

Winter of Death: Ultimatum (FINAL)
Просмотров: 8259
Добавлено: 26.09.2011

S.T.A.L.K.E.R.: Зов Припяти - Оружейный аддон
Просмотров: 9518
Добавлено: 23.12.2011

SOC WEAPON PACK
Просмотров: 40188
Добавлено: 23.05.2018

"Повелитель зоны" для FERR-UM MOD ver.0.4
Просмотров: 9745
Добавлено: 15.08.2012

S.T.A.L.K.E.R. "Зов Припяти" - Новые иконки
Просмотров: 8199
Добавлено: 27.08.2011

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Моды Тень Чернобыля Форум Тень Чернобыля Моды Чистое Небо Форум Чистое Небо Моды Зов Припяти Форум Зов Припяти Моды Зов Чернобыля Форум Зов Чернобыля Сталкер - Другие платформы
Картинка в качестве фона





Картинка в качестве фона
Картинка в качестве фона
Моды Сердце Чернобыля  Моды Тень Чернобыля  Форум Тень Чернобыля  Моды Чистое Небо  Форум Чистое Небо  Моды Зов Припяти  Форум Зов Припяти  Моды Зов Чернобыля  Форум Зов Чернобыля  Сталкер - Другие платформы
Stalker-Mods © 2025 Используются технологии uCoz