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.
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.
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âmetro | Tipo | Descrição |
|---|---|---|
| texto | texto | O que falar |
| modo | número, opcional | Enums.TalkTypes (padrão 1 = say; 2 whisper, 3 yell) |
Game.talk("hi")
Game.talk("exura gran", Enums.TalkTypes.TALKTYPE_SAY)Game.talkChannel(texto, canal)#
Game.talkChannel(texto, canalId)
Fala num canal aberto.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| texto | texto | O que falar |
| canalId | número | Id do canal |
Game.talkChannel("vendo 100 SD", 5)Game.talkPrivate(texto, nome)#
Game.talkPrivate(texto, nome)
Manda uma PM.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| texto | texto | A mensagem |
| nome | texto | Nome do player |
Game.talkPrivate("cheguei na hunt", "Nome do Amigo")Game.openChannel(canalId)#
Game.openChannel(canalId) → true
Pede ao servidor para abrir um canal.
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}.
for _, c in ipairs(Game.getChannelsHistory()) do print(c.id, c.name) endAndar, virar, atacar#
Game.walk(direção)#
Game.walk(direção)
Dá um passo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| direção | número | Enums.Directions: 0 norte, 1 leste, 2 sul, 3 oeste, 4 sudoeste, 5 sudeste, 6 noroeste, 7 nordeste |
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.
Game.turn(Enums.Directions.SOUTH)Game.attack(creatureId)#
Game.attack(creatureId)
Ataca a criatura. Com 0, para de atacar.
Game.attack(0) -- para de atacarGame.follow(creatureId)#
Game.follow(creatureId)
Segue a criatura.
local amigo = Map.getPlayerOnScreen("Nome do Amigo")
if amigo then Game.follow(amigo:getId()) endItens#
Game.useItem(itemId)#
Game.useItem(itemId)
Usa o item como uma hotkey (o servidor procura o item nas suas bags).
Game.useItem(3725) -- come um brown mushroomGame.useItemWithCreature(itemId, creatureId)#
Game.useItemWithCreature(itemId, creatureId) → true
Usa o item numa criatura, como runa ou poção.
Game.useItemWithCreature(3155, Player.getTargetId()) -- 3155 = sudden death runeGame.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.
local p = Player.getPosition()
Game.useItemOnGround(3191, p.x + 2, p.y, p.z) -- 3191 = great fireball runeGame.useItemOnInventory(itemId, slot)#
Game.useItemOnInventory(itemId, slot) → booleano
Usa o item no item de um slot de equipamento. Retorna false com o slot vazio.
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).
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.
Game.equipItem(3052) -- life ringGame.getItemCount(itemId, tier)#
Game.getItemCount(itemId, tier) → número
Quantos desse item você tem no equipamento e nos containers abertos. tier é aceito, mas ignorado.
if Game.getItemCount(268) < 50 then print("poucas mana potions") endGame.getInventoryItems()#
Game.getInventoryItems() → lista
Todos os itens do equipamento e dos containers abertos, somados por id, como {id, count, tier} (tier sempre 0).
for _, it in ipairs(Game.getInventoryItems()) do print(it.id, it.count) endGame.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.
Game.lootCorpse(32000, 32000, 7)Game.autoLoot()#
Game.autoLoot() → true
Pede ao servidor o quick loot dos corpos em volta de você.
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.
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.
Game.writeTextWindow("Olá!")Quests e stash#
Game.requestQuestLog()#
Game.requestQuestLog() → true
Pede a lista de quests. A resposta chega no evento QUEST_LOG.
Game.requestQuestLog()Game.requestQuestLines(questId)#
Game.requestQuestLines(questId) → true
Pede as missões de uma quest. A resposta chega no evento QUEST_LINES.
Game.requestQuestLines(1)Game.stashRetrieve(itemId, quantidade)#
Game.stashRetrieve(itemId, quantidade) → true
Retira itens do supply stash.
Game.stashRetrieve(268, 100)Store#
Game.storeOpen()#
Game.storeOpen() → true
Abre a store.
Game.storeOpen()Game.storeRequestOffers(categoria)#
Game.storeRequestOffers(categoria) → true
Pede as ofertas de uma categoria, pelo nome.
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).
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á).
print(Game.storeGetTibiaCoinsBalance())Daily reward#
Game.openDailyReward()#
Game.openDailyReward() → true
Abre a janela de daily reward.
Game.openDailyReward()Game.collectDailyReward(noShrine, escolhas)#
Game.collectDailyReward(noShrine, escolhas) → true
Coleta a recompensa.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| noShrine | booleano | true coleta no shrine, false pela reward wall |
| escolhas | lista | Itens escolhidos: {itemId, count} (vazia quando não há escolha) |
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.
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.
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.
Game.applyImbuement(0, 1, false)Game.applyImbuementOnScroll(imbuementId)#
Game.applyImbuementOnScroll(imbuementId) → true
Abre a janela para um scroll e aplica o imbuement nele.
Game.applyImbuementOnScroll(1)Game.clearImbuement(slot) e Game.closeImbuementWindow()#
→ true
Limpa um slot de imbuement e fecha a janela.
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ção | O 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 |
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ção | Parâ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 |
Game.openTaskBoardBounty()
Game.selectTaskBoardBounty(0)
Comentários
para comentar.