RGXbot

Lua / 60 MIN DE LEITURA

Lua no RGXbot: curso completo e referência da API

Aprenda a escrever waypoints Action e Lua. Aprenda todas as funções, variáveis, formas e exemplos práticos.

Baixe o curso e a API (.md) ↓

Curso básico + catálogo API completo · 11/12/2026

Introdução

Você aprenderá três lugares para usar Lua, escrever sua primeira condição, preparar um formulário de opções e conectá-lo a uma rota. Abaixo do curso você encontrará um catálogo completo de funções, aliases, variáveis ​​e caminhos de configuração disponíveis no RGXbot. Status do conteúdo: 12 de novembro de 2026. Este é um subconjunto próprio de Lua, portanto, scripts prontos de outros bots requerem personalização.

1. Escolha um local de execução

Action executa tarefas periódicas. Na aba Action, clique em Adicionar, informe um nome, ative a ação e defina o intervalo em milissegundos, por exemplo 1000. Cole o código, use Testar Lua e depois Salvar em Action. Iniciar inicia o módulo. Arquivo → Salvar salva a configuração em XML. Salvar o código e iniciar o módulo são etapas separadas.

Waypoint Action executa o código em um determinado ponto da rota. No editor de waypoints, selecione o tipo Action e insira o código. Use-o para verificar suprimentos, trocar guias ou NPCs de sequência única. Prepare etiquetas antes de iniciar o salto. O próprio Action cíclico não possui posição de waypoint.

Configuração do script → Definição Lua / JSON cria um formulário de configurações. Declare os controles neste editor; ele não controla o jogo. Use Aplicar e depois Arquivo → Salvar. O código do formulário é separado do código Action.

Não cole o curso inteiro em um campo. Cada bloco é um exemplo separado; o bloco marcado como "Formulário" vai apenas para a definição do formulário.

2. O primeiro script sem comandos de jogo

Este exemplo calcula apenas os valores. Cole-o em uma nova ação e selecione Test Lua com o personagem carregado. Nenhum comando agendado é o resultado correto aqui. Não use print(): o interpretador não oferece suporte.

Action / waypoint Action · Lua
-- $... to odczyty RGXbot. local to własna zmienna.
local minimumCap = 150
local lowCapacity = $cap < minimumCap
local healthPercent = $hppc
local missingMana = max(0, $maxmp - $mp)

local armazena um valor apenas durante a chamada atual. O próximo ciclo de Action reinicia o código. $hp é a quantidade de pontos de vida e $hppc é a porcentagem. Atribuir um valor a uma variável não cura o personagem. Leituras em Testar Lua exigem o contexto adequado do cliente.

3. Condições, nil e unidades

if inicia uma condição, elseif verifica outra possibilidade e else trata os demais casos. Cada bloco termina com end. Compare com ==, atribua com = e escreva desigualdade como ~=. Combine condições com and, or, not. Apenas false e nil são falsos; 0 é verdadeiro.

Action / waypoint Action · Lua
local state = "gotowy"
if $stamina == nil then
    state = "brak odczytu staminy"
elseif $stamina < 1200 then
    state = "stamina ponizej 20 godzin"
else
    state = "stamina wystarcza"
end

A stamina tem uma unidade de minutos: 1200 são 20 horas. wait(1000) representa um segundo e spellcooldown() retorna segundos. Nunca compare uma leitura desconhecida nil com um número. Os status $poisoned e similares também podem ser nil. Nenhum dado significa nenhum conhecimento, nem um estado seguro ou um saldo zero.

4. Primeira regra cíclica

O código a seguir planeja interromper os módulos após a morte ou quando a stamina estiver abaixo do limite da amostra. Primeiro, visualize o plano em Test Lua e, em seguida, selecione o limite para sua própria sessão. As condições de parada do painel integrado ainda se aplicam; não os substitua pelo próprio script. stopbot() encerra o script atual.

Action / waypoint Action · Lua
if $dead then
    stopbot("Smierc postaci")
end
if $stamina ~= nil and $stamina < 1200 then
    stopbot("Limit staminy: ponizej 20 godzin")
end

O teste Lua mostra um plano e não executa comandos no cliente. Não prova uma parada, lançamento de feitiço ou compra bem-sucedida. Somente após verificar o plano, execute o módulo apropriado e confirme o resultado no painel e no jogo. Na ausência de stamina, o exemplo não toma decisões com base nesta leitura.

5. Um feitiço com controle de recursos

Escolha uma magia conhecida, a vocação e o custo de mana do seu personagem. Abaixo há uma condição de exemplo para um personagem que conhece exura. O limite de 70% e o custo de 20 de mana são valores do exemplo. Não execute regras de cura concorrentes ao mesmo tempo sem verificar sua configuração.

Action / waypoint Action · Lua
if not $dead and not $pz and $hppc < 70 and $mp >= 20 then
    if spellcooldown("exura") == 0 then
        spell("exura")
    end
end

spell() é um comando e retorna nil; não escreva if spell(...) then. Avalie HP e mana após a execução. As leituras são atualizadas após o comando, mas a variável local mantém o valor calculado anteriormente. Para poções use useself() e itemcooldown(), e para runas no alvo verifique também $target ~= 0.

6. Um formulário para vários personagens

Cole o bloco abaixo na definição do formulário, use Aplicar e confira os campos em Configuração do script. O ID 268 é um suprimento de exemplo; ajuste o ID, as quantidades e o nome da etiqueta à sua rota. O formulário não compra poções sozinho.

Forma · Definição de Lua
addmenu("return", "Powrot i zapasy")
addcheckbox("return_enabled", "Kontroluj powrot", true)
addspinbox("min_cap", "Minimalny cap", 150, 0, 10000)
addtextbox("return_label", "Etykieta powrotu", "refill")
addsupply("mana", "Mana potion", 268, 50, 300)

Em seguida, crie um rótulo refill na rota e adicione o waypoint Action com o código abaixo. needsrefill() leva em consideração a habilitação de retorno, limite mínimo e mínimos de estoque habilitados. supplyneed() conta o erro em relação ao alvo, não o mínimo. Os contadores incluem equipamentos e contêineres abertos.

Action / waypoint Action · Lua
if needsrefill() then
    gotolabel(getuseroption("return_label"))
end

gotolabel() encerra o script: nenhuma linha adicional é executada. Defina as opções como Do script ou Personalizado para caractere para que o XML comum tenha limites diferentes para caracteres diferentes. Salve o perfil e o XML e verifique se há recarga.

