почему в переменную host и acc уходит nil?

abbv

Потрачен
Автор темы
120
40
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
require 'lib.moonloader'
local encoding = require("encoding")
local sampev = require("samp.events")

encoding.default = 'CP1251'
u8 = encoding.UTF8

local pdnotf = true
local punishnotf = false

local lanes = require('lanes').configure()

user_id = ''
token = ''

local msg = ''


local punish = {
    {ban = 'Администратор (.+)%[(%d+)%] забанил игрока (.+)%[(%d+)%] на (%d+) дней. Причина: (.+)'},
    {kick = 'Администратор (.+)%[(%d+)%] кикнул игрока (.+)%[(%d+)%]. Причина: (.+)'},
    {jail = 'Администратор (.+)%[(%d+)%] посадил игрока (.+)%[(%d+)%] в деморган на (%d+) минут. Причина: (.+)'},
    {pd = 'В данный момент у вас (%d+)%-%й уровень и (%d+)/(%d+) респектов'},
    {warn = 'Администратор (.+)%[(%d+)%] выдал предупреждение игроку (.+)%[(%d+)%] [(%d+)/3] Причина: (.+)'},
    {mute = 'Администратор (.+)%[(%d+)%] заглушил игрока (.+)%[(%d+)%] на (%d+) минут. Причина: (.+)'}
}


function main()
    while not isSampAvailable() do wait(100) end



    sampRegisterChatCommand('pdnotf', function()
        -- print(v.ban)
    sampAddChatMessage("Payday Notifer "..(pdnotf and " activated" or " deactivated"), 0x01FFD5)
end)
    sampRegisterChatCommand('punisher', function()
        sampAddChatMessage("Punish Notifer"..(punishnotf and " activated" or " deactivated"), 0x01FFD5)
    end)
    wait(-1)
end

function sendvknotf(msg, host)
    host = sampGetCurrentServerName()
    acc = sampGetPlayerNickname(select(2,sampGetPlayerIdByCharHandle(playerPed))) .. '['..select(2,sampGetPlayerIdByCharHandle(playerPed))..']'
        math.randomseed(os.clock())
        local randomid = math.random(1, 10000000)
    -- print('https://api.vk.com/method/messages.send?user_id=' .. user_id .. '&message=' .. msg .. '&access_token=' .. token .. '&random_id=' .. randomid .. '&v=5.81')
    async_http_request('GET', 'https://api.vk.com/method/messages.send?user_id=' ..user_id..'&message='..msg..'&access_token=' ..token.. '&random_id=' .. randomid .. '&v=5.131', nil --[[параметры запроса]],
        function(response) -- вызовется при успешном выполнении и получении ответа
            print(response.text) -- response.text - текст ответа. ещё есть response.status_code и response.headers
        end,
        function(err) -- вызовется при ошибке, err - текст ошибки. эту функцию можно не указывать
            print(err)
        end)  
end


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 sampev.onServerMessage(color, text)
    for k, v in ipairs(punish) do
    if text:find('Вы купили ларец') then
        msg = '[Concept Car Luxury]\n !!! Вы купили Ларец "Concept Car Luxury" !!!'
        msg = u8(msg)
        msg = url_encode(msg)
        sendvknotf(msg)
    end
    if text:find(tostring(v.pd)) then
        if pdnotf then
        lvl, exp1, exp2 = text:match(tostring(v.pd))
        msg = (string.format('[ PayDay Notifer ]\n !!! Получен ПейДей !!! \n | Аккаунт: %s | \n | Сервер: %s | \n | Уровень: %s | \n | Респектов: %s из %s | ', acc, host, lvl, exp1, exp2))
        msg = u8(msg)
        msg = url_encode(msg)
        -- sampAddChatMessage('PayDay hooked! LVL = ' .. lvl .. ' EXP = ' .. exp1 .. ' из ' .. exp2 , -1)
        sendvknotf(msg)
        end
    end
    if text:find(tostring(v.mute)) then
        local adminName, adminId, playerName, playerId, time, reason = text:match(tostring(v.mute))
            if punishnotf then
            msg = '[ Punish Notifer ] \n [ Новое наказание ] \n | Наказание: Мут | \n | Администратор: ' .. adminName .. '['.. adminId ..  '] | \n | Игрок: ' .. playerName .. '[' .. playerId .. '] | \n | Время наказания: ' .. time .. ' минут | \n | Причина: ' .. reason .. ' |'
            msg = u8(msg)
            msg = url_encode(msg)
            sendvknotf(msg)
            end
    end
    if text:find(tostring(v.kick)) then
        local adminName, adminId, playerName, playerId, reason = text:match(tostring(v.kick))
            if punishnotf then
            msg = '[ Punish Notifer ] \n [ Новое наказание ] \n | Наказание: Кик | \n | Администратор: ' .. adminName .. '['.. adminId ..  '] | \n | Игрок: ' .. playerName .. '[' .. playerId .. '] | \n | Причина: ' .. reason .. ' |'
            msg = u8(msg)
            msg = url_encode(msg)
            sendvknotf(msg)
            end
    end
    if text:find(tostring(v.warn)) then
        local adminName, adminId, playerName, playerId, warn, reason = text:match(tostring(v.warn))
            if punishnotf then
            msg = '[ Punish Notifer ] \n [ Новое наказание ] \n | Наказание: Варн | \n | Администратор: ' .. adminName .. '['.. adminId ..  '] | \n | Игрок: ' .. playerName .. '[' .. playerId .. '] | \n | Текущее количество варнов: ' .. warn .. '/3 | \n | Причина: ' .. reason .. ' |'
            msg = u8(msg)
            msg = url_encode(msg)
            sendvknotf(msg)
            end
    end
    if text:find(tostring(v.jail)) then
        local adminName, adminId, playerName, playerId, time, reason = text:match(tostring(v.jail))
            if punishnotf then
            msg = '[ Punish Notifer ] \n [ Новое наказание ] \n | Наказание: Деморган | \n | Администратор: ' .. adminName .. '['.. adminId ..  '] | \n | Игрок: ' .. playerName .. '[' .. playerId .. '] | \n | Время наказания: ' .. time .. ' минут | \n | Причина: ' .. reason .. ' |'
            msg = u8(msg)
            msg = url_encode(msg)
            end
    end
    if text:find(tostring(v.ban)) then
        local adminName, adminId, playerName, playerId, time, reason = text:match(tostring(v.ban))
            if punishnotf then
            msg = '[ Punish Notifer ] \n [ Новое наказание ] \n | Наказание: Бан | \n | Администратор: ' .. adminName .. '['.. adminId ..  '] | \n | Игрок: ' .. playerName .. '[' .. playerId .. '] | \n | Время наказания: ' .. time .. ' дней | \n | Причина: ' .. reason .. ' |'
            msg = u8(msg)
            msg = url_encode(msg)
            end
        end
    end
end

function async_http_request(method, url, args, resolve, reject)
    local request_lane = lanes.gen('*', {package = {path = package.path, cpath = package.cpath}}, function()
        local requests = require 'requests'
        local ok, result = pcall(requests.request, method, url, args)
        if ok then
            result.json, result.xml = nil, nil -- cannot be passed through a lane
            return true, result
        else
            return false, result -- return error
        end
    end)
    if not reject then reject = function() end end
    lua_thread.create(function()
        local lh = request_lane()
        while true do
            local status = lh.status
            if status == 'done' then
                local ok, result = lh[1], lh[2]
                if ok then resolve(result) else reject(result) end
                return
            elseif status == 'error' then
                return reject(lh[1])
            elseif status == 'killed' or status == 'cancelled' then
                return reject(status)
            end
            wait(0)
        end
    end)
end

при вызове функции sendvknotf в параметры переменной host и acc уходит значение nil, но я вроде как задаю параметры переменной -
Lua:
host = sampGetCurrentServerName()

    acc = sampGetPlayerNickname(select(2,sampGetPlayerIdByCharHandle(playerPed))) .. '['..select(2,sampGetPlayerIdByCharHandle(playerPed))..']'

вопрос всё ещё не решён :(
 
Последнее редактирование: