Documentação › Lua

CaveBot

O módulo CaveBot controla a rota do CaveBot pelo script: pular para um label, pausar, ler e editar waypoints, mudar ajustes de lure e as listas de sell e refill.

Waypoints são contados a partir de 0. Mudanças na rota feitas pelo script entram sem precisar parar o CaveBot.

CaveBot.GoTo(label)#

CaveBot.GoTo(label) → booleano

Pula a rota para o waypoint Label com esse texto (sem diferenciar maiúsculas). Retorna false se o label não existe. Dentro de um waypoint Script, também encerra o script.

lua
if Game.getItemCount(268) < 50 then CaveBot.GoTo("refill") end

CaveBot.selectWaypoint(índice)#

CaveBot.selectWaypoint(índice)

Pula a rota para o waypoint pelo número. Dentro de um waypoint Script, também encerra o script.

lua
CaveBot.selectWaypoint(0) -- volta para o começo

CaveBot.getSelectedWaypointId()#

→ número

Waypoint atual. Retorna -1 com a rota vazia.

lua
print("waypoint atual: " .. CaveBot.getSelectedWaypointId())

CaveBot.pause(ms)#

CaveBot.pause(ms)

Pausa a rota por ms milissegundos. 0 retoma na hora, inclusive a pausa do evento LABEL.

lua
CaveBot.pause(10000) -- espera 10 s
CaveBot.pause(0)     -- retoma

CaveBot.stopCurrentScript()#

CaveBot.stopCurrentScript()

Para o waypoint Script que está rodando.

lua
CaveBot.stopCurrentScript()

Ler waypoints#

CaveBot.getWaypoints()#

→ lista

Todos os waypoints, como {x, y, z, type, data}. type é o número de Enums.WaypointType e data é o texto do waypoint (label, código do script).

lua
for i, w in ipairs(CaveBot.getWaypoints()) do print(i - 1, w.type, w.data) end

CaveBot.getWaypointsCount()#

→ número

Quantos waypoints a rota tem.

lua
print(CaveBot.getWaypointsCount())

CaveBot.getWaypointTypeById(índice) e CaveBot.getWaypointDataById(índice)#

→ número / → tabela ou nil

Tipo do waypoint (-1 se o índice não existe) e o waypoint inteiro {x, y, z, type, data} (nil se não existe).

lua
local w = CaveBot.getWaypointDataById(CaveBot.getSelectedWaypointId())
if w then print(w.x, w.y, w.z) end

Editar waypoints#

tipo é Enums.WaypointType (um número desconhecido vira Node). dados é o texto do waypoint, opcional.

FunçãoO que faz
CaveBot.addWaypoint(tipo, x, y, z, dados)Adiciona no fim
CaveBot.insertWaypoint(índice, tipo, x, y, z, dados)Insere na posição
CaveBot.replaceWaypoint(índice, tipo, x, y, z, dados)Troca o waypoint
CaveBot.deleteWaypoint(índice)Apaga o waypoint
CaveBot.clearWaypoints()Apaga todos e reinicia a rota
lua
local p = Player.getPosition()
CaveBot.addWaypoint(Enums.WaypointType.WAYPOINT_TYPE_STAND, p.x, p.y, p.z)
CaveBot.addWaypoint(Enums.WaypointType.WAYPOINT_TYPE_LABEL, 0, 0, 0, "volta")

Arquivos#

CaveBot.saveFile(nome) e CaveBot.loadFile(nome)#

→ booleano

Salvam e carregam a rota num arquivo dentro da pasta scripts/ (o ZeroBot usa Documents/ZeroBot). Com nome terminado em .lua, saveFile grava um script do ZeroBot com a rota e os ajustes; com outro nome, grava o JSON de rota do DrenoxBot. loadFile lê os dois formatos e reinicia a rota. Retornam false para um caminho fora de scripts/ ou um arquivo que não existe.

lua
CaveBot.saveFile("rotas/rotworm.lua")
CaveBot.loadFile("rotas/rotworm.lua")

Andar#

