error on console warzone script

wafuboe

Intermediate OT User
Joined
Dec 24, 2010
Messages
816
Reaction score
13
hi i was just configuring warzones 456 to my server when i got this error on console imusing tfs 1.3
i click on the big blue crystals and the error pops aswell trying to use the crystaks on the hollow geode to open the boss teleport

35392

usingcrystasl.lua
Code:
local beastPositions = {
    [1] = Position(33677, 32333, 15),
    [2] = Position(33677, 32337, 15),
    [3] = Position(33685, 32333, 15),
    [4] = Position(33685, 32337, 15),
}

local machinePositions ={
    [1] = {
        [1] = Position(33672, 32331, 15),
        [2] = Position(33673, 32331, 15),
        [3] = Position(33674, 32331, 15),
        [4] = Position(33675, 32331, 15),
    },
    [2] = {
        [1] = Position(33676, 32339, 15),
        [2] = Position(33677, 32339, 15),
        [3] = Position(33678, 32339, 15),
        [4] = Position(33679, 32339, 15),
    },
    [3] = {
        [1] = Position(33680, 32330, 15),
        [2] = Position(33681, 32330, 15),
        [3] = Position(33682, 32330, 15),
        [4] = Position(33683, 32330, 15),
    },
    [4] = {
        [1] = Position(33684, 32339, 15),
        [2] = Position(33685, 32339, 15),
        [3] = Position(33686, 32339, 15),
        [4] = Position(33687, 32339, 15),
    },
    [5] = {
        [1] = Position(33688, 32332, 15),
        [2] = Position(33689, 32332, 15),
        [3] = Position(33690, 32332, 15),
        [4] = Position(33691, 32332, 15),
    },
}

local fieryHearts = {
    [1] = Position(33712, 32299, 15),
    [2] = Position(33715, 32301, 15),
    [3] = Position(33714, 32305, 15),
    [4] = Position(33710, 32305, 15),
    [5] = Position(33709, 32301, 15),
}

local aggressiveLavasIV = {
    [1] = Position(33648, 32295, 15),
    [2] = Position(33648, 32313, 15),
}

local aggressiveLavasVI = {
    [1] = Position(33712, 32296, 15),
    [2] = Position(33712, 32310, 15),
}

local function lavaHoles(i)
    local lavaHolesArray = {
        [1] = Position(33652, 32307, 15),
        [2] = Position(33644, 32307, 15),
        [3] = Position(33644, 32299, 15),
        [4] = Position(33652, 32299, 15),
    }
    local boss = false
    local positionCenter = Position(33648, 32302, 15)
    local spectator = Game.getSpectators(positionCenter, false, false, 20, 20, 20, 20)
    for _, creature in pairs(spectator) do
        if creature:isMonster() then
            if creature:getName():lower() == "the baron from below" or creature:getName():lower() == "the hungry baron from below" then
                boss = true
            end
        end
    end
    if boss == true then
        local position = lavaHolesArray[i]
        local desativado = Tile(position):getItemById(388)
        if desativado then
            desativado:transform(389)
            addEvent(function()
                local ativado = Tile(position):getItemById(389)
                    if ativado then
                        local c = Game.getPlayers()[1]
                        c:say("BOOOOM!", TALKTYPE_MONSTER_SAY, false, false, position)
                        for x = position.x - 4, position.x + 4 do
                            for y = position.y - 4, position.y + 4 do
                                for z = position.z, position.z do
                                    if Tile(Position(x, y, z)) then
                                        if Tile(Position(x, y, z)) then
                                            local sqm = Position(x, y, z)
                                            local creature = Tile(Position(x, y, z)):getTopCreature()
                                            local mwCheck = Tile(Position(x, y, z)):getItemById(1497)
                                            local wildCheck = Tile(Position(x, y, z)):getItemById(1499)
                                            if not (mwCheck or wildCheck) then   
                                                if creature then
                                                    if creature:isPlayer() then
                                                        creature:addHealth(-(math.random(0, 1500)))
                                                    end
                                                end
                                                sqm:sendMagicEffect(CONST_ME_HITBYFIRE)
                                            end
                                        end
                                    end
                                end
                            end
                        end
                        ativado:transform(388)
                    end
                end, 3*1000)
            i = i + 1
            if i > 4 then
                i = 1
            end
        end
    end
    if boss == true then
        addEvent(lavaHoles, 15*1000, i)
    end
end