7. Pedido, espera e loops

Os comandos são executados em ordem. wait() pausa o script atual; pausewalking() pausa o movimento. Na entrada opcional compatível, o Healer compartilhado pode funcionar durante a espera. Evite laços longos e infinitos: use o intervalo de Action para verificações regulares. Os laços têm limite de 10.000 iterações e o aninhamento, de 32 níveis.

Action / waypoint Action · Lua
local attempt = 0
while attempt < 3 do
    attempt = attempt + 1
    if $target ~= 0 then
        break
    end
    wait(200)
end

Não tente novamente uma compra ou transferência automaticamente após um resultado desconhecido. submitted significa que a entrada foi enviada e confirmed significa que o observador confirma o efeito. Lembre-se de inputactionid() antes de wait() se estiver rastreando uma operação específica: a recuperação pode alterar o último registro.

8. NPC, banco e depósito

Primeiro, leve seu personagem ao NPC correto no mesmo andar. npcsay("hi") inicia conversação; verifique a resposta npcisopen(), npcname() e npcmessage() antes de continuar. O comércio precisa de uma oferta aberta, dinheiro, espaço e o nome certo do item. Suporte para compra e venda no máximo 100 peças por ligação.

checkbank() consulta o saldo e bankbalance() o lê. Não adicione npcyes() após bankwithdraw(): a confirmação é automática. depositall() deposita moedas no banco. depositer() guarda o loot no depot, enquanto deposititems() guarda todas as pilhas dos IDs indicados. stashcount() exige a leitura de um Supply Stash aberto.

A referência abaixo contém assinaturas completas e exemplos separados de banco, comércio, munição, transferências, depot e Stash. Os números dos contêineres são IDs atuais de janelas; não os salve permanentemente entre sessões. Os slots de itens em contêineres começam em 0.

9. Reconecte e controle de execução

reconnect() deve ser a primeira instrução do Action cíclico para funcionar sem leitura do PLAYER. Usa as configurações de reconexão e o mesmo caractere selecionado no painel. Não ignora morte, 2FA ou limites; o erro interrompe o código adicional. Em um waypoint, a chamada só funciona quando o mecanismo executa esse waypoint. Não inicia a rota automaticamente após a desconexão.

Action / waypoint Action · Lua
reconnect()
local character = $character
local currentHealth = $hp

Após cada novo script, verifique a sintaxe através do Test Lua, leia o plano, faça um teste controlado e observe o resultado. Em caso de erro utilize log Action e Diagnóstico. Mantenha o nome da função, os argumentos e a mensagem de erro. Uma função desconhecida geralmente significa um erro de digitação, um caso diferente ou um pedaço de Lua completo que este interpretador não suporta.

10. O que você sabe e onde procurar em seguida

Você pode selecionar contexto, ler $..., verificar nil, criar condições, controlar entidades, construir um formulário e direcionar uma rota. O diretório API abaixo inclui todos os nomes de funções de tempo de execução, aliases matemáticos, declarações de formulário e variáveis. Pesquise, por exemplo. $stamina, buyitems, addspinbox ou priority.targeting. Para cada grupo, leia também os requisitos e restrições, não apenas a assinatura em si.

O interpretador não suporta function, for, repeat, criação de tabela, pairs, ipairs, print, require ou bibliotecas de arquivos, rede e sistema. A exceção à falta de tabelas são os valores de intervalo prontos do formato JSON: seus campos from e to podem ser lidos. Utilize exemplos compatíveis com RGXbot.

Introdução

Referência completa da API do RGXbot. Abrange Action e waypoints Action; declarações do formulário usam um contexto separado.

Como os scripts são executados

Os comandos de um script em execução seguem a ordem. Após um comando, o mecanismo atualiza o estado: o próximo itemcount() ou $hp usa uma nova leitura. Variáveis locais mantêm seus valores até o fim da chamada. Elas não preservam estado entre execuções separadas do script Action.

O teste Lua mostra o plano, sem executar comandos no cliente. Não simula resultados de compras ou tratamentos. Portanto, a condição após a compra planejada pode dar um resultado diferente do que durante a execução real com atualização de status.

Lê números de retorno, strings ou valores lógicos. Comandos como spell(), buyitems() e checkbank() retornam nil para código Lua; o resultado da operação é verificado na próxima leitura e os erros são incluídos nos logs. Não escreva if buyitems(...) then: esta não é uma função de sucesso.

Os comandos usam a entrada selecionada. memory significa simulação opcional de teclado e mouse; não troca o backend padrão native. Leituras da interface e algumas operações de janelas exigem um cliente em execução e um controlador de memória disponível, independentemente de onde o script roda.

Faça login novamente: reconnect()

Action / waypoint Action · Lua
reconnect()

Sem argumentos: registra novamente o mesmo caractere selecionado no painel. Usa o controlador de login existente e o cofre da conta do sistema. Ele não desconecta um personagem que já está online corretamente e não reinicia o cliente do jogo. Outras instruções do script são executadas somente após a confirmação de um personagem ao vivo com o nome correto; eles então atualizam as leituras da nova sessão. O resultado para Lua é nil, assim como acontece com outros comandos de controle.

No módulo Action, coloque reconnect() como primeira instrução para que execute mesmo sem leitura PLAYER disponível. Uma condição com $hp ou $name antes dela ainda exige leitura do personagem. Em waypoints Action, a função fica disponível quando o mecanismo executa o ponto; ela não inicia o waypoint automaticamente após uma desconexão.

A função respeita as configurações de reconexão do painel e limita toda a espera a no máximo 10 minutos. Interromper ou alterar o cliente, back-end ou caractere selecionado interrompe a operação. 2FA, morte, caráter incompatível, detalhes da conta ausentes ou limite excedido interrompem instruções adicionais; eles não ignoram as medidas de segurança e não zeram automaticamente o contador de tentativas. O erro Action requer uma nova tentativa explícita. Os status são visíveis na janela Reconectar… e no log do script. O modo nativo mantém os controles de jogo nativos; somente o login usa a ponte de UI existente.

Sintaxe e unidades

São suportados local, atribuições, if/elseif/else/end, while/do/end, break, return, comentários -- e --[[ ... ]], strings em ambos os tipos de aspas, números, true, false, Ações nil, + - * / % ^, comparações == ~= < <= > >=, concatenação .. e and/or/not. Ponto e vírgula são opcionais. Os nomes das funções diferenciam maiúsculas de minúsculas. Apenas false e nil são falsos: o número 0 é verdadeiro.

