X-Ray extensions — различия между версиями

Материал из xrWiki
Перейти к: навигация, поиск
Строка 18: Строка 18:
 
===Класс game_object===
 
===Класс game_object===
 
====Основные методы====
 
====Основные методы====
=====Регистрация функций в движке=====
+
'''Регистрация функций в движке'''
 
<syntaxhighlight lang="lua">// CActor
 
<syntaxhighlight lang="lua">// CActor
 
set_actor_visual(string)
 
set_actor_visual(string)
Строка 273: Строка 273:
 
<code>set_wpn_bone_visible(string<bone_name>, int<visible>[0 or 1])</code> - устанавливает видимость кости оружия по имени.<br/>
 
<code>set_wpn_bone_visible(string<bone_name>, int<visible>[0 or 1])</code> - устанавливает видимость кости оружия по имени.<br/>
 
====Хак для изменения значений в памяти объектов====
 
====Хак для изменения значений в памяти объектов====
=====Регистрация функций в движке=====
+
'''Регистрация функций в движке'''
 
<syntaxhighlight lang="lua">// CActor
 
<syntaxhighlight lang="lua">// CActor
 
float get_actor_float(int)
 
float get_actor_float(int)
Строка 389: Строка 389:
 
Также, пару слов о методах для ГГ - их существует два типа, для класса '''CActor''' и класса '''CActorCondition'''. В последнем лежит много параметров вроде сытости, алкоголизма, силы прыжка и т.п.
 
Также, пару слов о методах для ГГ - их существует два типа, для класса '''CActor''' и класса '''CActorCondition'''. В последнем лежит много параметров вроде сытости, алкоголизма, силы прыжка и т.п.
 
====Методы для получения адреса базового объекта====
 
====Методы для получения адреса базового объекта====
=====Регистрация функций в движке=====
+
'''Регистрация функций в движке'''
 
<syntaxhighlight lang="lua">uint cast_car()
 
<syntaxhighlight lang="lua">uint cast_car()
 
uint cast_game_object()
 
uint cast_game_object()
Строка 398: Строка 398:
 
Методы позволяют получить адрес в памяти, откуда начинается базовый объект (адрес в большинстве случаев не совпадает с началом объекта в целом). Результат можно использовать в разных хаках, когда известно смещение относительно конкретного класса.
 
Методы позволяют получить адрес в памяти, откуда начинается базовый объект (адрес в большинстве случаев не совпадает с началом объекта в целом). Результат можно использовать в разных хаках, когда известно смещение относительно конкретного класса.
 
====Методы для проверки типа объекта====
 
====Методы для проверки типа объекта====
=====Регистрация функций в движке=====
+
'''Регистрация функций в движке'''
 
<syntaxhighlight lang="lua">bool is_actor()
 
<syntaxhighlight lang="lua">bool is_actor()
 
bool is_ammo()
 
bool is_ammo()
Строка 446: Строка 446:
 
end</syntaxhighlight>
 
end</syntaxhighlight>
 
====Методы не имеющие привязки к определенному объекту====
 
====Методы не имеющие привязки к определенному объекту====
=====Регистрация функций в движке=====
+
'''Регистрация функций в движке'''
 
<syntaxhighlight lang="lua">game_object* get_object_arg_1(int)
 
<syntaxhighlight lang="lua">game_object* get_object_arg_1(int)
 
set_object_arg_1(game_object*)
 
set_object_arg_1(game_object*)
Строка 456: Строка 456:
 
Эти методы предназначены для передачи или получения значений в(из) другие(их) методы(ов), в которых, по причине отсутствия необходимого прототипа, штатно это сделать нельзя.
 
Эти методы предназначены для передачи или получения значений в(из) другие(их) методы(ов), в которых, по причине отсутствия необходимого прототипа, штатно это сделать нельзя.
 
Могут вызываться для любого типа объекта в игре.
 
Могут вызываться для любого типа объекта в игре.
 +
===Класс matrix===
 +
'''Регистрация функций в движке'''
 +
<syntaxhighlight lang="lua">mul_43(matrix, matrix)
 +
transform_tiny(vector, vector, vector, vector)
 +
transform_tiny1(vector, vector, vector, vector)
 +
transpose(float)</syntaxhighlight>
 +
<code>mul_43(matrix<m1>, matrix<m2>)</code> - умножает две матрицы без последнего столбца и записывает результат в матрицу для которой вызывался метод.<br/>
 +
<code>transform_tiny(vector<res>, vector<v>)</code> - умножает матрицу на вектор (перевод из одной системы координат в другую), с записыванием результата в вектор res.<br/>
 +
<code>transform_tiny1(vector<v>)</code> - умножает матрицу на вектор (перевод из одной системы координат в другую), с записыванием результата в сам вектор.<br/>
 +
<code>transpose()</code> - транспонирует матрицу (зеркалирование относительно главной диагонали).<br/>
 +
===Класс CTime===
 +
'''Регистрация функций в движке'''
 +
<syntaxhighlight lang="lua">set_value(int, int, int)
 +
int, int, int, int, int, int, int get_value()</syntaxhighlight>
 +
<code>set_value(int<lv>, int<gv>)</code> - устанавливает значение объекта из компонент.<br/>
 +
<code>int<lv>, int<gv> get_value()</code> - возвращает младшую и старшую часть счетчика.<br/>
 +
===Класс CALifeSimulator===
 +
'''Регистрация функций в движке'''
 +
<syntaxhighlight lang="lua">CSE_Abstract* teleport_object(string, vector, uint, uint, uint)
 +
CSE_Abstract* assign_story_id(string, vector, uint, uint, uint)</syntaxhighlight>
 +
