Documentação › Lua

Client

O módulo Client mexe no cliente do jogo: a janela, o teclado, mensagens na tela, login e logout, modos de luta e dados estáticos (itens e monstros).

Conexão#

Client.isConnected()#

→ booleano

Se você está dentro do jogo.

lua
if not Client.isConnected() then return end

Client.logout()#

→ true

Pede logout ao servidor, como o botão Logout do cliente.

lua
if Player.getStamina() < 14 * 60 then Client.logout() end

Client.XLog()#

→ true

Derruba a conexão na hora, sem pedir logout.

lua
Client.XLog()

Client.login(conta, senha, personagem)#

→ true

Faz logout (se estiver logado), aperta Enter na tela de login e escolhe o personagem da lista pela posição (personagem, começando em 1). A conta e a senha não são digitadas: deixe a conta salva no cliente. Os dois primeiros parâmetros existem só para compatibilidade.

lua
Client.login(nil, nil, 2) -- segundo personagem da lista

Janela do jogo#

FunçãoO que faz
Client.focus()Traz a janela do cliente para a frente
Client.flashWindow()Pisca a janela na barra de tarefas
Client.setWindowTitle(texto)Troca o título da janela
Client.showMessage(texto)Mostra o texto no meio da tela do jogo por 3 s

Todas (menos showMessage) retornam false se o bot não acha a janela do cliente.

lua
Client.setWindowTitle("Hunt: rotworm")
Client.showMessage("Refill em 5 min")

Client.getGameWindowDimensions()#

→ {x, y, width, height}

Posição e tamanho da área do mapa na janela. Tudo 0 até a interface do bot no jogo informar.

lua
local g = Client.getGameWindowDimensions()
local hud = HUD.new(g.x + g.width - 120, g.y + 10, "canto")

Client.getCursorMapPosition()#

→ {x, y, z} ou nil

O piso do mapa embaixo do mouse. nil se o mouse não está no mapa ou a interface ainda não informou.

lua
local p = Client.getCursorMapPosition()
if p then print(p.x, p.y, p.z) end

Client.getMapIndexes()#

→ {x, y}

Origem (canto) do mapa que o cliente tem carregado.

lua
print(Client.getMapIndexes().x)

Client.isChatEnabled() e Client.toggleChatEnabled()#

→ booleano ou nil

Se o chat está ligado (modo de digitar), e troca o estado. toggleChatEnabled retorna o novo estado. As duas devolvem nil até a interface informar.

lua
if Client.isChatEnabled() then Client.toggleChatEnabled() end

Teclado#

Client.isKeyPressed(tecla, modificadores)#

→ booleano

Se a tecla está apertada agora. Com modificadores, também exige exatamente essa máscara (Enums.FlagModifiers).

lua
if Client.isKeyPressed(0x20) then print("espaço apertado") end

Client.sendHotkey(tecla, modificadores)#

→ booleano

Aperta uma tecla no cliente. Sem modificadores, a tecla vai direto para a janela, mesmo em segundo plano. Com Ctrl, Alt ou Shift, o bot traz o cliente para a frente e digita de verdade.

lua
local ok, mods, tecla = HotkeyManager.parseKeyCombination("F1")
Client.sendHotkey(tecla, mods)

Modos de luta#

FunçãoO que faz
Client.getFightMode() / Client.setFightMode(modo)Enums.FightMode: 1 ataque, 2 balanceado, 3 defesa. Em clientes 15.25 ou mais novos, que não têm modo de luta, setFightMode não muda nada
Client.getChaseMode() / Client.setChaseMode(modo)Enums.ChaseMode: 0 parado, 1 seguir
lua
Client.setChaseMode(Enums.ChaseMode.CHASE)

Loot#

Client.getLootBlackWhitelist(id) e Client.setLootBlackWhitelist(id, json)#

A lista é um texto JSON: {"type": 0 ou 1, "items": [ids]} (0 = ignorar os itens, 1 = aceitar só eles). set manda o filtro de quick loot para o servidor e guarda o texto; get devolve o que foi guardado com esse id nesta sessão, ou "".

lua
Client.setLootBlackWhitelist(1, JSON.encode({ type = 1, items = { 3031, 3035 } }))

Dados do cliente#

FunçãoRetorna
Client.getVersion()Versão do protocolo, como "15.23"
Client.isTradeShopOpen()Se a janela de trade do NPC está aberta
Client.getAllItems()Todos os itens, como {id, flags} (bits de Enums.ThingFlagAttr)
Client.getAllMonsters()Todos os monstros do cliente: {raceId, name, isBoss, outfit}
Client.getMonsterByRaceId(raceId)Um monstro, ou nil
lua
local m = Client.getMonsterByRaceId(1)
if m then print(m.name, m.isBoss) end

Funções com valor fixo#

Existem para scripts do ZeroBot não quebrarem, mas o DrenoxBot ainda não mede esses valores:

FunçãoSempre devolve
Client.getLatency()-1
Client.getServerLatency()0
Client.getFps()0
Client.getWorldName()""
lua
print(Client.getLatency()) -- -1