Definições personalizadas function, for/repeat loops, tabelas, pairs/ipairs, print, require, arquivos, rede e bibliotecas de sistema não são suportadas. local não fornece a semântica de escopo completo de Lua completa. O loop tem um limite de 10.000 iterações e o aninhamento tem um limite de 32 níveis.

ValorUnidade/intervalo
wait, pausewalking, $hunt_time, $target_time, $stand_timemilissegundos
spellcooldown, itemcooldown, $foodsegundos
HP/mana em porcentagem0–100
ID do iteminteiro 1–65535
coordenadas x/y e piso zx/y 0–65535, z 0–15
número do contêiner abertoID da janela atual, geralmente 0–255; não a posição na tela
slot no contêinerum índice de 0
número da caixa do depot1–21
quantidade em comandos de itemgeralmente 1–100.000; comprar/vender no máximo 100 por ligação

Nas assinaturas, [argument] indica um argumento opcional; não digite os colchetes no código. Um contêiner nil em moveitem() significa equipamento. Leituras protegidas, como blessings, cooldowns e banco, geram erro quando o estado é desconhecido. isitemontile() consulta apenas o snapshot: campo ausente retorna false.

Slots de equipamento: 1 cabeça, 2 pescoços, 3 mochilas, 4 armaduras, 5 mãos/escudo, 6 mãos/arma, 7 pernas, 8 botas, 9 anéis, 10 slots secundários, 11 Store Inbox. Flechas e virotes são recarregados na aljava, não diretamente no slot 10.

Variáveis ​​de personagem

VariáveisSignificado
$name, $level, $expnome, nível, experiência
$characterpersonagem reconhecido e atribuído ao painel; identidade também usada para relog
$hp, $maxhp, $hppcHP, HP máximo, porcentagem de HP
$mp, $maxmp, $mppcmana, mana máxima, porcentagem de mana
$capcapacidade de carga disponível
$x, $y, $zposição mundial
$posx, $posy, $poszapelidos de itens
$soul, $speedsoul, velocidade do cliente
$staminastamina atual em minutos: 0–2520; nil quando a leitura não está correta
$food, $hungrybalcão de comida; fome é verdade com contador 0
$pz, $pzblockProtection Zone e bloqueio de PZ
$target, $followedID do alvo atacado / seguido; 0 significa nenhum
$attackedse o ID do alvo atacado está definido, não "alguém está me batendo"
$dead, $deathcountmorte e contador de mortes na sessão atual de política de mortes
$routenome da aba de rota ativa
$statusknown, $statusflagsdisponibilidade de leitura e máscara de estado bruto; a máscara é nil se nenhum dado estiver disponível
$poisoned, $paralyzed, $burning, $hasted, $bleeding, $drunk, $mana_shieldbooleano ou nil se o agente não fornecer uma máscara
$hunt_time, $target_time, $stand_timehora da caça, alvo atual e parado

$stamina funciona em waypoints do Cavebot e ações Lua. 1200 significa 20 horas e 2520, as 42 horas completas. O valor é atualizado com o contexto do script, inclusive após wait(). A ausência de leitura não significa zero.

Action / waypoint Action · Lua
if $stamina ~= nil and $stamina < 1200 then
  gotolabel("rest")
end

Nem todo contexto tem um waypoint ativo, alvo ou contador de caça. Tempos iniciais indisponíveis produzem 0. As variáveis $... descrevem leituras; atribuir um valor próprio não muda o estado do personagem no jogo.

Leituras e cálculos

Itens, mapa e posição

inputstatus([id]), inputaction([id]) e inputactionid([id]) leem o status, o nome e o ID de operação de uma entrada opcional. Sem argumento, eles se aplicam à última operação. Registro ausente (também em nativo) dá nil. O histórico possui no máximo 64 entradas, separadamente para o controlador; o registro não contém argumentos, texto digitado ou detalhes de erros.

Os estados são started, submitted, completed, confirmed, failed, cancelled, uncertain. submitted significa que a entrada foi enviada; completed indica que a função terminou sem confirmação separada do efeito. failed e cancelled descrevem o fim da execução, não a reversão dos eventos anteriores. confirmed exige um observador explícito do efeito. ListedLoot e transferências dentro de Game.deposit_all só atribuem esse estado após verificar as alterações exatas e a mesma sessão de personagem. Uma sequência no depot tem um registro separado para cada transferência, não uma confirmação para toda a sequência. Banco e comércio na entrada opcional também atribuem confirmed quando seu observador verifica o saldo/dinheiro ou os itens/valor, respectivamente, e o manipulador termina na mesma sessão. A resposta da função sozinha não promove o estado. moveitem() não inicia esse observador automaticamente.

Action / waypoint Action · Lua
local operation = inputactionid()
local status = inputstatus(operation)
local action = inputaction(operation)

O ID permite verificar uma transferência mais antiga após outra ação. Os resultados são consistentes em todo o snapshot Lua e atualizados após o envio. Não se destinam a repetir automaticamente compras ou transferências não confirmadas.

actionbarcount() retorna o número de entradas não vazias da barra de ação reconhecidas. hasitemhotkey(id) verifica se um item possui um atalho de teclado atribuído a ele, e hasspellhotkey("formuła") faz o mesmo para a fórmula ortográfica exata (insensível a maiúsculas e minúsculas e espaços extras). Nenhum hash fornece false; faltar ou não conseguir ler o cliente é um erro de script. Uma entrada sem atalho ainda pode ser ativada por clique pelo módulo de entrada. O atalho em si não confirma inventário de itens, disponibilidade de feitiço, alvo ou tempo de espera.

Action / waypoint Action · Lua
-- Te zapytania tylko czytają konfigurację bieżącego klienta.
local entries = actionbarcount()
local healthBound = hasitemhotkey(266)
local healBound = hasspellhotkey("exura")

Continue a usar useself(), usetarget() ou spell() para executar. Mantém o controle de meta/tempo de espera e a prioridade dos botões reconhecidos antes da entrada da fórmula. A leitura da barra é compartilhada no snapshot Lua e atualizada após a ação; nomes ou abreviações não são lembrados globalmente entre os clientes.