<code>teleport_object(nil, vector<position>, uint<level_vertex_id>, uint<game_vertex_id>, uint<id>)</code> - телепортирует объект по его id в заданную позицию на уровне.<br/>
 +
<code>assign_story_id(nil, nil, uint<id>, uint<story_id>)</code> - устанавливает story_id объекту по его id.<br/>
 +
===Класс CSE_Abstract===
 +
'''Свойства'''<br/>
 +
<code>angle<vector></code> - задает направление поворота объекта.
 +
===Класс CSE_ALifeObject===
 +
'''Регистрация функций в движке'''
 +
<syntaxhighlight lang="lua">use_ai_locations(bool)</syntaxhighlight>
 +
<code>use_ai_locations(bool<use>)</code> - задает использование AI-локаций (сетки) для объекта.
 +
===Пространство имен level===
 +
'''Регистрация функций в движке'''
 +
<syntaxhighlight lang="lua">game_object* get_target_obj(int)
 +
float get_target_dist()
 +
int get_target_element(int)
 +
 +
int has_cam_effector(int)
 +
int has_pp_effector(int)
 +
bool has_indicators()
 +
 +
int advance_game_time(int)
 +
game_object* get_second_talker(int)
 +
int vertex_id(int)
 +
 +
float get_memory_float(string, int, bool, string)
 +
int get_memory_int(int)
 +
 +
bool perform_ray_pick_query()
 +
float get_ray_pick_dist()
 +
game_object* get_ray_pick_obj(int)
 +
int get_ray_pick_element(int)
 +
 +
CUIDialogWnd* get_inventory_wnd()
 +
CUIDialogWnd* get_pda_wnd()
 +
CUIDialogWnd* get_talk_wnd()
 +
CUIDialogWnd* get_car_body_wnd()
 +
CUIDialogWnd* get_trade_wnd()
 +
 +
int send_event_mouse_wheel(int)
 +
int send_event_key_hold(int)
 +
int send_event_key_release(int)
 +
int send_event_key_press(int)
 +
 +
set_ce_time(float)
 +
set_ce_amplitude(float)
 +
set_ce_period_number(float)
 +
set_ce_power(float)
 +
bool add_ce()
 +
 +
vector get_tri_vertex1(int)
 +
vector get_tri_vertex2(int)
 +
vector get_tri_vertex3(int)
 +
 +
float get_tri_shootfactor(string, int, bool, string)
 +
int get_tri_flags(int)</syntaxhighlight>
 +
<code>float<value> get_memory_float(nil, int<addr>)</code> - возвращает число с плавающей точкой по абсолютному адресу.<br/>
 +
<code>int<value> get_memory_int(int<addr>)</code> - возвращает целое число по абсолютному адресу.<br/>
 +
===Глобальное пространство имен===
 +
'''Регистрация функций в движке'''
 +
<syntaxhighlight lang="lua">log1(string)
 +
fail(string)
 +
int flush_log(int, int)
 +
int bind_to_dik(int, int)
 +
 +
int get_extensions_flags(int, int)
 +
int set_extensions_flags(int, int)
 +
int get_actor_flags(int, int)
 +
int set_actor_flags(int, int)
 +
int get_input_language(int, int)
 +
int set_input_language(int, int)
 +
 +
int set_trade_filtration_on(int, int)
 +
int set_trade_filtration_off(int, int)
 +
int set_manual_grouping_on(int, int)
 +
int set_manual_grouping_off(int, int)
 +
int set_manual_highlight_on(int, int)
 +
int set_manual_highlight_off(int, int)
 +
int get_manual_highlight(int, int)
 +
int set_highlight_color(int, int)
 +
 +
int sum_args(int, int)
 +
int sub_args(int, int)
 +
 +
int GetGoodwill(int, int)
 +
int update_inventory_window(int, int)
 +
init_external_libs(string)
 +
 +
set_game_time(float, float)
 +
int print_level_time(int, int)
 +
int print_alife_time(int, int)
 +
int set_ignore_game_state_update(int, int)
 +
 +
screenshot0(string)
 +
screenshot1(string)
 +
screenshot2(string)
 +
screenshot3(string)
 +
 +
set_hud_inertia(float, float)
 +
set_hud_inertia_param2(float, float)
 +
 +
float get_static_rescale_factor()
 +
set_static_rescale_factor(float, float)
 +
 +
int set_int_arg0(int, int)
 +
int set_int_arg1(int, int)
 +
int set_int_arg2(int, int)
 +
int set_int_arg3(int, int)
 +
int set_int_arg4(int, int)
 +
int set_int_arg5(int, int)
 +
int set_int_arg6(int, int)
 +
set_float_args_12(float, float)
 +
set_float_args_34(float, float)</syntaxhighlight>
 +
<code>log1(string<message>)</code> - выводит строку-сообщение в лог.<br/>
 +
<code>fail(string<message>)</code> - принудительно останавливает игру и выводит сообщение в лог.<br/>
 +
<code>flush_log()</code> - записывает содержимое лога в лог-файл (аналогично вызову консольной команды flush).<br/>
 +
<code>int<DIK_keys> bind_to_dik(int<key_bindings>)</code> - переводит код команды-экшена в код клавиши, забинденной на этот экшен.<br/>
 +
 +
<code>int<ex_flags> get_extensions_flags()</code> - возвращает состояние флагов работы колбеков (1 - key_press, 2 - key_release, 4 - key_hold, 8 - mouse_wheel, 16 - mouse_move).<br/>
 +
<code>set_extensions_flags(int<ex_flags>)</code> - устанавливает состояние флагов работы колбеков (1 - key_press, 2 - key_release, 4 - key_hold, 8 - mouse_wheel, 16 - mouse_move).<br/>
 +
