Библиотека libped предоставляет функционал для работы с кастомными ботами на аризоне.
Подключение:
Основные функции:
Структура Ped:
Методы структуры Ped:
Примеры использования:
Установка: разархивировать папку
Автор: @wojciech?
Подключение:
Lua:
local libped = require("libped")
Основные функции:
Lua:
local ped = libped:get_ped(id) -- возвращает указатель на структуру бота по его id
local it = libped:begin() -- возвращает итератор на начало пула
local peds = libped:get_all_peds() -- возвращает таблицу со всеми ботами в зоне стрима
Структура Ped:
Lua:
local ped = {
id = int,
model_id = int,
spawn_pos = libped_vector3d,
angle = float,
health = float,
max_health = float,
max_armour = float,
name_color = uint32_t,
subname_color = uint32_t,
name = libped_string,
subname = libped_string,
weapon_id = uint32_t,
weapon_ammo = uint32_t,
vehicle_id = uint32_t,
s_anim_group = uint16_t,
anim_group = uint16_t
}
Методы структуры Ped:
Lua:
local status = ped:is_exist() -- проверят, что бот существует
local name = ped:get_name() -- возвращает имя
local subname = ped:get_subname() -- возвращает описание
local gameped = ped:get_gameped() -- возвращает указатель на игровую сущность CPed*
local handle = ped:get_handle() -- возвращает хендл игровой сущности
ped:set_name(name) -- устанавливает имя
ped:set_subname(subname) -- устанавливает описание
ped:set_chat_bubble(text, color, distance, duration) -- уставнавливает сообщение над головой (если скрипт завершит свою работу или произойдет сборка мусора до удаления этого текста - будет краш)
ped:set_name_color(color) -- устанавливает цвет имени
ped:set_subname_color(color) -- устанавливает цвет описания
ped:set_skin(model_id) -- устанавливает скин
ped:set_weapon(weapon_id, ammo) -- выдает оружие
ped:set_health(health) -- устанавливает здоровье
ped:set_armour(armour) -- устанавливает броню
ped:set_max_health(health) -- устанавливает максимальное значение здоровья
ped:set_max_armour(armour) -- устанавливает максимальное значение брони
ped:set_angle(angle) -- устанавливает угол поворота
ped:attach_object(slot, model_id, bone_id, offset, rotation, scale, color_1, color_2) -- устанавливает кастомный акссесуар
ped:attach_simple_object(slot, model_id, bone_id, offset, rotation, scale, color_1, color_2) -- устанавливает обычный аксессуар
ped:detach_object(slot) -- удаляет кастомный аксессуар
ped:detach_simple_object(slot) -- удаляет обычный аксессуар
ped:move_to_pos(pos, a, b) -- отправляет бота на координаты, a, b не знаю за что отвечают
ped:set_pos(...) -- телепортирует бота на координаты, принимает любое векторо-подобное значение (x, y, z; {x, y, z}; { x = x, y = y, z = z })
ped:stop_all_action() -- останавливает все действия бота
ped:remove_from_vehicle() -- вытаскивает бота из машины
ped:set_anim_group(group) -- устанавливает группу анимаций
ped:set_invulnerable(status) -- устанавливает неуязвимость
ped:toggle_collision(status) -- устанавливает коллизию
ped:shoot_at_player(id) -- заставляет бота выстрелить по игроку
ped:shoot_at_ped(id) -- заставляет бота выстрелить по боту
ped:shoot_at_pos(...) -- заставляет бота выстрелить в указанные координаты, принимает любое векторо-подобное значение (x, y, z; {x, y, z}; { x = x, y = y, z = z })
ped:attack_player(id) -- заставляет бота атаковать игрока
ped:attack_ped(id) -- заставляет бота атаковать бота
Примеры использования:
Lua:
local ped = libped:get_ped(777)
if ped:is_exist() then -- после получения указателя нужно обязательно проверить его валидность
ped:set_skin(0)
ped:set_weapon(10, 9999)
-- выдаем скин и оружие
end
for ped in libped:begin() do
if ped:is_exist() then -- итератор также может вернуть указатель на nullptr
print(ped.id, ped:get_name(), ped:get_subname())
-- выводим id, имя и описание
end
end
local x, y, z = getCharCoordinates(PLAYER_PED)
for _, ped in ipairs(libped:get_all_peds()) do -- get_all_peds гарантировано не вернет nullptr
local handle = ped:get_handle()
if doesCharExist(handle) then
setCharCoordinates(handle, x, y, z)
-- телепортируем всех ботов к себе
end
end
Установка: разархивировать папку
libped
в папку moonloader/lib
Автор: @wojciech?