FunçãoResultado e ação
itemcount(id [, lokalizacja])quantidade em equipamentos e contêineres abertos; o filtro de localização corresponde a parte do nome sem maiúsculas e minúsculas
groundcount(id, x, y, z)a soma dos números confirmados de itens físicos no campo de leitura
isitemontile(id, x, y, z)presença de ID no instantâneo do mapa atual; não indica faixa de uso ou capacidade de levantamento
canshoot(x, y, z)true/false para linha de tiro local conhecida; estado desconhecido relata um erro
getfacing()"north", "east", "south" ou "west"
islocation([zakres])se o personagem está perto do waypoint Action atual no mesmo andar; alcance padrão 0; retorna false fora desse contexto
getlurelocation(nazwa)se a localização nomeada existe; retorna bool, não coordenadas
getoption(nazwa)valor da opção do script ou nil se ausente

itemcount() não revista mochilas fechadas ou banco. Janelas abertas de cadáver ou depósito poderão entrar no valor total; use o filtro de nome quando precisar de uma fonte específica. Os números dos contêineres podem ser reutilizados após o fechamento: não os codifique entre sessões.

Cooldowny, okna, NPC, banco e Stash

FunçãoResultado e requisitos
spellcooldown(formuła)tempo de espera restante do grupo de feitiços e de si mesmo, em segundos
itemcooldown()cooldown comum multiuso restante, em segundos
windowcount()número de raízes de diálogo/menu visíveis, não o número de todas as barras laterais
windowexists(tytuł)se uma janela com o título exato fornecido está visível
npcisopen()se a conversa do NPC está visível
npcname()nome de uma conversa aberta ou de uma string vazia
npcmessage()última resposta do NPC reconhecida, sem prefixo de hora/nome; string em branco quando nenhum
npccontains(tekst)se a última resposta contém o texto, sem diferenciar maiúsculas e minúsculas
bankbalance()último saldo confirmado no contexto de entrada; faça checkbank() primeiro
stashcount(id)quantidade na leitura disponível do Supply Stash aberto; Stash fechado significa estado desconhecido

bankbalance() não consulta o banqueiro sozinho. Um estado desconhecido não é saldo zero. Mensagens do jogador não são respostas do NPC. canshoot() é uma avaliação conservadora do mapa local, não uma garantia de acerto.

Morte e bênçãos

FunçãoResultado
isdead()bool: HP máximo correto e HP atual ≤ 0
deathcount()contador de mortes de sessão como $deathcount
hasblessing(nazwa_lub_id)se o personagem tem a bênção indicada
hasblessings()se ele tem pelo menos uma das sete bênçãos ordinárias
hasallblessings()se ele tem todas as sete bênçãos ordinárias
blessingscount()quantidade de blessings comuns, excluindo Adventurer e Twist
blessings() / blessingnames()nomes das blessings possuídas em uma string separada por vírgulas
ID do clienteNome assumido por hasblessing
1Adventurer's Blessing
2Twist of Fate
4Wisdom of Solitude
8Spark of the Phoenix
16Fire of the Suns
32Spiritual Shielding
64Embrace of Tibia
128Heart of the Mountain
256Blood of the Mountain

Os nomes podem omitir o prefixo The e não diferenciam maiúsculas de minúsculas. Não são índices sequenciais de 1 a 9: use nomes ou IDs exatos da tabela. Uma leitura de blessings indisponível gera erro, em vez de informar falsamente sua ausência.

Estados de personagem

FunçãoResultado
statusknown()bool: Se o instantâneo contém uma máscara de estado válida
statusflags()número: máscara bruta de 32 bits, também com bits não reconhecidos
hascondition("poisoned")bool: se o estado indicado está ativo
conditions()texto: nomes ativos separados por vírgulas; vazio quando nenhuma condição está ativa
ispoisoned(), isparalyzed(), isburning()abreviações para envenenamento, paralisia e incêndio criminoso
ishasted(), isbleeding(), isdrunk()atalhos para aceleração, sangramento e embriaguez
iselectrified(), iscursed(), ismanashielded()abreviações para eletrificação, maldição e escudo mágico

Nomes para hascondition: poisoned, burning, electrified, drunk, mana_shield, paralyzed, hasted, in_fight, drowning, freezing, dazzled, cursed, party_buff, pz_block, protection_zone, bleeding, hungry. Aliases aceitos: poison, burn, fire, energy, paralyze, paralysed, haste, manashield, pz, pzblock.

Todas as funções, exceto statusknown(), geram erro quando a leitura é desconhecida. Um nome não aceito também é um erro. A ausência do campo status em um agente antigo significa estado desconhecido, enquanto status=0 explícito significa ausência de condições ativas. $hungry continua usando o contador de comida; verifique o ícone de fome com hascondition("hungry"). Bits altos desconhecidos são preservados apenas em statusflags(). O mapa de bits vem do enum PlayerStates no código do OTClient. A confirmação completa de todos os efeitos na versão atual do cliente exige observar cada um em execução.

Action / waypoint Action · Lua
if statusknown() and ispoisoned() and $level >= 10 and $mp >= 30 then
    if spellcooldown("exana pox") == 0 then
        spell("exana pox")
    end
end
Action / waypoint Action · Lua
if statusknown() and hascondition("paralyzed") and $mp >= 10 then
    if spellcooldown("exura infir ico") == 0 then
        spell("exura infir ico")
    end
end

Esses scripts agendam feitiços regulares por meio de uma entrada selecionada. Apenas enviar um feitiço não remove o efeito. A condição integrada Healer confirma o desaparecimento de um sinalizador na mesma sessão, usa cooldowns compartilhados e uma fila de prioridade. Não adiciona nenhuma regra ativa por padrão.

Matemática e desenho

FunçãoResultado
min(a, ...)/math.min(a, ...)mínimo de 1 a 32 números
max(a, ...) / math.max(a, ...)máximo de 1 a 32 números
abs(x)/math.abs(x)valor absoluto
floor(x) / math.floor(x)arredondando para baixo
ceil(x)/math.ceil(x)arredondar para cima
random()/math.random()um número de 0 inclusive a 1 apenas
random(maximum) / math.random(maximum)inteiro de 1 a maximum, incluindo ambos
random(minimum, maximum)/math.random(minimum, maximum)número total em um intervalo fechado

Comandos de controle

Movimento, combate, feitiços e itens

FunçãoFuncionamento
move(kierunek)movimento consistente com o modo de entrada selecionado
turn(kierunek)rotação sem andar; apenas norte/leste/sul/oeste
facetarget(id)virar para o alvo ativo
attack(id)selecionar o alvo atacado; 0 cancela sua seleção de alvo
follow(id)seguindo uma meta; 0 cancelamentos
stop()parar por atalho compatível/Esc no modo teclado e mouse; não clica no botão Stop
cancel()cancelar a ação atual
loot()saque rápido configurado via entrada selecionada
hotkey(skrót)por exemplo "F1" ou "Ctrl+F2"; usa a atribuição de cliente atual
spell(formuła)feitiço, com controle de tempo de espera e preferência por barra de ação reconhecida
spelltarget(formuła, id [, zasięg])feitiço no alvo ativo; intervalo padrão 3, intervalo 1–7
useitem(id)uso de itens
useself(id)use em seu próprio personagem
ensureaol([maksymalna_cena])mantém o AoL estabelecido ou obtém e instala o que falta; limite de 1 a 70.000 po, padrão 70.000
usetarget(id, cel)usando uma runa/item em um alvo atacado ativamente no mapa
useinventory(slot, id)usando um item do seu inventário
usecontainer(kontener, slot, id)usando um item de um contêiner aberto
useworld(x, y, z, id)uso de um objeto no campo mundial
moveitem(id [, ilość, źródło, slot_źródła, cel, slot_celu])transferir; nil significa equipamento; informe origem e destino completos
pickupitem(id, x, y, z, kontener [, ilość, slot])pegar para uma mochila; padrão: maior pilha disponível, slot escolhido automaticamente
refillammo(id [, minimum, ilość, kołczan])reabastecimento abaixo do mínimo para a quantidade especificada; o padrão é 50/100 e a única aljava aberta

Direções de movimento: north, east, south, west, ne, se, sw, nw. move() não é um comando de coordenadas arbitrário; a rota é marcada por waypoints. Após definir o destino, o status é verificado pelo $target.

spelltarget, facetarget e usetarget requerem um destino ativo válido. Fora do alcance, mudança de alvo ou linha de tiro bloqueada/desconhecida interrompe o uso apropriado. O mero consumo de uma runa ou mana não prova o dano causado. Combine o feitiço com a profissão, nível e habilidades aprendidas do personagem.

Os padrões para moveitem() são quantidade 1, origem/destino nulo e slots 0. Isso não procura automaticamente a origem; na maioria das vezes, todos os seis argumentos são necessários. Se a quantidade for maior que a pilha de origem, o comando poderá ser rejeitado. Não tente novamente em um loop de transferência com resultado desconhecido. Reabastecer a munição requer uma aljava aberta e um suprimento em mochilas abertas. Para várias aljavas, dê o número dele. A função não compra munição, não abre a aljava e não a equipa.

Chat, NPCs e comércio

FunçãoFuncionamento
chat_on()/chaton()ativar a digitação no chat
chat_off() / chatoff()desabilitando digitação no chat
say(tekst)mensagem local comum
npcsay(tekst)enviar mensagem à janela correta de conversa com NPC
npcdialog(akcja)ação yes, no, bye, trade ou close
npcyes() / npcno()responder pelo botão yes/no
npctrade()abrir comércio
npcbye()/npcclose()despedir-se / fechar a janela
buyitems(nazwa, ilość)compre de 1 a 100 peças; verificando o preço e ambas as mudanças de status
sellitems(nazwa, ilość)venda de 1 a 100 peças com item e confirmação de dinheiro

Use letras minúsculas para NPCs. say("hi") pode iniciar uma conversa, mas enviar mais respostas via npcsay(). O hash hotkey() não verifica a intenção de uma atribuição específica; prefira comandos semânticos para feitiços e poções. npcsay("hi") e npcsay("hello") também funcionam em um cliente novo sem a guia NPCs: a própria saudação usa o Chat Local. Outras mensagens requerem uma conversa existente ou canal de NPCs. Enviar uma saudação não significa resposta: verifique npcisopen(), npcname() e npcmessage() antes de prosseguir. O NPC deve estar dentro do alcance de conversação no mesmo andar. No cliente 15.33.124f6c Native envia respostas através do método digitado do controlador de janela aberta NPC. Requer uma conversa atual e o mesmo NPC dentro do alcance. Ele não usa o foco do teclado ou o antigo setter protobuf. A resposta de Gustavo aos “goblins” foi confirmada no jogo. No modo teclado e mouse, os itens necessários devem estar acessíveis por meio de uma barra de ação reconhecida, inventário ou janelas abertas.

Banco, depósito em Supply Stash

FunçãoFuncionamento
checkbank()pergunta ao banqueiro sobre o saldo; então leia saldo bancário()
bankdeposit([kwota])depositar uma quantia ou todas as moedas disponíveis
bankwithdraw(kwota)contracheque; o próprio módulo envia sim após a pergunta apropriada e confirma o saldo/moedas
depositall()depositando todas as moedas em banco, alias comportamento de bankdeposit()
opendepot()abrindo um depósito próximo
opendepotbox([numer])abrindo o cofre; padrão 1
deposit(id [, skrzynka, ilość])guardar um item; padrões: caixa 1, quantidade 1
withdraw(id [, skrzynka, ilość])retirar para uma mochila; padrões 1 e 1
depositer([nazwa, depot(x,y,z), box(n)])deixando de lado o saque especificado na configuração Looting de todas as pilhas
findfreedepot([depot(x,y,z)])escolher um campo livre e acessível diante de um locker e abrir seu depot
reachnpc(nazwa [, dystans])aproximar-se da posição atual do NPC com o nome exato; distância padrão 3 campos; intervalo 1–3
deposititems(id, ... [, nazwa, depot(x,y,z), box(n)])guardar todas as pilhas dos IDs indicados
box(n)marcador de caixa para depositer/deposititems, n=1–21
depot(x,y,z)marcador de posição para armazenamento de alto nível
openstash()/closestash()abrir / fechar Supply Stash
retrievestash(id [, ilość])download; quantidade padrão 1
stowitem(id [, ilość])guardar no Stash; padrão 1
stash(nazwa_plecaka)suporte Stash de alto nível para mochila aberta designada

depositall() é para o banco; depositer() guarda loot no depot — são funções diferentes. Não adicione npcyes() manualmente após bankwithdraw(): a confirmação já é tratada e verificada. Uma quantidade grande em deposit/withdraw não percorre todos os contêineres automaticamente; use depositer e deposititems para todas as pilhas. Essas operações exigem acesso ao depot e as mochilas corretas abertas. Apenas informar coordenadas não ignora paredes, distância nem requisitos de interação.

findfreedepot() verifica o novo mapa e personagens, move-se diretamente para a praça de acesso, verifica novamente a ocupação e abre o depósito. O item opcional limita a busca à vizinhança de uma determinada jazida. Se não houver estação livre, ele repete as leituras por até 30 segundos e depois pausa a sequência. Não confirma depósito ou compras sem sucesso. Em um script ao vivo, pode ser seguido por uma chamada para depositer(box(1)).

