Ir para conteúdo

Featured Replies

Postado

Eu precisava de uma função que limitaria nascer monstros apenas nestas áreas setadas no mapa, alguém consegue me dar um help?

 

 

area.jpg

 http://baiakuza.com/
IP: baiakuza.com
TIBIA: 10.96
Baiak Custom [ High Exp Rate ]

 

 

 

 

Postado

@Skydangerous  Com este código a baixo é possível spawnar vários monstros sem bugar nada, ou em cada área determinada um monstro.

Spoiler
19 minutos atrás, Skydangerous disse:

Eu precisava de uma função que limitaria nascer monstros apenas nestas áreas setadas no mapa, alguém consegue me dar um help?

 

 

area.jpg

 

Global.lua

local areas = { 
    [1] = {name = "Demon", areaMin = {1000, 1000, 7}, areaMax = {1000, 1000, 7}},
    [2] = {name = "Another Monster Name", areaMin = {1000, 1000, 7}, areaMax = {1000, 1000, 7}}
}
monsterSpawn_array = {}
function addSpawnablePositions()
    for i = 1, #areas do
    local x = 0
    local y = 0
    local z = 0
        while area[i].areaMin[1] < area[i].areaMax[1] do
            while area[i].areaMin[2] < area[i].areaMax[2] do
                while area[i].areaMin[3] < area[i].areaMax[3] do
                    if x == area[i].areaMax[1] and y == area[i].areaMax[2] then
                        x = area[i].areaMin[1]
                        y = area[i].areaMin[2]
                        z = z - 1
                    elseif x == 0 and y == 0 and z == 0
                        x = area[i].areaMin[1]
                        y = area[i].areaMin[2]
                        z = area[i].areaMin[3]
                    end
                   
                    local posSpawn = Position({x, y, z})
                    local tile = Tile({x, y, z})
                   
                    if tile == nil or tile:getGround() == nil or tile:hasProperty(TILESTATE_NONE) or tile:hasProperty(TILESTATE_FLOORCHANGE_EAST) or isItem(tile:getThing()) and not isMoveable(tile:getThing()) or tile:getTopCreature() then
                        x = x + 1
                        y = y + 1
                    else
                        if monsterSpawn_array[areas.name] then
                            local length = monsterSpawn_array[areas.name] + 1
                            monsterSpawn_array[areas.name][length] = posSpawn
                        else
                        monsterSpawn_array[areas.name][1] = posSpawn
                        end
                    x = x + 1
                    y = y + 1
                    end
                end
            end
        end
    end               
end
function selectRandSpawn(spawnName)
    if monsterSpawn_array[spawnName] then
        pos = monsterSpawn_array[math.random(1, #monsterSpawn_array[spawnName])]
        return true
    else
    return false
    end
end

Globalevents onStarup.lua

addSpawnablePositions()

Creaturescript onDeath

function onDeath(creature)
   local pos = selectRandSpawn("Demon")
 
    if not pos then
        print("Could not find position")
    return true
    end
 
    Game.createMonster("Demon", pos)
   return true
end

 

  • Forged mudou o título para [Spawn monster in area] fromPosition e toPosition

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520k

Informação Importante

Confirmação de Termo