local starting= {x = [COLOR="Red"]xxx[/COLOR], y = [COLOR="Red"]yyy[/COLOR], z = [COLOR="Red"]zz[/COLOR]} -- edit this to the top left sqm of ur annhilator room
local ending= {x = [COLOR="Red"]xxx[/COLOR], y = [COLOR="Red"]yyy[/COLOR], z = [COLOR="Red"]zz[/COLOR]} -- edit this to the bottom right sqm of ur annhilator room
local playerPos = { -- oldPositions; positions of players before he get teleported.
{x = [COLOR="Red"]xxx[/COLOR], y = [COLOR="Red"]yyy[/COLOR], z = [COLOR="Red"]zz[/COLOR]}}
local newPlayerPos = { -- Positions for where players should be teleported, make sure it's in the same order as oldPositions
{x = xxx, y = yyy, z = zz}}
local creaturePos = { -- Name and position of monsters to summon.
{"Demon", {x = [COLOR="Red"]xxx[/COLOR], y = [COLOR="Red"]yyy[/COLOR], z = [COLOR="Red"]zz[/COLOR]}}}
if(#playerPos ~= #newPlayerPos) then
error("Script 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 == [COLOR="Red"]uniqueid[/COLOR]) 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([COLOR="Red"]100[/COLOR]) --- if lvl is eq
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) .. " 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
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 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
return TRUE
end