Информация Гайд Arizona API | Библиотека для работы с Arizona Trilogy

ARMOR

Модератор по раксампу
Автор темы
Модератор
4,936
6,738
Arizona API - Библиотека для TrilogyLoader, разрешающая работать с Мультиплеером Arizona Trilogy с помощью Lua.

  • Установка
  • Для установки переместите ArizonaAPI.dll с вложений темы по пути Arizona Launcher/bin/trilogy/Client/CommunityMods. Если папки CommunityMods нет - создайте её.
  • В ту же папку переместите TrilogyLoader.asi и измените формат файла на .dll, после чего установка .lua скриптов будет происходить по пути Arizona Launcher/bin/Game/Gameface/Binaries/Win64/TrilogyLoader
  • Текущие возможности
  • На текущий момент API предоставляет такие возможности
  • Функции:
Lua:
-- Функции для работы с чатом
sampAddChatMessage(string szString, int nColor) -- Отпарвка визуального сообщения в чат
sampSendChat(string szString) -- Отправка сообщения в серверный чат от лица локального игрока
sampSendCommand(string szCommand) -- Отправка команды в чат
sampRegisterChatCommand(string szString, function callback) -- Регистрация чат команды

-- Функции для работы с игроками
local nId = sampGetLocalPlayerId() -- Возвращает ID локального игрока
local nColor = sampGetPlayerColor(int nId) -- Возвращает цвет игрока по его ID
local szNickName = sampGetPlayerNickName(int nId) -- Возвращает ник игрока по его ID
local bIsAFK = sampIsPlayerAFK(int nId) -- Проверяет находится ли игрок АФК
local bIsConnected = sampIsLocalPlayerConnected() -- Проверяет подключены ли вы к серверу
local fHealth = sampGetPlayerHealthById(int nId) -- Получает хп игрока по его ID
local fArmor = sampGetPlayerArmorById(int nId) -- Получает броню игрока по его ID
local nHandle = sampGetCharHandleBySampPlayerId(int nId) -- Получает игровой хендл игрока по его ID
local nID = sampGetPlayerIdByCharHandle(int nHandle) -- Получает ID игрока по его хендлу

-- Функции для работы с транспортом
local nHandle = sampGetCarHandleBySampVehicleId(int nId) -- Получает игровой хендл транспорта по его ID
local nID = sampGetVehicleIdByCarHandle(int nHandle) -- Получает ID транспорта по его хендлу

-- Функции для работы с браузером
executeUIBrowserJSCode(string szCode) -- Отправляет JS код браузеру
sendUIBrowserMessage(string szMessage) -- Отправляет сообщение обработчику браузера

-- Прочие функции
int nVersion = getArizonaAPIVersion() -- Возвращает текущую версию API
sampSetAutoGameClockUpdate(bool bIsEnabled) -- Отключает автоматическую смену времени мультиплеером
sampSetAutoGameWeatherUpdate(bool bIsEnabled) -- Отключает автоматическую смену погоды мультиплеером
sampToggleCursor(bool bIsEnabled) -- Включает/выключает курсор мыши
local szName = sampGetCurrentServerName() -- Получает название текущего сервера

  • Ивенты
Lua:
-- Ивенты которые нельзя отклонять
onStateChanged(int oldState, int newState) -- Ивент на смену статуса игры
onServerJoin(int nId) -- Ивент на подключение к серверу
onServerQuit(int nId) -- Ивент на отключение от сервера
onWorldPlayerAdd(int nId) -- Ивент на создание игрока в зоне стрима
onWorldPlayerRemove(int nId) -- Ивент на удаление игрока из зоны стрима
onWorldPlayerDeath(int nId) -- Ивент на смерть игрока
onWorldVehicleAdd(int nId) -- Ивент на создание транспорта в зоне стрима
onWorldVehicleRemove(int nId) -- Ивент на удаление транспорта из зоны стрима
onSetPlayerColor(int nId, int nColor) -- Ивент на установку цвета игроку
onSetPlayerName(int nId, string szName) -- Ивент на установку ника игроку
-- Объязательно к прочтению
onCreateObject(int bObjectID, ptr nObjectPointer, float fDrawDistance, bool bNoCameraCollision, int nAttachedObjectID, int nAttachedVehicleID, objectMaterialsArray aDataArray, int nMaterialsCount) -- objectMaterialsArray это массив материалов наложеных на объект. Можете его перебирать через цикл for. Саму структуру objectMaterial сможете найти ниже
onObjectDestroy(int objectID) -- Ивент на удаление объекта
onSetObjectMaterial(int objectID, objectMaterial data) -- Ивент на установку материала объекту
onSetPlayerSkin(int playerID, int modelID) -- Ивент на установку модели игроку
onDeathMessage(int killerID, int victimID, int weaponType) -- Ивент на добавление сообщения в килл-лист
onSetInterior(int interiorID) -- Ивент на смену интерьера
onTogglePlayerSpectating(bool bIsEnabled) -- Ивент на включение режима спектратора
-- Для проверки режима спектратора вы можете использовать структуру spectrateMode. Найти её вы сможете ниже
onPlayerSpectatePlayer(int nPlayerID, int nMode) -- Ивент на включение режима спектратора на игрока
onPlayerSpectateVehicle(int nVehicleID, int nMode) -- Ивент на включение режима спектратора на транспорт

-- Ивенты которые разрешают отклонять их работу через return false
onClientMessage(string szMessage, int nColor) -- Ивент на добавление клиентского сообщения в чат
onWorldTime(int nHour) -- Ивент на смену времени
onSetTimeEx(int nHour, int nMinute) -- Ивент на смену времени учитывая минуты
onWeather(int nWeather) -- Ивент на смену погоды
onSetCheckpoint(float x, float y, float z, float radius) -- Ивент на установку чекпоинта
onDisableCheckpoint() -- Ивент на отключение чекпоинта
onSetRaceCheckpoint(int nType, float x, float y, float z, float targetX, float targetY, float targetZ, float radius) -- Ивент на установку гоночного чекпоинта
onDisableRaceCheckpoint() -- Ивент на отключение гоночного чекпоинта
onUIBrowserJSCodeExecute(string szCode) -- Ивент на выполнение JS кода ( Типо CEF и т.д )
onSendUIBrowserMessage(string szMessage) -- Ивент на отправку сообщения браузеру
onCommand(string szCommand) -- Ивент на отправку команды в чат
onEditTextDraw(int nTextDrawId, string szText) -- Ивент на изменение текстдрава
onShowTextDraw(int nTextDrawId, textDrawProps data) -- Ивент на создание текстдрава. Структуру textDrawProps сможете найти ниже
onHideTextDraw(int nTextDrawId) -- Ивент на удаление текстдрава
onIncomingSelectTextDraw(bool bIsEnabled, int nColor) -- Ивент на выделении текстдрава сервером
onOutcomingSelectTextDraw(int nTextDrawId) -- Ивент на выделение текстдрава юзером
onSendChat(string szMessage) -- Ивент на отправку сообщения в чат

Lua:
-- Структуру уже можно использовать с помощью: textDrawInfo.font.BankGothic, textDrawInfo.aligment.center. Создавать у себя в коде не надо. Используется для проверок
textDrawInfo = {
    [font] = {
        Beckett = 0,
        FuturaLT = 1,
        BankGothic = 2,
        Pricedown = 3,
        Sprite = 4,
        ModelPreview = 5,
        SimpleModelPreview = 100,
    },
    [aligment] = {
        none = 0,
        left = 1,
        center = 2,
        right = 3,
    }
}

Lua:
-- Структура используется для работы в ивенте onShowTextDraw с параметром data
    [pos] = {
        x,
        y
    }
    [size] = {
        width,
        height
    }
    [letterSize] = {
        width,
        height
    }
    color = int
    boxColor = int
    backgroundColor = int
    shadow = int
    outline = int
    aligment = textDrawInfo.aligment | int
    font = textDrawInfo.font | int
    selectable = bool
    useBox = bool
    proportional = bool
    modelID = int
    modelFirstColor = int
    modelSecondColor = int
    [rotation] = {
        x,
        y,
        z
    }
    zoom = float
    text = string

Lua:
-- Структуру уже можно использовать с помощью objectInfo.type.texture, objectInfo.textAlighn.left. Используется для проверок
[objectInfo] = {
    [type] = {
        none = 0,
        texture = 1,
        text = 2
    },
    [textSize] = {
        _32x32 = 10,
        _64x32 = 20,
        _64x64 = 30,
        _128x32 = 40,
        _128x64 = 50,
        _128x128 = 60,
        _256x32 = 70,
        _256x64 = 80,
        _256x128 = 90,
        _256x256 = 100,
        _512x64 = 110,
        _512x128 = 120,
        _512x256 = 130,
        _512x512 = 140
    },
    [textAlighn] = {
        left = 0,
        center = 1,
        right = 2
    }
}

