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

One lever and Three-monster-wave!

breadmaker

New Member
Joined
Jul 16, 2010
Messages
160
Reaction score
3
Hello.
I need one simple script like Annihilator on RL tibia but more advanced.

- When team standing on 4 squares like in Annihilator room and pull down the lever first wave of monsters coming into the room
They must kill all monsters. After the kill they go stand on squares again and pull the lever again
- Theres SECOND wave of monster appear they must kill them , after kill. They must regroup again by standing on 4 squares
They pull lever and the Last (third) wave of monster appear
- They must kill last wave and after kill they must stand on squares, if they standing and pull lever down THEY teleported to reward room.

What is going on after teammate die ?
- They must start again (i have on map in this room [wave room] teleport if one person die other must leave room).
 
use the annihilator script...
PHP:
function onUse(cid, item, frompos, item2, topos)
if item.uid == 5000 then
if item.itemid == 1946 then

player1pos = {x=1068, y=1158, z=15, stackpos=253}
player1 = getThingfromPos(player1pos)

player2pos = {x=1067, y=1158, z=15, stackpos=253}
player2 = getThingfromPos(player2pos)

player3pos = {x=1066, y=1158, z=15, stackpos=253}
player3 = getThingfromPos(player3pos)

player4pos = {x=1065, y=1158, z=15, stackpos=253}
player4 = getThingfromPos(player4pos)


if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

player1level = getPlayerLevel(player1.uid)
player2level = getPlayerLevel(player2.uid)
player3level = getPlayerLevel(player3.uid)
player4level = getPlayerLevel(player4.uid)

questlevel = 100

if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then

	demon1pos = {x=1086, y=1159, z=15}
	demon2pos = {x=1087, y=1155, z=15}
	demon3pos = {x=1088, y=1159, z=15}
	demon4pos = {x=1089, y=1155, z=15}
	demon5pos = {x=1090, y=1157, z=15}
	demon6pos = {x=1091, y=1157, z=15}

	doSummonCreature("Demon", demon1pos)
	doSummonCreature("Demon", demon2pos)
	doSummonCreature("Demon", demon3pos)
	doSummonCreature("Demon", demon4pos)
	doSummonCreature("Demon", demon5pos)
	doSummonCreature("Demon", demon6pos)

	nplayer1pos = {x=1089, y=1157, z=15}
	nplayer2pos = {x=1088, y=1157, z=15}
	nplayer3pos = {x=1087, y=1157, z=15}
	nplayer4pos = {x=1086, y=1157, z=15}

	doSendMagicEffect(player1pos,2)
	doSendMagicEffect(player2pos,2)
	doSendMagicEffect(player3pos,2)
	doSendMagicEffect(player4pos,2)

	doTeleportThing(player1.uid,nplayer1pos)
	doTeleportThing(player2.uid,nplayer2pos)
	doTeleportThing(player3.uid,nplayer3pos)
	doTeleportThing(player4.uid,nplayer4pos)

	doSendMagicEffect(nplayer1pos,10)
	doSendMagicEffect(nplayer2pos,10)
	doSendMagicEffect(nplayer3pos,10)
	doSendMagicEffect(nplayer4pos,10)

	doTransformItem(item.uid,1945)

	else
	doPlayerSendCancel(cid,"All players must have level 100 to enter.")
	end
	else
	doPlayerSendCancel(cid,"You need 4 players in your team.")
end
end
if item.itemid == 1945 then

starting={x=1061, y=1158, z=15, stackpos=253}
checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}
ending={x=1102, y=1157, z=15, stackpos=253}
players=0
totalmonsters=0
monster = {}
repeat
creature= getThingfromPos(checking)
if creature.itemid > 0 then
if getPlayerAccess(creature.uid) == 0 then
players=players+1
end
if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then
totalmonsters=totalmonsters+1
monster[totalmonsters]=creature.uid
	end
end
checking.x=checking.x+1
if checking.x>ending.x then
checking.x=starting.x
checking.y=checking.y+1
end
until checking.y>ending.y
if players==0 then
trash= {x=1109, y=1154, z=15}
current=0
repeat
current=current+1
doTeleportThing(monster[current],trash)
until current>=totalmonsters
doTransformItem(item.uid,1946)
end


end
end
if item.uid == 5001 then
queststatus = getPlayerStorageValue(cid,5001)
if queststatus == -1 then doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a demon armor.")
doPlayerAddItem(cid,2494,1)
setPlayerStorageValue(cid,5001,1)
elsedoPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
end
if item.uid == 5002 then
queststatus = getPlayerStorageValue(cid,5001)
if queststatus ~= 1 then doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a magic sword.")
doPlayerAddItem(cid,2400,1)
setPlayerStorageValue(cid,5002,1)
elsedoPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
end
if item.uid == 5005 then
queststatus = getPlayerStorageValue(cid,5001)
if queststatus ~= 1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a stonecutter axe.")
doPlayerAddItem(cid,2431,1)
setPlayerStorageValue(cid,5005,1)
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
end
return 1
end
 
Untested. If you have problems, try replacing:

"getCreatureStorage" with "getPlayerStorageValue" and "doCreatureSetStorage" to "setPlayerStorageValue".

LUA:
local config = {
	daily = "no",
	level = 100,
	storage = {
		30015, 30016
	},
	stand = {
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7}
	},
	destination = {
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7}
	},
	monsters = { -- where they go
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7},
		{x = 100, y = 100, z = 7}
	}
}

config.daily = getBooleanFromString(config.daily)
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(item.itemid == 1946) then
		if(config.daily) then
			doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
		else
			doTransformItem(item.uid, item.itemid - 1)
		end
 
		return true
	end
 
	if(item.itemid ~= 1945) then
		return true
	end
 
	local players = {}
	local monster = {}
	for _, position in ipairs(config.monsters) do
		local thing = getTopCreature(position).uid
		if thing > 0 then
			doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
			return true
		end
	end
	
	for _, position in ipairs(config.stand) do
		local pid = getTopCreature(position).uid
		if(pid == 0 and not isPlayer(pid) or getCreatureStorage(pid, config.storage[1]) > 0 or getPlayerLevel(pid) < config.level) then
			doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
			return true
		end
 
		table.insert(players, pid)
	end
 
	for i, pid in ipairs(players) do
		doSendMagicEffect(config.stand[i], CONST_ME_POFF)
		doTeleportThing(pid, config.destination[i], false)
		doCreatureSay(pid, "FIGHT!", TALKTYPE_MONSTER)
		doSendMagicEffect(config.destination[i], CONST_ME_ENERGYAREA)
	end
 
	for _, v in ipairs(monster) do
		if getCreatureStorage(cid, storage[2]) < 0 then
			doSummonCreature("Demon", config.monsters[v], false, true, false)
			doCreatureSetStorage(cid, storage[2], 1)
		elseif getCreatureStorage(cid, storage[2]) > 0 then
			doSummonCreature("Orshabaal", config.monsters[v], false, true, false)
			doCreatureSetStorage(cid, storage[2], 2)
		elseif getCreatureStorage(cid, storage[2]) > 1 then
			doSummonCreature("Morgaroth", config.monsters[v], false, true, false)
			doCreatureSetStorage(cid, storage[2], 3)
			doCreatureSetStorage(cid, storage[1], 1)
		end
 
		doSendMagicEffect(config.monsters[v], CONST_ME_ENERGYAREA)
	end
	
	
	doTransformItem(item.uid, item.itemid + 1)
	return true
end

Note, this is an edited Annihilator script. It will not teleport player's to a reward room. Just use the Annihilator, copy & paste the quest in the map editor.
 
Last edited:
Back
Top