Передача параметров в функции — различия между версиями
RedPython (обсуждение | вклад) м (RedPython переименовал страницу Настройка отношений в Передача параметров в функции) |
RedPython (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | Ниже перечислен набор функций с параметрами, присутствующими в xr_conditions и xr_effects, к которым можно обращаться из кастом даты и при этом передавать в них переменные. | ||
+ | |||
+ | Во всех функциях xr_conditions и xr_effects, которые обращались к гулагам по имени, теперь можно использовать как имя, так и story id. Причем если мы указываем имя, то использовать функцию можно только, когда гулаг находится в онлайне, а если мы вешаем на самрттеррейн story_id, то можем обращаться к гулагу и в оффлайне. | ||
+ | |||
+ | |||
+ | ==xr_conditions== | ||
+ | <syntaxhighlight lang="lua">fighting_dist_ge(p)</syntaxhighlight> | ||
+ | Универсальная функция для combat_ignore, проверка расстояния для игрока (в метрах). | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">distance_to_obj_le(sid:dist)</syntaxhighlight>Проверка дистанции до обьекта, заданного [[story_id]]. | ||
+ | Можно использовать, например, в секции [[follower]] для определения того, что сталкер подошел на нужную дистанцию к лидеру и переключать в другую секцию (лидер при этом стоит где-то в ремарке). Эта ситуация возникает, когда после боя надо подогнать одного сталкера к другому, а их позиций мы не знаем. Если используется в секции follower, то '''dist''' надо ставить большим '''distance''' фолловера, поскольку если поставить их одинаковыми, то данная функция не всегда будет срабатывать. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">health_le(health)</syntaxhighlight>Проверка того, что здоровье npc <= health | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">heli_health_le(health)</syntaxhighlight>Аналогично предыдущему, только для вертолета. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">enemy_group(group1:group2:...)</syntaxhighlight>Проверка на принадлежность врага к одной из групп (правильность работы пока не проверялась). | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">hitted_by(sid1:sid2:...)</syntaxhighlight>Проверка того, что удар был нанесен кем-то из NPC, указанных в списке. NPC задаются с помощью story_id. Функцию удобно использовать в секции hit.<br /> | ||
+ | Пример: | ||
+ | <syntaxhighlight lang="ini">[hit] | ||
+ | on_info = {=hitted_by(407:408)} %+val_escort_combat%</syntaxhighlight> | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">killed_by(sid1:sid2:...)</syntaxhighlight>Аналогично предыдущему, но для случая смерти npc. Используется в секции death. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">is_alive(sid) | ||
+ | is_alive_one(sid1:sid2:...) | ||
+ | is_alive_all(sid1:sid2:...)</syntaxhighlight>Проверка того, что один, один из нескольких или все из списка соответственно npc, заданные по story_id, живы. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">is_dead(sid) | ||
+ | is_dead_one(sid1:sid2:...) | ||
+ | is_dead_all(sid1:sid2:...)</syntaxhighlight>Аналогично предыдущему, только проверка на "мертвость". | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">check_fighting(sid1:sid2:...)</syntaxhighlight>Проверка того, не является ли кто-то из перечисленных (с помощью story_id) npc врагом даного. Как правило, используется в combat_ignore_cond. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">gulag_empty(gulag_name)</syntaxhighlight>Проверка того, что гулаг пуст или вообще не существует. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">gulag_population_le(gulag_name, num)</syntaxhighlight>Проверка того, что количество народу в гулаге <= num | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">gulag_casualities_ge(gulag_name:num)</syntaxhighlight>Проверка того, что гулаг понес потери => num<br /> | ||
+ | Потери гулага не обнуляются, так что с этой функцией работать аккуратно. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">signal(строка)</syntaxhighlight>Проверяет, установлен ли у данного НПС в текущей схеме указанный сигнал. | ||
+ | |||
+ | |||
+ | ==xr_effects== | ||
+ | <syntaxhighlight lang="lua">heli_set_enemy(story_id)</syntaxhighlight>Сделать npc с указанным story_id врагом вертолёту. В одной секции можно задавать только 1 врага. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">set_gulag_enemy_actor(gulag_name)</syntaxhighlight>Сделать актера врагом для данного гулага. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">hit_npc(direction:bone:power:impulse:reverse=false)</syntaxhighlight>Нанести хит по npc.<br /> | ||
+ | Параметры: | ||
+ | * '''direction''' - если строка, то считается, что это имя пути и в сторону первой точки производится толчек. Если же это число, то оно рассматривается как story_id персонажа от которого должен поступить хит; | ||
+ | * '''bone''' - строка. Имя кости, по которой наносится удар; | ||
+ | * '''power''' - сила удара; | ||
+ | * '''impulse''' - импульс; | ||
+ | * '''reverse (true/false)''' - изменение направления удара на противоположное. По умолчанию false.<br /> | ||
+ | Пример: | ||
+ | <syntaxhighlight lang="ini">[death] | ||
+ | on_info = {=killed_by(404)} %=hit_npc(404:bip01_spine1:100:2000)%, {=killed_by(405)} %=hit_npc(405:bip01_spine1:100:2000)%</syntaxhighlight> | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">set_friends(sid1:sid2:...) | ||
+ | set_enemies(sid1:sid2:...)</syntaxhighlight>Установить друзьями/врагами данного npc и указанных в списке по story_id. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">play_snd(snd_name:delay=0)</syntaxhighlight>Играть звук в голове актёра.<br /> | ||
+ | Параметры: | ||
+ | * snd_name - путь к звуку относительно папки sounds | ||
+ | * delay - задержка перед проигрыванием. По умолчанию 0 – проигрываем сразу. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">play_snd_now (sid:snd_name)</syntaxhighlight>Играть звук от указанного объекта. Звук играется от объекта с указанным story id, без задержки с громкостью. Указывается не имя [[Звуковые схемы|звуковой схемы]], а имя файла. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">hit_obj(sid, bone, power, impulse, hit_src=npc:position())</syntaxhighlight> | ||
+ | Дать обьекту, заданому story_id, хит. Отличается тем, что может прописываться в любой кастом дате. Параметры: <code>actor, npc, p[sid,bone,power,impulse,hit_src=npc:position()]</code> | ||
+ | * '''sid''' - story_id обьекта, по которому наносится хит. | ||
+ | * '''bone''' - строка. Имя кости, по которой наносится удар. | ||
+ | * '''power''' - сила удара | ||
+ | * '''impulse''' - импульс | ||
+ | * '''hit_src''' (необязательный параметр) - точка (waypoint), из которой по объекту наносится хит. Если не задано, то берется позиция обьекта, из которого была вызвана данная функция. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">actor_has_item(section)</syntaxhighlight> | ||
+ | Проверка на наличие у игрока соответствующего предмета. Проверка проходит по секции в ltx. | ||
+ | |||
+ | |||
+ | ==Функции для работы с HUD'ом== | ||
+ | <syntaxhighlight lang="lua">disable_ui_elements(...), enable_ui_elements(...)</syntaxhighlight>Отключение/включение элементов HUD'а.<br /> | ||
+ | Параметры: | ||
+ | * '''weapon''' - спрятать/показать руки с оружием; | ||
+ | * '''input''' - отключить/включить клавиатуру; | ||
+ | * '''hud''' - спрятать/показать индикаторы на экране; | ||
+ | * '''all''' - отключить/включить все элементы. | ||
+ | Пример: | ||
+ | <syntaxhighlight lang="lua">on_info = %=disable_ui_elements(weapon:input)%</syntaxhighlight> | ||
+ | Есть также сокращенные варианты: <code>disable_ui</code>, <code>enable_ui</code> (вызываются без скобок и параметров).<br /> | ||
+ | Аналогичны вызовам <code>disable_ui_elements(all)</code>, <code>enable_ui_elements(all)</code> соответственно.<br /> | ||
+ | Пример: | ||
+ | <syntaxhighlight lang="lua">on_info = %=enable_ui%</syntaxhighlight> | ||
+ | |||
+ | |||
+ | ==Функция запуска camera_effector'а== | ||
+ | <syntaxhighlight lang="lua">run_cam_effector(имя_файла)</syntaxhighlight> | ||
+ | * имя_файла (указывается без расширения) - это имя анимационного файла (с расширением anm) из папки ''gamedata\anims\camera_effects\''<br /> | ||
+ | Пример: | ||
+ | <syntaxhighlight lang="lua">on_info = %=run_cam_effector(prison_0)%</syntaxhighlight> | ||
+ | |||
+ | |||
+ | ==Функция запуска постпроцесса== | ||
+ | Есть 2 функции для работы с постпроцессами: | ||
+ | <syntaxhighlight lang="lua">run_postprocess(file_name:id:loop)</syntaxhighlight> - запуск постпроцесса. | ||
+ | * '''file_name''' - имя файла постпроцесса (без расширения) из папки ''gamedata\anims''. Указывается без расширения. | ||
+ | * '''id''' - номер постпроцесса. Задается опционально. Используется в stop_postprocess. | ||
+ | * '''loop''' - (true/false) определяет зацикленность постпроцесса. Опциональный параметр. По умолчанию false. | ||
+ | ---- | ||
+ | <syntaxhighlight lang="lua">stop_postprocess(id)</syntaxhighlight>Принудительная остановка постпроцесса. | ||
+ | * '''id''' - номер постпроцесса заданный в run_postprocess. | ||
+ | |||
+ | ==Функции для работы с инвентарём== | ||
+ | <syntaxhighlight lang="lua">drop_actor_inventory(имя_пути)</syntaxhighlight> | ||
+ | Выбрасываем все предметы из инвентаря актера в первую точку заданного пути. | ||
+ | Пример: | ||
+ | <syntaxhighlight lang="ini">on_info = %=drop_actor_inventory(drop_point)%</syntaxhighlight> | ||
+ | |||
+ | |||
+ | =Настройка отношений= | ||
+ | |||
==Функции== | ==Функции== | ||
Установить уровень отношения фракции к игроку на определенном уровне игры:<br /> | Установить уровень отношения фракции к игроку на определенном уровне игры:<br /> |
Версия 18:54, 19 ноября 2017
Ниже перечислен набор функций с параметрами, присутствующими в xr_conditions и xr_effects, к которым можно обращаться из кастом даты и при этом передавать в них переменные.
Во всех функциях xr_conditions и xr_effects, которые обращались к гулагам по имени, теперь можно использовать как имя, так и story id. Причем если мы указываем имя, то использовать функцию можно только, когда гулаг находится в онлайне, а если мы вешаем на самрттеррейн story_id, то можем обращаться к гулагу и в оффлайне.
Содержание
xr_conditions
fighting_dist_ge(p)
Универсальная функция для combat_ignore, проверка расстояния для игрока (в метрах).
distance_to_obj_le(sid:dist)
Можно использовать, например, в секции follower для определения того, что сталкер подошел на нужную дистанцию к лидеру и переключать в другую секцию (лидер при этом стоит где-то в ремарке). Эта ситуация возникает, когда после боя надо подогнать одного сталкера к другому, а их позиций мы не знаем. Если используется в секции follower, то dist надо ставить большим distance фолловера, поскольку если поставить их одинаковыми, то данная функция не всегда будет срабатывать.
health_le(health)
heli_health_le(health)
enemy_group(group1:group2:...)
hitted_by(sid1:sid2:...)
Пример:
[hit]
on_info = {=hitted_by(407:408)} %+val_escort_combat%
killed_by(sid1:sid2:...)
is_alive(sid)
is_alive_one(sid1:sid2:...)
is_alive_all(sid1:sid2:...)
is_dead(sid)
is_dead_one(sid1:sid2:...)
is_dead_all(sid1:sid2:...)
check_fighting(sid1:sid2:...)
gulag_empty(gulag_name)
gulag_population_le(gulag_name, num)
gulag_casualities_ge(gulag_name:num)
Потери гулага не обнуляются, так что с этой функцией работать аккуратно.
signal(строка)
xr_effects
heli_set_enemy(story_id)
set_gulag_enemy_actor(gulag_name)
hit_npc(direction:bone:power:impulse:reverse=false)
Параметры:
- direction - если строка, то считается, что это имя пути и в сторону первой точки производится толчек. Если же это число, то оно рассматривается как story_id персонажа от которого должен поступить хит;
- bone - строка. Имя кости, по которой наносится удар;
- power - сила удара;
- impulse - импульс;
- reverse (true/false) - изменение направления удара на противоположное. По умолчанию false.
Пример:
[death]
on_info = {=killed_by(404)} %=hit_npc(404:bip01_spine1:100:2000)%, {=killed_by(405)} %=hit_npc(405:bip01_spine1:100:2000)%
set_friends(sid1:sid2:...)
set_enemies(sid1:sid2:...)
play_snd(snd_name:delay=0)
Параметры:
- snd_name - путь к звуку относительно папки sounds
- delay - задержка перед проигрыванием. По умолчанию 0 – проигрываем сразу.
play_snd_now (sid:snd_name)
hit_obj(sid, bone, power, impulse, hit_src=npc:position())
Дать обьекту, заданому story_id, хит. Отличается тем, что может прописываться в любой кастом дате. Параметры: actor, npc, p[sid,bone,power,impulse,hit_src=npc:position()]
- sid - story_id обьекта, по которому наносится хит.
- bone - строка. Имя кости, по которой наносится удар.
- power - сила удара
- impulse - импульс
- hit_src (необязательный параметр) - точка (waypoint), из которой по объекту наносится хит. Если не задано, то берется позиция обьекта, из которого была вызвана данная функция.
actor_has_item(section)
Проверка на наличие у игрока соответствующего предмета. Проверка проходит по секции в ltx.
Функции для работы с HUD'ом
disable_ui_elements(...), enable_ui_elements(...)
Параметры:
- weapon - спрятать/показать руки с оружием;
- input - отключить/включить клавиатуру;
- hud - спрятать/показать индикаторы на экране;
- all - отключить/включить все элементы.
Пример:
on_info = %=disable_ui_elements(weapon:input)%
Есть также сокращенные варианты: disable_ui
, enable_ui
(вызываются без скобок и параметров).
Аналогичны вызовам disable_ui_elements(all)
, enable_ui_elements(all)
соответственно.
Пример:
on_info = %=enable_ui%
Функция запуска camera_effector'а
run_cam_effector(имя_файла)
- имя_файла (указывается без расширения) - это имя анимационного файла (с расширением anm) из папки gamedata\anims\camera_effects\
Пример:
on_info = %=run_cam_effector(prison_0)%
Функция запуска постпроцесса
Есть 2 функции для работы с постпроцессами:
run_postprocess(file_name:id:loop)
- file_name - имя файла постпроцесса (без расширения) из папки gamedata\anims. Указывается без расширения.
- id - номер постпроцесса. Задается опционально. Используется в stop_postprocess.
- loop - (true/false) определяет зацикленность постпроцесса. Опциональный параметр. По умолчанию false.
stop_postprocess(id)
- id - номер постпроцесса заданный в run_postprocess.
Функции для работы с инвентарём
drop_actor_inventory(имя_пути)
Выбрасываем все предметы из инвентаря актера в первую точку заданного пути. Пример:
on_info = %=drop_actor_inventory(drop_point)%
Настройка отношений
Функции
Установить уровень отношения фракции к игроку на определенном уровне игры:
=set_level_faction_community(faction:level_name:relation)
Параметр | Описание |
faction | Имя фракции (bandit, stalker, duty, csky, monster, freedom и т.д.) |
level_name | Имя уровня (escape, garbage, agroprom и т.д.) |
relation | отношение к игроку (friend, enemy, neutral) |
Пример:
%=set_level_faction_community(stalker:escape:neutral)%
Проверки
Проверка отношения группировки к игроку лично:
=is_faction_enemy_to_actor(faction)
=is_faction_neutral_to_actor(faction)
=is_faction_friend_to_actor(faction)
Пример проверки — враждебна ли нам группировка сталкеров:
{=is_faction_enemy_to_actor(stalker)}
Проверка отношения группировки к группировке игрока:
=is_factions_enemies(faction)
=is_factions_friends(faction)
=is_factions_neutrals(faction)