Эти методы можно применять только для сталкеров и торговцев.
function restore_default_start_dialog()
void restore_default_start_dialog()
устанавливает стартовый диалог неписю дефолтным. Аргументов не принимает.
function set_start_dialog(string)
void set_start_dialog(string dialog_id)
устанавливает диалог dialog_id неписю в качестве стартового диалога.
Эти методы можно применять только для торговцев.
function external_sound_start(string)
void external_sound_start(string sound)
вроде как включает для торговца звук sound, но останавливает анимацию головы. Используется в начальном туторе.
function set_start_dialog()
void external_sound_stop()
станавливает звук торговца. Аргументов не принимает.
function set_trader_global_anim(string)
void set_trader_global_anim(string anim)
устанавливает анимацию anim для тела торговца.
function set_trader_head_anim(string)
void set_trader_head_anim(string anim)
устанавливает анимацию anim для головы торговца.
function set_trader_sound(string, string)
void set_trader_sound(string sound, string anim)
устанавливает торговцу анимацию головы anim и включает в голове звук sound.
Эти методы можно работают для актора.
Следующие методы не проверяют свой неявный аргумент, так что их можно применять хоть к бочкам. Объект в них берется с помощью actor()
function give_task(CGameTask*, number, boolean)
void give_task(CGameTask* t, int dt, bool bCheckExisting)
выдает актору задание. Аргументы:
t - задание в виде объекта CGameTask. Можно взять методом CGameTask() и загрузить в него данные методом load().
dt - время на завершение
bCheckExisting - проверять ли на наличие. Если bCheckExisting == true, то задание, при его присутствии у актора не выдается, в противном случае инициализируется заново.
function get_task_state(string, number)
task get_task_state(string task_id, int objective_num)
возвращает состояние задания (поле task_state) для задания task_id и подзадания objective_num. Возвращает константу из класса-перечисления task.
function set_task_state(enum ETaskState, string, number)
void set_task_state(enum ETaskState state, string task_id, int objective_num)
устанавливает у подзадания таска одно из выбранных состояний. Аргументы:
state - состояние (константа из класса-перечисления task)
task_id - таск
objective_num - номер подзадания
function hide_weapon()
void hide_weapon()
спрятать оружие актора. Аргументов не принимает.
function restore_weapon()
void restore_weapon()
достать оружие актора. Аргументов не принимает.
function eat(game_object*)
void eat(game_object* item)
заставляет актора съесть предмет item. Предмет должен наследовать от класса CEatableItem.
function give_talk_message(string, string, Frect, string)
void give_talk_message(string text, string texture_name, Frect tex_rect, string templ_name)
выводит сообщение в диалоговое окно. Пример - вывод списка доступных повторяющихся квестов в диалоге с торговцем. Аргументы:
text - выводимый текст
texture_name, tex_rect - параметры текстуры, где содержится выводимая картинка, можно получить через get_texture_info()
templ_name - имя шаблона выводимой картинки. Регистрируется в talk.xml. Если не указано - движок считает, что это "iconed_answer_item"
function give_game_news(string, string, Frect, number, number)
bool give_game_news(string news, string texture_name, Frect tex_rect, int delay, int show_time)
выводит сообщение в виде новости. Аргументы:
news - выводимый текст
texture_name, tex_rect - параметры текстуры, где содержится выводимая картинка, можно получить через get_texture_info()
delay - задержка выдачи новости
show_time - время показа новости
function set_fastcall(const function<boolean>& , object)
void set_fastcall(const function<boolean>& , object)
установка быстрого обработчика.
Следующие методы проверяют, к кому применются, вызывать их следует только для актора.
function run_talk_dialog(game_object*)
void run_talk_dialog(game_object* pToWho)
запускает диалог между актором и объектом pToWho. Тот объект должен наследовать от класса CInventoryOwner. Разговор можно начать только если собеседник находится на расстоянии не больше трёх метров от актора. Если точнее, то можно попытаться вызвать её и на больших расстояниях. Что-то при этом происходит: появляется мышь, отключается движение актора и он начинает смотреть на "собеседника" даже при том, что окна разговора нет. Такое ощущение, что просто безбожно глючит. Проверка допустимого расстояния перед началом остаётся таким образом на совести скриптёра. Расстояние в 3 метра никакими настройками не изменить, похоже вшито прямо в код движка. Другой момент. Данная функция только открывает диалог разговора. Если не делать ничего дополнительно, то непись "разговаривая" пойдёт себе дальше, и как только выйдет за три метра - разговор прервётся. В игре непись удерживается от убегания специальной скриптовой схемой, которая заставляет его стоять на месте, смотреть на актора, может ещё анимации проигрывать, точно не знаю. Параметр need_osoznanie_mode в секции персонажа позволяет избежать ограничения в 3 метра на возможность начать разговор. Однако при этом окно разговора показывается не полностью. Отсутствуют окна с иконками собеседников и окно чата. Есть только нижняя часть - окно выбора варианта ответа или диалога. Фактически, это превращает окно общения в своеобразное диалоговое окно для выбора одного из нескольких вариантов. Это используется в игре для предоставления Меченому выбора - присоединяться к О-Сознанию или нет. В принципе ничто не мешает использовать это как-то иначе.
function set_actor_direction(number)
void set_actor_direction(float dir)
устанавливает для актора направление взгляда, передаваемое углом вращения dir (в радианах).
function set_actor_position(vector)
void set_actor_position(vector pos)
устанавливает для актора координаты, передаваемые вектором pos.
function switch_to_trade()
void switch_to_trade()
активировать окно торговли в диалоге. Аргументов не принимает.
function get_current_holder()
holder* get_current_holder()
возвращает машину или стационарное оружие, связанные в данный момент с актором. Аргументов не принимает.
Эти методы можно применять только для ящиков с инвентарем.
function is_inv_box_empty()
bool is_inv_box_empty()
проверяет, пустой ли ящик с инвентарем. Аргументов не принимает.
Появилось в ЧН
function iterate_inventory_box(function<void>, object)
void iterate_inventory_box(function<void>, object)
перебор предметов в ящике. Работает аналогично перебору по инвентарю актора.
Эти методы можно применять только для спейс рестрикторов и аномалий.
function inside(const vector&, number)
bool inside(const vector& position, float epsilon) const
возвращает true, если сфера с центром в position и радиусом epsilon персекается со спейс рестриктором. Аргументы:
position - центр сферы, для которой проверяется пересечение со спейс-рестриктором (объект класса vector)
epsilon - радиус сферы (float)
function inside(const vector&)
bool inside(const vector& position) const
см. inside(const vector&, number), epsilon берется по умолчанию 0,001.
Эти методы можно применять только для аномалий.
function disable_anomaly()
void disable_anomaly()
отключает аномалию. Аргументов не принимает.
function enable_anomaly()
void enable_anomaly()
активирует аномалию. Аргументов не принимает.
function get_anomaly_power()
float get_anomaly_power()
возвращает max_power для объекта аномалиию. Максимальное значение вроде 1. Аргументов не принимает.
function set_anomaly_power(number)
void set_anomaly_power(float p)
устанавливает max_power для объекта аномалии. Установить можно любое значение. Аргументов не принимает.
Эти методы можно применять только для переходов.
function is_level_changer_enabled()
bool is_level_changer_enabled()
возвращает состояние перехода (включен/выключен). Аргументов не принимает.
function enable_level_changer(boolean)
void enable_level_changer(bool val)
включить/выключить переход.
function set_level_changer_invitation(string )
void set_level_changer_invitation(string invitation)
установить текст в окне запроса при переходе. Для ЗП не актуально.
Эти методы можно применять только для подходит только для скриптовых зон. Но в игре их вроде нет.
function active_zone_contact(number)
void active_zone_contact(int id)
возвращает true, если зона находится в контакте с объектом с индексом id.
Эти методы можно применять только для прожекторов.
function get_current_direction()
vector get_current_direction()
возвращает текущее направление проектора. Аргументов не принимает.
Эти методы можно применять только для артефактов, гранат и оружия.
function animation_slot()
int animation_slot() const
возвращает номер слота анимации для данного объекта. Это не слот в инвентаре! Примеры:
для пистолета - 1
для автомата - 2
для дробовика - 3
для артефакта - 11
для бинокля - 13.
Эти методы можно применять только для гранат и канистр.
function explode(number)
void explode(int level_time)
подрывает итем. Несмотря на наличие аргумента level_time, он вроде в функции не используется, так что управлять подрывом не выйдет. UPDATE: данный аргумент вообще отсутствует у функции, поэтому функцию можно вызывать как explode()
Эти методы можно применять для всех инвентарных предметов.
function attachable_item_enabled()
bool attachable_item_enabled() const
возвращает, активен ли итем. Аргументов не принимает.
function enable_attachable_item(boolean)
void enable_attachable_item(bool value)
делает активным/неактивным итем. Parent итема должен наследовать от класса CAttachmentOwner. Всегда активны: аптечки, бинты, детекторы, патроны для активного оружия, активное оружие. Короче, все то, что в слотах или на горяих клавишах.
Эти методы можно применять для тех инвентарных предметов, у которых параметр class в конфиге не равен II_ATTCH.
function cost() const
int cost() const
возвращает стоимость вещи. Аргументов не принимает.
function condition() const
int condition() const
возвращает состояние вещи. Аргументов не принимает.
function set_condition(number)
void set_condition(int val)
устанавливает состояние вещи.
Эти методы можно применять только для фонаря.
function enable_night_vision(boolean)
void enable_night_vision(bool val)
включить/отключить ночное видение.
function night_vision_enabled() const
bool night_vision_enabled() const
возвращает состояние ночного видения. Аргументов не принимает.
function enable_torch(boolean)
void enable_torch(bool val)
включить/отключить фонарь.
function torch_enabled() const
bool torch_enabled() const
возвращает состояние фонаря (включен/отключен). Аргументов не принимает.
Эти методы можно применять только для оружия.
function get_ammo_total() const
int get_ammo_total() const
возвращает общее количество патронов для данного оружия в стволе и инвентаре, если ствол в инвентаре. Если не в инвентаре - просто количество патронов в обойме. Аргументов не принимает.
function get_ammo_in_magazine() const
int get_ammo_in_magazine() const
возвращает количество патронов в стволе или в пачке патрон. Аргументов не принимает.
function set_ammo_elapsed(number)
void set_ammo_elapsed(int ammo_elapsed)
заряжает магазин количеством патронов, равным ammo_elapsed. Размер магазина игнорируется.
Эти методы можно применять только для оружия - кроме ножа и гранат.
function set_queue_size(number)
void set_queue_size(int queue_size)
устанавливает размер очереди из оружия.
function unload_magazine()
void unload_magazine()
разряжает магазин оружия. Оружие должно быть в инвентаре/руках объекта CAI_Stalker. Патроны из ствола пропадают. Аргументов не принимает.
Эти методы позволяют получить объект чистого движкового класса из объекта класса-обертки CScriptGameObject.
function get_car()
CCar* get_car()
возвращает объект машины.
function get_holder_class()
holder* get_holder_class()
возвращает машину или стационарное оружие, связанные в данный момент с актором.
function get_hanging_lamp()
hanging_lamp* get_hanging_lamp()
озвращает объект лампочки.
function get_helicopter()
CHelicopter* get_helicopter()
возвращает объект вертолета.
Следующие методы присутствуют начиная с ЧН.
function get_campfire()
CZoneCampfire* get_campfire()
возвращает объект костра.
function get_artefact()
CArtefact* get_artefact()
возвращает объект артефакта.
function get_physics_object()
CPhysicObject* get_physics_object()
возвращает объект физических предметов (ящики, коробки).
Написано K.D. 17:35, 19 декабря 2011 (UTC) по материалам malandrinus, материалам форума АМК и собственным изысканиям.