Clique em Olhar

Função tutorial NativeFuncionamento
buttonexists(napis)observando botões de diálogo claros
clientbutton(napis [, tytuł_okna])clicando no botão selecionado após o texto e o título da janela opcional
tutorialhint()dica tutorial atual; texto em branco significa nenhuma dica
tutorialhintcontains(tekst)corresponde à dica atual, sem diferenciar maiúsculas e minúsculas
tutorialclick(oczekiwana_wskazówka [, przycisk])clicar no destaque atual do tutorial; botão left/right
tutorialdrag(oczekiwana_wskazówka)arrastando o único item visível para o alvo vazio indicado pelo tutorial
tutorialuse(oczekiwana_wskazówka)clicando na ferramenta destacada e, em seguida, no segundo objetivo do tutorial, por ex. usando uma corda
classiccontrols()definir Classic Controls no cliente, Apply e reabrir opções para verificar o salvamento; exige Native, diálogos fechados e nenhum monstro na tela
choosevocation(nazwa)selecionar e confirmar uma vocação na janela do tutorial; Confirm deve pertencer ao cartão dessa vocação

O arraste seleciona a origem pelo item lido no slot, não pela posição do texto da dica. Vários destinos, dois slots ocupados ou a ausência do item interrompem a operação. O mouse é liberado mesmo após um erro. Essas funções usam a ponte Qt existente do agente e não movem o cursor do sistema nem trocam a entrada para memory.

No modo Native, buttonexists("Start") lê botões de diálogo do cliente visíveis e clientbutton("Start") seleciona um botão inequívoco após seu texto. Não seleciona itens da barra de ação nem clica em coordenadas fixas. Nenhuma leitura, vários botões correspondentes, morte ou alteração de sessão abortam a operação. O simples envio de um clique não confirma que você concluiu o tutorial; leia a próxima tela/item antes da próxima ação. O modo memória não muda automaticamente para esta operação Native.

FunçãoFuncionamento
opencontainer(id)abrindo a mochila equipada no slot 3 padrão; para pesquisar dentro use openitem()
openitem(id_lub_nazwa [, źródło, nowe_okno, indeks])pesquisa e abertura; nova janela padrão=true, índice=1; fonte é nome ou terreno (x,y,z)
ground(x,y,z)marcador de posição para openitem()
closecontainer(numer)fechar o contêiner aberto indicado
containerup(numer)abrir o contêiner pai nesta janela
minimizecontainer(numer)/maximizecontainer(numer)definir o estado da janela; repetir não alterna de volta
closewindows([limit])Esc para diálogos/menus, padrão 6, máximo 8; não fecha automaticamente a janela da morte
lookinventory(slot, id)Look em um item equipado
lookcontainer(numer, slot, id)Look em um contêiner específico
lookworld(x,y,z)Olhe no topo da caixa mundial
lookcreature(id)Look no personagem/NPC/monstro indicado
deathdialog([akcja])padrão revive; character_list abre a lista de personagens

Look espera por uma resposta de um novo cliente; em Lua não retorna texto de descrição. Nenhum resultado novo é um erro sem nova tentativa. Fechar/recolher/recolher o contêiner verifica a identidade real da janela. containerup() sem nenhum pai disponível não é tratado automaticamente como um sucesso.

Aliases de comando

Além dos nomes de tabelas, npc_dialog(), use_item(), use_self(), use_inventory(), use_container(), use_world(), move_item() e open_container() funcionam, com os mesmos argumentos de suas contrapartes compactas.

Rota e configuração

Configuração do script e perfis de personagens

A aba Configuração do script contém opções e suprimentos, o único editor de regras de mochilas e um editor separado de definições Lua. Após editar, clique em Aplicar. Cavebot e Action usam os mesmos valores na próxima leitura; não é necessário reiniciar a rota. Arquivo → Salvar grava a configuração completa em XML: a definição do formulário (setup_code) e os valores padrão das opções (script_api.options). Cada opção pode usar Do script ou Próprio do personagem. Apenas as substituições selecionadas explicitamente entram no perfil escolhido, preservando os padrões do XML. Salvar como… cria uma cópia sem modificar o script anterior. setsettings() e Aplicar alteram a configuração atual; salvar o XML exige Salvar ou ativar o salvamento automático em Arquivo. Escolher outro script não transfere as opções do anterior.

A definição do formulário é realizada offline. As seguintes declarações, variáveis ​​locais, condições, loops de limite e cálculos básicos são permitidas. Comandos de jogo, leituras de cliente, wait() e alterações de configuração são rejeitados neste editor. As declarações de controle não se destinam a waypoints ou circulares Action.

O editor Definição Lua / JSON também aceita um formulário JSON no estilo WindBot User Options: um grupo, uma lista de grupos ou grupos separados por vírgulas. Os tipos aceitos são group, lineedit, checkbox, combobox, spinbox, doublespinbox e rangespinbox. Os grupos têm children, column (1 ou 2) e checkable opcional. Os campos description fornecem dicas; campos de texto aceitam placeholder, e campos numéricos aceitam prefix e suffix. O checkbox do grupo desativa a edição de seus filhos; o script deve verificar o valor do grupo antes de executar ações relacionadas. Não é um importador de scripts completos do WindBot.

rangespinbox armazena dois limites como [od, do]; um único value define ambos igualmente. getuseroption("wait_spawn") retorna uma tabela com os campos from e to, por exemplo:

Action / waypoint Action · Lua
if getuseroption("wait_spawn") then
  local bounds = getuseroption("wait_spawn")
  wait(random(bounds.from, bounds.to))
end

O botão Inserir JSON de amostra contém um conjunto de controles básicos. O formulário JSON e seus valores são armazenados no mesmo XML e perfis do formulário Lua. Alterar o formato não aciona nenhum comando do jogo.

Declaração no editor de formuláriosFuncionamento
addmenu(klucz, tytuł)criar ou selecionar um grupo/menu para os próximos controles
addcheckbox(klucz, etykieta, domyślna)checkbox com valor true/false
addspinbox(klucz, etykieta, domyślna, minimum, maksimum [, krok])campo numérico, etapa 1 padrão; para frações, insira um passo menor que 1
addtextbox(klucz, etykieta, domyślna)campo de texto
addcombobox(klucz, etykieta, domyślna, wybory)lista; as seleções são texto, por ex. "safe|normal"
addlabel(tekst)descrição no menu atual
addsupply(klucz, etykieta, id, minimum, cel)quatro campos supplies.KLUCZ.enabled/id/minimum/target; o mínimo não deve exceder a meta
addbackpack(nazwa, id [, rodzic, przeznaczenie])adiciona uma regra ausente ao gerenciador de mochilas existente; não substitui regra salva com o mesmo nome; finalidade: loot/gold/supplies/other

