Описание класса game object. Часть V. — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
K.D. (обсуждение | вклад) (→CInventoryBox) |
K.D. (обсуждение | вклад) |
||
Строка 182: | Строка 182: | ||
<div class="NavContent"><cpp>void set_anomaly_power(float p)</cpp> | <div class="NavContent"><cpp>void set_anomaly_power(float p)</cpp> | ||
устанавливает max_power для объекта аномалии. Установить можно любое значение. Аргументов не принимает.<br /><br /></div></div> | устанавливает max_power для объекта аномалии. Установить можно любое значение. Аргументов не принимает.<br /><br /></div></div> | ||
+ | ='''CLevelChanger (ЧН и ЗП)'''= | ||
+ | Эти методы можно применять только для аномалий. | ||
+ | <div class="NavFrame collapsed"> | ||
+ | <div class="NavHead">'''function is_level_changer_enabled()''' </div> | ||
+ | <div class="NavContent"><cpp>bool is_level_changer_enabled()</cpp> | ||
+ | возвращает состояние перехода (включен/выключен). Аргументов не принимает.<br /><br /></div></div> | ||
+ | |||
+ | <div class="NavFrame collapsed"> | ||
+ | <div class="NavHead">'''function enable_level_changer(boolean)''' </div> | ||
+ | <div class="NavContent"><cpp>void enable_level_changer(bool val)</cpp> | ||
+ | включить/выключить переход.<br /><br /></div></div> | ||
+ | |||
+ | <div class="NavFrame collapsed"> | ||
+ | <div class="NavHead">'''function set_level_changer_invitation(string )''' </div> | ||
+ | <div class="NavContent"><cpp>void set_level_changer_invitation(string invitation)</cpp> | ||
+ | установить текст в окне запроса при переходе. Для ЗП не актуально.<br /><br /></div></div> | ||
='''CScriptZone'''= | ='''CScriptZone'''= | ||
Эти методы можно применять только для подходит только для скриптовых зон. Но в игре их вроде нет. | Эти методы можно применять только для подходит только для скриптовых зон. Но в игре их вроде нет. | ||
Строка 238: | Строка 254: | ||
<div class="NavContent"><cpp>void set_condition(int val)</cpp> | <div class="NavContent"><cpp>void set_condition(int val)</cpp> | ||
устанавливает состояние вещи.<br /><br /></div></div> | устанавливает состояние вещи.<br /><br /></div></div> | ||
+ | ='''CTorch (только ЗП)'''= | ||
+ | Эти методы можно применять только для фонаря. | ||
+ | <div class="NavFrame collapsed"> | ||
+ | <div class="NavHead">'''function enable_night_vision(boolean)''' </div> | ||
+ | <div class="NavContent"><cpp>void enable_night_vision(bool val)</cpp> | ||
+ | включить/отключить ночное видение.<br /><br /></div></div> | ||
+ | |||
+ | <div class="NavFrame collapsed"> | ||
+ | <div class="NavHead">'''function night_vision_enabled() const''' </div> | ||
+ | <div class="NavContent"><cpp>bool night_vision_enabled() const</cpp> | ||
+ | возвращает состояние ночного видения. Аргументов не принимает.<br /><br /></div></div> | ||
+ | |||
+ | <div class="NavFrame collapsed"> | ||
+ | <div class="NavHead">'''function enable_torch(boolean)''' </div> | ||
+ | <div class="NavContent"><cpp>void enable_torch(bool val)</cpp> | ||
+ | включить/отключить фонарь.<br /><br /></div></div> | ||
+ | |||
+ | <div class="NavFrame collapsed"> | ||
+ | <div class="NavHead">'''function torch_enabled() const''' </div> | ||
+ | <div class="NavContent"><cpp>bool torch_enabled() const</cpp> | ||
+ | возвращает состояние фонаря (включен/отключен). Аргументов не принимает.<br /><br /></div></div> | ||
='''CWeapon'''= | ='''CWeapon'''= | ||
Эти методы можно применять только для оружия. | Эти методы можно применять только для оружия. | ||
Строка 303: | Строка 340: | ||
---- | ---- | ||
− | Написано [[Участник:K.D.|K.D.]] | + | Написано [[Участник:K.D.|K.D.]] 17:35, 19 декабря 2011 (UTC) по материалам malandrinus, материалам [http://www.amk-team.ru/forum/index.php?showtopic=7450 форума АМК] и собственным изысканиям. |
[[Категория:Скрипты]] | [[Категория:Скрипты]] |
Версия 17:35, 19 декабря 2011
Навигация |
---|
Описание класса game object. Часть I. |
Содержание
- 1 CAI_PhraseDialogManager
- 2 CAI_Trader
- 3 CActor
- 4 CInventoryBox
- 5 CSpaceRestrictor
- 6 CCustomZone
- 7 CLevelChanger (ЧН и ЗП)
- 8 CScriptZone
- 9 CProjector
- 10 CHudItem
- 11 CExplosive
- 12 CAttachableItem
- 13 CInventoryItem
- 14 CTorch (только ЗП)
- 15 CWeapon
- 16 CWeaponMagazined
- 17 Методы получения объектов "чистых" клиентских движковых классов
CAI_PhraseDialogManager
Эти методы можно применять только для сталкеров и торговцев.
void restore_default_start_dialog()устанавливает стартовый диалог неписю дефолтным. Аргументов не принимает.
void set_start_dialog(string dialog_id)устанавливает диалог dialog_id неписю в качестве стартового диалога.
CAI_Trader
Эти методы можно применять только для торговцев.
void external_sound_start(string sound)вроде как включает для торговца звук sound, но останавливает анимацию головы. Используется в начальном туторе.
void external_sound_stop()станавливает звук торговца. Аргументов не принимает.
void set_trader_global_anim(string anim)устанавливает анимацию anim для тела торговца.
void set_trader_head_anim(string anim)устанавливает анимацию anim для головы торговца.
void set_trader_sound(string sound, string anim)устанавливает торговцу анимацию головы anim и включает в голове звук sound.
CActor
Эти методы можно работают для актора.
Следующие методы не проверяют свой неявный аргумент, так что их можно применять хоть к бочкам. Объект в них берется с помощью actor()
void give_task(CGameTask* t, int dt, bool bCheckExisting)
выдает актору задание. Аргументы:
- t - задание в виде объекта CGameTask. Можно взять методом CGameTask() и загрузить в него данные методом load().
- dt - время на завершение
- bCheckExisting - проверять ли на наличие. Если bCheckExisting == true, то задание, при его присутствии у актора не выдается, в противном случае инициализируется заново.
task get_task_state(string task_id, int objective_num)возвращает состояние задания (поле task_state) для задания task_id и подзадания objective_num. Возвращает константу из класса-перечисления task.
void set_task_state(enum ETaskState state, string task_id, int objective_num)
устанавливает у подзадания таска одно из выбранных состояний. Аргументы:
- state - состояние (константа из класса-перечисления task)
- task_id - таск
- objective_num - номер подзадания
void hide_weapon()спрятать оружие актора. Аргументов не принимает.
void restore_weapon()достать оружие актора. Аргументов не принимает.
void eat(game_object* item)заставляет актора съесть предмет item. Предмет должен наследовать от класса CEatableItem.
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"
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 - время показа новости
void set_fastcall(const function<boolean>& , object)установка быстрого обработчика.
Следующие методы проверяют, к кому применются, вызывать их следует только для актора.
void run_talk_dialog(game_object* pToWho)запускает диалог между актором и объектом pToWho. Тот объект должен наследовать от класса CInventoryOwner. Разговор можно начать только если собеседник находится на расстоянии не больше трёх метров от актора. Если точнее, то можно попытаться вызвать её и на больших расстояниях. Что-то при этом происходит: появляется мышь, отключается движение актора и он начинает смотреть на "собеседника" даже при том, что окна разговора нет. Такое ощущение, что просто безбожно глючит. Проверка допустимого расстояния перед началом остаётся таким образом на совести скриптёра. Расстояние в 3 метра никакими настройками не изменить, похоже вшито прямо в код движка. Другой момент. Данная функция только открывает диалог разговора. Если не делать ничего дополнительно, то непись "разговаривая" пойдёт себе дальше, и как только выйдет за три метра - разговор прервётся. В игре непись удерживается от убегания специальной скриптовой схемой, которая заставляет его стоять на месте, смотреть на актора, может ещё анимации проигрывать, точно не знаю. Параметр need_osoznanie_mode в секции персонажа позволяет избежать ограничения в 3 метра на возможность начать разговор. Однако при этом окно разговора показывается не полностью. Отсутствуют окна с иконками собеседников и окно чата. Есть только нижняя часть - окно выбора варианта ответа или диалога. Фактически, это превращает окно общения в своеобразное диалоговое окно для выбора одного из нескольких вариантов. Это используется в игре для предоставления Меченому выбора - присоединяться к О-Сознанию или нет. В принципе ничто не мешает использовать это как-то иначе.
void set_actor_direction(float dir)устанавливает для актора направление взгляда, передаваемое углом вращения dir (в радианах).
void set_actor_position(vector pos)устанавливает для актора координаты, передаваемые вектором pos.
void switch_to_trade()активировать окно торговли в диалоге. Аргументов не принимает.
holder* get_current_holder()возвращает машину или стационарное оружие, связанные в данный момент с актором. Аргументов не принимает.
CInventoryBox
Эти методы можно применять только для ящиков с инвентарем.
bool is_inv_box_empty()проверяет, пустой ли ящик с инвентарем. Аргументов не принимает.
Появилось в ЧН
void iterate_inventory_box(function<void>, object)перебор предметов в ящике. Работает аналогично перебору по инвентарю актора.
CSpaceRestrictor
Эти методы можно применять только для спейс рестрикторов и аномалий.
bool inside(const vector& position, float epsilon) const
возвращает true, если сфера с центром в position и радиусом epsilon персекается со спейс рестриктором. Аргументы:
- position - центр сферы, для которой проверяется пересечение со спейс-рестриктором (объект класса vector)
- epsilon - радиус сферы (float)
bool inside(const vector& position) constсм. inside(const vector&, number), epsilon берется по умолчанию 0,001.
CCustomZone
Эти методы можно применять только для аномалий.
void disable_anomaly()отключает аномалию. Аргументов не принимает.
void enable_anomaly()активирует аномалию. Аргументов не принимает.
float get_anomaly_power()возвращает max_power для объекта аномалиию. Максимальное значение вроде 1. Аргументов не принимает.
void set_anomaly_power(float p)устанавливает max_power для объекта аномалии. Установить можно любое значение. Аргументов не принимает.
CLevelChanger (ЧН и ЗП)
Эти методы можно применять только для аномалий.
bool is_level_changer_enabled()возвращает состояние перехода (включен/выключен). Аргументов не принимает.
void enable_level_changer(bool val)включить/выключить переход.
void set_level_changer_invitation(string invitation)установить текст в окне запроса при переходе. Для ЗП не актуально.
CScriptZone
Эти методы можно применять только для подходит только для скриптовых зон. Но в игре их вроде нет.
void active_zone_contact(int id)возвращает true, если зона находится в контакте с объектом с индексом id.
CProjector
Эти методы можно применять только для прожекторов.
vector get_current_direction()возвращает текущее направление проектора. Аргументов не принимает.
CHudItem
Эти методы можно применять только для артефактов, гранат и оружия.
int animation_slot() const
возвращает номер слота анимации для данного объекта. Это не слот в инвентаре! Примеры:
- для пистолета - 1
- для автомата - 2
- для дробовика - 3
- для артефакта - 11
- для бинокля - 13.
CExplosive
Эти методы можно применять только для гранат и канистр.
void explode(int level_time)подрывает итем. Несмотря на наличие аргумента level_time, он вроде в функции не используется, так что управлять подрывом не выйдет.
CAttachableItem
Эти методы можно применять для всех инвентарных предметов.
bool attachable_item_enabled() constвозвращает, активен ли итем. Аргументов не принимает.
void enable_attachable_item(bool value)делает активным/неактивным итем. Parent итема должен наследовать от класса CAttachmentOwner. Всегда активны: аптечки, бинты, детекторы, патроны для активного оружия, активное оружие. Короче, все то, что в слотах или на горяих клавишах.
CInventoryItem
Эти методы можно применять для тех инвентарных предметов, у которых параметр class в конфиге не равен II_ATTCH.
int cost() constвозвращает стоимость вещи. Аргументов не принимает.
int condition() constвозвращает состояние вещи. Аргументов не принимает.
void set_condition(int val)устанавливает состояние вещи.
CTorch (только ЗП)
Эти методы можно применять только для фонаря.
void enable_night_vision(bool val)включить/отключить ночное видение.
bool night_vision_enabled() constвозвращает состояние ночного видения. Аргументов не принимает.
void enable_torch(bool val)включить/отключить фонарь.
bool torch_enabled() constвозвращает состояние фонаря (включен/отключен). Аргументов не принимает.
CWeapon
Эти методы можно применять только для оружия.
int get_ammo_total() constвозвращает общее количество патронов для данного оружия в стволе и инвентаре, если ствол в инвентаре. Если не в инвентаре - просто количество патронов в обойме. Аргументов не принимает.
int get_ammo_in_magazine() constвозвращает количество патронов в стволе. Аргументов не принимает.
void set_ammo_elapsed(int ammo_elapsed)заряжает магазин количеством патронов, равным ammo_elapsed. Размер магазина игнорируется.
CWeaponMagazined
Эти методы можно применять только для оружия - кроме ножа и гранат.
void set_queue_size(int queue_size)устанавливает размер очереди из оружия.
void unload_magazine()разряжает магазин оружия. Оружие должно быть в инвентаре/руках объекта CAI_Stalker. Патроны из ствола пропадают. Аргументов не принимает.
Методы получения объектов "чистых" клиентских движковых классов
Эти методы позволяют получить объект чистого движкового класса из объекта класса-обертки CScriptGameObject.
CCar* get_car()возвращает объект машины.
holder* get_holder_class()возвращает машину или стационарное оружие, связанные в данный момент с актором.
hanging_lamp* get_hanging_lamp()озвращает объект лампочки.
CHelicopter* get_helicopter()возвращает объект вертолета.
Следующие методы присутствуют начиная с ЧН.
CZoneCampfire* get_campfire()возвращает объект костра.
CArtefact* get_artefact()возвращает объект артефакта.
CPhysicObject* get_physics_object()возвращает объект физических предметов (ящики, коробки).
Написано K.D. 17:35, 19 декабря 2011 (UTC) по материалам malandrinus, материалам форума АМК и собственным изысканиям.