Ir para conteúdo

Arena Quest V4.0 (Arena De Svaground)


tibiaa4e

Posts Recomendados

(tabulação fico estranha pq eu uso notepad++)

A pedidos arrumei os bugs conhecidos e diminui o script

 

Aqui as mudanças :

 

Changelog Arena 3.0 to 4.0

 

-Fixados

- Fixado bug dos baus na qual alguns abriam e outros diziam que você fez a quest sem ter feito.

- Fixado bug dos trofeus, agora todos estão funcionando.

- Fixado erro que permitia o player fazer a arena varias vezes, sem pegar a recompensa.

- Fixado erro da porta de permissão, na qual mostrava a frase, mesmo ele passando.

- Fixado erro da porta ao checar players nas arena (GMs não é considerado player, ou seja, se houver 1 a porta abre normalmente).

- Fixado bug que deixava o player pegar o item a mostra na sala de recompensa.

 

-Adicionado

- Frase especial no Trofeu igual tibia real.

- Mapa melhorado, não estando igual ao real.

- Adicionado actionid para o player escapar da arena e não pode-la fazer denovo até comprar outra

- Player não pode comprar permissão do nivel, se já terminou ele.

- Função DoMakeEffect para diminuir script.

- Arena é agora area de não logout para evitar macetes de players.

- Npc agora é para TFS 0.3.0 Alpha 3

 

- Arena, Arena1 e Trofeu compactados e adicionados para apenas um arquivo (Que esse ficou menor que o antigo Arena1)

- Diminuição das coordenadas, se usar o mapa postado (podendo apenas decora-lo, não mudando ordem de tiles).

 

Actionid usadas

 

5000 a 5012

5100 a 5111

 

Storages ids

5000 a 5002

5005 a 5007

5010 a 5012

5015 a 5017

 

Uniqueid

5300 a 5314 para recompensas

 

-A fazer

 

- Adicionar montros reais, e não aqueles ridiculos da SVN.

- Corrigir (Se houver) bugs da versão 4.0

 

 

 

 

Funcionamento :

 

A arena funciona da seguinte forma :

 

O player prescisará comprar a permissão no Npc Arena custando o valor especificado no npc. Depois ele deverá passar a porta de permissão que só abrirá se ele tiver os storage de compra e se não houver ninguem fazendo nenhum tipo de arena. Depois ele andará e entrará no teleport que sumonará o bicho equivalente ao seu nivel.

 

Nas arenas ao matar um boss a pedra se transformará em teleport ele andará e será teleportado para a proxima sala.

 

Na ultima sala ele será teleportado para a area das recompensas e ganhará um storage que será a prova que ele termino essa missão. E as portas de permissão recompensa deverá ter esse storage.

 

Na sala ele poderá andar no tile e ganhar seu trofeu e depois escolhe 1 entre os 5 prêmios.

O script é dividido em 3 arquivos :

 

 

Movements

Arena : Responsavel pelos antigos arena1, arena e trofeu. Ou seja tudo que é em movimentos

 

Actions

 

 reward.lua : É as recompensas das arenas.

 Arena door.lua : Esse arquivo checa se os há players fazendo a arena.

 

 

 

Bem recomendo que vc faça o download do mapa que “copiei “ do tibia para ter uma melhor localização ou até editar e usar ele mesmo pq não está tão mal...

 

 

 

(Mapa da versão 3.0, pois eskeci de trazer o novo, a unica coisa que mudou eh que a porta depois do npc tem actionid 60000 ao inves da outra.)

 

download mapa

 

 

Em movimentos crie o arena.lua

e adicione

 

--Function by Ta4e 07/11/2008--
--90% Arena quest in tibia rl--
--Version 4.0--
--This script make create a globet, summons monsters and create and delete teleports--

function onStepIn(cid, item, position, fromPosition)

getele = getThingfromPos(arenaroom)
getele1 = getThingfromPos(arenache1)
getele2 = getThingfromPos(arenache2)
getele3 = getThingfromPos(arenache3)
getele4 = getThingfromPos(arenache4)
getele5 = getThingfromPos(arenache5)
getele6 = getThingfromPos(arenache6)
getele7 = getThingfromPos(arenache7)
getele8 = getThingfromPos(arenache8)
getele9 = getThingfromPos(arenache9)
getele10 = getThingfromPos(arenache10)

greenhornstatus = getPlayerStorageValue(cid,5000)
scrapperstatus = getPlayerStorageValue(cid,5001)
warlordstatus = getPlayerStorageValue(cid,5002)