As regras de mochila padrão são adicionadas uma vez por configuração de personagem. Renomear ou excluir posteriormente uma regra em um perfil não recria a regra antiga do modelo.

As chaves de controle devem ser exclusivas; Letras ASCII, números, sublinhado, ponto final e travessão são permitidos. Máximo de 200 controles, 30 menus e 50 regras de mochila por definição. Exemplo de definição (cole em Lua Definition):

Forma · Definição de Lua
addmenu("return", "Powrót i zapasy")
addcheckbox("return_enabled", "Kontroluj powrót", true)
addspinbox("min_cap", "Minimalny cap", 150, 0, 10000)
addtextbox("return_label", "Etykieta powrotu", "refill")
addsupply("mana", "Mana potion", 268, 50, 300)
addmenu("hunt", "Polowanie")
addcombobox("hunt_mode", "Tryb", "normal", "safe|normal")
addlabel("Dostosuj zapasy i nazwy plecaków do postaci.")
addbackpack("Backpack", 2854, "", "supplies")
Função disponível em Cavebot e ActionResultado / funcionamento
getuseroption(klucz)alias de getoption(); retorna o valor salvo ou o padrão do formulário
setuseroption(klucz, wartość)alias setoption(); valida o tipo e o escopo do controle declarado
getsettings(ścieżka)ler uma opção do formulário ou configurações reais da tabela abaixo
setsettings(ścieżka, wartość)registro de valor; a execução atualiza o contexto antes do próximo comando
getsetting(ścieżka)/setsetting(ścieżka, wartość)alias getsettings/setsettings
caplow()se $cap está abaixo da opção min_cap; sem limite definido, usa 0
supplycount(klucz)quantidade do ID definido em addsupply(); equipamento e contêineres abertos
supplyneed(klucz)quanto está faltando na quantidade alvo, não menos que 0
supplieslow()se algum estoque habilitado está abaixo do mínimo
needsrefill()return_enabled i (caplow lub suprimentoslow); brak return_enabled oznacza verdadeiro
Caminho getsettings/setsettingsValor
setup.min_cap, setup.return_label, setup.supplies.mana.targetopções de formulário; Os prefixos de opções/opções do usuário são equivalentes; a própria chave também é permitida
navigation.pass_players_outside_pz, navigation.ignore_players_path, navigation.enter_echo_raidsverdadeiro/falso, configuração de navegação real
looting.enabled, looting.quick_loot, looting.eat_food, looting.auto_echo_loot, looting.own_kills_onlyverdadeiro/falso, LootConfig existente
containers.Backpack.keep_open, containers.Backpack.item_id, containers.Backpack.parent, containers.Backpack.purposepropriedades de uma regra existente chamada Backpack; também os campos ContainerRule restantes, exceto nome
priority.targeting, priority.looting, priority.cavebotprioridade de 1 a 10; menor vence

Você pode usar / em vez de . como separador. Um caminho de módulo desconhecido, uma regra de mochila ausente ou um tipo incorreto gera erro. Não há compatibilidade completa com caminhos históricos arbitrários do WindBot. As funções não alteram a configuração da entrada nem dados de login e não iniciam módulos da interface. looting.enabled altera a configuração do módulo, não seu controle de execução. Da mesma forma, consultar suprimentos não compra itens nem pesquisa mochilas fechadas. Compras e retiradas exigem código Lua explícito na rota.

Exemplo de waypoint Action utilizando o formato:

Action / waypoint Action · Lua
if needsrefill() then
    gotolabel(getuseroption("return_label"))
end

Exemplo de alteração de configurações durante a execução:

Action / waypoint Action · Lua
setsettings("setup.min_cap", 200)
setsettings("navigation.enter_echo_raids", false)
setuseroption("hunt_mode", "safe")

No Test Lua, as alterações nas configurações são apenas um plano; os valores reais permanecem inalterados. Salvar um perfil e aplicar um formulário não executa ações do jogo.

O padrão de formulários se baseia no mecanismo WindBot Cavebot User Options descrito pelo fabricante. O RGXbot usa sua própria sintaxe de declarações e seus próprios caminhos de configuração.

Controle de rotas e opções

FunçãoFuncionamento
gotolabel(etykieta [, sekcja])saltar para um waypoint com etiqueta; encerra o script atual
gototab(nazwa)mudar a guia de rota; termina o script atual
reachgrounditem(id [, dystans])aproximar-se de um objeto visível; distância padrão 1, intervalo 0–18; encerra o script
wait(ms)espera do script atual, 0–3600000 ms
stopbot([powód])interrompe todos os módulos e encerra o script; motivo opcional até 200 caracteres
pausewalking(ms)pausa apenas na caminhada, 0–3600000 ms
setoption(nazwa, wartość)opção de escrita de script; não é uma chamada arbitrária para configurações da GUI
setlocation(nazwa, x,y,z)salvar uma localização nomeada
setlurelocation(nazwa, x,y,z)alias de salvamento de local
addspecialarea(nazwa, x,y,z)adicionando um campo nomeado excluído da rota
removespecialarea(nazwa)excluindo tal campo
setpriority(moduł, priorytet)prioridade de targeting/looting/cavebot, número de 1 a 10; menor vence

No modo de controle opcional, wait deixa o cliente disponível para tratamento. Durante a pausa, o agendador verifica a mesma sessão de caracteres e suporta Healer compartilhado habilitado; a próxima instrução ainda está aguardando o final da pausa. O cancelamento, morte ou alteração da sessão interrompe instruções adicionais deste script. O tratamento pode alterar a última operação de entrada durante wait: para rastrear uma transferência anterior, mantenha seu inputactionid() antes de pausar.

A chave técnica cavebot representa o módulo de rota. Locais e opções oferecem suporte a scripts de tempo de execução; não são variáveis ​​Lua locais. Os recursos de salto exigem uma rota/etiqueta existente. getlurelocation() verifica apenas a presença de um nome. openitem() e stash() também encerram o script atual. No plano Test Lua, as operações findfreedepot/depositer/deposititems encerram o plano, enquanto na execução live podem continuar após a operação confirmada.

