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

Lua Yalahar Quest (tp doesn't get removed)

Keram

Member
Joined
Jan 8, 2012
Messages
491
Reaction score
12
Location
DUBLIN
Hello, I have this script for yalahar quest:

Lua:
-- Config #1 --  
local BlindField = {x=32781, y=31157, z=10, stackpos=1} 
-- end --  

function mapArea(fromPos, toPos, stack) 
        -- Area iterator by Colandus. 
        local pos = {x=fromPos.x, y=fromPos.y-1, z=fromPos.z} 
        return function() 
                if (pos.y < toPos.y) then 
                        pos.y = pos.y+1 
                elseif (pos.x <= toPos.x) then 
                        pos.y = fromPos.y 
                        pos.x = pos.x+1 
                else 
                        pos.x = fromPos.x 
                        pos.y = fromPos.y 
                        pos.z = pos.z+1 
                end 
                if (pos.x <= toPos.x and pos.y <= toPos.y or pos.z < toPos.z) then 
                        if (stack == nil) then 
                                return pos 
                        else 
                                pos.stackpos = stack 
                                --return pos, getTileThingByPos(pos) 
                                return pos, getThingfromPos(pos) 
                        end 
                end 
        end 
end 


function getMonstersfromArea(fromPos, toPos) 
        local monsters = {}     
        for _, thing in mapArea(fromPos, toPos, 253) do 
                if isMonster(thing.uid) == TRUE then 
                        table.insert(monsters, thing.uid) 
            end 

        end 
          local bfm = getThingfromPos(BlindField) 
            if isMonster(bfm.uid) == TRUE then 
            table.insert(monsters, bfm.uid) 
            end 
        return monsters 
end 


function onUse(cid, item, fromPosition, itemEx, toPosition) 
	local topLeft = {x=32774, y=31156, z=10} 
	local buttomRight = {x=32794, y=31178, z=10} 
	local monsters = getMonstersfromArea(topLeft, buttomRight) 
	local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
	local tp = {x=32783, y=31175, z=10} 
	local glo = {x=32783, y=31166, z=10} 	


	local function FirstWave() 
		doSummonCreature("Rift Worm", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 5,z=glo.z}) 
		doSummonCreature("Azerus", {x=glo.x,y=glo.y - 5,z=glo.z}) 
	end 
	local function FifthWave() 
		doSummonCreature("Rift Worm", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 

	local function SecondWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		
		doSummonCreature("Azerus1", {x=glo.x,y=glo.y - 5,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 
	local function SixthWave() 
		doSummonCreature("Rift Brood", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end
	
	local function ThirdWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 

		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		doSummonCreature("Azerus2", {x= glo.x - 5,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function ThirdWave1() --  with 2s delay 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 

	local function FourthWave() 
		doSummonCreature("War Golem", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function SevenWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		
		doSummonCreature("Azerus3", {x= glo.x - 5,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function Glllobe()
		local monst = getMonstersfromArea(topLeft, buttomRight) 
		for i = 1, #monst do
			doRemoveCreature(monst[i])

		end

		local item1 = getTileItemById(glo, 9767)
		doItemSetAttribute(item1.uid, "aid", 58261)
	end

	local function createWall(p)
		local janek = doCreateItem(1387,1,{x=32784, y=31177, z=9})
		doItemSetAttribute(janek, "aid", 9105)
	end

	local function createWalll(i)
		local ela = doCreateItem(1387,1,{x=32783, y=31175, z=10})
		doItemSetAttribute(ela, "aid", 9106)
	end
	
	local wall0 = {x=32784, y=31177, z=9, stackpos=1}
	local getwall0 = getThingfromPos(wall0)
	local wall1 = {x=32783, y=31175, z=10, stackpos=1}
	local getwall1 = getThingfromPos(wall1)
	local monsters = getMonstersfromArea(topLeft, buttomRight) 
	local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
	local tele_chk = getTileItemById(tp, 1387)
	if item.actionid == 58261 then
		doItemSetAttribute(item.uid, "aid", 58263)
	end

	if tele_chk.uid > 0 then 
		doRemoveItem(getTileItemById(tp,1387).uid) 
		doRemoveItem(getwall0.uid,1)
		addEvent(FirstWave, 0) 
		addEvent(FifthWave, 2000)
		addEvent(SecondWave, 4000) 
		addEvent(SixthWave, 6000) 
		addEvent(ThirdWave, 8000) 
		addEvent(ThirdWave1, 10000) 
		addEvent(FourthWave, 12000) 
		addEvent(SevenWave, 14000) 
		addEvent(Glllobe, 160000) 
		p = {wallid = getwall0.itemid}
		addEvent(createWall, 40*1000, p)
		i = {wallid = getwall1.itemid}
		addEvent(createWalll, 40*1000, i)
	end
	
	if item.actionid == 58263 then 
		doCreatureSay(cid, "You have to wait some time before this globe will charge.", TALKTYPE_ORANGE_1)
	end
	return TRUE 
end

but the thing is that at the end, the teleport which was created after azerus got killed doesn't get removed.... so people can go into it all the time because it is always there... :/

I tried to add a doRemoveItemById function in few different ways.. i tried to addEvent also... but it didn't work for me - i probably did something wrong :(

could someone please add this function to this script? I would appreciate it very much :)

thank you :)
 
Last edited:
Use lua tags, will be easier to read..

Lua:
-- Config #1 --   
local BlindField = {x=32781, y=31157, z=10, stackpos=1}  
-- end --   

function mapArea(fromPos, toPos, stack)  
        -- Area iterator by Colandus.  
        local pos = {x=fromPos.x, y=fromPos.y-1, z=fromPos.z}  
        return function()  
                if (pos.y < toPos.y) then  
                        pos.y = pos.y+1  
                elseif (pos.x <= toPos.x) then  
                        pos.y = fromPos.y  
                        pos.x = pos.x+1  
                else  
                        pos.x = fromPos.x  
                        pos.y = fromPos.y  
                        pos.z = pos.z+1  
                end  
                if (pos.x <= toPos.x and pos.y <= toPos.y or pos.z < toPos.z) then  
                        if (stack == nil) then  
                                return pos  
                        else  
                                pos.stackpos = stack  
                                --return pos, getTileThingByPos(pos)  
                                return pos, getThingfromPos(pos)  
                        end  
                end  
        end  
end  


function getMonstersfromArea(fromPos, toPos)  
        local monsters = {}      
        for _, thing in mapArea(fromPos, toPos, 253) do  
                if isMonster(thing.uid) == TRUE then  
                        table.insert(monsters, thing.uid)  
            end  

        end  
          local bfm = getThingfromPos(BlindField)  
            if isMonster(bfm.uid) == TRUE then  
            table.insert(monsters, bfm.uid)  
            end  
        return monsters  
end  


function onUse(cid, item, fromPosition, itemEx, toPosition)  
    local topLeft = {x=32774, y=31156, z=10}  
    local buttomRight = {x=32794, y=31178, z=10}  
    local monsters = getMonstersfromArea(topLeft, buttomRight)  
    local monsters1 = getMonstersfromArea(topLeft, buttomRight)  
    local tp = {x=32783, y=31175, z=10}  
    local glo = {x=32783, y=31166, z=10}      


    local function FirstWave()  
        doSummonCreature("Rift Worm", {x= glo.x - 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Worm", {x= glo.x + 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 4,z=glo.z})  
        doSummonCreature("Rift Worm", {x=glo.x,y=glo.y - 4,z=glo.z})  
        doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 5,z=glo.z})  
        doSummonCreature("Azerus", {x=glo.x,y=glo.y - 5,z=glo.z})  
    end  
    local function FifthWave()  
        doSummonCreature("Rift Worm", {x= glo.x - 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Worm", {x= glo.x + 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 4,z=glo.z})  
        doSummonCreature("Rift Worm", {x=glo.x,y=glo.y - 4,z=glo.z})  
        doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 5,z=glo.z})  
    end  

    local function SecondWave()  
        local monsters1 = getMonstersfromArea(topLeft, buttomRight)  
        for _, monster in pairs(monsters1) do  
            if getCreatureName(monster) == "Azerus" then  
                doRemoveCreature(monster)  
            end  
        end  
         
        doSummonCreature("Azerus1", {x=glo.x,y=glo.y - 5,z=glo.z})  
        doSummonCreature("Rift Brood", {x= glo.x - 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Brood", {x= glo.x + 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 4,z=glo.z})  
        doSummonCreature("Rift Brood", {x=glo.x,y=glo.y - 4,z=glo.z})  
        doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 5,z=glo.z})  
    end  
    local function SixthWave()  
        doSummonCreature("Rift Brood", {x= glo.x - 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Brood", {x= glo.x + 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 4,z=glo.z})  
        doSummonCreature("Rift Brood", {x=glo.x,y=glo.y - 4,z=glo.z})  
        doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 5,z=glo.z})  
    end 
     
    local function ThirdWave()  
        local monsters1 = getMonstersfromArea(topLeft, buttomRight)  

        for _, monster in pairs(monsters1) do  
            if getCreatureName(monster) == "Azerus" then  
                doRemoveCreature(monster)  
            end  
        end  
        doSummonCreature("Azerus2", {x= glo.x - 5,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Scythe", {x= glo.x - 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Scythe", {x= glo.x + 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Scythe", {x= glo.x + 4,y=glo.y,z=glo.z})  
        doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 4,z=glo.z})  
    end  

    local function ThirdWave1() --  with 2s delay  
        doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 4,z=glo.z})  
        doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y - 4,z=glo.z})  
        doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 5,z=glo.z})  
    end  

    local function FourthWave()  
        doSummonCreature("War Golem", {x= glo.x - 4,y=glo.y,z=glo.z})  
        doSummonCreature("War Golem", {x= glo.x + 4,y=glo.y,z=glo.z})  
        doSummonCreature("War Golem", {x=glo.x,y=glo.y - 4,z=glo.z})  
        doSummonCreature("War Golem", {x=glo.x,y=glo.y + 4,z=glo.z})  
    end  

    local function SevenWave()  
        local monsters1 = getMonstersfromArea(topLeft, buttomRight)  
        for _, monster in pairs(monsters1) do  
            if getCreatureName(monster) == "Azerus" then  
                doRemoveCreature(monster)  
            end  
        end  
         
        doSummonCreature("Azerus3", {x= glo.x - 5,y=glo.y,z=glo.z})  
        doSummonCreature("War Golem", {x= glo.x - 4,y=glo.y,z=glo.z})  
        doSummonCreature("War Golem", {x= glo.x + 4,y=glo.y,z=glo.z})  
        doSummonCreature("War Golem", {x=glo.x,y=glo.y - 4,z=glo.z})  
        doSummonCreature("War Golem", {x=glo.x,y=glo.y + 4,z=glo.z})  
    end  

    local function Glllobe() 
        local monst = getMonstersfromArea(topLeft, buttomRight)  
        for i = 1, #monst do 
            doRemoveCreature(monst[i]) 

        end 

        local item1 = getTileItemById(glo, 9767) 
        doItemSetAttribute(item1.uid, "aid", 58261) 
    end 

    local function createWall(p) 
        local janek = doCreateItem(1387,1,{x=32784, y=31177, z=9}) 
        doItemSetAttribute(janek, "aid", 9105) 
    end 

    local function createWalll(i) 
        local ela = doCreateItem(1387,1,{x=32783, y=31175, z=10}) 
        doItemSetAttribute(ela, "aid", 9106) 
    end 
     
    local wall0 = {x=32784, y=31177, z=9, stackpos=1} 
    local getwall0 = getThingfromPos(wall0) 
    local wall1 = {x=32783, y=31175, z=10, stackpos=1} 
    local getwall1 = getThingfromPos(wall1) 
    local monsters = getMonstersfromArea(topLeft, buttomRight)  
    local monsters1 = getMonstersfromArea(topLeft, buttomRight)  
    local tele_chk = getTileItemById(tp, 1387) 
    if item.actionid == 58261 then 
        doItemSetAttribute(item.uid, "aid", 58263) 
    end 

    if tele_chk.uid > 0 then  
        doRemoveItem(getTileItemById(tp,1387).uid)  
        doRemoveItem(getwall0.uid,1) 
        addEvent(FirstWave, 0)  
        addEvent(FifthWave, 2000) 
        addEvent(SecondWave, 4000)  
        addEvent(SixthWave, 6000)  
        addEvent(ThirdWave, 8000)  
        addEvent(ThirdWave1, 10000)  
        addEvent(FourthWave, 12000)  
        addEvent(SevenWave, 14000)  
        addEvent(Glllobe, 160000)  
        p = {wallid = getwall0.itemid} 
        addEvent(createWall, 40*1000, p) 
        i = {wallid = getwall1.itemid} 
        addEvent(createWalll, 40*1000, i) 
    end 
     
    if item.actionid == 58263 then  
        doCreatureSay(cid, "You have to wait some time before this globe will charge.", TALKTYPE_ORANGE_1) 
    end 
    return TRUE  
end
 
Back
Top