• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Annihilator tile does not exist (Problem)

Stanos

Veteran OT User
Joined
Jun 12, 2018
Messages
584
Solutions
4
Reaction score
314
Location
Europe
Hello, so i have really really weird problem i looked into a code for like one hour and i couldn't find out whats wrong. So print said
Code:
Annihilator tile does not exist for position 552, 823, 8
which is really odd because tile pos is correct checked with rme, checked with admin look, pos is completely correct
Lua:
    [3] = {fromPos = Position(522, 823, 8), toPos = Position(577, 823, 8)},
it says that third tile is incorrect which is non-sense why third, why not first second or fourth. But maybe im blind and miss something? But i would highly doubt. Full code
Lua:
local config = {
    duration = 30, -- time till reset, in minutes
    level_req = 300, -- minimum level to do quest
    min_players = 4, -- minimum players to join quest
    lever_id = 1945, -- id of lever before pulled
    pulled_id = 1946 -- id of lever after pulled
}

local player_positions = {
    [1] = {fromPos = Position(552, 821, 8), toPos = Position(577, 821, 8)},
    [2] = {fromPos = Position(552, 822, 8), toPos = Position(577, 822, 8)},
    [3] = {fromPos = Position(522, 823, 8), toPos = Position(577, 823, 8)},
    [4] = {fromPos = Position(522, 824, 8), toPos = Position(577, 824, 8)}
}

local monsters = {
    [1] = {pos = Position(577, 819, 8), name = "Fighter Boss"},
    [2] = {pos = Position(575, 820, 8), name = "Fighter"},
    [3] = {pos = Position(579, 820, 8), name = "Fighter"},
    [4] = {pos = Position(575, 822, 8), name = "Fighter"},
    [5] = {pos = Position(579, 822, 8), name = "Fighter"},
    [6] = {pos = Position(575, 824, 8), name = "Fighter"},
    [7] = {pos = Position(579, 824, 8), name = "Fighter"}
}