-----------------------------------------------------------------------------------------------------------------

	if item.itemid == 1387 and item.actionid == 5110 then
			doTeleportThing(getele.uid,arenapos,0)
			doSendMagicEffect(arenapos,10)
				if warlordstatus == 1 then
					doSummonCreature(bossw1, monsterpos1)
					setPlayerStorageValue(cid,5002,2)
				elseif scrapperstatus == 1 then
					doSummonCreature(bosss1, monsterpos1)
					setPlayerStorageValue(cid,5001,2)
				elseif greenhornstatus == 1 then
					doSummonCreature(bossg1, monsterpos1)
					setPlayerStorageValue(cid,5000,2)
				else
				doPlayerSendCancel(cid,"You need talk to halvar")
				end


	elseif item.itemid == 1387 and item.actionid == 5100 then
			doTeleportThing(getele1.uid,arenapos2,0)
			doSendMagicEffect(arenapos2,10)
			getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1})
			doCreateItem(1354,1,arenache1)
			doRemoveItem(getrem1.uid,1)
				if warlordstatus == 2 then
					doSummonCreature(bossw2, monsterpos2)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss2, monsterpos2)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg2, monsterpos2)
				end

	elseif item.itemid == 1387 and item.actionid == 5101 then
			doTeleportThing(getele2.uid,arenapos3,0)
			doSendMagicEffect(arenapos3,10)
			local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1})
			doRemoveItem(getrem2.uid,1)
			doCreateItem(1354,1,arenache2)
				if warlordstatus == 2 then
					doSummonCreature(bossw3, monsterpos3)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss3, monsterpos3)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg3, monsterpos3)
				end

	elseif item.itemid == 1387 and item.actionid == 5102 then
			doTeleportThing(getele3.uid,arenapos4,0)
			doSendMagicEffect(arenapos4,10)
			local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1})
			doRemoveItem(getrem3.uid,1)
			doCreateItem(1354,1,arenache3)
				if warlordstatus == 2 then
					doSummonCreature(bossw4, monsterpos4)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss4, monsterpos4)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg4, monsterpos4)
				end

	elseif item.itemid == 1387 and item.actionid == 5103 then
			doTeleportThing(getele4.uid,arenapos5,0)
			doSendMagicEffect(arenapos5,10)
			local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1})
			doRemoveItem(getrem4.uid,1)
			doCreateItem(1354,1,arenache4)
				if warlordstatus == 2 then
					doSummonCreature(bossw5, monsterpos5)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss5, monsterpos5)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg5, monsterpos5)
				end

	elseif item.itemid == 1387 and item.actionid == 5104 then
			doTeleportThing(getele5.uid,arenapos6,0)
			doSendMagicEffect(arenapos6,10)
			local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1})
			doRemoveItem(getrem5.uid,1)
			doCreateItem(1354,1,arenache5)
				if warlordstatus == 2 then
					doSummonCreature(bossw6, monsterpos6)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss6, monsterpos6)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg6, monsterpos6)
				end

	elseif item.itemid == 1387 and item.actionid == 5105 then
			doTeleportThing(getele6.uid,arenapos7,0)
			doSendMagicEffect(arenapos7,10)
			local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1})
			doRemoveItem(getrem6.uid,1)
			doCreateItem(1354,1,arenache6)
				if warlordstatus == 2 then
					doSummonCreature(bossw7, monsterpos7)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss7, monsterpos7)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg7, monsterpos7)
				end

	elseif item.itemid == 1387 and item.actionid == 5106 then
			doTeleportThing(getele7.uid,arenapos8,0)
			doSendMagicEffect(arenapos8,10)
			local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1})
			doRemoveItem(getrem7.uid,1)
			doCreateItem(1354,1,arenache7)
				if warlordstatus == 2 then
					doSummonCreature(bossw8, monsterpos8)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss8, monsterpos8)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg8, monsterpos8)
				end

	elseif item.itemid == 1387 and item.actionid == 5107 then
			doTeleportThing(getele8.uid,arenapos9,0)
			doSendMagicEffect(arenapos8,10)
			local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1})
			doRemoveItem(getrem8.uid,1)
			doCreateItem(1354,1,arenache8)
				if warlordstatus == 2 then
					doSummonCreature(bossw9, monsterpos9)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss9, monsterpos9)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg9, monsterpos9)
				end

	elseif item.itemid == 1387 and item.actionid == 5108 then
			doTeleportThing(getele9.uid,arenapos10,0)
			doSendMagicEffect(arenapos9,10)
			local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1})
			doRemoveItem(getrem9.uid,1)
			doCreateItem(1354,1,arenache9)
				if warlordstatus == 2 then
					doSummonCreature(bossw10, monsterpos10)
				elseif scrapperstatus == 2 then
					doSummonCreature(bosss10, monsterpos10)
				elseif greenhornstatus == 2 then
					doSummonCreature(bossg10, monsterpos10)
				end

	elseif item.itemid == 1387 and item.actionid == 5109 then
			doTeleportThing(getele10.uid,rewardpos,0)
			doSendMagicEffect(rewardpos,10)
			local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1})
			doRemoveItem(getrem10.uid,1)
			doCreateItem(1354,1,arenache10)
				if warlordstatus == 2 then
					setPlayerStorageValue(cid,5002,3)
					setPlayerStorageValue(cid,5007,1)
				elseif scrapperstatus == 2 then
					setPlayerStorageValue(cid,5001,3)
					setPlayerStorageValue(cid,5006,1)
				elseif greenhornstatus == 2 then
					setPlayerStorageValue(cid,5000,3)
					setPlayerStorageValue(cid,5005,1)
				end


	elseif item.itemid == 1387 and item.actionid == 5111 then
		if warlordstatus == 2 then
				setPlayerStorageValue(cid,5002,0)
		elseif scrapperstatus == 2 then
				setPlayerStorageValue(cid,5001,0)
		elseif greenhornstatus == 2 then
				setPlayerStorageValue(cid,5000,0)
		end

	elseif item.itemid == 426 then
		if item.actionid == 5010 then
			doTransformItem(item.uid, 425)
				if getPlayerStorageValue(cid,5017) == -1 then
					local golden = doCreateItem(8698,1,globet1)
						doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.')
					doSendMagicEffect(globet1,10)
					setPlayerStorageValue(cid,5017,1)
				else
					doSendMagicEffect(globet1,2)
				end

		elseif item.actionid == 5011 then
			doTransformItem(item.uid, 425)
				if getPlayerStorageValue(cid,5016) == -1 then
					local golden = doCreateItem(7370,1,globet2)
					doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.')
					doSendMagicEffect(globet2,10)
					setPlayerStorageValue(cid,5016,1)
				else
					doSendMagicEffect(globet2,2)
				end

		elseif item.actionid == 5012 then
			doTransformItem(item.uid, 425)
				if getPlayerStorageValue(cid,5015) == -1 then
				local golden = doCreateItem(7371,1,globet3)
				doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.')
				doSendMagicEffect(globet3,10)
				setPlayerStorageValue(cid,5015,1)
				else
					doSendMagicEffect(globet3,2)
				end
		end


	end
return TRUE
end

function onAddItem(moveitem, tileitem, position)

if moveitem.itemid == 7349 and tileitem.actionid == 5000 then
	local getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1})
	doRemoveItem(getrem1.uid,1)
	doCreateItem(1387,1,arenache1)
	doMakeEffect(arenache1,13)
		local getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1})
		doSetItemActionId(getrem1.uid,5100)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5001 then
	local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1})
	doRemoveItem(getrem2.uid,1)
	doCreateItem(1387,1,arenache2)
	doMakeEffect(arenache2,13)
		local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1})
		doSetItemActionId(getrem2.uid,5101)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5002 then
	local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1})
	doRemoveItem(getrem3.uid,1)
	doCreateItem(1387,1,arenache3)
	doMakeEffect(arenache3,13)
		local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1})
		doSetItemActionId(getrem3.uid,5102)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5003 then
	local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1})
	doRemoveItem(getrem4.uid,1)
	doCreateItem(1387,1,arenache4)
	doMakeEffect(arenache4,13)
		local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1})
		doSetItemActionId(getrem4.uid,5103)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5004 then
	local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1})
	doRemoveItem(getrem5.uid,1)
	doCreateItem(1387,1,arenache5)
	doMakeEffect(arenache5,13)
		local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1})
		doSetItemActionId(getrem5.uid,5104)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5005 then
	local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1})
	doRemoveItem(getrem6.uid,1)
	doCreateItem(1387,1,arenache6)
	doMakeEffect(arenache6,13)
		local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1})
		doSetItemActionId(getrem6.uid,5105)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5006 then
	local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1})
	doRemoveItem(getrem7.uid,1)
	doCreateItem(1387,1,arenache7)
	doMakeEffect(arenache7,13)
		local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1})
		doSetItemActionId(getrem7.uid,5106)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5007 then
	local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1})
	doRemoveItem(getrem8.uid,1)
	doCreateItem(1387,1,arenache8)
	doMakeEffect(arenache8,13)
		local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1})
		doSetItemActionId(getrem8.uid,5107)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5008 then
	local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1})
	doRemoveItem(getrem9.uid,1)
	doCreateItem(1387,1,arenache9)
	doMakeEffect(arenache9,13)
		local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1})
		doSetItemActionId(getrem9.uid,5108)

