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, він начебто функції не використовується, так що управляти підривом не вийде. UPDATE: цей аргумент взагалі відсутній у функції, тому функцію можна викликати як explode()
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 ( )
повертає об'єкт фізичних предметів (скриньки, коробки).
Частина 1: https://stalker-news.info/forum/rushij-x-ray-engine/opys-klasu-gameobject-chastyna-1/
Частина 2: https://stalker-news.info/forum/rushij-x-ray-engine/opys-klasu-gameobject-chastyna-2/
Частина 3: https://stalker-news.info/forum/rushij-x-ray-engine/opys-klasu-gameobject-chastyna-3/
Частина 4: https://stalker-news.info/forum/rushij-x-ray-engine/opys-klasu-gameobject-chastyna-4/
Частина 5: https://stalker-news.info/forum/rushij-x-ray-engine/opys-klasu-gameobject-chastyna-5/