Возможно вы искали: 'Skydive!'

May 23 2025 15:42:29
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96276818
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18385
• Обзор The Walking ... 18829
• Обзор DMC: Devil M... 19902
• Обзор на игру Valk... 15900
• Обзор на игру Stars! 17786
• Обзор на Far Cry 3 17976
• Обзор на Resident ... 16045
• Обзор на Chivalry:... 17531
• Обзор на игру Kerb... 18000
• Обзор игры 007: Fr... 16647
Превью о играх
• Превью к игре Comp... 17983
• Превью о игре Mage... 14484
• Превью Incredible ... 14740
• Превью Firefall 13502
• Превью Dead Space 3 16360
• Превью о игре SimC... 14753
• Превью к игре Fuse 15460
• Превью Red Orche... 15571
• Превью Gothic 3 16369
• Превью Black & W... 17377
Главная » Статьи » Разное » Функции script_stalker (#1718)

Функции script_stalker (#1718)



Функции script_stalker
11. Привязка сталкера к конкретной позиции ( к 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_replicsradiomessageradio_turn_on_", 30,
snd_type.talk, 2, 1, sounds_base + 0),
obj:add_sound ("script_replicsradiocommanderradio_start_", 30,
snd_type.talk, 2, 1, sounds_base + 1),
obj:add_sound ("script_replicsradiomessageradio_voice_", 30,
snd_type.talk, 2, 1, sounds_base + 2),
obj:add_sound ("script_replicsradiocommanderradio_reply_", 30,
snd_type.talk, 2, 1, sounds_base + 3),
obj:add_sound ("script_replicsradiomessageradio_voice_", 30,
snd_type.talk, 2, 1, sounds_base + 4),
obj:add_sound ("script_replicsradiocommanderradio_finish_", 30,
snd_type.talk, 2, 1, sounds_base + 5),
obj:add_sound ("script_replicsradiomessageradio_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_escapefactory_banditsbandit_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 передать число, то оно будет считаться задержкой (в мс), по истечению которой проиграется звук.




1046 Прочтений •  [Функции script_stalker (#1718)] [16.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Функции script_stalker (#1718) Ukraine Vova 16.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка