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.
if not Client.isConnected() then return endClient.logout()#
→ true
Pede logout ao servidor, como o botão Logout do cliente.
if Player.getStamina() < 14 * 60 then Client.logout() endClient.XLog()#
→ true
Derruba a conexão na hora, sem pedir logout.
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.
Client.login(nil, nil, 2) -- segundo personagem da listaJanela do jogo#
| Função | O 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.
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.
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.
local p = Client.getCursorMapPosition()
if p then print(p.x, p.y, p.z) endClient.getMapIndexes()#
→ {x, y}
Origem (canto) do mapa que o cliente tem carregado.
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.
if Client.isChatEnabled() then Client.toggleChatEnabled() endTeclado#
Client.isKeyPressed(tecla, modificadores)#
→ booleano
Se a tecla está apertada agora. Com modificadores, também exige exatamente essa máscara (Enums.FlagModifiers).
if Client.isKeyPressed(0x20) then print("espaço apertado") endClient.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.
local ok, mods, tecla = HotkeyManager.parseKeyCombination("F1")
Client.sendHotkey(tecla, mods)Modos de luta#
| Função | O 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 |
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 "".
Client.setLootBlackWhitelist(1, JSON.encode({ type = 1, items = { 3031, 3035 } }))Dados do cliente#
| Função | Retorna |
|---|---|
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 |
local m = Client.getMonsterByRaceId(1)
if m then print(m.name, m.isBoss) endFunções com valor fixo#
Existem para scripts do ZeroBot não quebrarem, mas o DrenoxBot ainda não mede esses valores:
| Função | Sempre devolve |
|---|---|
Client.getLatency() | -1 |
Client.getServerLatency() | 0 |
Client.getFps() | 0 |
Client.getWorldName() | "" |
print(Client.getLatency()) -- -1
Comentários
para comentar.