Ir para conteúdo

Posts Recomendados

Killua Raids System

 

É um sistema normal de raids, compatível com quase todas versões do TFS (testado no 0.3.6 e 0.4), que acontecem automaticamente no local desejado, com dia e hora marcada.

 

Instalando:

 

Crie amoebaRaids.lua em data/globalevents/scripts e coloque isto:

 

 

  Mostrar conteúdo oculto

 

No globalevents.xml coloque essa tag:

​<globalevent name="AmoebaRaids" interval="60" event="script" value="amoebaRaids.lua"/>

Configurar:

 

A configuração é toda feita nessa tabela:

local raids = {
    {name = "Monstros de fogo", monsters = {"Demon", "Dragon Lord", "Fire Devil"}, boss = "Orshabaal", fromPoss = {x=150, y=37, z=7}, toPoss = {x=157, y=42, z=7}, dates = {"Thursday-15:00", "Saturday-22:12"}, maxMonsters = 15},
    {name = "Dragons", monsters = {"Dragon", "Dragon Lord", "Dragon Hatchling"}, boss = "Demodras", fromPoss = {x=1, y=1, z=1}, toPoss = {x=1, y=1, z=1}, dates = {"Monday-12:01", "Sunday-20:10"}, maxMonsters = 20}
}

name é o nome da invasão, que vai aparecer no broadcast.

monsters são os monstros que vão ser criados na invasão.

boss é o boss que nasce depois de x segundos após todos os monstros serem criados.

fromPoss é o canto superior esquerdo da área onde a invasão vai ocorrer.

toPoss é o canto inferior direito da área onde a invasão vai ocorrer.

dates são as datas (dias e horarios) em que as invasões ocorrerão. Sendo sempre escritas nesse formato "Dia(em inglês)-hora:minuto" . Exemplo "Monday-12:01". A primeira letra deve ser maiúscula.

maxMonsters é o número de monstros que vão ser criados na invasão, sem contar o boss.

timeBoss é o tempo (em segundos) que o boss leva pra nascer após todos os outros monstros terem sido criados.

 

Espero que gostem.

Editado por Killua
Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/
Compartilhar em outros sites

Eu tenho uma dúvida:

 

"boss é o boss que nasce 2 minutos após todos os outros monstros serem criados."

 

Tem como alterar esse tempo, para 5 minutos, ou 10, 15, etc?

Editado por JustinnoTibianno
Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/#findComment-1604018
Compartilhar em outros sites

  Em 16/01/2014 em 17:27, JustinnoTibianno disse:

Eu tenho uma dúvida:

 

"boss é o boss que nasce 2 minutos após todos os outros monstros serem criados."

 

Tem como alterar esse tempo, para 5 minutos, ou 10, 15, etc?

 

Vc só precisa mudar essas duas linhas:

end, myRaids.maxMonsters * 500 + 120000)

 addEvent(doBroadcastMessage, myRaids.maxMonsters * 500 + 120000, "O boss " .. myRaids.boss .. " chegou na invasao!")

120000 representa os 2 minutos, vc pode por o tempo que quiser aí. (1000 = 1 segundo). Mas já vou por uma variável no início pra escolher quanto tempo o boss vai levar pra nascer.

Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/#findComment-1604020
Compartilhar em outros sites

  • 2 weeks later...

Meu deus, que script gigante e mal otimizado. Tem umas variáveis que eu não descobri de onde surgiram. Também você usou um while quando podia usar um for.

 

local raids = {
    {name = "Monstros de fogo", monsters = {"Demon", "Dragon Lord", "Fire Devil"}, boss = "Orshabaal", fromPos = {x=150, y=37, z=7}, toPos = {x=157, y=42, z=7}, dates = {"Thursday-15:00", "Saturday-22:12"}, maxMonsters = 15, timeBoss = 60},
    {name = "Dragons", monsters = {"Dragon", "Dragon Lord", "Dragon Hatchling"}, boss = "Demodras", fromPos = {x=1, y=1, z=1}, toPos = {x=1, y=1, z=1}, dates = {"Monday-12:01", "Sunday-20:10"}, maxMonsters = 20, timeBoss = 120},
}

-- http://stackoverflow.com/questions/18093728/is-there-any-performance-value-in-creating-local-copies-of-lua-functions
local r = math.random

function doCreateMonsterIfWalkable(monster, pos)
    (getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 or getTopCreature(pos).uid > 0 or isCreature(getTopCreature(pos).uid) or getTileInfo(pos).protection or hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7)) and doCreateMonster(raid.monsters[monster], pos)
end
 