local function sumonarLavasIV(i)
    local boss = false
    local positionCenter = Position(33648, 32302, 15)
    local spectator = Game.getSpectators(positionCenter, false, false, 20, 20, 20, 20)
    for _, creature in pairs(spectator) do
        if creature:isMonster() then
            if creature:getName():lower() == "the baron from below" or creature:getName():lower() == "the hungry baron from below" then
                boss = true
            end
        end
    end
    if boss == true then
        if i >= 1 then
            for j, position in pairs(aggressiveLavasIV) do
                position:sendMagicEffect(CONST_ME_TELEPORT)
            end
            i = i - 1
            addEvent(sumonarLavasIV, 2*1000, i)   
        elseif i == 0 then
            for j, position in pairs(aggressiveLavasIV) do
                local lava = Game.createMonster("Aggressive Lava", position)
            end
            addEvent(sumonarLavasIV, 15*1000, 5)
        end
    end
end

local function sumonarLavasVI(i)
    local boss = false
    local positionCenter = Position(33712, 32303, 15)
    local spectator = Game.getSpectators(positionCenter, false, false, 20, 20, 20, 20)
    for _, creature in pairs(spectator) do
        if creature:isMonster() then
            if creature:getName():lower() == "the duke of the depths" or creature:getName():lower() == "the duke of the depths immortal" then
                boss = true
            end
        end
    end
    if boss == true then
        if i >= 1 then
            for j, position in pairs(aggressiveLavasVI) do
                position:sendMagicEffect(CONST_ME_TELEPORT)
            end
            i = i - 1
            addEvent(sumonarLavasVI, 2*1000, i)   
        elseif i == 0 then
            for j, position in pairs(aggressiveLavasVI) do
                local lava = Game.createMonster("Aggressive Lava", position)
            end
            addEvent(sumonarLavasVI, 15*1000, 5)
        end
    end
end

local function sumonarFieryHearts()
    local boss = false
    local bossId
    local contagemHearts = 0
    local positionCenter = Position(33712, 32303, 15)
    local spectator = Game.getSpectators(positionCenter, false, false, 20, 20, 20, 20)
    for _, creature in pairs(spectator) do
        if creature:isMonster() then
            if creature:getName():lower() == "the duke of the depths" then
                boss = true
                bossId = Creature(creature:getId())
            end
        end
    end
    for _, heart in pairs(spectator) do
        if heart:isMonster() then
            if heart:getName():lower() == "fiery heart" then
                contagemHearts = contagemHearts + 1
            end
        end
    end
    if boss == true and contagemHearts == 0 then
        for _, position in pairs(fieryHearts) do
            Game.createMonster("Fiery Heart", position):registerEvent("fieryHearts")
        end
        local oldBossHealth = bossId:getHealth()
        local oldBossPosition = bossId:getPosition()
        bossId:remove()
        local newBoss = Game.createMonster("the duke of the depths immortal", oldBossPosition, false, true)
        if newBoss then
            newBoss:registerEvent("fieryHearts")
            newBoss:registerEvent("healFireDamage")
            newBoss:addHealth(-(newBoss:getHealth() - oldBossHealth))
        end
    end
    if boss == true then
        addEvent(sumonarFieryHearts, 40*1000)
    end
end

local function startMachines()
math.randomseed(os.time())
local random = math.random(1, 5)
local positionCenter = Position(33681, 32335, 15)
local spectator = Game.getSpectators(positionCenter, false, false, 20, 20, 20, 20)
local checagem = false
    for _, monster in pairs(spectator) do
        if monster:isMonster() then
            if monster:getName():lower() == "the count of the core" then
                checagem = true
                addEvent(function()
                    for _, position in pairs(machinePositions[random]) do
                        local machineOff = Tile(position):getItemById(31724)
                        if machineOff then
                            machineOff:remove()
                            local machineOn = Game.createItem(31723, 1, position)
                            addEvent(function()
                                local a = machineOn:getPosition().y + 10
                                local a_ = machineOn:getPosition().y - 10
                                if random%2 ~= 0 then
                                    for x = machineOn:getPosition().x, machineOn:getPosition().x do
                                        for y = machineOn:getPosition().y + 1, a do
                                            for z = machineOn:getPosition().z, machineOn:getPosition().z do
                                                if Tile(Position(x, y, z)) then
                                                    if Tile(Position(x, y, z)) then
                                                        local sqm = Position(x, y, z)
                                                        local creature = Tile(Position(x, y, z)):getTopCreature()
                                                        local mwCheck = Tile(Position(x, y, z)):getItemById(1497)
                                                        local wildCheck = Tile(Position(x, y, z)):getItemById(1499)
                                                        if not (mwCheck or wildCheck) then   
                                                            if creature then
                                                                if creature:isMonster() then
                                                                    if creature:getName():lower() == "the count of the core" then
                                                                        creature:addHealth(math.random(3000, 5000))
                                                                    end
                                                                elseif creature:isPlayer() then
                                                                    creature:addHealth(-(math.random(0, 1500)))
                                                                end
                                                            end
                                                            sqm:sendMagicEffect(CONST_ME_HITBYFIRE)
                                                        else
                                                            a = machineOn:getPosition().y
                                                        end
                                                    end
                                                end
                                            end
                                        end
                                    end
                                else
                                    for x = machineOn:getPosition().x, machineOn:getPosition().x do
                                        for y = a_, machineOn:getPosition().y - 1 do
                                            for z = machineOn:getPosition().z, machineOn:getPosition().z do
                                                if Tile(Position(x, y, z)) then
                                                    if Tile(Position(x, y, z)) then
                                                        local sqm = Position(x, y, z)
                                                        local creature = Tile(Position(x, y, z)):getTopCreature()
                                                        local mwCheck = Tile(Position(x, y, z)):getItemById(1497)
                                                        local wildCheck = Tile(Position(x, y, z)):getItemById(1499)
                                                        if not (mwCheck or wildCheck) then   
                                                            if creature then
                                                                if creature:isMonster() then
                                                                    if creature:getName():lower() == "the count of the core" then
                                                                        creature:addHealth(math.random(3000, 5000))
                                                                    end
                                                                elseif creature:isPlayer() then
                                                                    creature:addHealth(-(math.random(0, 1500)))
                                                                end
                                                            end
                                                            sqm:sendMagicEffect(CONST_ME_HITBYFIRE)
                                                        else
                                                            a_ = machineOn:getPosition().y
                                                        end
                                                    end
                                                end
                                            end
                                        end
                                    end
                                end
                                addEvent(function()
                                    if machineOn then
                                        machineOn:transform(31724)
                                    end
                                end, 1*1000)
                            end, 2*1000)
                        end
                    end
                end, 6*1000)
            end
        end
    end
    if checagem == true then
        addEvent(startMachines, 6*1000)
    end
