- 4,936
- 6,738
Arizona API - Библиотека для TrilogyLoader, разрешающая работать с Мультиплеером Arizona Trilogy с помощью Lua.
Так же будет просьба писать сюда то чего не хватает в API, дабы я мог попросить у Аризоны ещё возможностей и добавил их в API. Только не просите такой функционал который поможет вам писать читы, это бесполезно.
Автор: @ARMOR
Отдельная благодарность:
- Установка
- Для установки переместите 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 за тесты библиотеки
Вложения
Последнее редактирование: