Информация Гайд [Arizona] | ID предмета в название

elyrin

Участник
Автор темы
63
38
Никогда не замечали такой строчки в вип-чате?
Снимок экрана 2026-04-07 010928.png


Это строчка в которой хранится шаблон :itemid: (пример с этим предметом :item9774:)
Так вот как мне сказали - некоторые не знали как переводить этот шаблон в название самого предмета, чтобы потом данные с названием как-либо обрабатывать

Поискав на BlastHack я также нигде не нашёл эту тему, где хоть кто-то бы рассказал об этом
Но я думаю пора это освятить, и возможно это кому-то понадобится

Заходим в main.bundle.js (если у вас нет этого файла - распакуйте архив frontend.zip)
И находим переменную `var CDN_CONFIG`:
Снимок экрана 2026-04-07 011433.png

Это сети серверов от самой Аризоны, которые распределены под каждую задачу
В нашем случае нам понадобится: https://server-api.arizona.games

В вашем случае можно и не лезть в main.bundle.js, просто для тех кто возможно захочет углубиться - все CDN хранятся в этой переменной

Зайдя на скрипт от Willy4ka Маркетплейс я нашёл API, которая нам и нужна - https://server-api.arizona.games/client/json/table/get?project=arizona&server=0&key=inventory_items

Создаём простой скрипт, который по команде /item_id id будет выводить нам название предмета по его ID:
Lua:
local effil = require("effil")
local json = require("dkjson")

local encoding = require("encoding")
encoding.default = "CP1251"
local u8 = encoding.UTF8

local asyncHttpRequest = function (method, url, args, resolve, reject)
    local request_thread = effil.thread(function (method, url, args)
        local requests = require("requests")
        local ok, response = pcall(requests.request, method, url, args)
        if ok then
            response.json, response.xml = nil, nil
            return true, response
        end
        return false, response
    end)(method, url, args)

    if not resolve then resolve = function() end end
    if not reject then reject = function() end end

    lua_thread.create(function()
        while true do
            local status, err = request_thread:status()
            if err then return reject(err) end

            if status == "completed" then
                local ok, response = request_thread:get()
                if ok then
                    resolve(response)
                else
                    reject(response)
                end
                return
            end

            if status == "canceled" then
                return reject("canceled")
            end

            wait(0)
        end
    end)
end

local checkItemWithID = function (item_id)
    asyncHttpRequest(
        "GET",
        "https://server-api.arizona.games/client/json/table/get?project=arizona&server=0&key=inventory_items",
        {
            headers = {
                ["Content-Type"] = "application/json; charset=utf-8",
                ["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0",
            },
        },
        
        function(response)
            local data = json.decode(response.text)

            for _, item in pairs(data) do
                if item.id == tonumber(item_id) then
                    sampAddChatMessage("Название предмета: " .. u8:decode(item.name), -1)
                    # могут быть ваши функции
                end
            end
        end
    )
end

function main()
    while not isSampAvailable() do wait(0) end
    # могут быть также ваши функции
    sampRegisterChatCommand("item_id", function (item_id)
        sampAddChatMessage("Проверяю информацию предмета с ID: " .. item_id, -1)
        checkItemWithID(item_id)
    end)
    while true do wait(0) end
end

Если кто-то захочет сам ловить из чата - то используйте регулярное выражение :item(%d+):
Данное регулярное выражение берёт из строки :item9774: цифры, а именно - 9774
После чего, по сути всё тоже самое, что и показано в гайде выше

И кстати, не меняйте кодировку названия предметов (u8:decode), потому что будут выводиться каракули
Вывод этого скрипта:

Снимок экрана 2026-04-07 012113.png


Если будут вопросы - писать в тему
 
Последнее редактирование:
  • Bug
  • Влюблен
Реакции: Funny Rofl и XRLM

dslk;d

Новичок
4
0
сделать реально,что бы вместо названия был подгружался пнг по типу такого (png нашивки экономиста) Нашивка экономиста
 

БеzликиЙ

Эксперт в области Аризона РПГ
Проверенный
2,008
1,192

elyrin

Участник
Автор темы
63
38
потому что CEF пакеты нельзя эмулировать, а данные о предметах в чате идут CEF пакетом
Ну тут кстати смотря о какой именно обработке он говорит
Если бы это был какой-то ТГ-бот, то по сути через него можно кидать картинку
Но как по мне это тупая идея, ведь одного названия достаточно