elseif moveitem.itemid == 7349 and tileitem.actionid == 5009 then
	local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1})
	doRemoveItem(getrem10.uid,1)
	doCreateItem(1387,1,arenache10)
	doMakeEffect(arenache10,13)
		local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1})
		doSetItemActionId(getrem10.uid,5109)
end
end

 

 

Nesse novo script, voce prescisa apenas colocar a coordenada especificada como here player teleport da primeira arena (a marrom msm).

 

arenanq9.jpg

 

Mais isso se configura no lib dos movements.

 

Em movements/lib/movement.lua add :

 

 

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
arenapos={x=1172, y=925, z=7} --posição do meio da primeira arena
rewardpos={x=1208, y=899, z=6} --posicao que ele ira ao matar o ultimo boss--
arenaroom={x=1205,y=934, z=7, stackpos =253} - posição do teleport q ira para a primeira arena--



--posicao que criara os trofeus--
globet1 = {x=1215, y=869, z=7, stackpos = 1} -- warlord
globet2 = {x=1215, y=876, z=7, stackpos = 1} --scrapper
globet3 = {x=1215, y=883, z=7, stackpos = 1} --greenhorn



--Bosses of Warlord Arena--

bossw1 = "webster"
bossw2 = "darakan the executioner"
bossw3 = "norgle glacierbeard"
bossw4 = "the pit lord"
bossw5 = "svoren the mad"
bossw6 = "the masked marauder"
bossw7 = "gnorre chyllson"
bossw8 = "fallen mooh'tah master ghar"
bossw9 = "deathbringer"
bossw10 = "the obliverator"

--Bosses of Scrapper Arena--
bosss1 = "avalanche"
bosss2 = "kreebosh the exile"
bosss3 = "The Dark Dancer"
bosss4 = "the hag"
bosss5 = "slim"
bosss6 = "Grimgor Guteater"
bosss7 = "drasilla"
bosss8 = "spirit of earth"
bosss9 = "spirit of water"
bosss10 = "spirit of fire"

--Bosses of Greenhorn Arena--

bossg1 = "frostfur"
bossg2 = "bloodpaw"
bossg3 = "bovinus"
bossg4 = "achad"
bossg5 = "colerian the barbarian"
bossg6 = "the hairy one"
bossg7 = "axeitus headbanger"
bossg8 = "rocky"
bossg9 = "cursed gladiator"
bossg10 = "Orcus the cruel"

---------------------------------------------------------------------------------------------------------------------------------------------------

--Posicoes de chegada--

arenapos2={x=arenapos.x-12, y=arenapos.y, z=arenapos.z, stackpos = 1}
arenapos3={x=arenapos.x-24, y=arenapos.y, z=arenapos.z, stackpos = 1}
arenapos4={x=arenapos.x-36, y=arenapos.y, z=arenapos.z, stackpos = 1}
arenapos5={x=arenapos.x-30, y=arenapos.y-12, z=arenapos.z, stackpos = 1}
arenapos6={x=arenapos.x-18, y=arenapos.y-12, z=arenapos.z, stackpos = 1}
arenapos7={x=arenapos.x-6, y=arenapos.y-12, z=arenapos.z, stackpos = 1}
arenapos8={x=arenapos.x-12, y=arenapos.y-25, z=arenapos.z, stackpos = 1}
arenapos9={x=arenapos.x-24, y=arenapos.y-25, z=arenapos.z, stackpos = 1}
arenapos10={x=arenapos.x-18, y=arenapos.y-38, z=arenapos.z, stackpos = 1}

--Posicoes de teleport--

arenache1={x=arenapos.x-5, y=arenapos.y, z=arenapos.z, stackpos = 253}
arenache2={x=arenapos.x-17, y=arenapos.y, z=arenapos.z, stackpos = 253}
arenache3={x=arenapos.x-29, y=arenapos.y, z=arenapos.z, stackpos = 253}
arenache4={x=arenapos.x-41, y=arenapos.y, z=arenapos.z, stackpos = 253}
arenache5={x=arenapos.x-35, y=arenapos.y-12, z=arenapos.z, stackpos = 253}
arenache6={x=arenapos.x-23, y=arenapos.y-12, z=arenapos.z, stackpos = 253}
arenache7={x=arenapos.x-11, y=arenapos.y-12, z=arenapos.z, stackpos = 253}
arenache8={x=arenapos.x-17, y=arenapos.y-25, z=arenapos.z, stackpos = 253}
arenache9={x=arenapos.x-29, y=arenapos.y-25, z=arenapos.z, stackpos = 253}
arenache10={x=arenapos.x-23, y=arenapos.y-38, z=arenapos.z, stackpos = 253}

