Documentação › Lua

Game

O módulo Game faz as ações do personagem: falar, andar, atacar, usar e equipar itens, responder janelas. Também tem os sistemas do jogo: quests, stash, store, daily reward, forge, imbuements, hunting tasks e task board. Os eventos (Game.registerEvent) estão em Eventos do jogo.

Eventos#

Game.registerEvent(evento, função)#

Game.registerEvent(evento, função) → função

Liga a função a um evento de Game.Events. Retorna a própria função, para você guardar e desligar depois.

lua
Game.registerEvent(Game.Events.TALK, function(nome, level, modo, x, y, z, texto) print(texto) end)

Game.unregisterEvent(evento, função)#

Game.unregisterEvent(evento, função) → função

Desliga a função do evento.

lua
local f = Game.registerEvent(Game.Events.ALARM, print)
Game.unregisterEvent(Game.Events.ALARM, f)

Falar e canais#

Game.talk(texto, modo)#

Game.talk(texto, modo)

Fala no Default. Magias também são faladas assim.

ParâmetroTipoDescrição
textotextoO que falar
modonúmero, opcionalEnums.TalkTypes (padrão 1 = say; 2 whisper, 3 yell)
lua
Game.talk("hi")
Game.talk("exura gran", Enums.TalkTypes.TALKTYPE_SAY)

Game.talkChannel(texto, canal)#

Game.talkChannel(texto, canalId)

Fala num canal aberto.

ParâmetroTipoDescrição
textotextoO que falar
canalIdnúmeroId do canal
lua
Game.talkChannel("vendo 100 SD", 5)

Game.talkPrivate(texto, nome)#

Game.talkPrivate(texto, nome)

Manda uma PM.

ParâmetroTipoDescrição
textotextoA mensagem
nometextoNome do player
lua
Game.talkPrivate("cheguei na hunt", "Nome do Amigo")

Game.openChannel(canalId)#

Game.openChannel(canalId) → true

Pede ao servidor para abrir um canal.

lua
Game.openChannel(5)

Game.getChannelsHistory()#

Game.getChannelsHistory() → lista

Os canais que o bot viu nesta sessão (lista de canais e canais abertos), como {id, name}.

lua
for _, c in ipairs(Game.getChannelsHistory()) do print(c.id, c.name) end

Andar, virar, atacar#

Game.walk(direção)#

Game.walk(direção)

Dá um passo.

ParâmetroTipoDescrição
direçãonúmeroEnums.Directions: 0 norte, 1 leste, 2 sul, 3 oeste, 4 sudoeste, 5 sudeste, 6 noroeste, 7 nordeste
lua
Game.walk(Enums.Directions.NORTH)

Game.turn(direção)#

Game.turn(direção)

Vira o personagem sem andar: 0 norte, 1 leste, 2 sul, 3 oeste.

lua
Game.turn(Enums.Directions.SOUTH)

Game.attack(creatureId)#

Game.attack(creatureId)

Ataca a criatura. Com 0, para de atacar.

lua
Game.attack(0) -- para de atacar

Game.follow(creatureId)#

Game.follow(creatureId)

Segue a criatura.

lua
local amigo = Map.getPlayerOnScreen("Nome do Amigo")
if amigo then Game.follow(amigo:getId()) end

Itens#

Game.useItem(itemId)#

Game.useItem(itemId)

Usa o item como uma hotkey (o servidor procura o item nas suas bags).

lua
Game.useItem(3725) -- come um brown mushroom

Game.useItemWithCreature(itemId, creatureId)#

Game.useItemWithCreature(itemId, creatureId) → true

Usa o item numa criatura, como runa ou poção.

lua
Game.useItemWithCreature(3155, Player.getTargetId()) -- 3155 = sudden death rune

Game.useItemOnGround(itemId, x, y, z)#

Game.useItemOnGround(itemId, x, y, z) → booleano

Usa o item num piso (runa de área, pá, corda). Retorna se o pedido saiu.

lua
local p = Player.getPosition()
Game.useItemOnGround(3191, p.x + 2, p.y, p.z) -- 3191 = great fireball rune

