Doongogar Posted February 23, 2023 Share Posted February 23, 2023 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
Other Languages Moderators Lord Henry Posted February 24, 2023 Other Languages Moderators Share Posted February 24, 2023 (edited) Nunca use source como parâmetro de função. A variável res não é uma table. Acho que você queria usar getResources para obter uma table com todos os resources. Edited February 24, 2023 by Lord Henry 1 Link to comment
Doongogar Posted February 24, 2023 Author Share Posted February 24, 2023 (edited) 9 hours ago, Lord Henry said: Nunca use source como parâmetro de função. A variável res não é uma table. 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 February 24, 2023 by SciptNovato Link to comment
Other Languages Moderators Lord Henry Posted February 25, 2023 Other Languages Moderators Share Posted February 25, 2023 (edited) 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 February 25, 2023 by Lord Henry Link to comment
Doongogar Posted February 25, 2023 Author Share Posted February 25, 2023 (edited) sobre o quote, sinto muito eu não sabia, sobre o script diz que name deu um valor booleano e o primeiro argumento de getResourceName tbm esta dando erro: Edited February 25, 2023 by SciptNovato Link to comment
Other Languages Moderators Lord Henry Posted February 25, 2023 Other Languages Moderators Share Posted February 25, 2023 (edited) Ah, errei. local name = getResourceName(res) -- Obtém o nome do resource. Agora sim. Edited February 25, 2023 by Lord Henry Link to comment
Doongogar Posted February 25, 2023 Author Share Posted February 25, 2023 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
Other Languages Moderators Lord Henry Posted February 25, 2023 Other Languages Moderators Share Posted February 25, 2023 Depure seu código com vários outputChatBox diferentes pra ver quais partes ele está lendo. Assim você descobre em qual condição ele está parando. Link to comment
Doongogar Posted February 25, 2023 Author Share Posted February 25, 2023 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" Link to comment
Other Languages Moderators Lord Henry Posted February 26, 2023 Other Languages Moderators Share Posted February 26, 2023 Você está usando isso em um onClientRender, getResources precisa de tempo para ser executada e não pode ser usada em um onClientRender. Link to comment
Doongogar Posted February 26, 2023 Author Share Posted February 26, 2023 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 Lord Henry Posted March 2, 2023 Other Languages Moderators Share Posted March 2, 2023 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
Doongogar Posted March 18, 2023 Author Share Posted March 18, 2023 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now