Исходник [arizona] libped

Библиотека libped предоставляет функционал для работы с кастомными ботами на аризоне.

Подключение:
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?
 

Вложения

  • libped.rar
    4.2 KB · Просмотры: 12