<code>int<flags> get_actor_flags()</code> - возвращает состояние флагов из перечисления psActorFlags.<br/>
 +
<code>set_actor_flags(int<flags>)</code> - устанавливает состояние флагов из перечисления psActorFlags.<br/>
 +
<code>int<lang>[0 or 1] get_input_language()</code> - возвращает номер языка для ввода в полях редактирования (0 - eng, 1 - rus).<br/>
 +
<code>set_input_language(int<lang>[0 or 1])</code> - устанавливает номер языка для ввода в полях редактирования (0 - eng, 1 - rus).<br/>
 +
 +
<code>set_trade_filtration_on()</code> - включает режим скриптовой фильтрации предметов в окне торговли.<br/>
 +
<code>set_trade_filtration_off()</code> - выключает режим скриптовой фильтрации предметов в окне торговли.<br/>
 +
<code>set_manual_grouping_on()</code> - включает режим скриптовой группировки предметов в окне торговли и обыска.<br/>
 +
<code>set_manual_grouping_off()</code> - выключает режим скриптовой группировки предметов в окне торговли и обыска.<br/>
 +
<code>set_manual_highlight_on()</code> - включает режим скриптовой подсветки предметов в окне торговли и обыска.<br/>
 +
<code>set_manual_highlight_off()</code> - выключает режим скриптовой подсветки предметов в окне торговли и обыска.<br/>
 +
<code>int<is_highlight>[0 or 1] get_manual_highlight()</code> - возвращает включенность режима скриптовой подсветки предметов.<br/>
 +
<code>set_highlight_color(int<color_id>, int<GetARGB(A, R, G, B)>)</code> - устанавливает соответствие между индексом цвета и кодом цвета.<br/>
 +
 +
<code>int<result> sum_args(int<val1>, int<val2>)</code> - производит сложение двух чисел и возвращает целочисленный результат (при ариф. операциях, Lua возвращает число с плавающей точкой).<br/>
 +
<code>int<result> sub_args(int<val1>, int<val2>)</code> - производит вычитание двух чисел и возвращает целочисленный результат (при ариф. операциях, Lua возвращает число с плавающей точкой).<br/>
 +
 +
<code>int<goodwill> GetGoodwill(int<who_id>, int<to_whom_id>)</code> - возвращает текущее отношение между персонажами.<br/>
 +
<code>update_inventory_window()</code> - обновляет все графические элементы окна инвентаря.<br/>
 +
<code>init_external_libs()</code> - вызывает подключение дополнительных библиотек, прописанных в движке, внутри этой функции (используется в моде OGSE).<br/>
 +
 +
<code>print_level_time()</code> - выводит отладочную информацию в лог о времени уровня.<br/>
 +
<code>print_alife_time()</code> - выводит отладочную информацию в лог о времени алайфа.<br/>
 +
<code>set_ignore_game_state_update()</code> - устанавливает запрет на выполнение одного цикла обновления внутренних параметров времени (используется в моде OGSE).<br/>
 +
 +
<code>screenshot0(string<path>)</code> - создает скриншот в обычном режиме и сохраняет файл по указанному пути.<br/>
 +
<code>screenshot1(string<path>)</code> - создает скриншот в режиме cubemap и сохраняет файл по указанному пути.<br/>
 +
<code>screenshot2(string<path>)</code> - создает скриншот в режиме save и сохраняет файл по указанному пути.<br/>
 +
<code>screenshot3(string<path>)</code> - создает скриншот в режиме levelmap и сохраняет файл по указанному пути.<br/>
 +
 +
<code>set_hud_inertia(float<speed>)</code> - устанавливает скорость инерции худа.<br/>
 +
<code>set_hud_inertia_param2(float<shift>)</code> - устанавливает силу инерции худа.<br/>
 +
 +
<code>float<rescale> get_static_rescale_factor()</code> - возвращает коэффициент сжатия элементов окна на выбранном разрешении.<br/>
 +
<code>set_static_rescale_factor(float<rescale>)</code> - устанавливает коэффициент сжатия элементов окна на выбранном разрешении.<br/>
 +
 +
Остальные методы предназначены для передачи или получения значений в(из) другие(их) методы(ов), в которых, по причине отсутствия необходимого прототипа, штатно это сделать нельзя.
 
[[Категория:Редактирование движка]]
 
[[Категория:Редактирование движка]]

Версия 02:29, 9 февраля 2016

X-Ray extensions


Тип Расширения движка
Авторы malandrinus, kolmogor, K.D., RayTwitty (aka Shadows),

Real Wolf, kstn, _призрак_, SkyLoader

Официальный репозиторий GitHub
Официальная тема AMK форум

Этот проект представляет собой набор добавлений, расширяющих возможности движка для скриптеров, а также, в ряде случаев, меняющих поведение игры. Изменения реализованы в виде бинарных патчей библиотек и исполняемых файлов.

Изменения

ТЧ

Класс game_object

Основные методы

Регистрация функций в движке

// CActor
set_actor_visual(string)
float get_sprint_factor()
set_sprint_factor(float)
float get_actor_take_dist()
set_actor_take_dist(float)
float get_actor_max_weight()
set_actor_max_weight(float)
float get_actor_max_walk_weight()
set_actor_max_walk_weight(float)
open_inventory_box(game_object*)
set_camera_direction(vector)
update_camera_direction(game_object*)
enable_car_panel(bool)
attach_vehicle(game_object*)
detach_vehicle(vector)
set_goodwill_ex(int, int, int)
change_goodwill_ex(int, int, int)
float get_camera_fov()
set_camera_fov(float)
restore_camera_fov()
float get_hud_fov()
set_hud_fov(float)
set_hud_animation_channel(int)
set_hud_animation_callback_param(int)
set_use_hud_animation_callback(bool)
clear_personal_record(int, int)
uint actor_body_state()
bool is_actor_normal()
bool is_actor_crouch()
bool is_actor_creep()
bool is_actor_climb()
bool is_actor_walking()
bool is_actor_running()
bool is_actor_sprinting()
bool is_actor_crouching()
bool is_actor_creeping()
bool is_actor_climbing()
 
