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

Материал из xrWiki
Перейти к: навигация, поиск
(Новая страница: «<div style="padding: .5em 1em; float: right; background: #f2f2f2; border: 1px solid #aaaaaa;"> <big>'''X-Ray extensions'''</big> ---- {| style="border: none" | ''…»)
 
Строка 190: Строка 190:
 
<code>bool is_actor_creeping()</code> - возвратит true, если ГГ двигается в глубоком присяде.<br/>
 
<code>bool is_actor_creeping()</code> - возвратит true, если ГГ двигается в глубоком присяде.<br/>
 
<code>bool is_actor_climbing()</code> - возвратит true, если ГГ двигается на лестнице.<br/>
 
<code>bool is_actor_climbing()</code> - возвратит true, если ГГ двигается на лестнице.<br/>
 +
=====CCar=====
 +
<code>float<fuel> get_fuel()</code> - возвращает текущее количество топлива.<br/>
 +
<code>set_fuel(float<fuel>)</code> - устанавливает текущее количество топлива.<br/>
 +
<code>float<consumption> get_fuel_consumption()</code> - возвращает расход топлива.<br/>
 +
<code>set_fuel_consumption(float<consumption>)</code> - устанавливает расход топлива.<br/>
 +
<code>float<tank_size> get_fuel_tank()</code> - возвращает размер топливного бака.<br/>
 +
=====CEntityAlive=====
 +
<code>heal_wounds(float<factor>)</code> - уменьшает силу кровотечения.<br/>
 +
<code>update_condition()</code> - принудительно обновляет внутренние параметры состояния персонажа (жизнь, выносливость, кровотечение и т.д.).<br/>
 +
=====CGameObject=====
 +
<code>string<profile_name> specific_character()</code> - возвращает название профиля персонажа.<br/>
 +
<code>int<is_visible>[0 or 1] get_bone_visible(string<bone_name>)</code> - возвращает видимость кости по имени.<br/>
 +
<code>set_bone_visible(string<bone_name>, int<visible>[0 or 1])</code> - устанавливает видимость кости по имени.<br/>
 +
<code>int<bone_id> get_bone_id(string<bone_name>)</code> - возвращает id кости по имени.<br/>
 +
<code>string<bone_name> get_bone_name()</code> - возвращает имя кости по id (для установки id кости, необходимо использовать глобальную функцию <code>set_int_arg0(int<bone_id>)</code>).<br/>
 +
<code>bool<visual> has_visual()</code> - возвратит true, если объект имеет визуал.<br/>
 +
<code>ini_file* get_visual_ini()</code> - возвращает ссылку на внутренний конфиг модели.<br/>
 +
<code>bool<is_usable> nonscript_usable()</code> - возвратит true, если над объектом разрешены нескриптовые действия.<br/>
 +
=====CHangingLamp=====
 +
<code>set_lsf_speed(float<speed>)</code> -- ###########???###########<br/>
 +
<code>set_lsf_amount(float<amount>)</code><br/>
 +
<code>set_lsf_smap_jitter(float<jitter>)</code><br/>
 +
<code>float<speed> get_lsf_speed()</code><br/>
 +
Эти методы изменяют параметры тени от источника света. Для их работы необходимы правки движка и шейдеров. Широко используются в моде OGSE.<br/>
 +
=====CHolderCustom=====
 +
<code>game_object*<owner_obj> get_holder_owner()</code> - возвращает владельца машины или станкового оружия.<br/>
 +
=====CHudItem=====
 +
<code>play_hud_animation(string<anim_name>, bool<mix_in>)</code> - проигрывает анимацию с заданным именем.<br/>
 +
<code>uint<remaining_time> get_hud_animation_remaining_time()</code> - возвращает время, оставшееся до окончания текущей анимации.<br/>
 +
<code>int<length> get_hud_animation_length(string<anim_name>)</code> - возвращает длительность анимации по её имени.<br/>
 +
<code>bool<is_cyclic> is_cyclic_hud_animation()</code> - возвратит true, если текущая анимация зациклена.<br/>
 +
<code>bool<has_anim> has_hud_animation(string<anim_name>)</code> - возвратит true, если анимация есть в модели.<br/>
 +
<code>uint<state> get_hud_item_state()</code> - возвращает номер текущего стейта.<br/>
 +
<code>int<bone_id> get_hud_bone_id(string<bone_name>)</code> - возвращает id кости по имени.<br/>
 +
<code>vector<pos> get_hud_bone_pos(string<bone_name>)</code> - возвращает позицию кости по имени.<br/>
 +
<code>int<is_visible>[0 or 1] get_hud_bone_visible(string<bone_name>)</code> - возвращает видимость кости по имени.<br/>
 +
<code>set_hud_bone_visible(string<bone_name>, int<visible>[0 or 1])</code> - устанавливает видимость кости по имени.<br/>
 +
=====CInventoryBox=====
 +
<code>game_object*<item_obj> object_from_inv_box(int<object_number>)</code> - возвращает предмет в ящике по номеру.<br/>
 +
<code>uint<items_count> inv_box_count()</code> - возвращает количество предметов в ящике.<br/>
 +
=====CInventoryItem=====
 +
<code>float<weight> get_weight()</code> - возвращает вес предмета.<br/>
 +
=====CInventoryOwner=====
 +
<code>bool<is_on_belt> is_on_belt(game_object*<item_obj>)</code> - возвратит true, если предмет на поясе.<br/>
 +
<code>bool<is_in_ruck> is_in_ruck(game_object*<item_obj>)</code> - возвратит true, если предмет в рюкзаке.<br/>
 +
<code>bool<is_in_slot> is_in_slot(game_object*<item_obj>)</code> - возвратит true, если предмет в слоте.<br/>
 +
<code>move_to_ruck(game_object*<item_obj>)</code> - перемещает предмет в рюкзак.<br/>
 +
<code>move_to_belt(game_object*<item_obj>)</code> - перемещает предмет на пояс.<br/>
 +
<code>move_to_slot(game_object*<item_obj>)</code> - перемещает предмет в слот.<br/>
 +
<code>move_to_slot_and_activate(game_object*<item_obj>)</code> - перемещает предмет в слот и активирует его.<br/>
 +
<code>game_object*<item_obj> item_on_belt(int<object_number>)</code> - возвращает предмет на поясе по номеру.<br/>
 +
<code>game_object*<item_obj> item_in_ruck(int<object_number>)</code> - возвращает предмет в рюкзаке по номеру.<br/>
 +
<code>uint<count> belt_count()</code> - возвращает количество предметов на поясе.<br/>
 +
<code>uint<count> ruck_count()</code> - возвращает количество предметов в рюкзаке.<br/>
 +
<code>uint<number> slot_number()</code> - возвращает количество слотов.<br/>
 +
<code>float<total_weight> get_inventory_weight()</code> - возвращает суммарный вес инвентаря.<br/>
 +
<code>invalidate_inventory()</code> - принудительно обновляет все данные в инвентаре.<br/>
 +
=====CObject=====
 +
<code>float<radius> radius()</code> - возвращает виртуальный радиус объекта.<br/>
 +
<code>string<path> get_visual_name()</code> - возвращает путь до визуала объекта.<br/>
 +
<code>set_visual_name(string<path>)</code> - устанавливает путь до визуала объекта.<br/>
 +
=====CProjector=====
 +
<code>projector_on()</code> - включает прожектор.<br/>
 +
<code>projector_off()</code> - выключает прожектор.<br/>
 +
<code>bool<is_on> projector_is_on()</code> - возвратит true, если прожектор включён.<br/>
 +
<code>switch_projector(bool<switch_on>)</code> - переключает прожектор.<br/>
 +
=====CSpaceRestrictor=====
 +
<code>float<radius> get_shape_radius()</code> - возвращает радиус рестриктора.<br/>
 +
=====CTorch=====
 +
<code>switch_torch(bool<switch_on>)</code> - переключает фонарь.<br/>
 +
<code>bool<is_on> is_torch_enabled()</code> - возвратит true, если фонарь включён.<br/>
 +
<code>set_torch_range(float<range>)</code> - устанавливает дальность основного света фонаря.<br/>
 +
<code>set_torch_color(vector<R, G, B>)</code> - устанавливает цвет основного света от фонаря.<br/>
 +
<code>set_torch_omni_range(float<range>)</code> - устанавливает дальность амбиент-света фонаря.<br/>
 +
<code>set_torch_omni_color(vector<R, G, B>)</code> - устанавливает цвет амбиент-света от фонаря.<br/>
 +
<code>set_torch_glow_radius(float<radius>)</code> - устанавливает радиус глоу-эффекта от фонарика.<br/>
 +
<code>set_torch_spot_angle(float<angle>)</code> - устанавливает радиус светового пятна от фонарика.<br/>
 +
<code>set_torch_color_animator(string<path>)</code> - устанавливает путь до аниматора цвета.<br/>
 +
<code>switch_night_vision(bool<switch_on>)</code> - переключает состояние ПНВ.<br/>
 +
=====CWeapon=====
 +
<code>int<is_visible>[0 or 1] get_wpn_bone_visible(string<bone_name>)</code> - возвращает видимость кости оружия по имени.<br/>
 +
<code>set_wpn_bone_visible(string<bone_name>, int<visible>[0 or 1])</code> - устанавливает видимость кости оружия по имени.<br/>
 +
====Хак для изменения значений в памяти объектов====
 +
=====Регистрация функций в движке=====
 +
<syntaxhighlight lang="lua">// 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)</syntaxhighlight>
 +
Методы предназначены для изменения тех значений в памяти игровых объектов, которые недоступны через стандартные средства.<br/>
 +
Применение всех функций практически одинаково, так что рассматриваю только пример на классе CGameObject.<br/>
 +
 +
'''Смещение''' - это смещение адреса нашей переменной от начала класса. Узнать смещения можно несколькими способами:<br/>
 +
1) посмотреть в дебаговой версии движка, через какой-нибудь дизассембелер;<br/>
 +
2) прогнать в цикле все значения и вывести их значения в лог, после чего шаманить, сравнивая и догадываясь, какое значение за что отвечает :)<br/>
 +
=====Функция для получения значений из класса CActor=====
 +
'''type''' - тип значения (''integer'' или ''float'')<br/>
 +
'''cycle_length''' - диапазон поиска значений (обычно хватает от 500 до 2000)<br/>
 +
<syntaxhighlight lang="lua">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</syntaxhighlight>
 +
Результат записывается в лог игры.
 +
 +
<code>float<value> get_go_float(int<offset>)</code> - возвращает значение с плавающей точкой по заданному смещению.<br/>
 +
<code>set_go_float(nil, float<value>, int<offset>)</code> - устанавливает значение с плавающей точкой по заданному смещению (первый аргумент - заглушка).<br/>
 +
<code>int<value> get_go_int(nil, int<offset>)</code> - возвращает целочисленное значение по заданному смещению (первый аргумент - заглушка).<br/>
 +
<code>set_go_int(int<offset>, int<value>)</code> - устанавливает целочисленное значение по заданному смещению.<br/>
 +
<code>string<value> get_go_shared_str()</code> - возвращает строковое значение по заданному смещению (смещение задается через глобальную функцию <code>set_int_arg0(int<offset>)</code>).<br/>
 +
