Jump to content

Pegar todos os resource e mandar uma mensagem pro discord


Recommended Posts

eu estava tentando fazer um codigo a partir de um ant backdoor ja que ele funciona no formato que eu quero
a cada resource tem uma linha, mas está dando erro no loop. Poderiam me ajudar?
 

function Resources(source)
local res = getResourceFromName(resource)
    for i, v in ipairs(res) do
    enviarMsg(" Resource ["..i.."]")
    end
end
addCommandHandler("rsc",Resources)

 

Link to comment
9 hours ago, Lord Henry said:
  1. Nunca use source como parâmetro de função.
  2. A variável res não é uma table.
  3. Acho que você queria usar getResources para obter uma table com todos os resources.
function Resources(res)
local resourcesP = getResources(res)
  local resourcesName = getResourceFromName(resourcesP)
    for i, v in ipairs(res) do
    enviarMsg(" Resource ["..i.."]")
    end
end
addCommandHandler("rsc",Resources)
1 hour ago, SciptNovato said:
function Resources(res)
local resourcesP = getResources(res)
  local resourcesName = getResourceFromName(resourcesP)
    for i, v in ipairs(res) do
    enviarMsg(" Resource ["..i.."]")
    end
end
addCommandHandler("rsc",Resources)

desse jeito?, tentei escrever lá naquele "quote" mas n foi...

Edited by SciptNovato
Link to comment
  • Other Languages Moderators

N precisa usar quote se só tem 2 pessoas na conversa. O quote serve pra vc citar oq alguém falou pra quando tem várias pessoas na conversa e sua resposta ser direcionada pra aquele comentário específico.

Vc tbm pode apenas citar o nome do usuário que deseja responder, sem precisar de quote.

Só colocar o @ na frente e depois o nome do usuário @SciptNovato mas não mencione quem não estiver no seu tópico.

Sobre seu script, tente isso:

function displayResources()
    local resourceTable = getResources() -- Obtém todos os resources do server.
    for _, res in pairs(resourceTable) do -- Para cada resource, faça:
        local name = getResourceName(resourceValue) -- Obtém o nome do resource.
        enviarMsg("Resource ["..name.."]") -- Mostra uma mensagem com o nome.
    end
end
addCommandHandler("rsc", displayResources)

 

Edited by Lord Henry
Link to comment
function enviarMsg(message)
    sendOptions = {
        queueName = "dcq",
        connectionAttempts = 10,
        connectTimeout = 20000,
        formFields = {
            content="cs\n#"..message..""
        },
    }
fetchRemote (urlDiscord, sendOptions, callback )
end
    
function callback()
end

function displayResources()
    local resourceTable = getResources()
    for _, res in pairs(resourceTable) do
        local name = getResourceName(res)
        enviarMsg("Resource ["..name.."]")
    end
end
addCommandHandler("rsc", displayResources)

porque não ta funcionando ? sem erros no debug quando starto nem quando executo o comando porém sem respostas no webhook
Obs: o link do webhook ta acima é ta certo, não coloquei pq não precisa

Link to comment

fiz assim:
 

function displayResources()
    local resourceTable = getResources()
  	iprint("Resources OK")
    for _, res in pairs(resourceTable) do
    iprint("Loop OK")
        local name = getResourceName(res)
    iprint("Nomes OK")
        enviarMsg("Resource ["..name.."]")
    iprint("Mensagem OK")
    end
end
addCommandHandler("rsc", displayResources)

aparece todas, porém depois de uns 3 segundos aparece todas denovo menos a do "Resources OK" e aparece elas em "DUP x264"
image.png

Link to comment

eu não estou usando o onClientRender, em vez disso pode ser algum erro no envio a mensagem ao discord não? esse e o codigo completo:
 

urlDiscord = "https://discord.com/api/webhooks/1078312698711908422/dcqfCNvzpoQr5GrwV2dJw9Sn3TEo9gNEJVs_gNxjTgqjP4xTujwUcvnZ6VP5IV0xkTge"

function enviarMsg(message)
    sendOptions = {
        queueName = "dcq",
        connectionAttempts = 10,
        connectTimeout = 20000,
        formFields = {
            content="cs\n#"..message..""
        },
    }
fetchRemote (urlDiscord, sendOptions, callback )
end
    
function callback()
end

function displayResources()
    local resourceTable = getResources()
  	iprint("Resources OK")
    for _, res in pairs(resourceTable) do
    iprint("Loop OK")
        local name = getResourceName(res)
    iprint("Nomes OK")
        enviarMsg("Resource ["..name.."]")
    iprint("Mensagem OK")
    end
end
addCommandHandler("rsc", displayResources)

Obs: o Resource esta sim na acl admin para usar o fetchRemote

Link to comment
  • Other Languages Moderators

Essa integração com Discord dai já não sei lhe responder.

Teste o código com outputChatBox em vez de enviarMsg, se funcionar normalmente então é erro nessa sua integração do Discord.

Link to comment
  • 3 weeks later...

eu queria agradecer, eu consegui faze-lo funcionar, implementei um timer que de 40 em 40 segundo ele manda de 10 em 10 resources porque estava sobrecarregando e parava de enviar os resources, porém mesmo com a limitação de resources e com o timer, ele ainda não envia todos os resources, fica faltando alguns, também coloquei um string.find para se caso tiver uma sequência de caracteres no resource não mandar ele, para evitar de mandar alguns resources do próprio MTA, gostaria de saber porque o string.find não está funcionando e porque fica faltando alguns resources
 

urlDiscord = "https://discord.com/api/webhooks/1078312698711908422/dcqfCNvzpoQr5GrwV2dJw9Sn3TEo9gNEJVs_gNxjTgqjP4xTujwUcvnZ6VP5IV0xkTge"
resourceCount = 0
resourceIndex = 1
resourcesPerBatch = 10
batchDelay = 40 -- segundos

function enviarMsg(message)
    local resourceName = '"' .. message .. '",'
    sendOptions = {
        queueName = "dcq",
        connectionAttempts = 10,
        connectTimeout = 20000,
        formFields = {
            content = resourceName
        },
    }
    fetchRemote(urlDiscord, sendOptions, callback)
end

function callback()
end

NotStart = {
    '^race',
    '^web',
    '^tdma',
    '^sth',
    '^map',
    '^editor',
    '^play',
    'browser',
    'manager',
    '^move',
    '^dm',
    '^death',
    '^ctf',
    '^ctv',
    '^br',
    '^as-',
}

function displayResources()
    local resourceTable = getResources()
    local resourcesToSend = {}
    for _, res in pairs(resourceTable) do
        local name = getResourceName(res)
        local blacklisted = false
        for _, pattern in pairs(NotStart) do
            if string.find(name, pattern) == 1 then
                blacklisted = true
                break
            end
        end
        if not blacklisted then
            table.insert(resourcesToSend, name)
        end
    end
    local batchStartIndex = (resourceIndex - 1) * resourcesPerBatch + 1
    local batchEndIndex = batchStartIndex + resourcesPerBatch - 1
    local batchResources = {}
    for i = batchStartIndex, batchEndIndex do
        if resourcesToSend[i] ~= nil then
            table.insert(batchResources, resourcesToSend[i])
        end
    end
    for _, name in ipairs(batchResources) do
        	enviarMsg(name)
    end
    resourceIndex = resourceIndex + 1
    resourceCount = resourceCount + #batchResources
    if #batchResources == 0 or resourceCount >= #resourcesToSend then
        resourceCount = 0
        resourceIndex = 1
        return
    end
    setTimer(displayResources, batchDelay * 1000, 1)
end

addCommandHandler("rsc", displayResources)
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...