function onThink(interval, lastExecution, thinkInterval)
    for _, raid in pairs(raids) do
        if table.find(raid.dates, os.date("%A-%H:%M")) then
            local spawn_time = 60000, spawn_boss = raid.maxMonsters + (raid.timeBoss << 1)) * 500
            addEvent(doBroadcastMessage, 60000, "A invasao de " .. raid.name .. " teve inicio!")
            addEvent(doBroadcastMessage, spawn_boss, "O boss " .. raid.boss .. " chegou na invasao!")
            for i = 1, raid.maxMonsters do
                addEvent(doCreateMonsterIfWalkable(raid.monsters[r(1, #raid.monsters)], {x = r(raid.fromPos.x, raid.toPos.x), y = r(raid.fromPos.y, raid.toPos.y), z = r(raid.fromPos.z, raid.toPos.z)}), spawn_time)
                spawn_time = spawn_time + 500
            end
            addEvent(doCreateMonsterIfWalkable(raid.boss, {x = r(raid.fromPos.x, raid.toPos.x), y = r(raid.fromPos.y, raid.toPos.y), z = r(raid.fromPos.z, raid.toPos.z)}, spawn_boss)
        end
    end
    return true
end
Mudei umas coisas de cabeça, se não der me avisa.
Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/#findComment-1607825
Compartilhar em outros sites

Cara o tamanho ficou quase o mesmo, vc só colocou as linhas da função do Omega em uma só gigantesca (eu sei que vc já incluiu o doCreateMonster nela)... E qual o problema de usar while no lugar de for se funciona do mesmo jeito? Eu acho que o meu é mais organizado e fácil de entender...

 

As variáveis que eu fiz repetidas são pq eu precisava usar o math.random dentro e fora do while, quando eu usava só fora, o script fazia o sorteio uma vez só...

Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/#findComment-1607887
Compartilhar em outros sites

Usar while no lugar de for não é problema, mas o for foi criado justamente pra isso (iterar de x até y), aí faz a mesma coisa sem você precisar se preocupar com o iterador. Do mais foi só mania minha de DRY.

 

Uma sugestão, faça seu script receber várias waves com delays diferentes, tipo assim:

{
  name = "Dragons",
  waves = {
    {
      monsters = {"Dragon Hatchling", "Dragon Lord Hatchling"},
      maxMonsters = 15
    },
    {
      delay = 120,
      monsters = {"Dragon Hatchling", "Dragon Lord Hatchling", "Dragon"},
      maxMonsters = 18
    },
    {
      delay = 300,
      monsters = {"Dragon Hatchling", "Dragon Lord Hatchling", "Dragon", "Dragon Lord"},
      maxMonsters = 21
    },
    {
      delay = 600,
      monsters = {"Dragon Hatchling", "Dragon Lord Hatchling"},
      maxMonsters = 24
    },
  },
  boss = "Orshabaal",
  fromPos = {x=150, y=37, z=7},
  toPos = {x=157, y=42, z=7},
  dates = {"Thursday-15:00", "Saturday-22:12"},
  bossDelay = 900
}
Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/#findComment-1608516
Compartilhar em outros sites

  • 3 weeks later...
  Em 11/02/2014 em 14:21, akbolota disse:

e se ninguem matar o boss? ele não some depois de tantos tempo?? eu precisava de um script que fizesse isso, me ajuda ai plix '-'

 

Se ngm matar ele continua lá... Mas posso fazer ele remover sim. Se vc puder esperar até segunda-feira fica tranquilo, pq só vou ter tempo a partir de lá...

 

 

  Em 13/02/2014 em 00:10, Leleuh Mattos disse:

Achei simples e funcional, não é complexo.

As pessoas que não entendem não sofreriam com mistérios nele, parabéns, rs.

 

Obrigado :)

Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/#findComment-1613347
Compartilhar em outros sites

Script funcionou,mas cria infinitos monstros e envia monte de msg!!

00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!

Mesmo colocando 8 monstros aparece um monte!

 

Servidor 8.6(DEV 0.4 3884)

Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/#findComment-1614288
Compartilhar em outros sites

  • 1 month later...
  Em 16/02/2014 em 03:50, duasrodas disse:

Script funcionou,mas cria infinitos monstros e envia monte de msg!!

00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!
00:46 O boss Demodras chegou na invasao!

Mesmo colocando 8 monstros aparece um monte!

 

Servidor 8.6(DEV 0.4 3884)

 

Desculpe a demora para responder, eu não tinha visto. Seu servidor deve ser por milissegundos. Na tag do globalevents, mude o intervalo de 60 para 60000, abraços.

Link para o comentário
https://xtibia.com/forum/topic/227281-killua-automatic-raids-system/#findComment-1627103
Compartilhar em outros sites

×
×
  • Criar Novo...