Ir para conteúdo
  • 0

(Resolvido) Sistema De Invasão


felipejf

Pergunta

Tipo do script: sistema de invasão

Protocolo (versão do Tibia): 8.60

Servidor utilizado: TFS 0.4 SVN

Nível de experiência: Não sei

Adicionais/Informações: Queria um sistema de invasão com os seguintes eventos, igual ao do global.

 

 

* Hora e dia;

* Local para os monstros nascer;

* E se ninguém matar o mostro sumir depois de 15mim ;

* Enviar msg no broadcast;

* De forma automática executar os raids.

 

Tentei utilizar este sistema

http://www.xtibia.com/forum/topic/156691-globalevents-invasao/

Mas não funcionou aqui.

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

Posts Recomendados

  • 0

inv.lua

local days = {
["Sunday"] = {
["00:00"] = {nome = "Demon Invasões", pos = {x=185, y=54, z=7}, monster = {"40 Demon", "50 Fire Devil", "4 Orshabaal"}, Time = 15},
["21:00"] = {nome = "Dragon Invasões", pos = {x=185, y=54, z=7}, monster = {"100 Dragon"}, Time = 15}
},
["Saturday"] = {
["00:00"] = {nome = "Demon Invasões", pos = {x=185, y=54, z=7}, monster = {"40 Demon", "50 Fire Devil", "4 Orshabaal"}, Time = 15},
["21:13"] = {nome = "Dragon Invasões", pos = {x=185, y=57, z=7},monster = {"100 Dragon"}, Time = 15}
}
}
function onThink(interval, lastExecution)
function getDayName()
local days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
return days[os.date("*t")["wday"]]
end
hours = tostring(os.date("%X")):sub(1, 5)         
               tb = days[getDayName()][hours]
               if tb then
       function removeCreature()
for x = ((tb.pos.x)-10), ((tb.pos.x)+10) do
for y = ((tb.pos.y)-10), ((tb.pos.y)+10) do
local m = getTopCreature({x=x, y=y, z= tb.pos.z}).uid 
if m ~= 0 and isMonster(m) then
doRemoveCreature(m)
end
end
end
return true
end
                               addEvent(removeCreature, tb.Time*60*1000)
                               doBroadcastMessage(hours .. " - " .. tb.nome .. " Iníciou.")
                               for _,x in pairs(tb.monster) do
                                               for s = 1, tonumber(x:match("%d+")) do
                                                               doSummonCreature(x:match("%s(.+)"), tb.pos)
                                               end
                               end

               end
               return true
end

 

globalevents.xml

<globalevent name="Invasao" interval="60" event="script" value="inv.lua"/>

Link para o comentário
Compartilhar em outros sites

  • 0

Ele funcionou só a parte de sumonar o mostro, ele não remove depois de 15min.

Não sei se tem a ver deu um erro que esta na img abaixo.

Eu modifiquei uma parte:

Estava assim:

doBroadcastMessage(hours .. " - " .. tb.nome .. " Iníciou.")

 

E eu modifiquei para:

 doBroadcastMessage(tb.nome)

 

Mas acho que não tem nada haver.

post-82517-0-47257600-1334452689_thumb.png

Link para o comentário
Compartilhar em outros sites

  • 0

inv.lua

 

local days = {

["Sunday"] = {

["00:00"] = {nome = "Demon Invasões", pos = {x=185, y=54, z=7}, monster = {"40 Demon", "50 Fire Devil", "4 Orshabaal"}, Time = 15},

["21:00"] = {nome = "Dragon Invasões", pos = {x=185, y=54, z=7}, monster = {"2 Dragon"}, Time = 15}

},

["Saturday"] = {

["00:00"] = {nome = "Demon Invasões", pos = {x=180, y=390, z=7}, monster = {"40 Demon", "50 Fire Devil", "4 Orshabaal"}, Time = 15},

["21:48"] = {nome = "Dragon Invasões", pos = {x=180, y=390, z=7},monster = {"2 Dragon"}, Time = 15}

}

}

function onThink(interval, lastExecution)

function getDayName()

local days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}

return days[os.date("*t")["wday"]]

end

hours = tostring(os.date("%X")):sub(1, 5)

tb = days[getDayName()][hours]

if tb then

function removeCreature()

for x = ((tb.pos.x)-10), ((tb.pos.x)+10) do

for y = ((tb.pos.y)-10), ((tb.pos.y)+10) do

local m = getTopCreature({x=x, y=y, z= tb.pos.z}).uid

if m ~= 0 and isMonster(m) then

doRemoveCreature(m)

end

end

end

return true

end

addEvent(removeCreature, tb.Time*60*1000)

doBroadcastMessage(tb.nome)

for _,x in pairs(tb.monster) do

for s = 1, tonumber(x:match("%d+")) do

doSummonCreature(x:match("%s(.+)"), tb.pos)

end

end

end

return true

end

 

 

globalevents.xml

 

<globalevent name="inv" interval="50000" event="script" value="inv.lua"/>

 

 

 

Coloquei o timer = 1 e não funcionou.

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

  • 0

estranho, testei aqui e funcionou, porque você coloca interval="50000" ?

se for isso vc tem q mudar o tempo também aqui no addEvent

 

addEvent(removeCreature, tb.Time*60*1000)

 

tem que passar pra ms

 

tenta

 

addEvent(removeCreature, tb.Time*60000)

 

60000 ms = 1 minuto

 

tb.Time*60000 se time for 15

vai fazer a contagem rlx de 15*60000 = 900000

 

 

900000ms = 15 minutos

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

  • 0

Tipo vi em outro topico que o cara coloco isso para remover, so que nao sei como utilizar neste seu script.

 

function removeMonster(pid)
if (isMonster(pid) == true) then
doRemoveCreature(pid)
end
end

Link para o comentário
Compartilhar em outros sites

  • 0

Não sei porque, ele não estava removendo a criatura, como eu disse o usuário Jhon992 utilizo este código:

function removeMonster(pid)
if (isMonster(pid) == true) then
doRemoveCreature(pid)
end
end

Pedi a ele que colocasse no script e deu certo.

Estou testando aqui mas ele ja removeu a criatura, irei testar se alguém tiver atacando o monstro ira sumir.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...