function doResetAnnihilator(uid)
    local item = Item(uid)
    if not item then
        return
    end

    local monster_names = {}
    for key, value in pairs(monsters) do
        if not isInArray(monster_names, value.name) then
            monster_names[monster_names + 1] = value.name
        end
    end

    for i = 1, #monsters do
        local creatures = Tile(monsters[i].pos):getCreatures()
        for key, creature in pairs(creatures) do
            if isInArray(monster_names, creature:getName()) then
                creature:remove()
            end
        end
    end

    for i = 1, #player_positions do
        local creatures = Tile(player_positions[i].toPos):getCreatures()
        for key, creature in pairs(creatures) do
            if isInArray(monster_names, creature:getName()) then
                creature:remove()
            end
        end
    end

    item:transform(config.lever_id)
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item.itemid ~= config.lever_id then
        return player:sendCancelMessage("The quest is currently in use. Cooldown is " .. config.duration .. " minutes.")
    end

    local participants, pull_player = {}, false
    for i = 1, #player_positions do
        local fromPos = player_positions[i].fromPos
        local tile = Tile(fromPos)
        if not tile then
            print(">> ERROR: Annihilator tile does not exist for Position(" .. fromPos.x .. ", " .. fromPos.y .. ", " .. fromPos.z .. ").")
            return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.")
        end

        local creature = tile:getBottomCreature()
        if creature then
            local participant = creature:getPlayer()
            if not participant then
                return player:sendCancelMessage(participant:getName() .. " is not a valid participant.")
            end

            if participant:getLevel() < config.level_req then
                return player:sendCancelMessage(participant:getName() .. " is not the required level.")
            end

            if participant.uid == player.uid then
                pull_player = true
            end

            participants[#participants + 1] = {participant = participant, toPos = player_positions[i].toPos}
        end
    end

    if #participants < config.min_players then
        return player:sendCancelMessage("You do not have the required amount of participants.")
    end

    if not pull_player then
        return player:sendCancelMessage("You are in the wrong position.")
    end

    for i = 1, #monsters do
        local toPos = monsters[i].pos
        if not Tile(toPos) then
            print(">> ERROR: Annihilator tile does not exist for Position(" .. toPos.x .. ", " .. toPos.y .. ", " .. toPos.z .. ").")
            return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.")
        end
        Game.createMonster(monsters[i].name, monsters[i].pos, false, true)
    end

    for i = 1, #participants do
        participants[i].participant:teleportTo(participants[i].toPos)
        participants[i].toPos:sendMagicEffect(CONST_ME_TELEPORT)
    end

    item:transform(config.pulled_id)
    addEvent(doResetAnnihilator, config.duration * 60 * 1000, item.uid)
    return true
end
 
Solution
You show this error, 552, 823, 8:
Hello, so i have really really weird problem i looked into a code for like one hour and i couldn't find out whats wrong. So print said
Code:
Annihilator tile does not exist for position 552, 823, 8
This position 552, 823, 8 is not written in your script anywhere.

Also, your positions change from 552 to 522, read code comments here to help you understand what I'm saying:
Lua:
local player_positions = {
    [1] = {fromPos = Position(552, 821, 8), toPos = Position(577, 821, 8)}, -- fromPos.x = 552
    [2] = {fromPos = Position(552, 822, 8), toPos = Position(577, 822, 8)}, -- fromPos.x = 552
    [3] = {fromPos = Position(522, 823, 8), toPos = Position(577, 823, 8)}, -- fromPos.x = 522??
    [4] =...
Hello, so i have really really weird problem i looked into a code for like one hour and i couldn't find out whats wrong. So print said
Code:
Annihilator tile does not exist for position 552, 823, 8
which is really odd because tile pos is correct checked with rme, checked with admin look, pos is completely correct
Lua:
    [3] = {fromPos = Position(522, 823, 8), toPos = Position(577, 823, 8)},
it says that third tile is incorrect which is non-sense why third, why not first second or fourth. But maybe im blind and miss something? But i would highly doubt. Full code
Lua:
local config = {
    duration = 30, -- time till reset, in minutes
    level_req = 300, -- minimum level to do quest
    min_players = 4, -- minimum players to join quest
    lever_id = 1945, -- id of lever before pulled
    pulled_id = 1946 -- id of lever after pulled
}

local player_positions = {
    [1] = {fromPos = Position(552, 821, 8), toPos = Position(577, 821, 8)},
    [2] = {fromPos = Position(552, 822, 8), toPos = Position(577, 822, 8)},
    [3] = {fromPos = Position(522, 823, 8), toPos = Position(577, 823, 8)},
    [4] = {fromPos = Position(522, 824, 8), toPos = Position(577, 824, 8)}
}

local monsters = {
    [1] = {pos = Position(577, 819, 8), name = "Fighter Boss"},
    [2] = {pos = Position(575, 820, 8), name = "Fighter"},
    [3] = {pos = Position(579, 820, 8), name = "Fighter"},
    [4] = {pos = Position(575, 822, 8), name = "Fighter"},
    [5] = {pos = Position(579, 822, 8), name = "Fighter"},
    [6] = {pos = Position(575, 824, 8), name = "Fighter"},
    [7] = {pos = Position(579, 824, 8), name = "Fighter"}
}

function doResetAnnihilator(uid)
    local item = Item(uid)
    if not item then
        return
    end

    local monster_names = {}
    for key, value in pairs(monsters) do
        if not isInArray(monster_names, value.name) then
            monster_names[monster_names + 1] = value.name
        end
    end

    for i = 1, #monsters do
        local creatures = Tile(monsters[i].pos):getCreatures()
        for key, creature in pairs(creatures) do
            if isInArray(monster_names, creature:getName()) then
                creature:remove()
            end
        end
    end

    for i = 1, #player_positions do
        local creatures = Tile(player_positions[i].toPos):getCreatures()
        for key, creature in pairs(creatures) do
            if isInArray(monster_names, creature:getName()) then
                creature:remove()
            end
        end
    end

    item:transform(config.lever_id)
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item.itemid ~= config.lever_id then
        return player:sendCancelMessage("The quest is currently in use. Cooldown is " .. config.duration .. " minutes.")
    end

    local participants, pull_player = {}, false
    for i = 1, #player_positions do
        local fromPos = player_positions[i].fromPos
        local tile = Tile(fromPos)
        if not tile then
            print(">> ERROR: Annihilator tile does not exist for Position(" .. fromPos.x .. ", " .. fromPos.y .. ", " .. fromPos.z .. ").")
            return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.")
        end

        local creature = tile:getBottomCreature()
        if creature then
            local participant = creature:getPlayer()
            if not participant then
                return player:sendCancelMessage(participant:getName() .. " is not a valid participant.")
            end

            if participant:getLevel() < config.level_req then
                return player:sendCancelMessage(participant:getName() .. " is not the required level.")
            end

            if participant.uid == player.uid then
                pull_player = true
            end

            participants[#participants + 1] = {participant = participant, toPos = player_positions[i].toPos}
        end
    end

    if #participants < config.min_players then
        return player:sendCancelMessage("You do not have the required amount of participants.")
    end

    if not pull_player then
        return player:sendCancelMessage("You are in the wrong position.")
    end

    for i = 1, #monsters do
        local toPos = monsters[i].pos
        if not Tile(toPos) then
            print(">> ERROR: Annihilator tile does not exist for Position(" .. toPos.x .. ", " .. toPos.y .. ", " .. toPos.z .. ").")
            return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.")
        end
        Game.createMonster(monsters[i].name, monsters[i].pos, false, true)
    end

    for i = 1, #participants do
        participants[i].participant:teleportTo(participants[i].toPos)
        participants[i].toPos:sendMagicEffect(CONST_ME_TELEPORT)
    end

    item:transform(config.pulled_id)
    addEvent(doResetAnnihilator, config.duration * 60 * 1000, item.uid)
    return true
end
There's something about that position that's prohibiting it from being registered as a tile. Are you sure you can walk on it?
 
There's something about that position that's prohibiting it from being registered as a tile. Are you sure you can walk on it?
Yes im completely sure, this tile is used on every other ani missions which works perfectly. Same as 1,2,4 which is same tiles, i though same that maybe there is something above that tile and it makes it not register as a tile but when you do a "look" on that tile it says cord (which is same) 522.823.8, it says that its a tile. So i dont know there is no explanation whats wrong with it, but just to make sure i will tell my mapper to redo it once again.
Edit:Redid map ant still same
 
Last edited:
Yes im completely sure, this tile is used on every other ani missions which works perfectly. Same as 1,2,4 which is same tiles, i though same that maybe there is something above that tile and it makes it not register as a tile but when you do a "look" on that tile it says cord (which is same) 522.823.8, it says that its a tile. So i dont know there is no explanation whats wrong with it, but just to make sure i will tell my mapper to redo it once again.
Edit:Redid map ant still same
Well you seem to have some inconsistencies with your script. You claim that Position(552, 823, 8) is where the error applies but there is no where in your script that shows that position. Also if it is set up just like original annihilator then why do your player_positions jump from x axis = 552 at index 2 then x axis = 522 at index 3?
 
Well you seem to have some inconsistencies with your script. You claim that Position(552, 823, 8) is where the error applies but there is no where in your script that shows that position. Also if it is set up just like original annihilator then why do your player_positions jump from x axis = 552 at index 2 then x axis = 522 at index 3?
It shows, what do you mean in local you can see
Lua:
[3] = {fromPos = Position(522, 823, 8), toPos = Position(577, 823, 8)},
frompos is 522,823,8 that where the error occurs. Because its in the same line
35561
 
You show this error, 552, 823, 8:
Hello, so i have really really weird problem i looked into a code for like one hour and i couldn't find out whats wrong. So print said
Code:
Annihilator tile does not exist for position 552, 823, 8
This position 552, 823, 8 is not written in your script anywhere.

Also, your positions change from 552 to 522, read code comments here to help you understand what I'm saying:
Lua:
local player_positions = {
    [1] = {fromPos = Position(552, 821, 8), toPos = Position(577, 821, 8)}, -- fromPos.x = 552
    [2] = {fromPos = Position(552, 822, 8), toPos = Position(577, 822, 8)}, -- fromPos.x = 552
    [3] = {fromPos = Position(522, 823, 8), toPos = Position(577, 823, 8)}, -- fromPos.x = 522??
    [4] = {fromPos = Position(522, 824, 8), toPos = Position(577, 824, 8)}  -- fromPos.x = 522??
}
 
Solution
You show this error, 552, 823, 8:

This position 552, 823, 8 is not written in your script anywhere.

Also, your positions change from 552 to 522, read code comments here to help you understand what I'm saying:
Lua:
local player_positions = {
    [1] = {fromPos = Position(552, 821, 8), toPos = Position(577, 821, 8)}, -- fromPos.x = 552
    [2] = {fromPos = Position(552, 822, 8), toPos = Position(577, 822, 8)}, -- fromPos.x = 552
    [3] = {fromPos = Position(522, 823, 8), toPos = Position(577, 823, 8)}, -- fromPos.x = 522??
    [4] = {fromPos = Position(522, 824, 8), toPos = Position(577, 824, 8)}  -- fromPos.x = 522??
}
No fucking way am i that blind :D I will test it once again and let you know if its still fucked up.
Edit yea im blind
 
Last edited:
Back
Top