Warzone Event (Tibia Global)

Killua
Por Killua
em Mods, funções e outros
  • 1
  • 2

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Warzone Event

por Killua, antigo amoeba13

 

 

Eu fiz o famoso Warzone Event do tibia global e vou disponibilizar pra vcs, pra quem nao conhece, segue video do evento. (Assistam a partir dos 3 minutos.)

 

 

PS: Os codigos estao configurados com as posicoes do mapa global "originial"

A primeira parte eh a action (De clicar no cristal verde pra comecar a nascer os monstros)

 

Crie um arquivo chamado warzone.lua em data/actions/scripts e coloque esse codigo:

 

 

 


--- [[ Warzone Event by Killua, antigo amoeba13 ]] ---

local posdotp = {x= 33104, y=31908, z=10} -- Posicao que o tp vai ser criado (Eh o tp que leva pra sala do Deathstriker)
local salaDeathstriker = {x=33101, y=31956, z=10} -- Posicao da sala do Deathstriker (Pos pra onde o player vai qd entrar no tp)
local posDeathstriker = {x=33108, y=31968, z=10} -- Posicao onde o Deathstriker vai nascer.

function removerTp(tp)
    local t = getTileItemById(posdotp, 1387)
    if t then
        doRemoveItem(t.uid, 1)
        doSendMagicEffect(posdotp, CONST_ME_POFF)
    end
end

function TirarCristal()
    local cristal = getTileItemById(posdotp, 17999) -- Id do cristal azul que some para dar lugar ao tp
    if cristal then
        doRemoveItem(cristal.uid, 1)
    end
    return true
end
     

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local times = {100, 5000, 15000, 20000, 30000, 35000, 45000, 55000, 60000, 65000, 75000, 85000, 100000, 115000, 120000}
    local change = false
    local position = {x = 33094 + math.random(1, 10), y = 31904 + math.random(1, 8), z = 10}
    
    if os.time()-getGlobalStorageValue(cid, 96963) > 30*60 then
                     
        for _, time in ipairs(times) do
            if(change) then
                addEvent(doCreateMonster, time, "Humongous Fungus", position)
                addEvent(doSendMagicEffect, time, position, CONST_ME_TELEPORT)
            else
                addEvent(doCreateMonster, time, "Humorless Fungus", position)
                addEvent(doSendMagicEffect, time, position, CONST_ME_TELEPORT)
            end
            addEvent(doCreateMonster, time, "Hideous Fungus", position)
            addEvent(doSendMagicEffect, time, position, CONST_ME_TELEPORT)
            change = change and false or true
        end
        
        addEvent(doCreateMonster, 3*60*1000, "Deathstrike", posDeathstriker)
        addEvent(doSendMagicEffect, 4 * 60 * 1000, posDeathstriker, CONST_ME_TELEPORT)     			
        addEvent(TirarCristal, 2*60*1000)
        addEvent(doCreateTeleport, 121000, 1387, salaDeathstriker, posdotp)
        setGlobalStorageValue(96963, os.time())
        addEvent(removerTp, 60000+121000)
        addEvent(doCreateItem, 60000+122000, 17999, posdotp)
        doCreatureSay(cid, "The crystals are damaging!", TALKTYPE_ORANGE_1)
    else
        doPlayerSendCancel(cid, "Wait 30 minutes to start again.")
    end
    return true
end

E em data/actions/actions.xml adicione essa tag:

 

<action actionid="7231" script="warzone.lua" />

Coloque actionId 7231 no cristal verde.

 

 

 

 

Configurando: Siga as instrucoes que estao dentro do script e

 

Em


local position = {x = 33094 + math.random(1, 10), y = 31904 + math.random(1, 8), z = 10}

No lugar do 33094 vc coloca a posicao x minima da area onde vao nascer os monstros.

No lugar do 31904 vc coloca a posicao y minima da area onde vao nascer os monstros.

 

 

Agora, a segunda parte eh o movement

 

Em data/movements/scripts crie warzone.lua e coloque esse codigo:

 

 

 


--- [[ Warzone Event by Killua, antigo amoeba13 ]] ---

local kickposs = {x=33000, y=31899, z=9}  -- Posicao pra onde o player vai ser kikado se permanecer mais de 30 minutos na sala do Deathstriker.(Se ele sair voluntariamente, vai pra essa pos tbm)
     
function kikar(cid)
    doTeleportThing(cid, kickposs)
    doPlayerSendTextMessage(cid, 18, "You have been removed from the boss room, because you can not stay for more than 30 minutes.")
    return true
end
       
function onStepIn(cid, item, position, topos, frompos)
    if not isPlayer(cid) then
        return false
    end
           
    if item.actionid == 5157 then
        doPlayerSendTextMessage(cid, 18, "You have half an hour to heroically defeat Deathstrike. Otherwise you'll be teleported out by the gnomish emergency device.")
        evento = addEvent(kikar, 3*60*1000, cid)
    elseif item.actionid == 5158 then
        doTeleportThing(cid, tpsaida)
        stopEvent(evento)
    end
    return true
end

E, em data/movements/movements.xml adicione essa tag:

<movevent type="StepIn" actionid="5158;5157" event="script" value="warzone.lua"/>

 

 

 

Configurando: Simplesmente coloque o actionID 5157 no piso onde eh criado o tp (o local posdotp da action) e o actionID 5158 no piso que vai ser a saida da sala do Deathstriker.

 

 

Eh isso ai, espero que ajude alguem.

Fiz esse evento a pedido do usuario UroTTa

 

Por favor, deixe seu comentario.

 

Abracos

kleitonalan321

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 12/06/13Posts: 187

muito bom o script ganhou meu REP+ quando eu tiver um tempo irei testar ele no meu ot.

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

Parece estar muito bom, parabéns :D

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Omega

o/
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 17/06/07Posts: 1165Gênero: MasculinoChar no Tibia: Nenhum

Acho que você poderia ter substituído todos esses

doCreateMonster("Hideous Fungus", {x=33097, y=31904, z=10})
doSendMagicEffect({x=33097, y=31904, z=10}, CONST_ME_TELEPORT)

Por uma tabela com:

local monsters = {
    {pos = {x=123, y=123, z=7}, name = "Hideous Fungus"},
    {pos = {...}, name = ...},
}

E usado um loop pra criar cada um:

for _, monster in pairs(monsters) do
    doCreateMonster(monster.name, monster.pos)
    doSendMagicEffect(monster.pos, 10)
end

Economizaria muitas linhas e muito trabalho.

 

Além disso, o que acontece se o grupo não completar a quest? Acho que você deveria ter adicionado uma remoção pros monstros que já estão na área.

 

Mesmo assim, aposto que ajudará muitas pessoas que querem esse evento no servidor.

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

 

 

local times = {100, 5000, 15000, 20000, 30000, 35000, 45000, 55000, 60000, 65000, 75000, 85000, 100000, 115000, 120000}
 
    local change = false
    local position = {x = 33094 + math.random(1, 10), y = 31904 + math.random(1, 8), z = 10}
    
    for _, time in ipairs(times) do
        if(change) then
            addEvent(doCreateMonster, time, "Humongous Fungus", position)
        else
            addEvent(doCreateMonster, time, "Humorless Fungus", position)
        end
        addEvent(doCreateMonster, time, "Hideous Fungus", position)
        change = change and false or true
    end
    
    addEvent(doCreateMonster, 3 * 60 * 1000, "Deathstrike", {x = 33108, y = 31968, z = 10})
    addEvent(doSendMagicEffect, 4 * 60 * 1000, {x = 33108, y = 31968, z = 10}, CONST_ME_TELEPORT)

jeoz.png

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

 

 

Acho que você poderia ter substituído todos esses

doCreateMonster("Hideous Fungus", {x=33097, y=31904, z=10})
doSendMagicEffect({x=33097, y=31904, z=10}, CONST_ME_TELEPORT)

Por uma tabela com:

local monsters = {
    {pos = {x=123, y=123, z=7}, name = "Hideous Fungus"},
    {pos = {...}, name = ...},
}

E usado um loop pra criar cada um:

for _, monster in pairs(monsters) do
    doCreateMonster(monster.name, monster.pos)
    doSendMagicEffect(monster.pos, 10)
end

Economizaria muitas linhas e muito trabalho.

 

Além disso, o que acontece se o grupo não completar a quest? Acho que você deveria ter adicionado uma remoção pros monstros que já estão na área.

 

Mesmo assim, aposto que ajudará muitas pessoas que querem esse evento no servidor.

 

 

 

 

local times = {100, 5000, 15000, 20000, 30000, 35000, 45000, 55000, 60000, 65000, 75000, 85000, 100000, 115000, 120000}
 
    local change = false
    local position = {x = 33094 + math.random(1, 10), y = 31904 + math.random(1, 8), z = 10}
    
    for _, time in ipairs(times) do
        if(change) then
            addEvent(doCreateMonster, time, "Humongous Fungus", position)
        else
            addEvent(doCreateMonster, time, "Humorless Fungus", position)
        end
        addEvent(doCreateMonster, time, "Hideous Fungus", position)
        change = change and false or true
    end
    
    addEvent(doCreateMonster, 3 * 60 * 1000, "Deathstrike", {x = 33108, y = 31968, z = 10})
    addEvent(doSendMagicEffect, 4 * 60 * 1000, {x = 33108, y = 31968, z = 10}, CONST_ME_TELEPORT)

 

 

 

 

Obrigado vcs dois! No dia que eu fiz esse script eu nem sabia usar o for x, y in pairs do.... Ficou realmente mt melhor.

 

No global, os monstros nao somem quando o time entra no tp. Eles continuam la e o proximo time que for tem que matar eles (Pelo menos foi isso que me foi dito, eu nunca vi esse evento pessoalmente)

 

Abracos.

Maenilse

q manero em fera
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/09/12Posts: 711Char no Tibia: noé

esse sistema parece ser interessante.

Martelix

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/08/08Posts: 57Char no Tibia: Termabre Dore

Muito legal este script, estilo uma demon oak automática ;p

 

Porém, eu acredito que os players serão kickados 3 minutos após entrar na sala não? porque:

 

addEvent(kikar, 3*60*1000

 

Acredito que seja:

addEvent(kikar, 30*60*1000

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

 

Muito legal este script, estilo uma demon oak automática ;p

 

Porém, eu acredito que os players serão kickados 3 minutos após entrar na sala não? porque:

 

addEvent(kikar, 3*60*1000

Acredito que seja:

addEvent(kikar, 30*60*1000

Realmente faltoum um 0 ali, vlw por avisar vou por.

shumagora

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 19/06/12Posts: 89

esse é só warzone 1, e as outras?

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

login12

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 07/06/08Posts: 12Char no Tibia: Drax Zaciust

Errado, no global os monstros são removidos sim.

O que acontece, é que o TP do BOSS, só é liberado, quando e removido um certo crystal,

quando nasce monstros até não ter mais sqm para nascer...

Quando nao tem nenhum SQM mais para nenhum monstro narcer, o Teleport é liberado, para os times entrar

Depois de um certo tempo, sem player la mais, os monstro são removidos,

só fica lá ainda, o leve respawn da area mesmo

 

Se quiser podemos marca uma hora, e eu abro cast pra você ver meu time fazendo, todos os dias a gente faz,

em Azura (World PVP)

Abraços

UroTTa

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/12Posts: 31Char no Tibia: Lost Woods

Killua, poderia editar o script para funcionar na distro 10.37 que é 1.0, um pouco mais antiga.

WWW.LEGENDOT.NET

Mapa styller editado é unico,

Servidor 8.60 totalmente brasileiro.

ricardok10

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 14/06/13Posts: 11Gênero: MasculinoChar no Tibia: [ADM] Mayk on BaiakME
Citar

poderia fazer a 2 warzone é 3 warzone é se não for pedir muito poderia fazer as recompensas ?

  • 1
  • 2