0% acharam este documento útil (0 voto)
16 visualizações3 páginas

Script de Movimento e Contagem de Monstros

Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
16 visualizações3 páginas

Script de Movimento e Contagem de Monstros

Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd

-- User-Editable Variables

local PcName = 'Dougt' -- Seu nome de PC


local NameHunt = 'Alminha Venore' -- Nome da caçada

-- Dynamic filename based on PC name and hunt name


local CoordenadasPath = 'C:\\Users\\' .. PcName .. '\\Documents\\ZeroBot\\
Scripts\\' .. NameHunt .. '.txt'

-- Função para mover para uma posição


function moverParaPosicao(posicao)
if posicao then
[Link](posicao.x, posicao.y, posicao.z)
-- Adicione qualquer lógica adicional após alcançar a posição, se
necessário
else
print("Erro: Tentativa de acessar uma posição nula.")
end
end

-- Função para ler posições de um arquivo com suporte a UTF-8


local function readPositionsFromFile(filename)
local file = [Link](filename, "r", "utf-8")
if not file then
error("Não foi possível abrir o arquivo: " .. filename)
end

local positions = {}
for line in file:lines() do
local x, y, z = line:match("{%s*x%s*=%s*(%d+),%s*y%s*=%s*(%d+),%s*z%s*=
%s*(%d+)%s*}")
if x and y and z then
[Link](positions, {x = tonumber(x), y = tonumber(y), z =
tonumber(z)})
end
end

file:close()
return positions
end

-- Loop principal
local sequenciaDePosicoes = readPositionsFromFile(CoordenadasPath)

-- Função para verificar a contagem de monstros dentro de uma área


function GetMonstersCountInsideArea(area)
-- Implemente a lógica para contar monstros dentro da área
-- Substitua essa função com a lógica apropriada de contagem de monstros
return 3 -- Retorno de exemplo, substitua com a contagem real
end

-- Loop para percorrer as posições


local index = 1
local positionMargin = 2 -- Defina a margem de posição necessária para considerar
que o jogador atingiu a posição

while true do
-- Verifica se o jogador atingiu a posição atual com uma margem de erro
local pos = Creature([Link]()):getPosition()
local roundedPos = {[Link](pos.x + 0.5), [Link](pos.y + 0.5),
[Link](pos.z + 0.5)}

for _, targetPos in ipairs(sequenciaDePosicoes) do


local withinMarginX = [Link](roundedPos[1] - targetPos.x) <=
positionMargin
local withinMarginY = [Link](roundedPos[2] - targetPos.y) <=
positionMargin

if withinMarginX and withinMarginY and roundedPos[3] == targetPos.z then


[Link]("Posição alcançada: " .. index)
index = (index % #sequenciaDePosicoes) + 1 -- Move para a próxima
posição e volta para a primeira posição se estiver no final
break -- Interrompe o loop assim que a posição for alcançada
end
end

-- Move para a posição atual


moverParaPosicao(sequenciaDePosicoes[index])

-- Espera por 10 segundos


wait(200)

-- Verifica a contagem de monstros dentro da área


local monsterCheckArea = {x = sequenciaDePosicoes[index].x, y =
sequenciaDePosicoes[index].y, z = sequenciaDePosicoes[index].z}
local monsterCountThreshold = 3 -- Defina o limite de contagem de monstros
local WaitTimeInSeconds = 1 -- Defina o tempo de espera em segundos

local monsterCount = GetMonstersCountInsideArea(monsterCheckArea)

if monsterCount < monsterCountThreshold then


[Link]("Contagem de monstros é menor que " ..
monsterCountThreshold .. ". Movendo para a próxima área.")
wait(WaitTimeInSeconds * 1000)
[Link](sequenciaDePosicoes[index].x, sequenciaDePosicoes[index].y,
sequenciaDePosicoes[index].z)
index = (index % #sequenciaDePosicoes) + 1 -- Move para a próxima posição e
volta para a primeira posição se estiver no final
else
[Link]("Contagem de monstros é maior ou igual a " ..
monsterCountThreshold .. ". Aguardando...")
wait(WaitTimeInSeconds * 1000)
end

-- Verifica se o jogador atingiu a posição atual com uma margem de erro


local pos = Creature([Link]()):getPosition()
local roundedPos = {[Link](pos.x + 0.5), [Link](pos.y + 0.5),
[Link](pos.z + 0.5)}

for _, targetPos in ipairs(sequenciaDePosicoes) do


local withinMarginX = [Link](roundedPos[1] - targetPos.x) <=
positionMargin
local withinMarginY = [Link](roundedPos[2] - targetPos.y) <=
positionMargin

if withinMarginX and withinMarginY and roundedPos[3] == targetPos.z then


[Link]("Posição: " .. index)
break -- Interrompe o loop assim que a posição for alcançada
end
end

-- Seção de funções de verificação de monstros (copie-as do seu código


original)

wait(3000) -- Aguarda por 3 segundos antes de executar novamente


end

Você também pode gostar