CCustomMonster
Ці методи можна застосовувати лише для сталкерів та монстрів.
danger_object* best_danger ( )
повертає найкращий денжер у вигляді об'єкта класу danger_object. Аргументів не сприймає.
game_object* best_enemy ( )
повертає об'єкт ворога. Працює для сталкерів. Аргументів не сприймає.
game_object* best_item ( )
начебто повертає об'єкт тушки, яку можна пожувати. Достеменно невідомо. Аргументів не сприймає.
game_object* get_enemy ( ) const
повертає об'єкт поточного ворога. Працює для монстрів. Аргументів не сприймає.
vector memory_position ( const game_object & lua_game_object )
повертає позицію (як об'єкта класу vector), де останній раз бачимо об'єкт lua_game_object нашим об'єктом. Аргументів не сприймає.
int memory_time ( const game_object & lua_game_object )
повертає час, коли останній раз бачимо об'єкт lua_game_object нашим об'єктом, в ігрових мс. Аргументів не сприймає.
void enable_memory_object ( game_object* lua_game_object, bool enable )
включає/вимикає об'єкт у пам'яті монстра/сталкера. У грі використовується для форсованого "забуття" ворога за його тривалої відсутності. Аргументів не сприймає.
iterator memory_hit_objects ( ) const
повертає ітератор об'єктів, які будь-коли наносили хіт. Об'єкти мають тип hit_memory_object. Аргументів не сприймає.
Приклад використання:
local cObj = level.object_by_id ( oID ) for obj in cObj:memory_hit_objects ( ) do --тут маніпуляції з об'єктами end
iterator memory_sound_objects ( ) const
повертає ітератор об'єктів, які будь-коли були чутні. Об'єкти мають тип sound_memory_object. Аргументів не сприймає.
Приклад використання:
local cObj = level.object_by_id ( oID ) for obj in cObj:memory_sound_objects ( ) do --тут маніпуляції з об'єктами end
iterator memory_visible_objects ( ) const
повертає ітератор об'єктів, які будь-коли були видимі. Об'єкти мають тип visible_memory_object. Аргументів не сприймає.
Приклад використання:
local cObj = level.object_by_id ( oID ) for obj in cObj:memory_visible_objects ( ) do --тут маніпуляції з об'єктами end
iterator not_yet_visible_objects ( ) const
повертає ітератор об'єктів, які видно чи збираються бути видні. Об'єкти мають тип not_yet_visible_object. Аргументів не сприймає.
Приклад використання:
local cObj = level.object_by_id ( oID ) for obj in cObj:not_yet_visible_objects ( ) do --тут маніпуляції з об'єктами end
void change_team ( int team, int squad, int group )
змінює для об'єкта team, squad та group.
bool see ( string section_name )
перевіряє, чи є серед масиву видимих об'єктів об'єкт з ім'ям секції, що дорівнює section_name.
void set_fov ( float new_fov )
встановлює кут зору, що дорівнює значенню new_fov.
void set_range ( float new_range )
встановлює максимальну ширину видимої області, що дорівнює значенню new_range.
int vertex_in_direction ( int level_vertex_id, vector direction, float max_distance ) const
повертає lvid найбільш віддаленої точки, доступною неписю у напрямку direction. Аргументи:
- level_vertex_id - найближчий до об'єкту левелл вертекс
- direction - напрямок, у якому треба отримати точку
- max_distance - діаметр сфери з центром level_vertex_id, в якій шукаються доступні вертекси.
int accessible_nearest ( const vector& position, vector& result )
повертає найближчий до точки position левів вертекс. На згадку за вказівником result записуються координати цього вертекса.
Приклад використання:
local pos = npc:position ( ) local res = vector ( ) :set ( 0 , 0 , 0 ) local lvid = npc:accessible_nearest ( pos, res )
bool accessible ( const vector&position )
повертає true, якщо точка position знаходиться всередині out рестриктора або якщо об'єкт зовсім не має out рестрикторів.
bool accessible ( int level_vertex_id )
повертає true, якщо вертекс level_vertex_id знаходиться всередині out рестриктора або якщо об'єкт зовсім не має out рестрикторів.
void add_restrictions ( string out, string in )
додає об'єкту рестриктори, задані аргументами out (out рестриктори) та in (in рестриктори). Можна задавати списком через кому.
string base_in_restrictions ( )
повертає список дефолтних рестрикторів (через кому), куди об'єкту хід замовлений.
string base_out_restrictions ( )
повертає список дефолтних рестрикторів (через кому), де потрібно бути об'єкту.
string in_restrictions ( )
повертає список рестрикторів (через кому), куди об'єкту хід замовлений.
string out_restrictions ( )
повертає список рестрикторів (через кому), де об'єкту потрібно бути.
string remove_all_restrictions ( )
видаляє всі рестриктори 4 та 5 типів. Встановлює in_restrictions та out_restrictions порожніми.
void remove_restrictions ( string out, string in ) ;
видаляє рестриктори, задані аргументами out (out рестриктори) та in (in рестриктори). Можна задавати списком через кому. Є особливість: обов'язково має бути заданий аргумент out, інакше функція не працюватиме (хоч і не вилетить)
bool critically_wounded ( )
повертає true, якщо об'єкт критично поранений.
void movement_enabled ( bool enable )
дозволяє/забороняє об'єкту рух.
bool movement_enabled ( )
повертає true, якщо об'єкту дозволено рухатися шляхом.
int get_current_point_index ( )
повертає номер поточного шляху (lvid).
int is_body_turning ( )
повертає true, якщо об'єкт повертається. Порівнюється поточний та цільовий напрямок, різниця між ними порівнюється з 0,00001 і якщо різниця більша, то повертається true. Для сталкерів повертає true, навіть якщо він просто крутить головою.
int location_on_path ( float distance, vector* location )
повертає координати точки шляху об'єкта, яка від наступної точки шляху більш, ніж відстань distance. Аргументи:
- distance - відстань між точками (float)
- location - цей вектор пишуться обчислені кординати.
Саме функція повертає level_vertex_id знайденої точки. Також, якщо у непису немає активного шляху або він стоїть в останній точці шляху, або між усіма точками шляху відстань менша, ніж distance, повернуться його координати та вертекс Приклади
використання:
local dist = 5 local location = vector ( ) :set ( 0 , 0 , 0 ) local lvid = npc:location_on_path ( dist, location )
bool path_completed ( )
повертає true, якщо шлях завершено об'єктом. false якщо ні.
patrol_path_make_inactual ( ) _
робить поточний шлях завершеним.
void set_start_point ( int point_index )
встановити початкову точку шляху як point_index.
void set_previous_point ( int point_index )
встановити попередню точку шляху як point_index.
int active_sound_count ( bool only_playing )
повертає кількість звуків, що програються. Якщо only_playing = false, то поверне ще й кількість звуків у черзі.
int active_sound_count ( )
см active_sound_count(boolean). Параметр only_playing за промовчанням false
int add_sound ( string prefix, int max_count, enum ESoundTypes type, int priority, int mask, int internal_type, string bone_name )
ініціалізує ще один звук. Аргументи:
- prefix - sound_prefix звуку
- max_count - ???
- type – тип звуку. Можливі значення див у класі-перерахунку snd_type.
- priority - ???
- mask - ???
- internal_type – ключ в асоціативному масиві звуків. При ініціалізації звуків для непису вони записуються в асоціативний масив, де ключами є індекси, що позначають групи звуків за змістом. Такі групи є константами експортованого класу stalker_ids (те, що з індексом sound_).
- bone_name - кістка, від якої гратиметься звук.
int add_sound ( string prefix, int max_count, enum ESoundTypes type, int priority, int mask, int internal_type )
див. add_sound(string, number, enum ESoundTypes, number, number, number, string). Аргумент bone_name за промовчанням bip01_head.
void play_sound ( int internal_type, int max_start_time, int min_start_time, int max_stop_time, int min_stop_time, int id )
програє від об'єкта звук. Аргументи:
- internal_type – ключ в асоціативному масиві звуків. При ініціалізації звуків для непису вони записуються в асоціативний масив, де ключами є індекси, що позначають групи звуків за змістом. Такі групи є константами експортованого класу stalker_ids (те, що з індексом sound_).
- max_start_time, min_start_time - максимальний та мінімальний час затримки запуску звуку. Якщо грубо - між ними береться рандомне значення, до нього додається поточний час та результат встановлюється початком запуску звуку
- max_stop_time, min_stop_time – аналогічно start_time. Час закінчення встановлюється рівним поточному часу + start_time + stop_time + тривалість звуку
- id - як номер теми. З цієї теми двигун вибирає рандомний звук. Якщо -1 - буде обрано рандомну фразу, ініціалізовану для об'єкта.
void play_sound ( int internal_type, int max_start_time, int min_start_time, int max_stop_time, int min_stop_time )
див. вище function play_sound(number, number, number, number, number, number). Аргумент id за промовчанням береться -1.
void play_sound ( int internal_type, int max_start_time, int min_start_time, int max_stop_time )
див. вище function play_sound(number, number, number, number, number). Аргумент min_stop_time за промовчанням береться 0.
void play_sound ( int internal_type, int max_start_time, int min_start_time )
див. вище function play_sound(number, number, number, number). Аргумент max_stop_time за промовчанням береться 0.
void play_sound ( int internal_type, int max_start_time )
див. вище function play_sound(number, number, number). Аргумент min_start_time за промовчанням береться 0.
void play_sound ( int internal_type )
див. вище function play_sound(number, number). Аргумент max_start_time за промовчанням береться 0.
void restore_sound_threshold ( )
відновлює дефолтний sound_threshold – поріг гучності, при якому непис чує звук. Аргументів не сприймає.
void set_sound_threshold ( float value )
встановлює sound_threshold - поріг гучності, у якому непис чує звук.
void remove_sound ( int internal_type )
стерти тему з індексом ID зі списку дозволених для персонажа.
void set_sound_mask ( int sound_mask )
встановлює sound_mask.
void sound_prefix ( string sound_prefix )
встановлює об'єкт sound_prefix.
string sound_prefix ( ) const
повертає об'єкт sound_prefix. sound_prefix - папка зі звуками даного об'єкта. Аргументів не сприймає.
string sound_voice_prefix ( ) const
повертає об'єкт sound_voice_prefix. Аргументів не сприймає.
float visibility_threshold ( ) const
повертає максимальну відстань, де об'єкт бачить інші об'єкти. Аргументів не сприймає.
bool vision_enabled ( ) const
перевіряє, чи увімкнено запам'ятовування видимих об'єктів. Аргументів не сприймає.
void enable_vision ( bool value )
увімкнути/вимкнути запис видимих об'єктів у пам'ять.
void extrapolate_length ( float extrapolate_length )
встановлює m_extrapolate_length рівним extrapolate_length. Що це - незрозуміло, але має відношення до CDetailPathManager.
float extrapolate_length ( )
повертає m_extrapolate_length. Має відношення до CDetailPathManager.
bool invulnerable ( ) const
повертає стан режиму невразливості.
void invulnerable ( bool value )
увімкнути/вимкнути режим невразливості.
Додано до ЗП
void set_npc_position ( vector pos )
телепортувати об'єкт координатами pos.
void set_visual_memory_enabled ( bool val )
увімкнення/вимкнення пам'яті непису/монстра. Використовується для поміщення непису чи монстра у стан ігнорування актора.
function add_combat_sound(string, number, enum ESoundTypes, number, number, number, string);
CBaseMonster
Ці методи можна застосовувати лише для монстрів.
game_object* get_corpse ( )
повертає об'єкт трупа в найближчому радіусі навколо монстра, причому клас об'єкта еквівалентний CEntity. Аргументів не сприймає.
MonsterHitInfo* get_monster_hit_info ( )
повертає об'єкт класу MonsterHitInfo, що містить інформацію про останнього, хто бив по монстру. Аргументів не сприймає.
class MonsterHitInfo { vector direction; //напрямок хіта int time ; //ігровий час, коли було завдано хіт game_object* who; //Клієнтський об'єкт завдав хіт. }
SoundInfo* get_sound_info ( )
повертає об'єкт SoundInfo, що містить інформацію про останній почутий звук. Аргументів не сприймає.
class MonsterHitInfo { bool danger; // Чи небезпечний звук. У мене виходило true, якщо звук, що видає, об'єкт ще й завдає хіт. Якщо стріляти у повітря, монстр "не боїться". vector position; //координати звуку float power; //сила звуку int time ; //ігровий час, коли було завдано хіт game_object* who; //клієнтський об'єкт видав звуку }
void remove_home ( )
видалення точки "випасування" монстрів. Аргументів не сприймає.
void set_custom_panic_threshold ( float value )
встановити поріг паніки, що дорівнює value.
void set_default_panic_threshold ( )
повернути паніку за замовчуванням. Аргументів не сприймає.
void set_home ( string name, float r_min, float r_max, bool aggressive )
встановити точку "випасу" монстрів. Аргументи:
- name - ім'я шляху
- r_min - мінімальний радіус біганини навколо точки
- r_max – максимальний радіус віддалення від точки
- aggressive – агресивність монстрів.
void skip_transfer_enemy ( bool val )
керує передачею ворогів від друзів. Якщо встановлено в true і бачить дружнього монстра, його вороги також стають ворогами.
int character_rank ( )
повертає ранг об'єкта. Також працює і для об'єктів-спадкоємців CInventoryOwner. Аргументів не сприймає.
void jump ( const vector&position, float factor )
змушує об'єкт стрибнути. Працює лише для снорків. Аргументи:
- position – кінцеві координати стрибка.
- factor – точно важко сказати, але схоже, що час стрибка.
CAI_Bloodsucker
Ці методи можна застосовувати лише для кровососу.
void set_alien_control ( bool val )
встановлює камеру актора у положення "від очей монстра" і назад.
void set_invisible ( bool val )
керує невидимістю. true – встановити, false – прибрати.
CAI_Zombie
Ці методи можна застосовувати лише для зомбі.
boolean fake_death_fall_down ( )
програє у зомбі анімацію хибної смерті Повертає результат операції. Аргументів не сприймає.
boolean fake_death_stand_up ( )
програє у зомбі анімацію вставання. Повертає результат операції. Аргументів не сприймає.
Частина 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/