Возможно вы искали: 'Tiger Woods PGA Tour 2...'

May 23 2025 15:38:22
  • Как сделать 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
Главная » Статьи » Разное » Информация для создателей скриптов (#1716)

Информация для создателей скриптов (#1716)



Информация для создателей скриптов
Информация для создателей скриптов

Составитель: Andrey Fidrya (Zmey), af@svitonline.com

В каждом скрипте должны быть:

action:initialize() – вызывается в момент включения схемы по GOAP.
Инициализировать переменные здесь НЕЛЬЗЯ. Нужно провести установку callback-ов, которые будет использовать скрипт. В самом конце функции нужно вызвать acton:reset_scheme()

action:reset_scheme() – вызывается в момент включения схемы другим скриптом (gulag и т.п.), также вызывается из initialize при включении схемы по GOAP
Вся инициализация должна производиться в reset_scheme(), а не в initialize()!

action:finalize() – вызывается в момент выключения схемы по GOAP. Снять проставленные в initialize callback-и.

function add_to_binder(npc, char_ini) – биндит схему, только если char_ini == nil (это значит, что биндинг запрошен другим скриптом), или сущестует секция с именем скрипта в custom_data, которая передана как char_ini.

function set_scriptname(параметры) – настройка параметров скрипта. Параметры, вместо которых передан nil, берутся из customdata персонажа.

Работа с customdata:

При чтении полей customdata, если поле не найдено, нужно выдавать сообщение об ошибке, а не тихо отключать скрипт. Сделать это можно с помощью функции xr_utils.abort(“сообщение”, параметры), которая действует аналогично printf, но выводит сообщение в MessageBox и останавливает игру.
Чтобы не переписывать парсинг заново в каждом скрипте, можно воспользоваться функциями из xr_utils:
function conf_get_bool(char_ini, section, field, override, object, mandatory)
function conf_get_string(char_ini, section, field, override, object, mandatory)
function conf_get_number(char_ini, section, field, override, object, mandatory)
Например:
st.enabled = utils.conf_get_bool(char_ini, "guard", "enabled", enable, object, true)
Пример использования можно посмотреть в xr_guard.
Описание параметров – в xr_utils в месте, где определена функция.
В случае возникновения вопросов - обращаться к Змею (af@svitonline.com).

Перемещение:

За перемещение отвечает movement manager.

Пример использования – xr_walker.script.

1) В _init создается экземпляр movement manager-а:
self.move_mgr = move_mgr.move_mgr()

2) В initialize грузим информацию о путях из их имен:
self.path_walk_info = utils.path_parse_waypoints(self.st.path_walk)
self.path_look_info = utils.path_parse_waypoints(self.st.path_look)

3) В reset_scheme инициализируем movement manager:
function move_mgr:reset(path_walk, path_walk_info, path_look, path_look_info,
team, mode, move_cb_info)

Здесь
team – команда для синхронизации нескольких персонажей (произвольная текстовая строка)

mode – таблица, поля которой задают начальный режим перемещения:
{ crouch = true/false, run = true/false, danger=true/false }

move_cb_info – таблица, поля которой задают информацию о callback-методе, который будет вызван, если персонаж прибыл в точку, в которой установлено значение ret: { obj = объект, func = функция }
obj – ссылка на объект класса, которому принадлежит функция, или nil, если функция определена вне класса.
func – ссылка на функцию, которая будет вызвана.

Поля team, mode, move_cb задавать не обязательно.

4) В execute:
self.move_mgr:update()

5) В finalize:
self.move_mgr:finalize()

Переключение скорости и режима перемещения до прибытия в первый вейпоинт.

Для того, чтобы сменить режим движения до прибытия в первый вейпоинт пути (например, переключиться с ходьбы на бег при каких-то условиях), выполните в своем скрипте в любой момент после reset-а:

// ВНИМАНИЕ – вызывать update_movement_state при last_index
// не равном nil недопустимо!
if self.move_mgr.last_index == nil then
self.move_mgr.running = true / false
self.move_mgr.danger = true / false
self.move_mgr.crouch = true / false
self.move_mgr:update_movement_state()
end

Примечание: в большинстве случаев переключать режим перемещения не понадобится. Рекомендуется задавать стартовый режим перемещения с помощью параметра mode функции reset(), а не менять его вышеописанным способом.