Game.useItemOnInventory(itemId, slot)#

Game.useItemOnInventory(itemId, slot) → booleano

Usa o item no item de um slot de equipamento. Retorna false com o slot vazio.

lua
Game.useItemOnInventory(5908, Enums.InventorySlot.CONST_SLOT_LEFT)

Game.useItemFromGround(x, y, z)#

Game.useItemFromGround(x, y, z) → booleano

Usa o item do topo de um piso (alavanca, porta, escada).

lua
Game.useItemFromGround(32369, 32241, 7)

Game.equipItem(itemId, tier)#

Game.equipItem(itemId, tier)

Equipa o item como a hotkey de equipar do cliente: o servidor acha o item e coloca no slot certo, ou tira se ele já estiver equipado. tier é aceito, mas ignorado.

lua
Game.equipItem(3052) -- life ring

Game.getItemCount(itemId, tier)#

Game.getItemCount(itemId, tier) → número

Quantos desse item você tem no equipamento e nos containers abertos. tier é aceito, mas ignorado.

lua
if Game.getItemCount(268) < 50 then print("poucas mana potions") end

Game.getInventoryItems()#

Game.getInventoryItems() → lista

Todos os itens do equipamento e dos containers abertos, somados por id, como {id, count, tier} (tier sempre 0).

lua
for _, it in ipairs(Game.getInventoryItems()) do print(it.id, it.count) end

Game.lootCorpse(x, y, z)#

Game.lootCorpse(x, y, z) → booleano

Quick loot no item do topo do piso. Retorna false se o piso não é conhecido.

lua
Game.lootCorpse(32000, 32000, 7)

Game.autoLoot()#

Game.autoLoot() → true

Pede ao servidor o quick loot dos corpos em volta de você.

lua
Game.autoLoot()

Janelas e textos#

Game.modalWindowAnswer(id, botão, escolha, fechar)#

Game.modalWindowAnswer(janelaId, botãoId, escolhaId) → true

Responde uma janela do servidor (evento MODAL_WINDOW). escolhaId é opcional (padrão 0). O quarto parâmetro do ZeroBot (closeAfterAnswer) é aceito, mas ignorado.

lua
Game.modalWindowAnswer(janela.id, janela.buttons[1].id, 0)

Game.writeTextWindow(texto)#

Game.writeTextWindow(texto) → true ou nil

Escreve o texto na última janela de texto que o servidor abriu (carta, livro). Retorna nil se nenhuma foi aberta.

lua
Game.writeTextWindow("Olá!")

Quests e stash#

Game.requestQuestLog()#

Game.requestQuestLog() → true

Pede a lista de quests. A resposta chega no evento QUEST_LOG.

lua
Game.requestQuestLog()

Game.requestQuestLines(questId)#

Game.requestQuestLines(questId) → true

Pede as missões de uma quest. A resposta chega no evento QUEST_LINES.

lua
Game.requestQuestLines(1)

Game.stashRetrieve(itemId, quantidade)#

Game.stashRetrieve(itemId, quantidade) → true

Retira itens do supply stash.

lua
Game.stashRetrieve(268, 100)

Store#

Game.storeOpen()#

Game.storeOpen() → true

Abre a store.

lua
Game.storeOpen()

Game.storeRequestOffers(categoria)#

Game.storeRequestOffers(categoria) → true

Pede as ofertas de uma categoria, pelo nome.

lua
Game.storeRequestOffers("Useful Things")

Game.storeBuyOffer(offerId)#

Game.storeBuyOffer(offerId) → true

Compra uma oferta. Toda oferta sai como compra simples (hirelings, que precisam de nome, não funcionam).

lua
Game.storeBuyOffer(12345)

Game.storeGetTibiaCoinsBalance() e Game.storeGetTransferableCoinsBalance()#

→ número

Tibia coins e coins transferíveis, do último saldo que o servidor mandou (0 até lá).

lua
print(Game.storeGetTibiaCoinsBalance())

Daily reward#

Game.openDailyReward()#

Game.openDailyReward() → true

Abre a janela de daily reward.

lua
Game.openDailyReward()

Game.collectDailyReward(noShrine, escolhas)#

Game.collectDailyReward(noShrine, escolhas) → true

Coleta a recompensa.

ParâmetroTipoDescrição
noShrinebooleanotrue coleta no shrine, false pela reward wall
escolhaslistaItens escolhidos: {itemId, count} (vazia quando não há escolha)
lua
Game.collectDailyReward(true, {})

Forge#

Game.forgeConvertDust(), Game.forgeConvertSlivers() e Game.forgeIncreaseLimit()#

→ true

Converte dust em slivers, slivers em exalted core e aumenta o limite de dust.

lua
Game.forgeConvertDust()

Game.forgeFuseItems(itemId, tier, outroId, outroTier, convergência)#

Game.forgeFuseItems(itemId, tier, outroItemId, outroTier, convergência) → true ou nil

Funde dois itens. Os dois precisam ter o mesmo tier; se não tiverem, retorna nil e nada é mandado.

lua
Game.forgeFuseItems(3079, 1, 3079, 1, false)

Imbuements#

Game.applyImbuement(slot, imbuementId, proteção)#

Game.applyImbuement(slot, imbuementId, usarProteção) → true

Aplica um imbuement num slot do item aberto na janela de imbuement.

lua
Game.applyImbuement(0, 1, false)

Game.applyImbuementOnScroll(imbuementId)#

Game.applyImbuementOnScroll(imbuementId) → true

Abre a janela para um scroll e aplica o imbuement nele.

lua
Game.applyImbuementOnScroll(1)

Game.clearImbuement(slot) e Game.closeImbuementWindow()#

→ true

Limpa um slot de imbuement e fecha a janela.

lua
Game.clearImbuement(0)
Game.closeImbuementWindow()

Para abrir a janela num item, use Inventory.pickItemImbuement(slot) ou container:pickItemImbuement(slot). Os eventos IMBUEMENT_DATA e IMBUEMENT_OPEN_WINDOW ainda não disparam.

Hunting tasks#

Todas recebem o slot da task (0, 1 ou 2) e retornam true.

FunçãoO que faz
Game.huntingTaskRerollList(slot)Troca a lista de monstros
Game.huntingTaskRerollRewards(slot)Troca as recompensas
Game.huntingTaskListAllMonsters(slot)Pede a lista com todos os monstros
Game.huntingTaskSelectMonster(slot, raceId, máximo)Escolhe o monstro; máximo (padrão true) pega a quantidade maior
Game.huntingTaskCancel(slot)Cancela a task
Game.huntingTaskClaim(slot)Coleta a recompensa
lua
Game.huntingTaskSelectMonster(0, 1234, true)

Task board#

Para servidores 15.20 ou mais novos. Game.taskBoardAction(ação, a, b) manda uma ação de Enums.TaskBoardAction; as funções abaixo são atalhos para ela e dão erro se você passar o número errado de parâmetros. Todas retornam true. O evento TASK_BOARD_DATA ainda não dispara.

FunçãoParâmetros
Game.openTaskBoardBounty() / Game.openTaskBoardWeekly() / Game.openTaskBoardShop()nenhum
Game.rerollTaskBoardBounties() / Game.claimTaskBoardDailyReroll()nenhum
Game.claimTaskBoardBountyReward() / Game.unlockTaskBoardPreferenceSlot()nenhum
Game.setTaskBoardBountyDifficulty(d) / Game.setTaskBoardWeeklyDifficulty(d)1
Game.selectTaskBoardBounty(i) / Game.upgradeTaskBoardTalisman(i) / Game.deliverTaskBoardWeekly(i)1
Game.buyTaskBoardOffer(id) / Game.clearTaskBoardPreferred(id) / Game.clearTaskBoardUnwanted(id)1
Game.assignTaskBoardPreferred(a, b) / Game.assignTaskBoardUnwanted(a, b)2
lua
Game.openTaskBoardBounty()
Game.selectTaskBoardBounty(0)