Ir para conteúdo
  • 0

[Quest] Parecida Com Zao Arena :


pedrizito15

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0

dps de 45 segundos, certo, mas se depois de 45 segundos ainda tiver Dragon Lord e Frost Dragon na arena, ainda vai ser sumonado os outros? que no caso seriam Behemoth + Hellspawn?

 

Outra coisa, depois que eles matarem o BOSS, como que vão sair da arena? se for pelo TP de boss, algum engraçadinho pode ficar lá dentro ainda, o certo é fazer para depois que matar o boss ganhar o prêmio e ser teleportado, você consegue fazer isso?

 

outra coisa vai poder fazer a quest quantas vezes quiser?

 

 

TEM QUE DAR MAIS DETALHES DO QUE VC QUER!

PQ N ADIANTA DAR UM SCRIPT E DPS FICAR PEDINDO PRA ALTERAR PQ TA CHEIO DE BUG

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

  • 0
dps de 45 segundos, certo, mas se depois de 45 segundos ainda tiver Dragon Lord e Frost Dragon na arena, ainda vai ser sumonado os outros? que no caso seriam Behemoth + Hellspawn?

Sim vai nascendo continuadamente, assim se o player não conseguir matar ele acabará sendo morto pela quantidade de monstros...

 

Outra coisa, depois que eles matarem o BOSS, como que vão sair da arena? se for pelo TP de boss, algum engraçadinho pode ficar lá dentro ainda, o certo é fazer para depois que matar o boss ganhar o prêmio e ser teleportado, você consegue fazer isso?

Faz assim man depois de matar o boss, teletransportar os dois para a sala de premios

 

outra coisa vai poder fazer a quest quantas vezes quiser?

Sim quantas vezes ele quiser...

 

Agradecendo desde já...

Link para o comentário
Compartilhar em outros sites

  • 0

Mods:

 

<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Arena Mob" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes">  
<config name="arenamob_func"><![CDATA[
config = {
from = {x=183, y=54, z=7}, to = {x=190, y=59, z=7},
time = 45,
storages = {50231,50232},
boss_name = "Morgaroth",
entrada = {x=183, y=55, z=7}, saida = {x=180, y=55, z=7},
min_player_party = 2,
level = 90
}
tab_mob = {
[1] = {"Dragon Lord","Frost Dragon"},
[2] = {"Behemoth","Hellspawn"},
[3] = {"Hydra","Serpent Spawn"},
[4] = {"Undead Dragon","Undead Dragon"},
[5] = {"Demon","Demon"},
[6] = {"Werewolf","Werewolf"}
}
function CreateMonsterArena()
if getGlobalStorageValue(config.storages[1]) > #tab_mob then
doCreateMonster(config.boss_name, {x=math.random(config.from.x,config.to.x), y=math.random(config.from.y,config.to.y), z=config.to.z})
else
if getGlobalStorageValue(config.storages[1]) ~= 0 then
for _, var in pairs(tab_mob[getGlobalStorageValue(config.storages[1])]) do
doCreateMonster(var, {x=math.random(config.from.x,config.to.x), y=math.random(config.from.y,config.to.y), z=config.to.z})
end
setGlobalStorageValue(config.storages[1],(getGlobalStorageValue(config.storages[1])+1))
addEvent(CreateMonsterArena, config.time*1000)
end
end
return true
end
function RemoveCreatureArena()
for x = config.from.x, config.to.x do
	for y = config.from.y, config.to.y do
		local pos = {x=x, y=y, z=config.to.z}
		local m = getTopCreature(pos).uid 
		if m ~= 0 then
		if isMonster(m) then doRemoveCreature(m) end
		if isPlayer(m) then doTeleportThing(m, config.saida) end
		end
		doCleanTile(pos)
	end
end
end
]]></config>
<event type="login" name="ArenaMobRegister" event="script"><![CDATA[
domodlib('arenamob_func')
function onLogin(cid)
registerCreatureEvent(cid, "ArenaDeath")
if getGlobalStorageValue(config.storages[1]) == -1 then setGlobalStorageValue(config.storages[1],0)  end
if getGlobalStorageValue(config.storages[2]) == -1 then setGlobalStorageValue(config.storages[2],0)  end
if isInRange(getCreaturePosition(cid), config.from, config.to) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end
return true
end]]></event>   
   <event type="death" name="ArenaDeath" event="script"><![CDATA[
   domodlib('arenamob_func')
   function onDeath(cid, corpse, deathList)
   if isPlayer(cid) and isInRange(getCreaturePosition(cid), config.from, config.to) and getGlobalStorageValue(config.storages[2]) > 0 then
  	setGlobalStorageValue(config.storages[2], getGlobalStorageValue(config.storages[2])-1)
if getGlobalStorageValue(config.storages[2]) == 0 then setGlobalStorageValue(config.storages[1], 0) end
elseif isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower(config.boss_name) then
setGlobalStorageValue(config.storages[2], 0)
RemoveCreatureArena()		
end
   return true
   end]]></event>
