- 399
- 321
Arizona-events - это дополнение к уже существующей библиотеке SAMP.Lua, позволяющие также удобно и просто взаимодействовать с новыми пакетами и CEF-интерфейсами аризоны.
Важно сразу отметить, в событии вместо передачи аргументов по порядку, они передаются таблицей. И сами события должны быть зарегистрированы в оригинальной библиотеке SAMP.lua:
Структуру таблицы для каждого пакета можно посмотреть в arizona-events/init.lua:
Помимо обработки событий, также имеется дополнительный API для эмуляции (скорее всего не будет работать) и отправки пакетов:
* Для неразобранных событий есть специальные обработчики
Для отправки или эмуляции нужно полностью заполнить эту структуру, в том числе явно указать id пакета.
Примеры использования библиотеки:
Библиотека всё еще находится на стадии разработки и на данный момент некоторые функции могут работать некорректно. Также будем очень признательны, если кто-то решит помочь разобрать пакеты, которых еще нет в нашем списке :)
Установка: разархивировать папку arizona-events в папку moonloader/lib
Авторы: @wojciech?, @vegas
Подключение:
local samp = require("samp.events")
local acef = require("arizona-events")
Важно сразу отметить, в событии вместо передачи аргументов по порядку, они передаются таблицей. И сами события должны быть зарегистрированы в оригинальной библиотеке SAMP.lua:
Lua:
function samp.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:
|
Lua:
|
Отправляет исходящий пакет |
Lua:
|
Lua:
|
* Для неразобранных событий есть специальные обработчики
onArizonaAnyIn
, onArizonaAnyOut
для 220 пакета и onArizonaAnyInEx
, onArizonaAnyOutEx
для 221 пакета. Их структура:
Lua:
{
id = 0, -- id пакета
bytes = { ... } -- таблицы с байтами
}
Для отправки или эмуляции нужно полностью заполнить эту структуру, в том числе явно указать id пакета.
Примеры использования библиотеки:
Запрещаем открывать телефон, батлпас и др, пока открыта консоль SF или любой другой интерфейс:
function samp.onArizonaSendKey(packet)
if packet.key ~= vkeys.VK_ESCAPE and (sampIsCursorActive() or isCursorActive()) then
return false
end
end
Автокликер мышкой для мини-игры:
function samp.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 samp.onArizonaBotStreamIn(packet)
bot_pool[packet.bot_id] = packet
end
function samp.onArizonaBotStreamOut(packet)
bot_pool[packet.bot_id] = nil
end
function samp.onArizonaSetBotTargetPos(packet)
local bot = bot_pool[packet.bot_id]
if bot then
bot.position = packet.position
end
end
function samp.onArizonaSetBotPos(packet)
local bot = bot_pool[packet.bot_id]
if bot then
bot.position = packet.position
end
end
Библиотека всё еще находится на стадии разработки и на данный момент некоторые функции могут работать некорректно. Также будем очень признательны, если кто-то решит помочь разобрать пакеты, которых еще нет в нашем списке :)
Установка: разархивировать папку arizona-events в папку moonloader/lib
Авторы: @wojciech?, @vegas
Вложения
Последнее редактирование: