Sistema SIMPLES de Dungeon, o player entra no teleport e é criado alguns monstros para o jogador matar dentro de um tempo de 30 segundos, se ele matar todos os monstro no tempo ele recebe a recompensa em Exp e Gold, se ele não matar todos ele volta para o templo e da a chance de outro jogador entrar na Dungeon.
Testado: Snowz Thyranic 3.1 [Especial Edition] (8.6)
Em movements crie um arquivo do teleport da dungeon e adicione:
function onStepIn(cid, item, position, fromPosition)
local config = {
posdung = {x=317, y=120, z=7}, -- poss da arena
str = 15281, -- não mexer
storage = 98551, -- não mexer
tempo = 30,
tempoarena = 30000, -- tempo que ele tem para terminar a arena 30000 = 30s
monsterum = "Dragon" -- primeiro monstro que vai ser criado quando o player entrar na arena
}
local posstemplo = {x=63, y=42, z=7}
function Tp()
if isCreature(cid) then
doTeleportThing(cid, posstemplo)
end
return true
end
function Str()
if isCreature(cid) then
setPlayerStorageValue(cid,config.storage, 0)
end
return true
end
function deletamonstro()
local spec = getSpectators(config.posdung, 10, 10)
if spec ~= nil then
for _, s in pairs(spec) do
if isMonster(s) then
doRemoveCreature(s)
end
end
end
end
for _, player in pairs(getPlayersOnline()) do
if getPlayerStorageValue(player, config.str) >= os.time() then
doTeleportThing(player, fromPosition)
doPlayerSendTextMessage(cid, 22, "Já existe player em batalha!")
elseif getPlayerStorageValue(player, config.str) < os.time() then
setPlayerStorageValue(cid, config.str, os.time() + config.tempo)
doTeleportThing(cid, config.posdung)
doSendMagicEffect(getThingPos(cid), 10)
doCreateMonster(config.monsterum, getThingPos(cid))
addEvent(Tp, config.tempoarena)
addEvent(Str, config.tempoarena)
addEvent(deletamonstro, config.tempoarena)
break
end
end
end
<movevent type="StepIn" actionid="2569" event="script" value="arquivo.lua"/>
CreatureScripts crie um arquivo lua e adicione :
local monster = { --- tabela de monstro, se quiser adicionar mais e so adicionar na tabela
[1] = "Dragon",
[2] = "Dragon Lord",
[3] = "Hydra",
[4] = "Demon",
}
local config = {
posstemplo = {x=63, y=42, z=7}, -- poss aonde o player vai ser enviado quando terminar ou se falhar
storage = 98551, -- não mexa
premioexp = 800000, -- tanto de exp que o player vai ganhar
quant = 1000000, --- quantidade de dinheiro que vai ganhar
}
function onDeath(cid, corpse, deathList, target)
local storage_value = getPlayerStorageValue(deathList[1], config.storage) < 1 and 1 or getPlayerStorageValue(deathList[1], config.storage)
local new_value = storage_value + 1
if getCreatureName(cid) == monster[storage_value] then
setPlayerStorageValue(deathList[1], config.storage, new_value)
doSendMagicEffect(getPlayerPosition(deathList[1]), 12)
doCreatureSay(cid, 'Fight', TALKTYPE_MONSTER)
if new_value > #monster then
doPlayerSendTextMessage(deathList[1], 22, "Completa!")
doPlayerAddMoney(deathList[1], config.quant)
doPlayerAddExp(deathList[1], config.premioexp)
doTeleportThing(deathList[1], config.posstemplo)
doSendMagicEffect(getThingPos(cid), 10)
else
doCreateMonster(monster[new_value], getThingPos(cid))
end
end
end
<event type="death" name="dungeon" event="script" value="arquivo.lua"/>
Adicione dentro do arquivo de cada monstro que vai ter na dungeon :
<script>
<event name="dungeon"/>
</script>
Configurando :
Em movements você adiciona a poss da dungeon
posdung = {x=317, y=120, z=7}, -- poss da arena
Aqui você adiciona o primeiro monstro da dungeon
monsterum = "Dragon" -- primeiro monstro que vai ser criado quando o player entrar na arena
Em creaturescript você adiciona a poss do templo aonde o player vai aparecer quando finalizar a dungeon
posstemplo = {x=63, y=42, z=7}, -- poss aonde o player vai ser enviado quando terminar
E aqui os monstros que vai ter na dungeon
local monster = { --- tabela de monstro, se quiser adicionar mais e so adicionar na tabela
[1] = "Dragon",
[2] = "Dragon Lord",
[3] = "Hydra",
[4] = "Demon",
}
Dentro da sala da dungeon coloque ANT-LOGOUT pelo mapa editor, para evitar de jogadores fazer logout dentro da dungeon.