Описание класса game object. Часть II. — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
K.D. (обсуждение | вклад) (Новая страница: «{| border="0" cellpadding="3" align="right" width="250" cellspacing="1" style="background:#ccc;" |- ! style="background:#eaf1dd;" align="left"|Навигация ...») |
K.D. (обсуждение | вклад) м |
||
Строка 439: | Строка 439: | ||
---- | ---- | ||
− | Написано [[Участник:K.D.|K.D.]] | + | Написано [[Участник:K.D.|K.D.]] 17:21, 18 декабря 2011 (UTC) по материалам malandrinus, материалам [http://www.amk-team.ru/forum/index.php?showtopic=7450 форума АМК] и собственным изысканиям. |
[[Категория:Скрипты]] | [[Категория:Скрипты]] |
Версия 17:21, 18 декабря 2011
Навигация |
---|
Описание класса game object. Часть I. |
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 - в этот вектор пишутся вычисленные кординаты.
Примеры использования:
local dist = 5 local location = vector():set(0,0,0) local lvid = npc:location_on_path(dist, location)
bool path_completed()возвращает true, если путь завершен объектом. false если нет.
void 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.
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()проигрывает у зомби анимацию вставания. Возвращает результат операции. Аргументов не принимает.
Написано K.D. 17:21, 18 декабря 2011 (UTC) по материалам malandrinus, материалам форума АМК и собственным изысканиям.