// CCar
float get_fuel()
set_fuel(float)
float get_fuel_consumption()
set_fuel_consumption(float)
float get_fuel_tank()
 
// CEntityAlive
heal_wounds(float)
update_condition()
 
// CGameObject
string specific_character()
int get_bone_visible(string, int)
int set_bone_visible(string, int)
int get_bone_id(string, int)
string get_bone_name()
bool has_visual()
ini_file* get_visual_ini()
bool nonscript_usable()
 
// CHangingLamp
set_lsf_speed(float)
set_lsf_amount(float)
set_lsf_smap_jitter(float)
float get_lsf_speed()
 
// CHolderCustom
game_object* get_holder_owner()
 
// CHudItem
play_hud_animation(string, bool)
uint get_hud_animation_remaining_time()
int get_hud_animation_length(string, int)
bool is_cyclic_hud_animation()
bool has_hud_animation(string)
uint get_hud_item_state()
int get_hud_bone_id(string, int)
vector get_hud_bone_pos(string)
int get_hud_bone_visible(string, int)
int set_hud_bone_visible(string, int)
 
// CInventoryBox
game_object* object_from_inv_box(int)
uint inv_box_count()
 
// CInventoryItem
float get_weight()
 
// CInventoryOwner
bool is_on_belt(game_object*)
bool is_in_ruck(game_object*)
bool is_in_slot(game_object*)
bool move_to_ruck(game_object*)
bool move_to_belt(game_object*)
bool move_to_slot(game_object*)
bool move_to_slot_and_activate(game_object*)
game_object* item_on_belt(int)
game_object* item_in_ruck(int)
uint belt_count()
uint ruck_count()
uint slot_number()
float get_inventory_weight()
invalidate_inventory()
 
// CObject
float radius()
string get_visual_name()
set_visual_name(string)
 
// CProjector
projector_on()
projector_off()
bool projector_is_on()
switch_projector(bool)
 
// CSpaceRestrictor
float get_shape_radius()
 
// CTorch
switch_torch(bool)
bool is_torch_enabled()
set_torch_range(float)
set_torch_color(vector)
set_torch_omni_range(float)
set_torch_omni_color(vector)
set_torch_glow_radius(float)
set_torch_spot_angle(float)
set_torch_color_animator(string)
switch_night_vision(bool)
 
// CWeapon
int get_wpn_bone_visible(string, int)
int set_wpn_bone_visible(string, int)
CActor

set_actor_visual(string<path>) - устанавливает путь до визуала.
float<speed> get_sprint_factor() - возвращает скорость бега.
set_sprint_factor(float<speed>) - устанавливает скорость бега.
float<dist> get_actor_take_dist() - возвращает дистанцию поднятия предметов.
set_actor_take_dist(float<dist>) - устанавливает дистанцию поднятия предметов.
float<max_weight> get_actor_max_weight() - возвращает максимальный вес рюкзака.
set_actor_max_weight(float<max_weight>) - устанавливает максимальный вес рюкзака.
float<max_walk_weight> get_actor_max_walk_weight() - возвращает максимально-переносимый вес рюкзака.
set_actor_max_walk_weight(float<max_walk_weight>) - устанавливает максимально-переносимый вес рюкзака.
open_inventory_box(game_object*<box_obj>) - открывает окно обыска инвентарого ящика.
set_camera_direction(vector<x, y, z>) - устанавливает направление камеры.
update_camera_direction(game_object*<target_obj>) - направляет камеру в позицию объекта.
enable_car_panel(bool<is_visible>) - устанавливает видимость панели машины (прогресс-бар состояния).
attach_vehicle(game_object*<holder_obj>) - садит ГГ в машину или станковое оружие.
detach_vehicle(vector<exit_pos>) - высаживает ГГ из машины в заданную позицию на уровне.
set_goodwill_ex(int<who_id>, int<to_whom_id>, int<goodwill>) - устанавливает отношения между персонажами.
change_goodwill_ex(int<who_id>, int<to_whom_id>, int<goodwill_change>) - изменяет отношения между персонажами на заданное значение.
float<fov> get_camera_fov() - возвращает текущий fov камеры.
set_camera_fov(float<fov>) - устанавливает fov камеры.
restore_camera_fov() - восстанавливает предыдущий fov камеры (заданный методом set_camera_fov).
float<dist> get_hud_fov() - возвращает расстояние от камеры до худа оружия.
set_hud_fov(float<dist>) - устанавливает расстояние от камеры до худа оружия.
set_hud_animation_channel(int<blend_channel>) -- устанавливает номер канала блендинга анимации, который будет передан в колбек на завершение анимации (только при проигрывании анимации через метод play_hud_animation).
set_hud_animation_callback_param(int<param>) -- устанавливает произвольный параметр, который будет передан в колбек на завершение анимации (только при проигрывании анимации через метод play_hud_animation).
set_use_hud_animation_callback(bool<use_callback>) -- включает использование колбека на завершение анимации (только при проигрывании анимации через метод play_hud_animation).
clear_personal_record(int<id_from>, int<id_to>) - очищает отношения между двумя мобами по их id.
uint<state> actor_body_state() - возвращает номер текущего стейта.
bool is_actor_normal() - возвратит true, если ГГ просто стоит.
bool is_actor_crouch() - возвратит true, если ГГ присел.
bool is_actor_creep() - возвратит true, если ГГ глубоко присел.
bool is_actor_climb() - возвратит true, если ГГ находится на лестнице.
bool is_actor_walking() - возвратит true, если ГГ идет медленным шагом.
bool is_actor_running() - возвратит true, если ГГ идет быстрым шагом.
bool is_actor_sprinting() - возвратит true, если ГГ бежит.
bool is_actor_crouching() - возвратит true, если ГГ двигается в присяде.
bool is_actor_creeping() - возвратит true, если ГГ двигается в глубоком присяде.
bool is_actor_climbing() - возвратит true, если ГГ двигается на лестнице.

