• 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!

Annih and Parchament room

Sagitta

Kebab
Joined
Sep 19, 2007
Messages
105
Reaction score
0
Location
Norway
Greetings.

I'm having problems with my Annilathor lever. It's just poffing at the players and getting a error in my TFS 2.6.0. :eek:nuse error

I request a script that summons demons aswell


~~

Parchament room script is aslo wanted.
WHen you open or move the parchament you will get 100k and 4 demons will be summoned around you


Thanks in advance
 
i've this script from ispiro:
Code:
-- Credits to GrizZm0 for most of the script
-- Credits to Tworn for the cleanArea(), a bit modified by Ispiro
-- Credits to Ispiro for a more easier script to configurate and easier to read.

local starting= {x = XXX, y = XXX, z = X} -- edit this to the top left sqm of ur annhilator room
local ending= {x = XXX, y = XXX, z = X} -- edit this to the bottom right sqm of ur annhilator room

local playerPos = { -- oldPositions; positions of players before they get teleported.
    {x = XXX, y = XXX, z = X},
    {x = XXX, y = XXX, z = X},
    {x = XXX, y = XXX, z = X},
    {x = XXX, y = XXX, z = X}
}

local newPlayerPos = { -- Positions for where players should be teleported, make sure it's in the same order as oldPositions
    {x = XXX, y = XXX, z = X},
    {x = XXX, y = XXX, z = X},
    {x = XXX, y = XXX, z = X},
    {x = XXX, y = XXX, z = X}
}
        
local creaturePos = { -- Name and position of monsters to summon.
    {"Demon", {x = XXX, y = XXX, z = X}},
    {"Demon", {x = XXX, y = XXX, z = X}},
    {"Demon", {x = XXX, y = XXX, z = X}},
    {"Demon", {x = XXX, y = XXX, z = X}},
    {"Demon", {x = XXX, y = XXX, z = X}},
    {"Demon", {x = XXX, y = XXX, z = X}}
}

if(#playerPos ~= #newPlayerPos) then
    error("Annhilator has not been properly configured.")
end

--- Preferably, do not edit anything below this line unless you know exactly what you are doing.
local player = {}

function onUse(cid, item, frompos, item2, topos)
    if(item.uid == 5000) then --- change to different item.uid according to ur mapeditor
        if(item.itemid == 1945) then
            for currentPlayer = 1, table.getn(playerPos) do -- add player id's to table
                playerPos[currentPlayer].stackpos = 253
                player[currentPlayer] = getThingfromPos(playerPos[currentPlayer]).uid
            end
            if(checkPlayers()) then
                local ret, player = checkLevel(100)
                if(ret) then
                    local ret, player = checkStorage(100)
                    if(ret) then
                        summonCreatures(creaturePos)
                        teleportPlayers(2, 10) -- 2 stands for the effect on old pos, 10 for the effect on new pos.
                        doTransformItem(item.uid, 1946)
                    else
                        doPlayerSendCancel(cid, getPlayerName(player) .. " has already done this quest.")
                    end
                else
                    doPlayerSendCancel(cid, getPlayerName(player) .. " is too low.")
                end    
            else
                doPlayerSendCancel(cid, "You need " .. #playerPos .. " players to do this quest.")
            end    
        elseif(item.itemid == 1946) then -- preferably, to be the id of the lever added by mapeditor.
            if(cleanArea()) then
                doTransformItem(item.uid, 1945)
            else
                return FALSE
            end    
        end
    --- Chests.
    elseif(item.uid == 5001) then -- demon armor
        questChestPrize(cid, 2494, 1, 100)
    elseif(item.uid == 5002) then -- magic sword
        questChestPrize(cid, 2400, 1, 100)
    elseif(item.uid == 5003) then -- stonecutter's axe
        questChestPrize(cid, 2431, 1, 100)
    elseif(item.uid == 5004) then -- thunder hammer
        questChestPrize(cid, 2421, 1, 100)                
    end
    return TRUE
end

function checkLevel(minLevel)
    for currentPlayer = 1, table.getn(player) do
        local playerLevel = getPlayerLevel(player[currentPlayer])
        if(playerLevel < minLevel) then
            if(getPlayerAccess(player[currentPlayer]) == 0) then
                return false, player[currentPlayer]
            end    
        end
    end    
    return true
end

function checkStorage(storageValue)
    for currentPlayer = 1, table.getn(player) do 
        local questStatus = getPlayerStorageValue(player[currentPlayer], storageValue)
        if(questStatus == TRUE) then
            if(getPlayerAccess(player[currentPlayer]) == 0) then
                return false, player[currentPlayer]
            end
        end
    end    
    return true
end

function cleanArea()
    local checking= {x = starting.x, y = starting.y, z = starting.z, stackpos = 253}
    local monster = {}
    while(checking.y <= ending.y) do
        local creature = getThingfromPos(checking)
        if(isCreature(creature.uid) == TRUE) then
            if(isPlayer(creature.uid) == TRUE) then
                return false
            else
                table.insert(monster, creature.uid)
            end
        end
        if(checking.x == ending.x) then
            checking.x = starting.x
            checking.y = checking.y + 1
        end
        checking.x = checking.x + 1
    end
    for i, c in pairs(monster) do 
        doRemoveCreature(c)
    end    
    return true
end

function summonCreatures(parameters)
    for currentMonster = 1, table.getn(parameters) do
        local monster = parameters[currentMonster]
        doSummonCreature(monster[1], monster[2])
    end
end

function teleportPlayers(effect1, effect2)
    for currentPlayer = 1, table.getn(player) do
        doTeleportThing(player[currentPlayer], newPlayerPos[currentPlayer])
        doSendMagicEffect(playerPos[currentPlayer], effect1) -- send animation after teleport, players teleported won't see it anyways
        doSendMagicEffect(newPlayerPos[currentPlayer], effect2)
    end    
    return 1    
end

function checkPlayers()
    for currentPlayer = 1, table.getn(player) do
        local curPlayer = player[currentPlayer]
        if(isPlayer(curPlayer) ~= TRUE) then
            return false
        end
    end    
    return true
end

function questChestPrize(cid, prizeID, count, storagevalue)
    -- Made By Ispiro
    local doneQuest = getPlayerStorageValue(cid, storagevalue)
    if(doneQuest == TRUE) then
        doPlayerSendTextMessage(cid, 22, "It is empty.")
        return FALSE
    end
    doPlayerSendTextMessage(cid, 22,"You have found a ".. getItemName(prizeID) ..".")    
    if(isItemStackable(prizeID) == TRUE) then
        while count > 100 do
            count = count - 100
            doPlayerAddItem(cid, prizeID, 100)
        end    
    else
        while count > 1 do
            count = count - 1
            doPlayerAddItem(cid, prizeID, 1)
        end
    end    
    doPlayerAddItem(cid, prizeID, count) -- add left overs, always less than 100.
    setPlayerStorageValue(cid, storagevalue, TRUE)
    return TRUE
end
This works perfectly.
 
Back
Top