--Posição de Sumonar monstros--

monsterpos1={x=arenapos.x+1,  y=arenapos.y-3, z=arenapos.z, stackpos =1}
monsterpos2={x=arenapos2.x+1, y=arenapos2.y-3, z=arenapos2.z, stackpos =1}
monsterpos3={x=arenapos3.x+1, y=arenapos3.y-3, z=arenapos3.z, stackpos =1}
monsterpos4={x=arenapos4.x+1, y=arenapos4.y-3, z=arenapos4.z, stackpos =1}
monsterpos5={x=arenapos5.x+1, y=arenapos5.y-3, z=arenapos5.z, stackpos =1}
monsterpos6={x=arenapos6.x+1, y=arenapos6.y-3, z=arenapos6.z, stackpos =1}
monsterpos7={x=arenapos7.x+1, y=arenapos7.y-3, z=arenapos7.z, stackpos =1}
monsterpos8={x=arenapos8.x+1, y=arenapos8.y-3, z=arenapos8.z, stackpos =1}
monsterpos9={x=arenapos9.x+1, y=arenapos9.y-3, z=arenapos9.z, stackpos =1}
monsterpos10={x=arenapos10.x+1, y=arenapos10.y-3, z=arenapos10.z, stackpos =1}



---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function doMakeEffect(pos,effect)

pos1={x=pos.x+1, y=pos.y, z=pos.z}
pos2={x=pos.x+1, y=pos.y+1, z=pos.z}
pos3={x=pos.x+1, y=pos.y-1, z=pos.z}

 doSendMagicEffect(pos,effect)
doSendMagicEffect(pos1,effect)
doSendMagicEffect(pos2,effect)
doSendMagicEffect(pos3,effect)

end

 

 

 

e em movements.xml add :

 

 <!-- Arena -->

<movevent event="AddItem" tileitem="1" actionid="5000" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5001" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5002" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5003" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5004" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5005" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5006" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5007" script="arena.lua"/>
<movevent event="AddItem" tileitem="1" actionid="5008" script="arena.lua"/> 
<movevent event="AddItem" tileitem="1" actionid="5009" script="arena.lua"/>
<movevent event="StepIn" actionid="5010" script="arena.lua"/>
<movevent event="StepIn" actionid="5011" script="arena.lua"/>
<movevent event="StepIn" actionid="5012" script="arena.lua"/>
<movevent event="StepIn" actionid="5100" script="arena.lua"/>
<movevent event="StepIn" actionid="5101" script="arena.lua"/>
<movevent event="StepIn" actionid="5102" script="arena.lua"/>
<movevent event="StepIn" actionid="5103" script="arena.lua"/>
<movevent event="StepIn" actionid="5104" script="arena.lua"/>
<movevent event="StepIn" actionid="5105" script="arena.lua"/>
<movevent event="StepIn" actionid="5106" script="arena.lua"/>
<movevent event="StepIn" actionid="5107" script="arena.lua"/>
<movevent event="StepIn" actionid="5108" script="arena.lua"/>
<movevent event="StepIn" actionid="5109" script="arena.lua"/>
<movevent event="StepIn" actionid="5110" script="arena.lua"/>

 

Agora em actions/scripts adicione o reward.lua e coloque :

 

--Function by Ta4e 07/11/2008--
--90% Arena quest in tibia rl--
--Version 4.0--

function onUse(cid, item, frompos, item2, topos)

--Storages values when you win a reward--
warlord = 5012
scrapper = 5011
greenhorn = 5010

--Caution when modify--
--------------------------------------------------------------------------------------------------

--ARENA warlord--
if item.uid == 5300 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
  if getPlayerFreeCap(cid) >= 39.00 then
doPlayerSendTextMessage(cid,24,"You have found a blessed sceptre.")
doPlayerAddItem(cid,7429,1)
setPlayerStorageValue(cid,warlord,1)
else
 doPlayerSendTextMessage(cid,24,"You have found a blessed sceptre. Weighing 39.00 oz it is too heavy.")
  end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5301 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 92.00 then