CCar

float<fuel> get_fuel() - возвращает текущее количество топлива.
set_fuel(float<fuel>) - устанавливает текущее количество топлива.
float<consumption> get_fuel_consumption() - возвращает расход топлива.
set_fuel_consumption(float<consumption>) - устанавливает расход топлива.
float<tank_size> get_fuel_tank() - возвращает размер топливного бака.

CEntityAlive

heal_wounds(float<factor>) - уменьшает силу кровотечения.
update_condition() - принудительно обновляет внутренние параметры состояния персонажа (жизнь, выносливость, кровотечение и т.д.).

CGameObject

string<profile_name> specific_character() - возвращает название профиля персонажа.
int<is_visible>[0 or 1] get_bone_visible(string<bone_name>) - возвращает видимость кости по имени.
set_bone_visible(string<bone_name>, int<visible>[0 or 1]) - устанавливает видимость кости по имени.
int<bone_id> get_bone_id(string<bone_name>) - возвращает id кости по имени.
string<bone_name> get_bone_name() - возвращает имя кости по id (для установки id кости, необходимо использовать глобальную функцию set_int_arg0(int<bone_id>)).
bool<visual> has_visual() - возвратит true, если объект имеет визуал.
ini_file* get_visual_ini() - возвращает ссылку на внутренний конфиг модели.
bool<is_usable> nonscript_usable() - возвратит true, если над объектом разрешены нескриптовые действия.

CHangingLamp

set_lsf_speed(float<speed>) -- ###########???###########
set_lsf_amount(float<amount>)
set_lsf_smap_jitter(float<jitter>)
float<speed> get_lsf_speed()
Эти методы изменяют параметры тени от источника света. Для их работы необходимы правки движка и шейдеров. Широко используются в моде OGSE.

CHolderCustom

game_object*<owner_obj> get_holder_owner() - возвращает владельца машины или станкового оружия.

CHudItem

play_hud_animation(string<anim_name>, bool<mix_in>) - проигрывает анимацию с заданным именем.
uint<remaining_time> get_hud_animation_remaining_time() - возвращает время, оставшееся до окончания текущей анимации.
int<length> get_hud_animation_length(string<anim_name>) - возвращает длительность анимации по её имени.
bool<is_cyclic> is_cyclic_hud_animation() - возвратит true, если текущая анимация зациклена.
bool<has_anim> has_hud_animation(string<anim_name>) - возвратит true, если анимация есть в модели.
uint<state> get_hud_item_state() - возвращает номер текущего стейта.
int<bone_id> get_hud_bone_id(string<bone_name>) - возвращает id кости по имени.
vector<pos> get_hud_bone_pos(string<bone_name>) - возвращает позицию кости по имени.
int<is_visible>[0 or 1] get_hud_bone_visible(string<bone_name>) - возвращает видимость кости по имени.
set_hud_bone_visible(string<bone_name>, int<visible>[0 or 1]) - устанавливает видимость кости по имени.

CInventoryBox

game_object*<item_obj> object_from_inv_box(int<object_number>) - возвращает предмет в ящике по номеру.
uint<items_count> inv_box_count() - возвращает количество предметов в ящике.

CInventoryItem

float<weight> get_weight() - возвращает вес предмета.

CInventoryOwner

bool<is_on_belt> is_on_belt(game_object*<item_obj>) - возвратит true, если предмет на поясе.
bool<is_in_ruck> is_in_ruck(game_object*<item_obj>) - возвратит true, если предмет в рюкзаке.
bool<is_in_slot> is_in_slot(game_object*<item_obj>) - возвратит true, если предмет в слоте.
move_to_ruck(game_object*<item_obj>) - перемещает предмет в рюкзак.
move_to_belt(game_object*<item_obj>) - перемещает предмет на пояс.
move_to_slot(game_object*<item_obj>) - перемещает предмет в слот.
move_to_slot_and_activate(game_object*<item_obj>) - перемещает предмет в слот и активирует его.
game_object*<item_obj> item_on_belt(int<object_number>) - возвращает предмет на поясе по номеру.
game_object*<item_obj> item_in_ruck(int<object_number>) - возвращает предмет в рюкзаке по номеру.
uint<count> belt_count() - возвращает количество предметов на поясе.
uint<count> ruck_count() - возвращает количество предметов в рюкзаке.
uint<number> slot_number() - возвращает количество слотов.
float<total_weight> get_inventory_weight() - возвращает суммарный вес инвентаря.
invalidate_inventory() - принудительно обновляет все данные в инвентаре.

CObject

float<radius> radius() - возвращает виртуальный радиус объекта.
string<path> get_visual_name() - возвращает путь до визуала объекта.
set_visual_name(string<path>) - устанавливает путь до визуала объекта.

CProjector

projector_on() - включает прожектор.
projector_off() - выключает прожектор.
bool<is_on> projector_is_on() - возвратит true, если прожектор включён.
switch_projector(bool<switch_on>) - переключает прожектор.

