- 63
- 38
Никогда не замечали такой строчки в вип-чате?
Это строчка в которой хранится шаблон :itemid: (пример с этим предметом :item9774:)
Так вот как мне сказали - некоторые не знали как переводить этот шаблон в название самого предмета, чтобы потом данные с названием как-либо обрабатывать
Поискав на BlastHack я также нигде не нашёл эту тему, где хоть кто-то бы рассказал об этом
Но я думаю пора это освятить, и возможно это кому-то понадобится
Заходим в main.bundle.js (если у вас нет этого файла - распакуйте архив frontend.zip)
И находим переменную `var CDN_CONFIG`:
Это сети серверов от самой Аризоны, которые распределены под каждую задачу
В нашем случае нам понадобится: 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:
Это строчка в которой хранится шаблон :itemid: (пример с этим предметом :item9774:)
Так вот как мне сказали - некоторые не знали как переводить этот шаблон в название самого предмета, чтобы потом данные с названием как-либо обрабатывать
Поискав на BlastHack я также нигде не нашёл эту тему, где хоть кто-то бы рассказал об этом
Но я думаю пора это освятить, и возможно это кому-то понадобится
Заходим в main.bundle.js (если у вас нет этого файла - распакуйте архив frontend.zip)
И находим переменную `var CDN_CONFIG`:
Это сети серверов от самой Аризоны, которые распределены под каждую задачу
В нашем случае нам понадобится: 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), потому что будут выводиться каракули
Вывод этого скрипта:
Если будут вопросы - писать в тему
Данное регулярное выражение берёт из строки :item9774: цифры, а именно - 9774
После чего, по сути всё тоже самое, что и показано в гайде выше
И кстати, не меняйте кодировку названия предметов (u8:decode), потому что будут выводиться каракули
Вывод этого скрипта:
Если будут вопросы - писать в тему
Последнее редактирование: