Исходник arizona-events

wojciech?

Известный
Автор темы
Проверенный
414
363
Arizona-events - это аналог библиотеки SAMP.Lua, позволяющий также удобно и просто взаимодействовать с новыми пакетами и CEF-интерфейсами аризоны. На данный момент поддерживается как обычный клиент SAMP'a, так и RakSamp Lite.

Подключение:
local acef = require("arizona-events")

Важно сразу отметить, в событии вместо передачи аргументов по порядку, они передаются таблицей.
Lua:
function acef.onArizonaBotChatBubble(packet)
    sampAddChatMessage(("Бот[%s] сказал: %s"):format(packet.bot_id, packet.text), -1)
end

Структуру таблицы для каждого пакета можно посмотреть в arizona-events/init.lua:
Lua:
INCOMING_EX[85] = {
    "onArizonaBotChatBubble",
    { IO.uint16,   "bot_id" },
    { IO.string32, "text" },
    { IO.int32,    "color" },
    { IO.float,    "distance" },
    { IO.int32,    "duration" }
}

Помимо обработки событий, также имеется дополнительный API для эмуляции и отправки пакетов:
ОписаниеМетодПример
Эмулирует входящий пакет
Lua:
---@string event* - название события
---@table packet - заполненный пакет
acef.emul(event, packet)
Lua:
acef.emul("onArizonaDisplay", {
    id = 17, -- указывать не обязательно*
    text = "..."
})
Отправляет исходящий пакет
Lua:
---@string event* - название события
---@table packet - заполненный пакет
acef.send(event, packet)
Lua:
acef.send("onArizonaSend", {
    text = "...",
    server_id = 0
})

* Для неразобранных событий есть специальные обработчики onArizonaAnyIn, onArizonaAnyOut для 220 пакета и onArizonaAnyInEx, onArizonaAnyOutEx для 221 пакета. Их структура:
Lua:
{
    id = 0, -- id пакета
    bytes = { ... } -- таблицы с байтами
}

Для отправки или эмуляции нужно полностью заполнить эту структуру, в том числе явно указать id пакета.

Примеры использования библиотеки:
Запрещаем открывать телефон, батлпас и др, пока открыта консоль SF или любой другой интерфейс:
function acef.onArizonaSendKey(packet)
    if packet.key ~= vkeys.VK_ESCAPE and (sampIsCursorActive() or isCursorActive()) then
        return false
    end
end

Автокликер мышкой для мини-игры:
function acef.onArizonaDisplay(packet)
    if packet.text:find("window.executeEvent%('event.clicker.setProgress', `%[%d+%]`%);") then
        for i = 1, 4 do
            acef.send("onArizonaSend", { server_id = 0, text = "clickMinigame" })
        end
    end
end

Простой пул ботов в зоне стрима:
local bot_pool = {}

function acef.onArizonaBotStreamIn(packet)
    bot_pool[packet.bot_id] = packet
end

function acef.onArizonaBotStreamOut(packet)
    bot_pool[packet.bot_id] = nil
end

function acef.onArizonaSetBotTargetPos(packet)
    local bot = bot_pool[packet.bot_id]
    if bot then
        bot.position = packet.position
    end
end

function acef.onArizonaSetBotPos(packet)
    local bot = bot_pool[packet.bot_id]
    if bot then
        bot.position = packet.position
    end
end

Библиотека всё еще находится на стадии разработки и на данный момент некоторые функции могут работать некорректно. Также будем очень признательны, если кто-то решит помочь разобрать пакеты, которых еще нет в нашем списке :)

Установка: разархивировать папку arizona-events в папку moonloader/lib

Авторы: @wojciech?, @vegas, @XRLM
 

Вложения

  • arizona-events.zip
    4.5 KB · Просмотры: 314
Последнее редактирование:

Klimer

Активный
238
68
много текста, 1 вопрос - эмуляция CEF? или еще чота есть
 
  • Клоун
Реакции: chapo

copypaste_scripter

Известный
1,418
288
о да вегас постоянно крутые вещи делал и автор темы тоже годно помогал всегда, будет заебись когда выйдет до конца
 
  • Нравится
Реакции: vegas

wojciech?

Известный
Автор темы
Проверенный
414
363
Библиотека обновлена, были исправлены мелкие ошибки и добавлены новые события:
onArizonaPlayMediaOnBillboard
onArizonaSetPlayerNametagFlags
onArizonaSetVehicleLights

onArizonaSetBotAttachedObject
onArizonaSetBotAttachedSimpleObject
onArizonaRemoveAttachedObjectFromBot
onArizonaBotPassengerSync
onArizonaBotHealthSync
onArizonaSetBotWeapon
onArizonaDestroyBot

onArizonaSendBotOnfootSync
 
  • Нравится
  • Влюблен
Реакции: Sargon, VanoKLR и Deps

wojciech?

Известный
Автор темы
Проверенный
414
363
Библиотека обновлена. Больше нет зависимости от SAMP.lua, появилась поддержка RakSamp Lite и еще немного новых пакетов.
 

bfix

Участник
64
59
Попросил нейронку(дипсик) сделать сниппеты для этого чуда, сделала одним промптом, вроде крутая темка
кидаю зипкой ибо неподдерживаемый формат файла
кидать файлик в \AppData\Roaming\Code\User\snippets (для тех кто не шарит)
не знаю идеально или нет но себе оставил
upd всё таки есть кривые функции просто вручную поправить надо, может если время будет залезу гляну
1746903992194.png
 

Вложения

  • arizona-events.zip
    1.9 KB · Просмотры: 17
Последнее редактирование:

romanespit

Участник
43
17
Хотел убрать злоебучие аксы на охранниках и вообще всех актёрах, но чото не воркает 😐
Lua:
function acef.onArizonaSetBotAttachedObject(info) -- bot_id, slot, model_id, bone_id, offset, rotation, scale, color1, color2
    return false
end
function acef.onArizonaSetBotAttachedSimpleObject(info) -- bot_id, slot, model_id, bone_id, offset, rotation, scale, color1, color2
    return false
end
 

vegas

Известный
Проверенный
555
504
Хотел убрать злоебучие аксы на охранниках и вообще всех актёрах, но чото не воркает 😐
Lua:
function acef.onArizonaSetBotAttachedObject(info) -- bot_id, slot, model_id, bone_id, offset, rotation, scale, color1, color2
    return false
end
function acef.onArizonaSetBotAttachedSimpleObject(info) -- bot_id, slot, model_id, bone_id, offset, rotation, scale, color1, color2
    return false
end
Аризона что-то намутила с работой со своими пакетами, прийто то приходят, но как либо видоизменить или нопнуть пакет не выйдет, только прочитать его. Тоже самое и с эмуляцией всех пакетов. НО почему-то с cef-интерфейсами все работает как надо)
 
  • Ха-ха
  • Грустно
Реакции: Sargon и romanespit

niqger

Новичок
7
0
помогите пж с джереми,просто пытаюсь понять как бота заставить покликать пару раз по кнопкам и всё