Передача параметров в функции — различия между версиями

Материал из xrWiki
Перейти к: навигация, поиск
Строка 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)
Проверка дистанции до обьекта, заданного story_id.

Можно использовать, например, в секции follower для определения того, что сталкер подошел на нужную дистанцию к лидеру и переключать в другую секцию (лидер при этом стоит где-то в ремарке). Эта ситуация возникает, когда после боя надо подогнать одного сталкера к другому, а их позиций мы не знаем. Если используется в секции follower, то dist надо ставить большим distance фолловера, поскольку если поставить их одинаковыми, то данная функция не всегда будет срабатывать.


health_le(health)
Проверка того, что здоровье npc <= health
heli_health_le(health)
Аналогично предыдущему, только для вертолета.
enemy_group(group1:group2:...)
Проверка на принадлежность врага к одной из групп (правильность работы пока не проверялась).
hitted_by(sid1:sid2:...)
Проверка того, что удар был нанесен кем-то из NPC, указанных в списке. NPC задаются с помощью story_id. Функцию удобно использовать в секции hit.

Пример:

[hit]
on_info = {=hitted_by(407:408)} %+val_escort_combat%

killed_by(sid1:sid2:...)
Аналогично предыдущему, но для случая смерти npc. Используется в секции death.
is_alive(sid)
is_alive_one(sid1:sid2:...)
is_alive_all(sid1:sid2:...)
Проверка того, что один, один из нескольких или все из списка соответственно npc, заданные по story_id, живы.
is_dead(sid)
is_dead_one(sid1:sid2:...)
is_dead_all(sid1:sid2:...)
Аналогично предыдущему, только проверка на "мертвость".
check_fighting(sid1:sid2:...)
Проверка того, не является ли кто-то из перечисленных (с помощью story_id) npc врагом даного. Как правило, используется в combat_ignore_cond.
gulag_empty(gulag_name)
Проверка того, что гулаг пуст или вообще не существует.
gulag_population_le(gulag_name, num)
Проверка того, что количество народу в гулаге <= num
gulag_casualities_ge(gulag_name:num)
Проверка того, что гулаг понес потери => num

Потери гулага не обнуляются, так что с этой функцией работать аккуратно.


signal(строка)
Проверяет, установлен ли у данного НПС в текущей схеме указанный сигнал.


xr_effects

heli_set_enemy(story_id)
Сделать npc с указанным story_id врагом вертолёту. В одной секции можно задавать только 1 врага.
set_gulag_enemy_actor(gulag_name)
Сделать актера врагом для данного гулага.
hit_npc(direction:bone:power:impulse:reverse=false)
Нанести хит по npc.

Параметры:

  • 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:...)
Установить друзьями/врагами данного npc и указанных в списке по story_id.
play_snd(snd_name:delay=0)
Играть звук в голове актёра.

Параметры:

  • snd_name - путь к звуку относительно папки sounds
  • delay - задержка перед проигрыванием. По умолчанию 0 – проигрываем сразу.

play_snd_now (sid:snd_name)
Играть звук от указанного объекта. Звук играется от объекта с указанным story id, без задержки с громкостью. Указывается не имя звуковой схемы, а имя файла.
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(...)
Отключение/включение элементов HUD'а.

Параметры:

  • 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)