Exemplos

Cada bloco abaixo é um exemplo separado. Ajuste IDs de itens, números de contêineres, magias, etiquetas e coordenadas para seu personagem.

Knighta cura com controle de mana e cooldown

Action / waypoint Action · Lua
if not $dead and $hppc < 70 and $mp >= 10 then
  if spellcooldown("exura infir ico") == 0 then
    spell("exura infir ico")
  end
end

Para cura permanente, use principalmente regras de cura. O exemplo mostra uma chamada de função; o feitiço deve estar disponível para este personagem.

Poção e reposição de mana

Action / waypoint Action · Lua
if $mppc < 40 and itemcount(268, "bag") > 0 then
  if itemcooldown() == 0 then
    useself(268)
  end
end

Runa no alvo ativo

Action / waypoint Action · Lua
if $target > 0 and not $pz then
  if itemcount(21352) > 0 and itemcooldown() == 0 then
    usetarget(21352, $target)
  end
end

ID 21352 significa Runa de Míssil Mais Leve no diretório atual. Para outra runa, verifique o ID e os requisitos. A posição e a linha de tiro são verificadas pela ação.

Comida e modo de bate-papo explícito

Action / waypoint Action · Lua
if $hungry and itemcount(3578) > 0 then
  useitem(3578)
end
chat_off()

Banco: verificação e saque seguro

Action / waypoint Action · Lua
checkbank()
if bankbalance() >= 100 then
  bankwithdraw(100)
end
npcclose()

Fique ao lado do banqueiro. A própria retirada confirma yes; não adicione uma segunda confirmação. bankdeposit() deposita todas as moedas sem discussão.

Comprar as poções que faltam

Action / waypoint Action · Lua
local brakuje = 5 - itemcount(266, "bag")
if brakuje > 0 then
  buyitems("health potion", min(brakuje, 100))
end

Fique perto do vendedor correto, com oferta disponível, dinheiro e espaço. Uma compra não faz uma viagem automática à loja. O exemplo separado abaixo vende um vial apenas após uma leitura confirmar sua posse:

Action / waypoint Action · Lua
if itemcount(285, "bag") > 0 then
  sellitems("empty potion flask", 1)
end

Conversa com NPCs

Action / waypoint Action · Lua
say("hi")
if npcisopen() and npcname() == "Aurelia" then
  npctrade()
end

Não substitua npcsay() por say() simples nas respostas subsequentes. npccontains("balance") verifica a resposta, não o histórico de suas próprias declarações.

Completando a aljava

Action / waypoint Action · Lua
refillammo(3447, 50, 100)

Requer exatamente uma aljava aberta. Se houver vários, selecione o ID atual:

Action / waypoint Action · Lua
refillammo(3447, 50, 100, 2)

Mover um item para o equipamento

Action / waypoint Action · Lua
moveitem(3338, 1, 0, 2, nil, 6)

O exemplo assume a Espada de Osso no recipiente 0, slot 2. O slot 6 é a mão da arma. O estado de origem e o número real da janela devem ser determinados antes da execução. Não execute isso repetidamente quando o resultado da primeira operação não for confirmado.

Salvando itens e baixando do Stash

Action / waypoint Action · Lua
opendepotbox(2)
deposititems(3031, 3272, box(2))
Action / waypoint Action · Lua
openstash()
local brakuje = 5 - itemcount(266, "bag")
if brakuje > 0 and stashcount(266) >= brakuje then
  retrievestash(266, brakuje)
end
closestash()

Recipientes e aparência

Action / waypoint Action · Lua
maximizecontainer(0)
lookinventory(6, 3338)
lookcontainer(0, 0, 285)
minimizecontainer(0)

O exemplo requer um frasco no slot 0 do contêiner 0. Você pode usar separadamente containerup(0), closecontainer(0), lookworld($x, $y, $z) ou lookcreature($target) com um ID positivo e visível.

Voltar a uma etiqueta com suprimentos baixos

Action / waypoint Action · Lua
if itemcount(266, "bag") < 2 or $cap < 40 then
  gotolabel("depo")
end

A rota deve ter o rótulo depo. Esta é uma mudança de rota, não um sistema independente de fuga de combate e não uma garantia de uma rota segura.

Verificar blessings e morte

Action / waypoint Action · Lua
local liczba = blessingscount()
local twist = hasblessing("Twist of Fate")
local komplet = hasallblessings()
local nazwy = blessings()
Action / waypoint Action · Lua
if isdead() then
  deathdialog("revive")
  return
end

Para uma resposta automática após a morte, prefira as configurações da política de morte. Um script não altera seu limite de mortes nem sua decisão de retomar.

Opções, bloqueio de campo e pausa aleatória

Action / waypoint Action · Lua
setoption("tryb_testowy", true)
setlocation("baza", $x, $y, $z)
addspecialarea("pole_do_ominiecia", $x + 1, $y, $z)
setpriority("targeting", 1)
pausewalking(random(200, 400))

Remova o bloqueio depois com removespecialarea("pole_do_ominiecia"). A aleatoriedade deste exemplo afeta o tempo; o movimento do mouse e o comportamento de caminhada são configurados separadamente no módulo de entrada opcional.

Laço com limite explícito

Action / waypoint Action · Lua
local i = 0
while i < 3 do
  i = i + 1
  if $dead then
    break
  end
  wait(100)
end

Não crie um ciclo interminável de cura ou negociação. O script Action pode ser chamado periodicamente pelo módulo e o estado é atualizado entre as ações.

Erros e limitações

  • Cooldown, Blessed, Balance ou Stash desconhecidos são um erro de leitura, não um zero.

  • Número errado de argumentos, ID 0, número não inteiro e nome de função desconhecido são rejeitados. Exceções como attack(0) são descritas separadamente.

  • Janela alterada, item faltante, transferência ou compra não confirmada exigir verificação de condição. Não repita a operação cegamente.

  • O teste Lua não verifica disponibilidade de itens, aprendizado de ortografia ou resultado servidor. O resultado final é confirmado por leituras durante a performance ao vivo.

  • Abrir mochilas, negociar e Look pode exigir controles visíveis dentro do cliente, também quando o próprio cliente é executado em uma tela virtual oculta.

Descrições relacionadas: combate à distância, agendador de cura, módulo de entrada.

Precisar de ajuda?

Prepare a versão do aplicativo e o conteúdo da mensagem de acordo com o guia de diagnóstico.

Discórdia ↗RGXbot · guias em polonês · status do conteúdo: 11/12/2026