CSpaceRestrictor

float<radius> get_shape_radius() - возвращает радиус рестриктора.

CTorch

switch_torch(bool<switch_on>) - переключает фонарь.
bool<is_on> is_torch_enabled() - возвратит true, если фонарь включён.
set_torch_range(float<range>) - устанавливает дальность основного света фонаря.
set_torch_color(vector<R, G, B>) - устанавливает цвет основного света от фонаря.
set_torch_omni_range(float<range>) - устанавливает дальность амбиент-света фонаря.
set_torch_omni_color(vector<R, G, B>) - устанавливает цвет амбиент-света от фонаря.
set_torch_glow_radius(float<radius>) - устанавливает радиус глоу-эффекта от фонарика.
set_torch_spot_angle(float<angle>) - устанавливает радиус светового пятна от фонарика.
set_torch_color_animator(string<path>) - устанавливает путь до аниматора цвета.
switch_night_vision(bool<switch_on>) - переключает состояние ПНВ.

CWeapon

int<is_visible>[0 or 1] get_wpn_bone_visible(string<bone_name>) - возвращает видимость кости оружия по имени.
set_wpn_bone_visible(string<bone_name>, int<visible>[0 or 1]) - устанавливает видимость кости оружия по имени.

Хак для изменения значений в памяти объектов

Регистрация функций в движке

// CActor
float get_actor_float(int)
set_actor_float(vector, float, int)
int get_actor_int(string, int)
set_actor_int(int, int)
int get_actor_int16(string, int)
string get_actor_shared_str()
int set_actor_shared_str(string, int)
float get_actor_condition_float(int)
set_actor_condition_float(vector, float, int)
int get_actor_condition_int(string, int)
 
// CCar
float get_car_float(int)
set_car_float(vector, float, int)
int get_car_int(string, int)
set_car_int(int, int)
int get_car_int16(string, int)
set_car_int16(int, int)
 
// CCustomMonster
float get_custom_monster_float(int)
int get_custom_monster_int(string, int)
 
// CGameObject
float get_go_float(int)
set_go_float(vector, float, int)
int get_go_int(string, int)
set_go_int(int, int)
int get_go_int16(string, int)
set_go_int16(int, int)
string get_go_shared_str()
int set_go_shared_str(string, int)
 
// CHolderCustom
int get_holder_int(string, int)
 
// CHudItem
float get_hud_float(int)
set_hud_float(vector, float, int)
string get_hud_shared_str()
int set_hud_shared_str(string, int)
int save_hud_bone_float(string, int)
 
// CInventoryItem
float get_inventory_item_float(int)
set_inventory_item_float(vector, float, int)
int get_inventory_item_int(string, int)
set_inventory_item_int(int, int)
int get_inventory_item_int8(string, int)
set_inventory_item_int8(int, int)
int get_inventory_item_int16(string, int)
set_inventory_item_int16(int, int)
string get_inventory_item_shared_str()
int set_inventory_item_shared_str(string, int)
 
// CWeapon
float get_wpn_float(int)
set_wpn_float(vector, float, int)
int get_wpn_int(string, int)
set_wpn_int(int, int)
string get_wpn_shared_str()
int set_wpn_shared_str(string, int)
 
// CWeaponMagazinedWGrenade
int get_wpn_gl_int(string, int)
 
// Memory access functions
float get_memory_float(int)
set_memory_float(vector, float, int)
int get_memory_int(string, int)
set_memory_int(int, int)
int get_memory_int8(string, int)
set_memory_int8(int, int)
int get_memory_int16(string, int)
set_memory_int16(int, int)

Методы предназначены для изменения тех значений в памяти игровых объектов, которые недоступны через стандартные средства.
Применение всех функций практически одинаково, так что рассматриваю только пример на классе CGameObject.

Смещение - это смещение адреса нашей переменной от начала класса. Узнать смещения можно несколькими способами:
1) посмотреть в дебаговой версии движка, через какой-нибудь дизассембелер;
2) прогнать в цикле все значения и вывести их значения в лог, после чего шаманить, сравнивая и догадываясь, какое значение за что отвечает :)

Функция для получения значений из класса CActor

type - тип значения (integer или float)
cycle_length - диапазон поиска значений (обычно хватает от 500 до 2000)

function get_actor_values(type, cycle_length)
	if cycle_length then
		if type == "float" then
			get_console():execute("clear_log")
			for i = 1, cycle_length do
				local value = db.actor:get_actor_float(i)
				if value then log1("Float value = "..value.."; Position = "..i) end
			end
			flush_log()
		elseif type == "integer" then
			get_console():execute("clear_log")
			for i = 1, cycle_length do
				local value = db.actor:get_actor_int(nil, i)
				if value then log1("Integer value = "..value.."; Position = "..i) end
			end
			flush_log()
		end
	end
end

Результат записывается в лог игры.

float<value> get_go_float(int<offset>) - возвращает значение с плавающей точкой по заданному смещению.
set_go_float(nil, float<value>, int<offset>) - устанавливает значение с плавающей точкой по заданному смещению (первый аргумент - заглушка).
int<value> get_go_int(nil, int<offset>) - возвращает целочисленное значение по заданному смещению (первый аргумент - заглушка).
set_go_int(int<offset>, int<value>) - устанавливает целочисленное значение по заданному смещению.
string<value> get_go_shared_str() - возвращает строковое значение по заданному смещению (смещение задается через глобальную функцию set_int_arg0(int<offset>)).
set_go_shared_str(string<value>, int<offset>) - устанавливает строковое значение по заданному смещению.

