- Версия MoonLoader
- Другое
Ищу аналог или билд effil/lanes for MonetLoader
Есть такой? Именно интересует многопоточность.
Для адаптации https://www.blast.hk/threads/33250/
requests имеется в комплекте, но пролаг и нельзя использовать в цикле для получения ответа
Прилагаю простейший код, который работает на MonetLoader
Есть такой? Именно интересует многопоточность.
Для адаптации https://www.blast.hk/threads/33250/
requests имеется в комплекте, но пролаг и нельзя использовать в цикле для получения ответа
Прилагаю простейший код, который работает на MonetLoader
Lua:
local sampev = require 'lib.samp.events'
local requests = require("requests")
local encoding = require('encoding')
encoding.default = 'CP1251'
u8 = encoding.UTF8
local USER_ID = -- айди пользователя
local GROUP_ID = -- айди пользователя
local GROUP_TOKEN = "" -- токен группы
function char_to_hex(str)
return string.format("%%%02X", string.byte(str))
end
function url_encode(str)
local str = string.gsub(str, "\\", "\\")
local str = string.gsub(str, "([^%w])", char_to_hex)
return str
end
function vk_request(msg)
local msg = msg:gsub('{......}', '')
local msg = url_encode(msg)
local messages_send = requests.post(("https://api.vk.com/method/messages.send?user_id=%d&random_id=0&message=%s&access_token=%s&v=5.131"):format(USER_ID, msg, GROUP_TOKEN)).json()
end
-- local server, ts, key
-- function longpollGetKey()
-- local GetKey = requests.post(("https://api.vk.com/method/groups.getLongPollServer?group_id=%d&access_token=%s&v=5.131"):format(GROUP_ID, GROUP_TOKEN))
-- -- async_http_request('https://api.vk.com/method/groups.getLongPollServer?group_id=' .. ini.main.group .. '&access_token=' .. ini.main.token .. '&v=5.131', '', function (result)
-- local t = decodeJson(GetKey['text'])
-- if t.error then
-- print(t.error.error_msg)
-- else
-- server = t.response.server
-- ts = t.response.ts
-- key = t.response.key
-- end
-- end
function main()
if not isSampLoaded() then script.this:unload() end
while not isSampAvailable() do wait(0) end
-- vk_request('f')
-- if not isSampLoaded() or not isSampfuncsLoaded() then return end
-- while not isSampAvailable() do wait(100) end
wait(-1)
end
function randomInt() -- выдает рандомное число, чтобы сообщение отправилось ( требует вк апи )
math.randomseed(os.time() + os.clock())
return math.random(-2147483648, 2147483648)
end
-- function uploadPhoto(filename, uploadUrl)
-- local fileHandle = io.open(filename,"rb")
-- if (fileHandle) then
-- local fileContent = fileHandle:read( "*a" )
-- fileHandle:close()
-- local boundary = 'abcd'
-- local header_b = 'Content-Disposition: form-data; name="file"; filename="' .. filename .. '"\r\nContent-Type: image/png\r\n'
-- local fileContent = '--' ..boundary .. '\r\n' ..header_b ..'\r\n'.. fileContent .. '\r\n--' .. boundary ..'--\r\n'
-- local resp = requests.post(uploadUrl, {
-- headers = {
-- ["Content-Length"] = fileContent:len(),
-- ['Content-Type'] = 'multipart/form-data; boundary=' .. boundary
-- },
-- data = fileContent
-- })
-- return resp.json()
-- end
-- end
payday = ''
-- function sendPhoto(path)
-- local upResponse = requests.post(("https://api.vk.com/method/photos.getMessagesUploadServer?user_id=%d&access_token=%s&v=5.131"):format(USER_ID, GROUP_TOKEN)).json() -- отправляем запрос на метод вк, в котором получаем ссылочку для загрузки
-- local uploadedResponse = uploadPhoto(path, upResponse.response.upload_url) -- загружаем фото на ссылку
-- local saveResponse = requests.post(("https://api.vk.com/method/photos.saveMessagesPhoto?server=%d&photo=%s&hash=%s&access_token=%s&v=5.131"):format(uploadedResponse.server,uploadedResponse.photo,uploadedResponse.hash, GROUP_TOKEN)).json()
-- local image = saveResponse.response[1]
-- local att_image = ("photo%d_%d_%s"):format(image.owner_id, image.id, image.access_key)
-- return requests.post(("https://api.vk.com/method/messages.send?user_id=%d&attachment=%s&access_token=%s&random_id=%d&v=5.131"):format(USER_ID, att_image, GROUP_TOKEN, randomInt())) -- обычный способ отправки вк
-- end
function sampev.onServerMessage(col, msg)
if string.find(msg, u8:decode'^Вам был добавлен предмет') then
vk_request(u8(msg))
end
if string.match(msg, '______________________________Банковский чек______________________________') then
payday = ''
end
if string.match(msg, u8:decode'Текущая сумма в банке:%s(%$.+)%s{33AA33}%((.+)%)$') then
local bank, plus_bank = string.match(msg, u8:decode'^Текущая сумма в банке:%s(%$.+)%s{33AA33}%((.+)%)$')
payday = string.format('Time: %s%s \n Bank: %s (%s)', os.date('%d:%m:%Y %H:%M:%S'), payday, bank, plus_bank)
end
if string.match(msg, u8:decode'^Текущая сумма на депозите:%s(%$.+)%s{33AA33}%((.+)%)%s{ffffff}%(из них ушло в бюджет семьи:%s(.+)%)$') then
local deposit, plus_deposit, minus_deposit = string.match(msg, u8:decode'^Текущая сумма на депозите:%s(%$.+)%s{33AA33}%((.+)%)%s{ffffff}%(из них ушло в бюджет семьи:%s(.+)%)$')
payday = string.format('%s \n Deposit: %s (%s, -%s)', payday, deposit, plus_deposit, minus_deposit)
end
if string.match(msg, u8:decode'^В данный момент у вас (%d+)%-й уровень и (%d+/%d+) респектов {33AA33}%((%+.+)%)$') then
local lvl, exp_lvl, plus_exp = string.match(msg, u8:decode'^В данный момент у вас (%d+)%-й уровень и (%d+/%d+) респектов {33AA33}%((%+.+) EXP%)$')
payday = string.format('%s \n LVL: %s (%s, %s)', payday, lvl, exp_lvl, plus_exp)
end
if string.match(msg, u8:decode'^Баланс на донат%-счет: (.+) AZ {ff6666}%((%+.+) AZ%)$') then
local az, plus_az = string.match(msg, u8:decode'^Баланс на донат%-счет: (.+) AZ {ff6666}%((%+.+) AZ%)$')
payday = string.format('%s \n AZ: %s (%s)', payday, az, plus_az)
end
if string.match(msg, '__________________________________________________________________________') then
vk_request(separator(u8(payday)))
payday = ''
-- return false
end
end
-- function sampev.onSetPlayerAttachedObject(playerId, index, created, data)
-- if playerId ~= select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)) then return false end
-- end
-- function sampev.onCreateObject(objectId, data)
-- if data.attachToVehicleId ~= 65535 then
-- return false
-- end
-- end
function comma_value(n) -- by vrld
return n:reverse():gsub("(%d%d%d)", "%1%."):reverse():gsub("^%.?", "")
end
function separator(text)
if text:find("%$%d+") then
for S in string.gmatch(text, "%$%d+") do
S = string.sub(S, 2, #S)
text = text.gsub(text, S, comma_value(S))
end
end
if text:find("%d+%$") then
for S in string.gmatch(text, "%d+%$") do
S = string.sub(S, 0, #S-1)
text = text.gsub(text, S, comma_value(S))
end
end
return text
end