Ir para conteúdo

Annihilator


rodrygosos

Posts Recomendados

 -- 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 = 1751, y = 471, z = 10} -- edit this to the top left sqm of ur annhilator room
local ending= {x = 1771, y = 485, z = 10} -- edit this to the bottom right sqm of ur annhilator room

local playerPos = { -- oldPositions; positions of players before they get teleported.
{x = 1738, y = 474, z = 9},
{x = 1737, y = 474, z = 9},
{x = 1736, y = 474, z = 9},
{x = 1735, y = 474, z = 9}
}

local newPlayerPos = { -- Positions for where players should be teleported, make sure it's in the same order as oldPositions
{x = 1757, y = 478, z = 10},
{x = 1756, y = 478, z = 10},
{x = 1755, y = 478, z = 10},
{x = 1754, y = 478, z = 10}
}

local creaturePos = { -- Name and position of monsters to summon.
{"Demon", {x = 1756, y = 476, z = 10}},
{"Demon", {x = 1754, y = 476, z = 10}},
{"Demon", {x = 1755, y = 480, z = 10}},
{"Demon", {x = 1757, y = 480, z = 10}},
{"Demon", {x = 1758, y = 478, z = 10}},
{"Demon", {x = 1759, y = 478, z = 10}}
}

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 == 7000) then --- change to different item.uid according to ur mapeditor
	if(item.itemid == 1945) then
		for i, pos in ipairs(playerPos) do -- add player id's to table
			player[i] = getTopCreature(pos)
		end
		local ret, players = checkPlayers(cid)
		if(ret) 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
					sendPlayersText(players, getPlayerName(player) .. " has already done this quest.")
				end
			else
				sendPlayersText(players, getPlayerName(player) .. " is too low.")
			end	
		else
			sendPlayersText(players, "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
	return TRUE
--- Chests.
elseif(item.uid == 5006) then -- demon armor
	return questChestPrize(cid, 2494, 100)
elseif(item.uid == 5007) then -- magic sword
	return questChestPrize(cid, 2400, 100)
elseif(item.uid == 5008) then -- stonecutter's axe
	return questChestPrize(cid, 2431, 100)
elseif(item.uid == 5009) then -- thunder hammer
	return questChestPrize(cid, 2421, 100)				
end
end

function sendPlayersText(players, text)
for _, player in ipairs(players) do 
	doPlayerSendCancel(player, text)
end
end

function questChestPrize(cid, itemid, storage)
if(getPlayerStorageValue(cid, storage) < TRUE) then
	doPlayerAddItem(cid, itemid, 1)
	setPlayerStorageValue(cid, storage, TRUE)
	local item = getItemDescriptions(itemid)
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have found " .. item.article .. " " .. item.name .. "")
else
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
end
return TRUE
end

function checkLevel(minLevel)
for _, player in ipairs(player) do
	if(getPlayerLevel(player) < minLevel) then
		return false, player
	end
end	
return true
end

function checkStorage(storageValue)
for _, player in ipairs(player) do
	if(getPlayerStorageValue(player, storageValue) ~= TRUE) then
		return false, player
	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 = getTopCreature(checking)
	if(isCreature(creature) == TRUE) then
		if(isPlayer(creature) == TRUE) then
			return false
		else
			table.insert(monster, creature)
		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 ipairs(monster) do 
	doRemoveCreature(c)
end	
return true
end

function summonCreatures(parameters)
for _, monster in ipairs(parameters) do
	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
end

function checkPlayers(cid)
local ret = {}
table.insert(ret, cid)
for _, curPlayer in ipairs(player) do
	if(isPlayer(curPlayer) == TRUE) then
		if(curPlayer ~= cid) then 
			table.insert(ret, curPlayer)
		end
	else	
		return false, ret
	end
end	
return true, ret
end 

 

Galera da uma olhada nesse script ai pois quando cliko na alavanca fala que need team 4 players sendo que ta os 4 players level 100 nos seus devidos lugares. na alavanca de ItemID: [1946] botei ActionID: [7000], UniqueID: [7000].

Ajudem ai creio que seja muito facil pra quem sabe. a mais uma coisa quando clika na alavanca ela muda de lado e vira id 1945. abraço

Link para o comentário
Compartilhar em outros sites

Putz Mano tem um tutorial desse no xtibia mas a alavanca vira de lado tbm aconcelho q tipow aki no xtibia tem 1 ot 8.60 xamado slayer yurots baixe ele e pegue o script da Arena e poste aki pra mim q eu adapto ele para Anihi vlw

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...