Также, пару слов о методах для ГГ - их существует два типа, для класса CActor и класса CActorCondition. В последнем лежит много параметров вроде сытости, алкоголизма, силы прыжка и т.п.

Методы для получения адреса базового объекта

Регистрация функций в движке

uint cast_car()
uint cast_game_object()
uint cast_hud_item()
uint cast_inventory_box()
uint cast_inventory_item()
uint cast_weapon()

Методы позволяют получить адрес в памяти, откуда начинается базовый объект (адрес в большинстве случаев не совпадает с началом объекта в целом). Результат можно использовать в разных хаках, когда известно смещение относительно конкретного класса.

Методы для проверки типа объекта

Регистрация функций в движке

bool is_actor()
bool is_ammo()
bool is_anomaly()
bool is_antirad()
bool is_artefact()
bool is_binoculars()
bool is_bottle_item()
bool is_car()
bool is_custom_monster()
bool is_eatable_item()
bool is_entity_alive()
bool is_explosive()
bool is_food_item()
bool is_game_object()
bool is_grenade()
bool is_grenade_launcher()
bool is_hanging_lamp()
bool is_helicopter()
bool is_holder()
bool is_hud_item()
bool is_inventory_box()
bool is_inventory_item()
bool is_inventory_owner()
bool is_knife()
bool is_medkit()
bool is_missile()
bool is_monster()
bool is_outfit()
bool is_physics_shell_holder()
bool is_projector()
bool is_scope()
bool is_script_zone()
bool is_silencer()
bool is_space_restrictor()
bool is_stalker()
bool is_torch()
bool is_trader()
bool is_weapon()
bool is_weapon_gl()
bool is_weapon_magazined()
bool is_weapon_pistol()
bool is_weapon_shotgun()

Методы предназначены для проверки типа объекта (к какому классу принадлежит). Применение достаточно простое:

if obj:is_<class_name>() then
...
end

Методы не имеющие привязки к определенному объекту

Регистрация функций в движке

game_object* get_object_arg_1(int)
set_object_arg_1(game_object*)
set_calibrating_vector(vector)
set_vector_global_arg_1(vector)
set_vector_global_arg_2(vector)
set_vector_global_arg_3(vector)
set_vector_global_arg_4(vector)

Эти методы предназначены для передачи или получения значений в(из) другие(их) методы(ов), в которых, по причине отсутствия необходимого прототипа, штатно это сделать нельзя. Могут вызываться для любого типа объекта в игре.

Класс matrix

Регистрация функций в движке

mul_43(matrix, matrix)
transform_tiny(vector, vector, vector, vector)
transform_tiny1(vector, vector, vector, vector)
transpose(float)

mul_43(matrix<m1>, matrix<m2>) - умножает две матрицы без последнего столбца и записывает результат в матрицу для которой вызывался метод.
transform_tiny(vector<res>, vector<v>) - умножает матрицу на вектор (перевод из одной системы координат в другую), с записыванием результата в вектор res.
transform_tiny1(vector<v>) - умножает матрицу на вектор (перевод из одной системы координат в другую), с записыванием результата в сам вектор.
transpose() - транспонирует матрицу (зеркалирование относительно главной диагонали).

Класс CTime

Регистрация функций в движке

set_value(int, int, int)
int, int, int, int, int, int, int get_value()

set_value(int<lv>, int<gv>) - устанавливает значение объекта из компонент.
int<lv>, int<gv> get_value() - возвращает младшую и старшую часть счетчика.

Класс CALifeSimulator

Регистрация функций в движке

CSE_Abstract* teleport_object(string, vector, uint, uint, uint)
CSE_Abstract* assign_story_id(string, vector, uint, uint, uint)

teleport_object(nil, vector<position>, uint<level_vertex_id>, uint<game_vertex_id>, uint<id>) - телепортирует объект по его id в заданную позицию на уровне.
assign_story_id(nil, nil, uint<id>, uint<story_id>) - устанавливает story_id объекту по его id.

Класс CSE_Abstract

Свойства
angle<vector> - задает направление поворота объекта.

Класс CSE_ALifeObject

Регистрация функций в движке

use_ai_locations(bool)

use_ai_locations(bool<use>) - задает использование AI-локаций (сетки) для объекта.

Пространство имен level

Регистрация функций в движке

game_object* get_target_obj(int)
float get_target_dist()
int get_target_element(int)
 
int has_cam_effector(int)
int has_pp_effector(int)
bool has_indicators()
 
int advance_game_time(int)
game_object* get_second_talker(int)
int vertex_id(int)
 
float get_memory_float(string, int, bool, string)
int get_memory_int(int)
 
bool perform_ray_pick_query()
float get_ray_pick_dist()
game_object* get_ray_pick_obj(int)
int get_ray_pick_element(int)
 
CUIDialogWnd* get_inventory_wnd()
CUIDialogWnd* get_pda_wnd()
CUIDialogWnd* get_talk_wnd()
CUIDialogWnd* get_car_body_wnd()
CUIDialogWnd* get_trade_wnd()
 
int send_event_mouse_wheel(int)
int send_event_key_hold(int)
int send_event_key_release(int)
int send_event_key_press(int)
 
set_ce_time(float)
set_ce_amplitude(float)
set_ce_period_number(float)
set_ce_power(float)
bool add_ce()
 
vector get_tri_vertex1(int)
vector get_tri_vertex2(int)
vector get_tri_vertex3(int)
 
float get_tri_shootfactor(string, int, bool, string)
int get_tri_flags(int)

float<value> get_memory_float(nil, int<addr>) - возвращает число с плавающей точкой по абсолютному адресу.
int<value> get_memory_int(int<addr>) - возвращает целое число по абсолютному адресу.