<action actionid="8879" event="script"><![CDATA[
domodlib('arenamob_func')
function onUse(cid, item, fromPosition, itemEx, toPosition)
local check = {}
if getGlobalStorageValue(config.storages[2]) <= 0 then
if (getPlayerParty(cid)) then
if (getPlayerParty(cid) == cid) then
local players = getPartyMembers(getPartyLeader(cid))
if #players >= config.min_player_party then
for i, k in ipairs(players) do
if (getPlayerLevel(k) < config.level) then
doPlayerSendCancel(cid, "all players in the party need level "..config.level.." or more to enter the arena.")
return true
end
table.insert(check, k)
end
RemoveCreatureArena()
setGlobalStorageValue(config.storages[1], 1)
setGlobalStorageValue(config.storages[2], #players)
for i, tid in ipairs(check) do
doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
doTeleportThing(tid, config.entrada, true)
doSendMagicEffect(config.entrada, CONST_ME_ENERGYAREA)
end
CreateMonsterArena()
else
return doPlayerSendCancel(cid, "you need to have at least "..config.min_player_party.." players in the party!")
end
else
return doPlayerSendCancel(cid, "you must be the leader of the party")
end
else
return doPlayerSendCancel(cid, "you need to be in party")
end
else
return doPlayerSendCancel(cid, "You must wait, there are players in the arena.")
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end]]></action>
</mod>

 

 

em data > globalevents > script > start.lua adc isso:

setGlobalStorageValue(50231,0)
setGlobalStorageValue(50232,0)

 

e no arquivo.xml do seu boss(no caso morgaroth) adc:

<script>
<event name="ArenaDeath"/>
</script>

 

 

configuração:

config = {

from = {x=183, y=54, z=7}, to = {x=190, y=59, z=7}, -- área, começo e final da arena

time = 45, -- tempo que vai ficar summonando os monstro

storages = {50231,50232}, -- n mexa

boss_name = "Morgaroth", -- nome do boss

entrada = {x=183, y=55, z=7}, saida = {x=180, y=55, z=7}, -- entrada para onde os players vão ao puxar a alavanca, e saida é pos da sala de premios

min_player_party = 2, -- min de pessoas na party

level = 90 -- level min

}

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

  • 0

BUGS :

 

Se ambos os players morrerem lá não tem como outra pt entrar porque os monstro continuam vivos ...

 

O teletransporte não está funcionando (o de matar o boss)

 

Outra PT não consegue ir devido o primeiro bug

 

Coloque para os monstro sumirem se os player morrerem ou se os player matarem somente o boss...

 

 

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

  • 0

na verdade eles param o evento, a não ser que já esteja ocorrendo, outra coisa é que quando os jogadores vão puxar a alavanca novamente, automaticamente a arena é limpa, e se tiver monstros lá eles são removidos.

 

vc deve ter configurado algo de errado pq eu testei aqui e funciono certinho.

 

me manda seu msn pra eu ver como fico

 

 

 

 

local players = getPartyMembers(getPartyLeader(cid)) -- retorna quantos jogadores tem na party

 

setGlobalStorageValue(config.storages[2], #players) -- vai setar uma das storages para qntos jogadores tem na party

 

 

if isPlayer(cid) and isInRange(getCreaturePosition(cid), config.from, config.to) and getGlobalStorageValue(config.storages[2]) <= 0 then

setGlobalStorageValue(config.storages[2], getGlobalStorageValue(config.storages[2])-1)

if getGlobalStorageValue(config.storages[2]) == 0 then

setGlobalStorageValue(config.storages[1], 0)

end

 

 

nesse caso cada player que morrer e estiver na arena a storage vai fazer a conta até chegar 0

 

se por exemplo tinha 2 pessoas na party então ficaria assim

 

setGlobalStorageValue(config.storages[2], 2)

 

ai o jogador morreu dentro na arena

 

setGlobalStorageValue(config.storages[2], getGlobalStorageValue(config.storages[2])-1)

 

iria ficar 1 setGlobalStorageValue(config.storages[2], 1)

 

e se o outro morresse

 

setGlobalStorageValue(config.storages[2], getGlobalStorageValue(config.storages[2])-1)

 

ficando 0 setGlobalStorageValue(config.storages[2], 0)

 

if getGlobalStorageValue(config.storages[2]) == 0 then

setGlobalStorageValue(config.storages[1], 0)

end

 

os mob seriam resetados ok

 

 

 

agr na alavanca olha aqui

 

if getGlobalStorageValue(config.storages[2]) <= 0 then

 

como que não vai funcionar? se o jogadores que morrem na arena perdem uma storage!

outra coisa é qndo vc puxa a alavanca os monstro q estão na arena são removidos por causa dessa função

 

RemoveCreatureArena()

 

 

então n tem como nenhum corpse ou monstro ficar lá dentro!

 

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

  • 0

Vei o tp foi só aquele erro dos monstro não sumir mesmo que ta ruim... e os player não estão conseguindo entrar mesmo :

 

pedrinho2_dragui@hotmail.com

 

 

 

 

<!--?xml version="1.0" encoding="UTF-8"?-->

<mod name="Arena Mob" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes">

<config name="arenamob_func"><!--[CDATA[

config = {

from = {x=395, y=229, z=6}, to = {x=395, y=232, z=6},

time = 45,

storages = {50231,50232},

boss_name = "Emperor",

entrada = {x=395, y=226, z=6}, saida = {x=395, y=245, z=7},

min_player_party = 2,

level = 90

}

tab_mob = {

[1] = {"Tortoise Slayer","Tortoise Assassin"},

[2] = {"Vampire Slayer","Vampire Assassin"},

[3] = {"Nightmare Slayer","Nightmare Assassin"},

[4] = {"Dragon Slayer","Dragon Assassin"},

[5] = {"Draken Slayer","Draken Assassin"},

[6] = {"Slayer","Hell Assassin"}

}

function CreateMonsterArena()

if getGlobalStorageValue(config.storages[1]) --> #tab_mob then

doCreateMonster(config.boss_name, {x=math.random(config.from.x,config.to.x), y=math.random(config.from.y,config.to.y), z=config.to.z})

else

if getGlobalStorageValue(config.storages[1]) ~= 0 then

for _, var in pairs(tab_mob[getGlobalStorageValue(config.storages[1])]) do

doCreateMonster(var, {x=math.random(config.from.x,config.to.x), y=math.random(config.from.y,config.to.y), z=config.to.z})

end

setGlobalStorageValue(config.storages[1],(getGlobalStorageValue(config.storages[1])+1))

addEvent(CreateMonsterArena, config.time*1000)

end

end

return true

end

function RemoveCreatureArena()

for x = config.from.x, config.to.x do

for y = config.from.y, config.to.y do

local pos = {x=x, y=y, z=config.to.z}

local m = getTopCreature(pos).uid

if m ~= 0 then

if isMonster(m) then doRemoveCreature(m) end

if isPlayer(m) then doTeleportThing(m, config.saida) end

end

doCleanTile(pos)

end

end

end

]]></config>

<event type="login" name="ArenaMobRegister" event="script"><!--[CDATA[

domodlib('arenamob_func')

function onLogin(cid)

registerCreatureEvent(cid, "ArenaDeath")

if getGlobalStorageValue(config.storages[1]) == -1 then setGlobalStorageValue(config.storages[1],0) end

if getGlobalStorageValue(config.storages[2]) == -1 then setGlobalStorageValue(config.storages[2],0) end

if isInRange(getCreaturePosition(cid), config.from, config.to) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end

return true

end]]--></event>

<event type="death" name="ArenaDeath" event="script"><!--[CDATA[

domodlib('arenamob_func')

function onDeath(cid, corpse, deathList)

if isPlayer(cid) and isInRange(getCreaturePosition(cid), config.from, config.to) and getGlobalStorageValue(config.storages[2]) --> 0 then

setGlobalStorageValue(config.storages[2], getGlobalStorageValue(config.storages[2])-1)

if getGlobalStorageValue(config.storages[2]) == 0 then setGlobalStorageValue(config.storages[1], 0) end

elseif isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower(config.boss_name) then

setGlobalStorageValue(config.storages[2], 0)

RemoveCreatureArena()

end

return true

end]]></event>

<action actionid="8879" event="script"><!--[CDATA[

domodlib('arenamob_func')

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

local check = {}

if getGlobalStorageValue(config.storages[2]) <= 0 then

if (getPlayerParty(cid)) then

if (getPlayerParty(cid) == cid) then

local players = getPartyMembers(getPartyLeader(cid))

if #players -->= config.min_player_party then

for i, k in ipairs(players) do

if (getPlayerLevel(k) < config.level) then

doPlayerSendCancel(cid, "all players in the party need level "..config.level.." or more to enter the arena.")

return true

end

table.insert(check, k)

end

RemoveCreatureArena()

setGlobalStorageValue(config.storages[1], 1)

setGlobalStorageValue(config.storages[2], #players)

for i, tid in ipairs(check) do

doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)

doTeleportThing(tid, config.entrada, true)

doSendMagicEffect(config.entrada, CONST_ME_ENERGYAREA)

end

CreateMonsterArena()

else

return doPlayerSendCancel(cid, "you need to have at least "..config.min_player_party.." players in the party!")

end

else

return doPlayerSendCancel(cid, "you must be the leader of the party")

end

else

return doPlayerSendCancel(cid, "you need to be in party")

end

else

return doPlayerSendCancel(cid, "You must wait, there are players in the arena.")

end

doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)

return true

end]]></action>

</mod>

 

/\ bugo no quote blz

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

  • 0

1 duvida vodkart essa arena e para 2 players? tem como por para ser um femia e outro macho ?

e tem como colokar para nacer peda ate o ultimo boss morrer ? ou quando o player morrer

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...