MANFREDISSSS
Новичок
- 4
- 6
Будет-ли Arizona API? недавно Аризона выкатила обновление с чатом и регой стрельбы, и теперь ArizonaAPI требует обновленную версию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 за тесты библиотеки
Arizona недавно обновила API, и теперь эта версия неактуальна, теперь остается ждать, когда разрабы Loader починят этоПосмотреть вложение 287998
Ловлю ошибку, хотя скачал вот библиотеку 5 минут как.
После кнопки авторизации тупо крашит