Lua:
-- Структура используется для работы в ивенте onCreateObject, onSetObjectMaterial с параметром data
type = objectInfo.type | int
index = int
-- Только для типа материала texture. Нужно делать проверку на тип
{
    modelID = int
    color = int
    textureDictionaryName = string
    textureName = string
}
-- Только для типа материала text. Нужно делать проверку на тип
{
    size = objectInfo.textSize | int
    fontSize = int
    isBold = bool
    align = objectInfo.textAlighn | int
    fontColor = int
    backgroundColor = int
    fontName = string
    text = string
}

Lua:
Структуру уже можно использовать с помощью spectradeMode.normal
spectrateMode = {
    normal = 1,
    fixed = 2,
    side = 3
}
  • Пример кода
Lua:
require("ArizonaAPI") -- Подключение библиотеки

function getPlayerInfo(arg)
    local nId = tonumber(arg)
    local nickName = sampGetPlayerNickName(nId)
    local color = sampGetPlayerColor(nId)
    sampAddChatMessage(string.format("Игрок: %s[%d]. Цвет ника: %X", nickName, nId, color), 0xFFFFFFFF)
end

function main()
    sampRegisterChatCommand("printInfo", getPlayerInfo)
end

function onClientMessage(message, color)
    if message:find("MyText") then
        return false
    end
end

function onServerJoin(playerId)
    local nickName = sampGetPlayerNickName(playerId)
    sampAddChatMessage(string.format("Игрок: {9E86F2}%s[%d]{FFFFFF} подключился к серверу!", nickName, playerId), 0xFFFFFFFF)
end

function onServerQuit(playerId)
    -- Никнейм получить вы не сможете
    sampAddChatMessage(string.format("Игрок с ID: {CFF290}%d{FFFFFF} отключился от сервера!", playerId), 0xFFFFFFFF)
end

function onWorldVehicleAdd(vehicleId)
    sampAddChatMessage(string.format("В зоне стрима появился транспорт с ID: {F2A1A1}%d!"), 0xFFFFFFFF)
end

Так же будет просьба писать сюда то чего не хватает в API, дабы я мог попросить у Аризоны ещё возможностей и добавил их в API. Только не просите такой функционал который поможет вам писать читы, это бесполезно.

Автор: @ARMOR
Отдельная благодарность:
  • TrilogyDev
  • Arizona Games ( За предоставление SDK для работы с их мультиплеером )
  • @chapo за тесты библиотеки
 

Вложения

  • ArizonaAPI.dll
    1 MB · Просмотры: 242
Последнее редактирование:

976h

Активный
198
54
Arizona API - Библиотека для TrilogyLaoder разрешающая работать с Мультиплеером Arizona Trilogy с помощью Lua.

  • Установка
  • Для установки переместите ArizonaAPI.dll с вложений темы по пути Arizona Launcher/bin/trilogy/Client/CommunityMods. Если папки CommunityMods нет - создайте её.
  • В ту же папку переместите TrilogyLoader.asi и измените формат файла на .dll, после чего установка .lua скриптов будет происходить по пути Arizona Launcher/bin/Game\Gameface\Binaries\Win64\TrilogyLoader
  • Текущие возможности
  • На текущий момент API предоставляет такие возможности
  • Функции:
Lua:
-- Функции для работы с чатом
sampAddChatMessage(string szString, int nColor) -- Отпарвка визуального сообщения в чат
sampSendChat(string szString) -- Отправка сообщения в серверный чат от лица локального игрока
sampSendCommand(string szCommand) -- Отправка команды в чат
sampRegisterChatCommand(string szString, function callback) -- Регистрация чат комманды

-- Функции для работы с игроками
local nId = sampGetLocalPlayerId() -- Возвращает ID локального игрока
local nColor = sampGetPlayerColor(int nId) -- Возвращает цвет игрока по его ID
local szNickName = sampGetPlayerNickName(int nId) -- Возвращает ник игрока по его ID
local bIsAFK = sampIsPlayerAFK(int nId) -- Проверяет находится ли игрок АФК
local bIsConnected = sampIsLocalPlayerConnected() -- Проверяет подключены ли вы к серверу

  • Ивенты
Lua:
-- Ивенты которые нельзя отклонять
onStateChande(int oldState, int newState) -- Ивент на смену статуса игры
onServerJoin(int nId) -- Ивент на подключение к серверу
onServerQuit(int nId) -- Ивент на отключение от сервера
onWorldPlayerAdd(int nId) -- Ивент на создание игрока в зоне стрима
onWorldPlayerRemove(int nId) -- Ивент на удаление игрока из зоны стрима
onWorldPlayerDeath(int nId) -- Ивент на сметь игрока
onWorldVehicleAdd(int nId) -- Ивент на создание транспорта в зоне стрима
onWorldVehicleRemove(int nId) -- Ивент на удаление транспорта из зоны стрима
onSetPlayerColor(int nId, int nColor) -- Ивент на установку цвета игроку
onSetPlayerName(int nId, string szName) -- Ивент на установку ника игроку

-- Ивенты которые разрешают отклонять их работу через return false
onClientMessage(string szMessage, int nColor) -- Ивент на добавление клиентского сообщения в чат
onWorldTime(int nHour) -- Ивент на смену времени
onSetTimeEx(int nHour, int nMinute) -- Ивент на смену времени учитывая минуты
onWeather(int nWeather) -- Ивент на смену погоды
onSetCheckpoint(float x, float y, float z, float radius) -- Ивент на установку чекпоинта
onDisableCheckpoint() -- Ивент на отключение чекпоинта
onSetRaceCheckpoint(int nType, float x, float y, float z, float targetX, float targetY, float targetZ, float radius) -- Ивент на установку гоночного чекпоинта
onDisableRaceCheckpoint() -- Ивент на отключение гоночного чекпоинта
onUIBrowserJSCodeExecute(string szCode) -- Ивент на выполнение JS кода ( Типо CEF и т.д )
onSendUIBrowserMessage(string szMessage) -- Ивент на отправку сообщения браузеру

  • Пример кода
Lua:
require("ArizonaAPI") -- Подключение библиотеки

function getPlayerInfo(arg)
    local nId = tonumber(arg)
    local nickName = sampGetPlayerNickName(nId)
    local color = sampGetPlayerColor(nId)
    sampAddChatMessage(string.format("Игрок: %s[%d]. Цвет ника: %X", nickName, nId, color))
end

function main()
    sampRegisterChatCommand("printInfo", getPlayerInfo)
end

function onClientMessage(message, color)
    if message.find("MyText") then
        return false
    end
end

function onServerJoin(playerId)
    local nickName = sampGetPlayerNickName(playerId)
    sampAddChatMessage(string.format("Игрок: {9E86F2}%s[%d]{FFFFFF} подключился к серверу!", nickName, playerId), 0xFFFFFFFF)
end

function onServerQuit(playerId)
    -- Никнейм получить вы не сможете
    sampAddChatMessage(string.format("Игрок с ID: {CFF290}%d{FFFFFF} отключился от сервера!", playerId), 0xFFFFFFFF)
end

function onWorldVehicleAdd(vehicleId)
    sampAddChatMessage(string.format("В зоне стрима появился транспорт с ID: {F2A1A1}%d!"), 0xFFFFFFFF)
end

Так же будет просьба писать сюда то чего не хватает в API, дабы я мог попросить у Аризоны ещё возможностей и добавил их в API. Только не просите такой функционал который поможет вам писать читы, это бесполезно.

Автор: @ARMOR
Отдельная благодарность:
  • TrilogyDev
  • Arizona Games ( За предоставление SDK для работы с их мультиплеером )
ЧООооотко
 

Willy4ka

вилличка
Модератор
423
733
можно функционал, который поможет написать мне чит, пожалуйста
 
  • Нравится
Реакции: 1NEXPL1CA

Brawl_Stars

Новичок
20
2
Автореконнект/реконнект и мани сепаратор уже могут написать?
 

ARMOR

Модератор по раксампу
Автор темы
Модератор
4,936
6,738
UP:
- Пофиксил краш игры если ивенты не возвращали true или false
- Добавил ивент на onCommand
- Добавил функцию executeUIBrowserJSCode