doPlayerSendTextMessage(cid,24,"You have found a Royal Axe.")
doPlayerAddItem(cid,7434,1)
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a Royal Axe. Weighing 92.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5302 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 50.00 then
doPlayerSendTextMessage(cid,24,"You have found a justice seeker.")
doPlayerAddItem(cid,7390,1)
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a justice seeker. Weighing 50.00  oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5303 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 20.00 then
doPlayerSendTextMessage(cid,24,"You have found a present.")
container = doPlayerAddItem(cid,1990,1)
doAddContainerItem(container, 6558, 1) --panda
doAddContainerItem(container, 6574, 1) --chocolate
doAddContainerItem(container, 6569,10) --candy
doAddContainerItem(container, 7372, 1) --ice cream
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 20.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5304 then
queststatus = getPlayerStorageValue(cid,warlord)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 110.00 then
doPlayerSendTextMessage(cid,24,"You have found a backpack.")
container = doPlayerAddItem(cid,7342,1)
doAddContainerItem(container, 2268, 50)
doAddContainerItem(container, 2273, 50)
doAddContainerItem(container, 7440, 1)
doAddContainerItem(container, 7439, 1)
doAddContainerItem(container, 6529, 100)
setPlayerStorageValue(cid,warlord,1)
else
doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 110.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end



--ARENA scrapper--
elseif item.uid == 5305 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
  if getPlayerFreeCap(cid) >= 78.00 then
doPlayerSendTextMessage(cid,24,"You have found a Cranial Basher.")
doPlayerAddItem(cid,4715,1)
setPlayerStorageValue(cid,scrapper,1)
else
 doPlayerSendTextMessage(cid,24,"You have found a Cranial Basher. Weighing 78.00 oz it is too heavy.")
  end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5306 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 61.00 then
doPlayerSendTextMessage(cid,24,"You have found a heroic axe.")
doPlayerAddItem(cid,7751,1)
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a heroic axe. Weighing 61.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5307 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 35.00 then
doPlayerSendTextMessage(cid,24,"You have found a mystic blade.")
doPlayerAddItem(cid,7765,1)
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a mystic blade. Weighing 35.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5308 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 15.00 then
doPlayerSendTextMessage(cid,24,"You have found a present.")
container = doPlayerAddItem(cid,1990,1)
doAddContainerItem(container, 7184, 1)
doAddContainerItem(container, 6574, 1) --chocolate
doAddContainerItem(container, 6569,10) --candy
doAddContainerItem(container, 7372, 1) --ice cream
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 15.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end


elseif item.uid == 5309 then
queststatus = getPlayerStorageValue(cid,scrapper)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 158.00 then
doPlayerSendTextMessage(cid,24,"You have found a backpack.")
container = doPlayerAddItem(cid,7342,1)
doAddContainerItem(container, 2304, 50)
doAddContainerItem(container, 2311, 50)
doAddContainerItem(container, 7365, 100)
doAddContainerItem(container, 2457, 100)
setPlayerStorageValue(cid,scrapper,1)
else
doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 158.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end



--ARENA greenhorn--
elseif item.uid == 5310 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 158.00 then
doPlayerSendTextMessage(cid,24,"You have found a backpack.")
container = doPlayerAddItem(cid,7342,1)
doAddContainerItem(container, 7364, 100)
doAddContainerItem(container, 7365, 100)
setPlayerStorageValue(cid,greenhorn,1)
else
doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 158.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end


elseif item.uid == 5311 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
  if getPlayerFreeCap(cid) >= 54.00 then