FunçãoO que faz
CaveBot.setWalkMode(modo)Enums.WalkMode: 1 (ARROW_KEYS) anda passo a passo, outro valor anda por caminho
CaveBot.setWalkDelay(ms)Espera entre passos
CaveBot.setNodeSettings(distância)Distância para considerar um Node alcançado (padrão 3)
CaveBot.setStartFromNearestWaypoint(ligar)Começa a rota pelo waypoint mais perto
CaveBot.disablePlayerWalkthrough(ligar)Liga o ajuste de não atravessar players (padrão true)
CaveBot.getCoreTeleportIds() / CaveBot.setCoreTeleportIds(ids)Lista de ids de teleport que o CaveBot conhece
lua
CaveBot.setWalkMode(Enums.WalkMode.MAP_CLICK)
CaveBot.setNodeSettings(2)

CaveBot.isDebugEnabled() e CaveBot.setDebugHUDSettings(a, b, c)#

→ booleano

O DrenoxBot tem um único HUD de debug em texto: setDebugHUDSettings liga o HUD se qualquer um dos três parâmetros for true. Os desenhos separados de caminho e pisos do ZeroBot não existem aqui.

lua
CaveBot.setDebugHUDSettings(true, false, false)

Lure#

CaveBot.setLureSettings(paraCorrer, dinâmico, pularInalcançáveis) e CaveBot.getLureSettings()#

Quantos monstros precisam seguir antes de continuar (creaturesToRun), se o lure dinâmico está ligado (dynamicLure) e se criaturas inalcançáveis são puladas (skipUnreachableCreatures, padrão true). getLureSettings devolve a tabela com esses três campos.

lua
CaveBot.setLureSettings(3, false, true)
print(CaveBot.getLureSettings().creaturesToRun)

CaveBot.setSafetyLureSettings(distância, quantidade, armadilha) e CaveBot.getSafetyLureSettings()#

Segurança do lure: nearCreatureDistance, nearCreatureCount e avoidStuckTrapCount.

lua
CaveBot.setSafetyLureSettings(1, 4, 3)

CaveBot.setEndLureSettings(...) e CaveBot.getEndLureSettings()#

Regras do End Lure, nesta ordem: creaturesToStop, creaturesToLeave, tryWalkToCenter, creaturesToLeaveByHp, creaturesToLeaveByHpValue, creaturesToLeaveByHpCount, dontLeaveIfHp, dontLeaveIfHpValue, dontLeaveIfHpCount. getEndLureSettings devolve uma tabela com esses nomes.

lua
CaveBot.setEndLureSettings(5, 1)
print(CaveBot.getEndLureSettings().creaturesToStop)

CaveBot.setLureIgnoreList(nomes)#

Lista de nomes de monstros que o lure ignora.

lua
CaveBot.setLureIgnoreList({ "Rat", "Cave Rat" })

Áreas especiais#

CaveBot.addSpecialArea(x, y, z, tipo, largura, altura, doWp, atéWp)#

→ booleano

Cria uma área retangular a partir de x, y, z. tipo é Enums.SpecialAreaType: 0 as duas coisas, 1 o CaveBot não anda por ela, 2 o Targeting ignora os monstros nela. doWp e atéWp (opcionais) limitam a área a um trecho da rota. Retorna false com largura ou altura 0 ou tipo inválido.

lua
CaveBot.addSpecialArea(32000, 32000, 7, Enums.SpecialAreaType.SPECIAL_AREA_CAVEBOT, 5, 3)

CaveBot.deleteSpecialArea(índice) e CaveBot.clearSpecialAreas()#

Apaga uma área (false se o índice não existe) ou todas.

lua
CaveBot.clearSpecialAreas()

Sell, refill e gravação#

FunçãoO que faz
CaveBot.getSellList() / CaveBot.setSellList(ids)Lista de ids de itens para vender
CaveBot.getRefillList() / CaveBot.setRefillList(texto)Lista de refill, como texto
CaveBot.setAutoRecorderSettings(passo, tipo)Gravação automática: pisos entre waypoints (padrão 3) e tipo (0 Stand, outro Node)
CaveBot.enableAutoRecorder(ligar)Liga ou desliga a gravação automática; false se o gravador não está disponível
lua
CaveBot.setSellList({ 3357, 3359 })
CaveBot.enableAutoRecorder(true)