Использование callback:

Функция-callback может быть как свободной функцией, так и членом класса.
Прототип свободной функции имеет следующий вид:
function my_callback(self, mode, number)
Прототип функции класса:
function class:my_callback(mode, number)

Здесь в качестве первого параметра (self) будет передано значение поля obj таблицы move_cb_info, т.е. фактически это объект, которому принадлежит функция-callback.

Параметр mode может быть одним из:
move_mgr.arrival_before_rotation – если поле ret было задано в path_walk и коллбек был вызван сразу же по прибытию персонажа в точку, ДО поворота.
move_mgr.arrival_after_rotation – если поле ret было задано в path_look и коллбек был вызван после прибытия в точку path_walk и поворота в соответствующую точку path_look (в которой был задан ret).

number – значение поля ret.

В коллбеке можно прервать движение персонажа (остановить его, но нежелательно сбрасывать пути) и выполнять свои custom действия (апдейты movement manager-а при этом вызывать не нужно по понятным причинам). Для прерывания нормальной работы схемы с целью вмешательства в перемещение, нужно вернуть значение true из callback-а, после чего перестать вызывать апдейты. Если это не сделать – значения, которые Вы установите персонажу в коллбеке могут быть сбиты схемой сразу же по возврату из Вашего коллбека! Чтобы продолжить затем движение по маршруту, вызовите:
self.move_mgr:update_movement_state() – это включит бег или ходьбу (в зависимости от настроек последней точки, в которой был персонаж)
После чего продолжайте вызывать апдейты movement manager-а как обычно.

Перед вызовом update_movement_state, можно также явно задать режим перемещения:
self.move_mgr.running = true / false
self.move_mgr.danger = true / false
self.move_mgr.crouch = true / false

Если коллбек выполняет задачи, никак не влияющие на перемещение и персонажа в целом (например, просто ставит info portion), то из коллбека нужно вернуть nil или false. Вызов коллбека тогда останется для схемы незамеченным.

Взаимодействие path_walk c path_look:

Прийдя на точку path_walk, где установлена какая-то комбинация флажков, сталкер найдет такую же комбинацию флажков в path_look и посмотрит в эту точку. Если же ни один флажок не установлен, сталкер пойдет дальше не останавливаясь.

Проверка текущего состояния персонажа:

Часто с персонажем должны взаимодействовать другие персонажи, например, follower-ы командира должны знать его состояние.

Движется ли персонаж в данный момент можно узнать, опросив у move_mgr переменную moving.
if self.move_mgr.moving then движется end

При этом, если moving == true, можно узнать подробности о перемещении:
if self.move_mgr.crouch then идет в присяде end
if self.move_mgr.running then бежит end
if self.move_mgr.danger then находится в состоянии danger end

Если moving == false, то:
if self.move_mgr.standing_crouch then сидит end
if self.move_mgr.standing_danger then сидит в состоянии danger end

Задание имен вейпоинтов:

Имя вейпоинта должно иметь следующий вид:
имя|поле=значение|поле=значение|…
Первое слово является именем и игнорируется парсером. Остальные фразы, разделенные символом '|' будут обработаны.
Пример имен:
wp00|a=hide
wp01
wp02|a=hide|s=weather
и т.д.

Примечание:
Если задано имя поля, но не задано значение – автоматически парсер подставит true.
Т.е. не надо писать “wp0|r=true|d=true”, достаточно просто написать “wp0|r|d”.

Флаги пути path_walk:

n = 0 .. 9999 – номер точки синхронизации. Рекомендуется первой точке задавать значение 0, остальным – числа по возрастанию с произвольным шагом. Прийдя в точку с большим n, сталкер будет ждать отстающих напарников. Примечание: сталкер дожидается опаздывающих напарников _только_ в точках остановки (т.е. только в тех местах, где точка path_walk имеет общие флаги с одной из точек path_look).
Внимание – для поддержки зацикленных маршрутов, сталкеры на точке с минимальным n дожидаются сталкеров на точке с максимальным n. Поэтому минимальное количество точек синхронизации для корректной работы схемы должно составлять 3 точки или больше!

s = имя_звуковой_схемы – пробегая через эту точку, сталкер включит указанную звуковую схему. Звук стартует ДО начала поворота и старта анимации. Для того, чтобы звук стартовал синхронно с анимацией – задавайте его в path_look соответствующей точки, а не в path_walk. Если нужно стартовать звук одновременно с ЛЮБОЙ из анимаций в этой точке, можно воспользоваться параметром sa.

sp = с какой вероятностью будет проигран звук (по умолчанию 100)

sa = true – ждать начала анимации в точке, прежде чем стартовать проигрывание звука (по умолчанию false).

sc = true – разрешить проигрывать звуки схемы неоднократно (по умолчанию false).

sf, st – временной интервал повторения фраз из выбранной звуковой схемы в секундах (по умолчанию от 5 до 10 сек).

c = true – дальше перемещаться в присяде (по умолчанию false)

r = true – дальше перемещаться бегом (по умолчанию false)

d = true – перемещаться в состоянии danger (по умолчанию false)

ds = имена_диалогов – имена диалогов, которые разрешено стартовать начиная с этой точки (разрешение действует до следующей точки). Имена задаются в виде текстовой строки, разделенной запятыми: ds=bandits_talk,weather_talk и т.д.

ret = число – сразу же по прибытии в точку вызывает зарегистрированный при инициализации movement manager-а callback с этим числом в качестве второго аргумента.

w = имя_walk_пути – переводит схему на новый path_walk. Рекомендуется также задать новый path_look с помощью параметра ”l”, иначе текущий path_look будет сброшен. Персонаж идет на стартовую точку с режимом перемещения, заданным в точке с параметром “w”. Настройки функции коллбека при переключении пути сохраняются.

l = имя_look_пути - сбросит схему на новый path_look. Задавать параметр “l” нужно вместе с параметром ”w”, иначе “l” будет проигнорирован. По умолчанию path_look при смене path_walk будет сброшен.

Флаги пути path_look:

p = 100 – вероятность, с которой персонаж посмотрит именно в эту точку. Значения p всех возможных точек суммируются, т.е. если у одной точки p = 100, а у другой 300, то персонаж посмотрит в первую с вероятностью 25%! (т.е. 100 из 400).
Рекомендуется задавать p так, чтобы их сумма составляла 100.
По умолчанию у всех точек p = 100.

a = анимация, которую проиграет персонаж, посмотрев в эту точку (по умолчанию idle). Для того, чтобы персонаж стоял в точке без анимации, задайте значение nil: “a=nil”

c = true – смотреть в точку в присяде (по умолчанию используется значение одноименного поля из path_walk)

d = true – смотреть в точку в состоянии danger (по умолчанию используется значение одноименного поля из path_walk)

att = 1 или 2 – номер атаки (основная, вспомогательная). Можно использовать вместо анимации (например ”a=nil|att=1”), можно вместе с анимацией (”a=стреляем_в_потолок|att=1»).

t = время, которое персонаж будет ждать, играя анимацию или стреляя (по умолчанию 5000). Если требуется ждать бесконечно долго (например, это финальная точка пути), нужно задать t равным “-1”.
Примечание: если персонаж ждет синхронизации в точке, то он будет играть анимацию столько времени, сколько нужно для того, чтобы дождаться напарников, но только по прибытию всех напарников на точки засечет заданное в ”t” время. Исключение составляет стрельба – персонаж не станет стрелять сразу по прибытию в точку, а сперва дождется напарников, а потом уже начнет стрелять в течение заданного времени.

s = имя - звук, который персонаж разово проиграет, посмотрев в эту точку.

sp = с какой вероятностью будет проигран звук (по умолчанию 100)

sl = имя_прожектора – если задано, то при повороте в указанную точку персонаж также повернет и прожектор в неё.

ret = число – после поворота в целевую точку вызывает зарегистрированный при инициализации movement manager-а callback с числом ret в качестве второго аргумента. При этом время ожидания (поле t) игнорируется, т.е. после того как callback вызовет update_movement_state – персонаж сразу же пойдет дальше.





688 Прочтений •  [Информация для создателей скриптов (#1716)] [16.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Информация для создателей скриптов ... 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 | Донейт | Статистика | Команда | Техническая поддержка