doPlayerSendTextMessage(cid,24,"You have found a orcish maul.")
doPlayerAddItem(cid,7392,1)
setPlayerStorageValue(cid,greenhorn,1)
else
 doPlayerSendTextMessage(cid,24,"You have found a orcish maul. Weighing 54.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5312 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 59.00 then
doPlayerSendTextMessage(cid,24,"You have found a Blacksteel Sword.")
doPlayerAddItem(cid,7406,1)
setPlayerStorageValue(cid,greenhorn,1)
else
doPlayerSendTextMessage(cid,24,"You have found a Blacksteel Sword. Weighing 59.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5313 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 73.80 then
doPlayerSendTextMessage(cid,24,"You have found a HeadChopper.")
doPlayerAddItem(cid,7380,1)
setPlayerStorageValue(cid,greenhorn,1)
else
 doPlayerSendTextMessage(cid,24,"You have found a HeadChopper. Weighing 73.80  oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end

elseif item.uid == 5314 then
queststatus = getPlayerStorageValue(cid,greenhorn)
if queststatus == -1 then
if getPlayerFreeCap(cid) >= 18.00 then
doPlayerSendTextMessage(cid,24,"You have found a present.")
container = doPlayerAddItem(cid,1990,1)
doAddContainerItem(container, 2114, 1)
doAddContainerItem(container, 6570, 1)
doAddContainerItem(container, 6574, 1)
doAddContainerItem(container, 2668,10)
doAddContainerItem(container, 7372, 1)
setPlayerStorageValue(cid,greenhorn,1)
else
doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 18.00 oz it is too heavy.")
end
else
doPlayerSendTextMessage(cid,24,"The chest is empty.")
end


end
return 1
end

 

 

 

e crie também o arena door.lua e adicione :

 

 

--Function by Ta4e 28/09/2008--
--90% Arena quest in tibia rl--
--Version 4.0--

function onUse(cid, item, fromPosition, itemEx, toPosition)


--Storages of Arena NPC--
greenhorn = 5000 
scrapper = 5001
warlord = 5002 

starting={x=1132, y=882, z=7, stackpos=253}
ending={x=1176, y=929, z=7, stackpos=253}
trash= {x=1169, y=725, z=13}


---------------------------------------------------------------------------------------------------------------------
greenhornstatus = getPlayerStorageValue(cid,greenhorn)
scrapperstatus = getPlayerStorageValue(cid,scrapper)
warlordstatus = getPlayerStorageValue(cid,warlord)
checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}

if item.itemid == 5132 and item.actionid == 60000 then
if warlordstatus == 1 or scrapperstatus == 1 or greenhornstatus == 1 then
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
current=0
repeat
current=current+1
doTeleportThing(monster[current],trash)
until current>=totalmonsters

doTransformItem(item.uid, 5133)
doTeleportThing(cid, toPosition, TRUE)

end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need permission of Halvar to enter in Arena.")
end

end
end

</div></div>

 

Esse starting e a posicao de cima q abrange todos os tile da arena ou seja o mais noroeste possivel

Ja o ending eh o mais sudeste possivel com a msm caracteristicas

 

 

Para ele não dar erro vai em others/door.lua e modifique a parte

 

if isInArray(questDoors, item.itemid) == TRUE then
	  if getPlayerStorageValue(cid, item.actionid) ~= -1 then

 

 

 

por

 

if isInArray(questDoors, item.itemid) == TRUE and itemEx.actionid < 59999 then
	  if getPlayerStorageValue(cid, item.actionid) >= 1 then

 

 

 

e agora em actions.xml adicione :

 

	<action uniqueid="5300" script="Reward.lua" />
<action uniqueid="5301" script="Reward.lua" />
<action uniqueid="5302" script="Reward.lua" />
<action uniqueid="5303" script="Reward.lua" />
<action uniqueid="5304" script="Reward.lua" />
<action uniqueid="5305" script="Reward.lua" />
<action uniqueid="5306" script="Reward.lua" />
<action uniqueid="5307" script="Reward.lua" />
<action uniqueid="5308" script="Reward.lua" />
<action uniqueid="5309" script="Reward.lua" />
<action uniqueid="5310" script="Reward.lua" />
<action uniqueid="5311" script="Reward.lua" />
<action uniqueid="5312" script="Reward.lua" />
<action uniqueid="5313" script="Reward.lua" />
<action uniqueid="5314" script="Reward.lua" />
<action actionid="60000" script="arena door.lua"/>

 

 

NPCS

 

Esse npc é o novo adaptado para TFS 0.3.0 alpha 3

 

 

 

em npc\scripts adiciona arena.lua com isso :

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)				npcHandler:onCreatureAppear(cid)			end
function onCreatureDisappear(cid)			npcHandler:onCreatureDisappear(cid)			end
function onCreatureSay(cid, type, msg)			npcHandler:onCreatureSay(cid, type, msg)		end
function onThink()					npcHandler:onThink()					end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
	return false
end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid


if msgcontains(msg, 'fight') then
		selfSay('So you agree to the rules and want to participate in the challenge? Which difficulty do you choose, {Greenhorn}, {Scrapper} or {Warlord}?', cid)
	talkState[talkUser] = 2

elseif msgcontains(msg, 'rules') then
		selfSay('What do you want to know? Something about the three different {DIFICULTIES}, the {GENERAL} rules or the {PRICES}? Maybe you also want to know what happens when you die?', cid)
	talkState[talkUser] =  1

elseif talkState[talkUser] == 1 then
	if msgcontains(msg, 'dificulties') then
			selfSay('We have three difficulty. The easiest are Greenhorn, the medium are scrapper and the hardest are warlord.', cid)
			talkState[talkUser] = 0


		elseif msgcontains(msg, 'general') then
			selfSay('Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack.If you enter in arena or you win or you go to temple.', cid)
			talkState[talkUser] = 0


		elseif msgcontains(msg, 'prices') then
			selfSay('A greenhorn cost 1000 gold, scrapper cost 5000 golds and a great warlord cost 10000 golds.', cid)
			talkState[talkUser] = 0
		end




elseif talkState[talkUser] == 2 then
	if msgcontains(msg, 'greenhorn') then
			selfSay('The fee is 1000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse andyour backpack. Do you really want to participate in the arena in the easiest difficulty?', cid)
			talkState[talkUser] = 3


		elseif msgcontains(msg, 'scrapper') then
			selfSay('The fee is 5000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the medium difficulty?', cid)
			talkState[talkUser] = 4


		elseif msgcontains(msg, 'warlord') then
			selfSay('The fee is 10000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the hardest difficulty?', cid)
			talkState[talkUser] = 5
		end


elseif talkState[talkUser] == 3 then
		if msgcontains(msg, 'yes') then
			if getPlayerStorageValue(cid,5005) == -1 then
				if(doPlayerRemoveMoney(cid, 1000) == TRUE) then
					setPlayerStorageValue(cid,5000,1)
					selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid)
				end
			else
				selfSay('You already win this arena!', cid)
			end
		else
			selfSay('Then not. Get away and don\'t waste my time!', cid)
			end

	elseif talkState[talkUser] == 4 then
		if msgcontains(msg, 'yes') then
			if getPlayerStorageValue(cid,5006) == -1 then
				if(doPlayerRemoveMoney(cid, 5000) == TRUE) then
					setPlayerStorageValue(cid,5001,1)
					selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid)
				end
			else
				selfSay('You already win this arena!', cid)
			end
		else
			selfSay('Then not. Get away and don\'t waste my time!', cid)
			end

	elseif talkState[talkUser] == 5 then
		if msgcontains(msg, 'yes') then
			if getPlayerStorageValue(cid,5007) == -1 then
				if(doPlayerRemoveMoney(cid, 10000) == TRUE) then
					setPlayerStorageValue(cid,5002,1)
					selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid)
				end
			else
				selfSay('You already win this arena!', cid)
			end
		else
			selfSay('Then not. Get away and don\'t waste my time!', cid)
			end


	talkState[talkUser] = 0
elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then
	talkState[talkUser] = 0
	selfSay('Ok then.', cid)
end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

e em npcs adiciona o halvar.xml

 

<npc name="Halvar" script="data/npc/scripts/arena.lua" floorchange="0" access="5">
<health now="150" max="150"/>
<look type="143" head="2" body="112" legs="78" feet="116" addons="2" corpse="2212"/>


 <parameters>
 <parameter key="message_greet" value="Hello competitor! Do you want to {fight} in the arena or shall I explain the {rules} first "/>
</parameters></npc>

 

 

 

Bem é isso qualquer bug reporte

Editado por tibiaa4e
Link para o comentário
Compartilhar em outros sites

Olha

Em casa funfo direitinho

Pode ser que vc erro alguma posição ou não coloco os actionids...

 

Pq essa action é extremamente frescurenta...

 

Ve se da algum erro no console

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 2 weeks later...

Lua Script Error: [MoveEvents Interface]

data/movements/scripts/arena1.lua:onStepIn

 

attempt to index a nil value

stack traceback:

[C]: in function 'getThingfromPos'

data/movements/scripts/arena1.lua:166: in function <data/movements/scri

ts/arena1.lua:5>

 

 

este erro da na hora que eu mato o primeiro boss, ai da isso no .exe

 

mas a pedra não some e não cria o teleport ;~

 

AJUDA? =X

Link para o comentário
Compartilhar em outros sites

Quando eu entro no teleport da sala do npc ainda ocorre o seguinte erro:

 

Eu entro no teleport da arena e da o seguinte erro:

 

[03/10/2008 18:15:53] Lua Script Error: [MoveEvents Interface]

[03/10/2008 18:15:53] data/movements/scripts/arena1.lua:onStepIn

 

[03/10/2008 18:15:53] attempt to index a nil value

[03/10/2008 18:15:53] stack traceback:

[03/10/2008 18:15:53] [C]: in function 'getThingfromPos'

[03/10/2008 18:15:53] data/movements/scripts/arena1.lua:166: in function <data/movements/scripts/arena1.lua:5>

 

Se alguem poder me ajudar agradeço :p

 

VERSÃO USADA: TFS 2.0

 

OBRIGADOO.

Link para o comentário
Compartilhar em outros sites

qual action id ou unique id que eu tenho que botar nas portas de recompensa?

 

 

No arquivo arena1.lua tem as variaveis

 

--Storage to open a permission door for reward--

idfeitow = 5007 --warlord

idfeitos = 5006 --scrapper

idfeitog = 5005 --greenhorn

 

5007 pra warlord

5006 pra scrapper

5005 para greenhorn

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
×
×
  • Criar Novo...