Глобальное пространство имен

Регистрация функций в движке

log1(string)
fail(string)
int flush_log(int, int)
int bind_to_dik(int, int)
 
int get_extensions_flags(int, int)
int set_extensions_flags(int, int)
int get_actor_flags(int, int)
int set_actor_flags(int, int)
int get_input_language(int, int)
int set_input_language(int, int)
 
int set_trade_filtration_on(int, int)
int set_trade_filtration_off(int, int)
int set_manual_grouping_on(int, int)
int set_manual_grouping_off(int, int)
int set_manual_highlight_on(int, int)
int set_manual_highlight_off(int, int)
int get_manual_highlight(int, int)
int set_highlight_color(int, int)
 
int sum_args(int, int)
int sub_args(int, int)
 
int GetGoodwill(int, int)
int update_inventory_window(int, int)
init_external_libs(string)
 
set_game_time(float, float)
int print_level_time(int, int)
int print_alife_time(int, int)
int set_ignore_game_state_update(int, int)
 
screenshot0(string)
screenshot1(string)
screenshot2(string)
screenshot3(string)
 
set_hud_inertia(float, float)
set_hud_inertia_param2(float, float)
 
float get_static_rescale_factor()
set_static_rescale_factor(float, float)
 
int set_int_arg0(int, int)
int set_int_arg1(int, int)
int set_int_arg2(int, int)
int set_int_arg3(int, int)
int set_int_arg4(int, int)
int set_int_arg5(int, int)
int set_int_arg6(int, int)
set_float_args_12(float, float)
set_float_args_34(float, float)

log1(string<message>) - выводит строку-сообщение в лог.
fail(string<message>) - принудительно останавливает игру и выводит сообщение в лог.
flush_log() - записывает содержимое лога в лог-файл (аналогично вызову консольной команды flush).
int<DIK_keys> bind_to_dik(int<key_bindings>) - переводит код команды-экшена в код клавиши, забинденной на этот экшен.

int<ex_flags> get_extensions_flags() - возвращает состояние флагов работы колбеков (1 - key_press, 2 - key_release, 4 - key_hold, 8 - mouse_wheel, 16 - mouse_move).
set_extensions_flags(int<ex_flags>) - устанавливает состояние флагов работы колбеков (1 - key_press, 2 - key_release, 4 - key_hold, 8 - mouse_wheel, 16 - mouse_move).
int<flags> get_actor_flags() - возвращает состояние флагов из перечисления psActorFlags.
set_actor_flags(int<flags>) - устанавливает состояние флагов из перечисления psActorFlags.
int<lang>[0 or 1] get_input_language() - возвращает номер языка для ввода в полях редактирования (0 - eng, 1 - rus).
set_input_language(int<lang>[0 or 1]) - устанавливает номер языка для ввода в полях редактирования (0 - eng, 1 - rus).

set_trade_filtration_on() - включает режим скриптовой фильтрации предметов в окне торговли.
set_trade_filtration_off() - выключает режим скриптовой фильтрации предметов в окне торговли.
set_manual_grouping_on() - включает режим скриптовой группировки предметов в окне торговли и обыска.
set_manual_grouping_off() - выключает режим скриптовой группировки предметов в окне торговли и обыска.
set_manual_highlight_on() - включает режим скриптовой подсветки предметов в окне торговли и обыска.
set_manual_highlight_off() - выключает режим скриптовой подсветки предметов в окне торговли и обыска.
int<is_highlight>[0 or 1] get_manual_highlight() - возвращает включенность режима скриптовой подсветки предметов.
set_highlight_color(int<color_id>, int<GetARGB(A, R, G, B)>) - устанавливает соответствие между индексом цвета и кодом цвета.

int<result> sum_args(int<val1>, int<val2>) - производит сложение двух чисел и возвращает целочисленный результат (при ариф. операциях, Lua возвращает число с плавающей точкой).
int<result> sub_args(int<val1>, int<val2>) - производит вычитание двух чисел и возвращает целочисленный результат (при ариф. операциях, Lua возвращает число с плавающей точкой).

int<goodwill> GetGoodwill(int<who_id>, int<to_whom_id>) - возвращает текущее отношение между персонажами.
update_inventory_window() - обновляет все графические элементы окна инвентаря.
init_external_libs() - вызывает подключение дополнительных библиотек, прописанных в движке, внутри этой функции (используется в моде OGSE).

print_level_time() - выводит отладочную информацию в лог о времени уровня.
print_alife_time() - выводит отладочную информацию в лог о времени алайфа.
set_ignore_game_state_update() - устанавливает запрет на выполнение одного цикла обновления внутренних параметров времени (используется в моде OGSE).

screenshot0(string<path>) - создает скриншот в обычном режиме и сохраняет файл по указанному пути.
screenshot1(string<path>) - создает скриншот в режиме cubemap и сохраняет файл по указанному пути.
screenshot2(string<path>) - создает скриншот в режиме save и сохраняет файл по указанному пути.
screenshot3(string<path>) - создает скриншот в режиме levelmap и сохраняет файл по указанному пути.

set_hud_inertia(float<speed>) - устанавливает скорость инерции худа.
set_hud_inertia_param2(float<shift>) - устанавливает силу инерции худа.

float<rescale> get_static_rescale_factor() - возвращает коэффициент сжатия элементов окна на выбранном разрешении.
set_static_rescale_factor(float<rescale>) - устанавливает коэффициент сжатия элементов окна на выбранном разрешении.

Остальные методы предназначены для передачи или получения значений в(из) другие(их) методы(ов), в которых, по причине отсутствия необходимого прототипа, штатно это сделать нельзя.