<code>set_go_shared_str(string<value>, int<offset>)</code> - устанавливает строковое значение по заданному смещению.<br/>
 +
 +
Также, пару слов о методах для ГГ - их существует два типа, для класса '''CActor''' и класса '''CActorCondition'''. В последнем лежит много параметров вроде сытости, алкоголизма, силы прыжка и т.п.
 +
====Методы для получения адреса базового объекта====
 +
=====Регистрация функций в движке=====
 +
<syntaxhighlight lang="lua">uint cast_car()
 +
uint cast_game_object()
 +
uint cast_hud_item()
 +
uint cast_inventory_box()
 +
uint cast_inventory_item()
 +
uint cast_weapon()</syntaxhighlight>
 +
Методы позволяют получить адрес в памяти, откуда начинается базовый объект (адрес в большинстве случаев не совпадает с началом объекта в целом). Результат можно использовать в разных хаках, когда известно смещение относительно конкретного класса.
 +
====Методы для проверки типа объекта====
 +
=====Регистрация функций в движке=====
 +
<syntaxhighlight lang="lua">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()</syntaxhighlight>
 +
Методы предназначены для проверки типа объекта (к какому классу принадлежит). Применение достаточно простое:
 +
<syntaxhighlight lang="lua">if obj:is_<class_name>() then
 +
...
 +
end</syntaxhighlight>
 +
====Методы не имеющие привязки к определенному объекту====
 +
=====Регистрация функций в движке=====
 +
<syntaxhighlight lang="lua">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)</syntaxhighlight>
 +
Эти методы предназначены для передачи или получения значений в(из) другие(их) методы(ов), в которых, по причине отсутствия необходимого прототипа, штатно это сделать нельзя.
 +
Могут вызываться для любого типа объекта в игре.
 +
[[Категория:Редактирование движка]]

Версия 01:57, 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)

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