end

local function summonBeasts(i)
    local position = Position(randomarea)
    if i >= 1 then
        for j, position in pairs(beastPositions) do
            position:sendMagicEffect(CONST_ME_TELEPORT)
        end
        i = i - 1
        addEvent(summonBeasts, 2*1000, i)   
    elseif i == 0 then
        for j, position in pairs(beastPositions) do
            local beast = Game.createMonster("Ember Beast", position)
        end
    end
end

local function checarSala(qnt)
    math.randomseed(os.time())
    local temBoss = false
    local hpBoss
    local position = Position(33681, 32334, 15)
    local spectators = Game.getSpectators(position, false, false, 20, 20, 20, 20)
    for _, checagem in pairs(spectators) do
        if checagem:isMonster() then
            if checagem:getName():lower() == "the count of the core" then
                temBoss = true
                hpBoss = (checagem:getHealth()/checagem:getMaxHealth())*100
            end
        end
    end
    local contagemBeast = 0
    for _, checagem2 in pairs(spectators) do
        if checagem2:isMonster() then
            if checagem2:getName():lower() == "ember beast" then
                contagemBeast = contagemBeast + 1
            end
        end
    end
    if temBoss == true then
        if contagemBeast > 0 then
            for _, spectator in pairs(spectators) do
                if spectator:isMonster() then
                    if spectator:getName():lower() == "ember beast" then
                        if hpBoss < 70 then
                            qnt = qnt - 1
                            spectator:remove()
                            for _, boss in pairs(spectators) do
                                if boss:isMonster() then
                                    if boss:getName():lower() == "the count of the core" then
                                        boss:say("The count absorbs he power of the beast and becomes stronger.", TALKTYPE_ORANGE_2)
                                        boss:addHealth(math.random(0, 15000))
                                    end
                                end
                            end
                            break
                        end
                    end
                end
            end
            if temBoss == true then
                addEvent(checarSala, 60*1000, qnt)
            end
        end
    end
end

local function startWarzoneIV()
    addEvent(function()
        local monstro = Game.createMonster("The Baron From Below", Position(33648, 32303, 15))
            if monstro then
                monstro:registerEvent("theBaronFromBelow")
            end
            addEvent(sumonarLavasIV, 15*1000, 5)
            addEvent(lavaHoles, 15*1000, 1)
    end, 10*1000)
end

local function startWarzoneV()
    addEvent(function()
        local monstro = Game.createMonster("The Count Of The Core", Position(33681, 32334, 15))
            if monstro then
                monstro:registerEvent("healFireDamage")
                monstro:registerEvent("emberBeasts")
            end
        summonBeasts(5)
        addEvent(startMachines, 10*1000)
        addEvent(checarSala, 30*1000, 4)
    end, 5*1000)
end

local function startWarzoneVI()
    addEvent(function()
        local monstro = Game.createMonster("The Duke Of The Depths", Position(33712, 32303, 15))
            if monstro then
                monstro:registerEvent("healFireDamage")
            end
            addEvent(sumonarFieryHearts, 30*1000)
            addEvent(sumonarLavasVI, 15*1000, 5)
    end, 10*1000)
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if not player then
        return true
    end
    
    if not target:isItem() then
    return false
    end
    
    if target:isCreature() then
    return false
    end
    
    local warzoneVI = Position(330, 74, 11)
    local warzoneV = Position(38, 18, 13)
    local warzoneIV = Position(157, 103, 15)
    local geodeId = 30745
    local targetPosition = target:getPosition()

    if targetPosition == WarzoneIV and target:getId() == geodeId then -- Warzone 4 BOSS!!!
        if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneIV) < 30 then
            targetPosition:sendMagicEffect(CONST_ME_HITAREA)
            item:remove(1)
            if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneIV) < 0 then
                Game.setStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneIV, 0)
            end
            Game.setStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneIV, Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneIV) + 1)
            if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneIV) == 30 then
                local spectators = Game.getSpectators(targetPosition, false, true, 3, 3, 3, 3)
                for _, spectator in pairs(spectators) do
                    if spectator:isPlayer() then
                        spectator:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This crystal geode is shaking from a battle nearby.")
                    end
                end
                local stalagmites = Tile(Position(83, 187, 15)):getItemById(386)
                if stalagmites then
                    stalagmites:remove()
                    local teleport = Game.createItem(1387, 1, Position(83, 187, 15))
                    teleport:setActionId(57243)
                    addEvent(function()
                        if teleport then
                            teleport:remove(1)
                            Game.createItem(386, 1, Position(83, 187, 15))
                        end
                    end, 30*1000)
                    addEvent(clearForgotten, 30*60*1000, Position(33638, 32291, 15), Position(33675, 32313, 15), Position(33462, 32267, 15), GlobalStorage.DangerousDepths.Geodes.WarzoneIV)
                    startWarzoneIV()
                end
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The crystal geode can't carry any more crystals.")
        end
    end

    if targetPosition == WarzoneV and target:getId() == geodeId then -- Warzone 5 BOSS!!!
        if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneV) < 30 then
            targetPosition:sendMagicEffect(CONST_ME_HITAREA)
            item:remove(1)
            if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneV) < 0 then
                Game.setStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneV, 0)
            end
            Game.setStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneV, Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneV) + 1)
            if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneV) == 30 then
                local spectators = Game.getSpectators(targetPosition, false, true, 3, 3, 3, 3)
                for _, spectator in pairs(spectators) do
                    if spectator:isPlayer() then
                        spectator:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This crystal geode is shaking from a battle nearby.")
                    end
                end
                local stalagmites = Tile(Position(210, 83, 13)):getItemById(386)
                if stalagmites then
                    stalagmites:remove()
                    local teleport = Game.createItem(1387, 1, Position(210, 83, 13))
                    teleport:setActionId(57243)
                    addEvent(function()
                        if teleport then
                            teleport:remove(1)
                            Game.createItem(386, 1, Position(210, 83, 13))
                        end
                    end, 30*1000)
                    addEvent(clearForgotten, 30*60*1000, Position(33668, 32310, 15), Position(33695, 32343, 15), Position(33323, 32111, 15), GlobalStorage.DangerousDepths.Geodes.WarzoneV)
                    startWarzoneV()
                end
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The crystal geode can't carry any more crystals.")
        end
    end

    if targetPosition == WarzoneVI and target:getId() == geodeId then -- Warzone 6 BOSS!!!
        if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneVI) < 30 then
            targetPosition:sendMagicEffect(CONST_ME_HITAREA)
            item:remove(1)
            if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneVI) < 0 then
                Game.setStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneVI, 0)
            end
            Game.setStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneVI, Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneVI) + 1)
            if Game.getStorageValue(GlobalStorage.DangerousDepths.Geodes.WarzoneVI) == 30 then
                local spectators = Game.getSpectators(targetPosition, false, true, 3, 3, 3, 3)
                for _, spectator in pairs(spectators) do
                    if spectator:isPlayer() then
                        spectator:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This crystal geode is shaking from a battle nearby.")
                    end
                end
                local stalagmites = Tile(Position(236, 84, 11)):getItemById(386)
                if stalagmites then
                    stalagmites:remove()
                    local teleport = Game.createItem(1387, 1, Position(236, 84, 11))
                    teleport:setActionId(57243)
                    addEvent(function()
                        if teleport then
                            teleport:remove(1)
                            Game.createItem(386, 1, Position(236, 84, 11))
                        end
                    end, 30*1000)
                    addEvent(clearForgotten, 30*60*1000, Position(33684, 32293, 15), Position(33724, 32314, 15), Position(33275, 32318, 15), GlobalStorage.DangerousDepths.Geodes.WarzoneVI)
                    startWarzoneVI()
                end
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The crystal geode can't carry any more crystals.")
        end
    end

    return true
end
 
Top