Documentação › Lua
Map e Creature
Map lê o mapa que o cliente conhece (pisos, itens, criaturas) e age sobre ele: mover itens, usar, olhar, andar até um ponto. Creature é um objeto que representa uma criatura pelo id.
Um piso que o bot não conhece devolve nil. Map.getTiles e Map.getAllPositionsWithTopItemId olham só a área visível do cliente no seu andar: 8 pisos para oeste, 9 para leste, 6 para norte e 7 para sul.
Map: criaturas#
Map.getCreatureIds(mesmoAndar, sóPlayers)#
Map.getCreatureIds(mesmoAndar, sóPlayers) → lista ou nil
Ids das criaturas visíveis.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| mesmoAndar | booleano, opcional | true (padrão) só o seu andar; false todos os andares |
| sóPlayers | booleano, opcional | true só players; false (padrão) players, monstros, NPCs e summons |
Retorna nil quando não há nenhuma.
for _, id in ipairs(Map.getCreatureIds(true, false) or {}) do
local c = Creature.new(id)
if c:getType() == Enums.CreatureTypes.CREATURETYPE_MONSTER then print(c:getName()) end
endMap.getPlayerOnScreen(nomeOuId)#
Map.getPlayerOnScreen(nomeOuId) → Creature ou nil
Procura um player visível pelo nome (sem diferenciar maiúsculas) ou pelo id.
local amigo = Map.getPlayerOnScreen("Nome do Amigo")
if amigo then print(amigo:getHealthPercent()) endMap: pisos#
Map.getThings(x, y, z)#
Map.getThings(x, y, z) → lista ou nil
O que está num piso, de baixo para cima (até 10). Item: {id, count, isCreature = false, stackPos}. Criatura: {id, isCreature = true, creatureId, stackPos}.
local p = Player.getPosition()
for _, t in ipairs(Map.getThings(p.x, p.y, p.z) or {}) do print(t.id, t.isCreature) endMap.getThingsCount(x, y, z)#
Map.getThingsCount(x, y, z) → número ou nil
Quantas coisas há no piso.
print(Map.getThingsCount(32000, 32000, 7))Map.getTopItemId(x, y, z)#
Map.getTopItemId(x, y, z) → número ou nil
Id do item do topo do piso.
print(Map.getTopItemId(32000, 32000, 7))Map.getTopCreatureId(x, y, z)#
Map.getTopCreatureId(x, y, z) → número ou nil
Id da primeira criatura no piso.
local id = Map.getTopCreatureId(32000, 32000, 7)
if id then print(Creature.new(id):getName()) endMap.getTiles()#
Map.getTiles() → lista
Todos os pisos conhecidos do seu andar na área visível, como {x, y, z, things} (things no formato de getThings).
print(#Map.getTiles() .. " pisos visíveis")Map.getAllPositionsWithTopItemId(itemId)#
Map.getAllPositionsWithTopItemId(itemId) → lista ou nil
Posições do seu andar, na área visível, onde o item do topo é itemId.
-- troque 1948 pelo id do item que você procura
for _, pos in ipairs(Map.getAllPositionsWithTopItemId(1948) or {}) do print(pos.x, pos.y) endMap.isTileWalkable(x, y, z, opções)#
Map.isTileWalkable(x, y, z, opções) → booleano
Se dá para pisar no piso. false para piso desconhecido, sem chão ou bloqueado.
| Opção | Padrão | Descrição |
|---|---|---|
ignoreBlockPath | true | Ignora pisos que o bot evitaria (campo, buraco) |
ignoreMagicField | true | Ignora campos mágicos |
ignoreFloorChange | true | Aceito, mas o bot não diferencia troca de andar |
ignoreMonsters | false | Monstros não bloqueiam |
ignoreNpcs | false | NPCs não bloqueiam |
Pisos que o bot evitaria só passam quando ignoreBlockPath e ignoreMagicField são true. Você mesmo nunca bloqueia.
local p = Player.getPosition()
print(Map.isTileWalkable(p.x + 1, p.y, p.z, { ignoreMonsters = true }))Map.canWalk(x, y, z, ignoreBlockPath, ignoreMagicField, ignoreMonsters, ignoreNpcs)#
Map.canWalk(x, y, z, ...) → booleano
O mesmo que isTileWalkable, com as opções como parâmetros na ordem acima. Padrões: true, true, false, false.
print(Map.canWalk(32000, 32000, 7))Map.getCameraPosition()#
Map.getCameraPosition() → {x, y, z}
Centro do mapa do cliente, que é a sua posição.
print(Map.getCameraPosition().z)Map: ações#
Map.goTo(x, y, z)#
Map.goTo(x, y, z) → booleano
Calcula o caminho até a posição e começa a andar. Retorna false sem caminho.
if not Map.goTo(32369, 32241, 7) then print("sem caminho") endMap.lookAt(x, y, z)#
Map.lookAt(x, y, z) → true ou nil
Dá look no item do topo do piso. A resposta chega no evento TEXT_MESSAGE.
Map.lookAt(32000, 32000, 7)Map.browseField(x, y, z)#
Map.browseField(x, y, z)
Abre o browse field do piso.
local p = Player.getPosition()
Map.browseField(p.x, p.y, p.z)Map.moveItemToGround(x, y, z, quantidade, paraX, paraY, paraZ)#
→ true ou nil
Move o item do topo de um piso para outro. quantidade opcional (padrão: o stack todo).
local p = Player.getPosition()
Map.moveItemToGround(p.x + 1, p.y, p.z, nil, p.x, p.y, p.z)Map.moveItemToInventory(x, y, z, quantidade, slot)#
→ true ou nil
Move o item do topo do piso para um slot de equipamento.
Map.moveItemToInventory(32000, 32000, 7, nil, Enums.InventorySlot.CONST_SLOT_AMMO)Map.moveItemToContainer(x, y, z, quantidade, container, slot)#
→ true ou nil
Move o item do topo do piso para um container aberto.
Map.moveItemToContainer(32000, 32000, 7, nil, 0, 0)Map.moveCreatureToGround(x, y, z, paraX, paraY, paraZ)#
→ true ou nil
Empurra a criatura do piso para outro piso.
local p = Player.getPosition()
Map.moveCreatureToGround(p.x + 1, p.y, p.z, p.x + 2, p.y, p.z)Map.useItemWithInventory(x, y, z, slot)#
→ true ou nil
Usa o item do topo do piso no item de um slot de equipamento.
Map.useItemWithInventory(32000, 32000, 7, Enums.InventorySlot.CONST_SLOT_LEFT)Map.useItemWithContainer(x, y, z, container, slot)#
→ true ou nil
Usa o item do topo do piso num item de container.
Map.useItemWithContainer(32000, 32000, 7, 0, 0)Map.collectRewardChest(x, y, z)#
→ true ou nil
Coleta o reward chest do piso.
Map.collectRewardChest(32000, 32000, 7)Creature#
Creature.new(id) (ou Creature(id)) cria o objeto; os métodos usam :. Todos devolvem nil se o bot não conhece a criatura (saiu da tela há muito tempo ou o id está errado).
local alvo = Creature.new(Player.getTargetId())
print(alvo:getName(), alvo:getHealthPercent(), alvo:getDistance())creature:getId()#
→ número
O id usado para criar o objeto.
print(Creature.new(Player.getTargetId()):getId())creature:getName()#
→ texto ou nil
Nome da criatura.
print(Creature.new(Player.getTargetId()):getName())creature:getType()#
→ número ou nil
Tipo, como em Enums.CreatureTypes: 0 player, 1 monstro, 2 NPC, 3 seu summon, 4 summon de outro.
if Creature.new(id):getType() == Enums.CreatureTypes.CREATURETYPE_PLAYER then print("player") endcreature:getHealthPercent()#
→ número ou nil
Vida em porcentagem.
print(Creature.new(Player.getTargetId()):getHealthPercent() .. "%")creature:getPosition()#
→ {x, y, z} ou nil
Posição da criatura. Para você mesmo, é sempre a posição certa, mesmo depois de teleporte.
local pos = Creature.new(id):getPosition()
if pos then print(pos.x, pos.y, pos.z) endcreature:getDistance()#
→ número ou nil (extra)
Distância até você em pisos (a maior entre a diferença em x e em y).
if Creature.new(id):getDistance() <= 1 then print("colado") endcreature:isOnScreen()#
→ booleano (extra)
true se a criatura está viva, no seu andar e a até 7 pisos de você.
if Creature.new(Player.getTargetId()):isOnScreen() then print("alvo na tela") endcreature:getSpeed(), creature:getDirection() e creature:getVocation()#
→ número ou nil
Velocidade; direção para onde olha (0 norte, 1 leste, 2 sul, 3 oeste); vocação (como o servidor manda).
print(Creature.new(id):getDirection())creature:getSkull(), creature:getGuildEmblem() e creature:getPartyIcon()#
→ número ou nil
Skull (Enums.Skulls), emblema de guild (Enums.GuildEmblem) e ícone de party (Enums.PartyIcons).
if Creature.new(id):getSkull() == Enums.Skulls.SKULL_WHITE then print("PK") endcreature:getOutfit()#
→ tabela ou nil
Outfit e montaria: type, typeEx (item, quando a criatura aparece como item), head, body, legs, feet, addons, mountId, mountHead, mountBody, mountLegs, mountFeet.
print(Creature.new(Player.getId()):getOutfit().type)creature:getIcon() e creature:getIcons()#
→ 0 / → lista vazia
Existem para scripts do ZeroBot, mas hoje sempre devolvem 0 e uma lista vazia.
print(Creature.new(id):getIcon())
Comentários
para comentar.