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:
-- Killua Automatic Raids System -- Created by Killua, antigo amoeba13 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, timeBoss = 60}, {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, timeBoss = 120} } function isWalkable(pos)-- by Nord / editado por Omega if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif getTopCreature(pos).uid > 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end function onThink(interval, lastExecution, thinkInterval) for _, myRaids in pairs(raids) do if table.find(myRaids.dates, os.date("%A-%H:%M")) then local pos = {x = math.random(myRaids.fromPoss.x, myRaids.toPoss.x), y = math.random(myRaids.fromPoss.y, myRaids.toPoss.y), z = math.random(myRaids.fromPoss.z, myRaids.toPoss.z)} local a = 0 local b = 60000 addEvent(doBroadcastMessage, 60000, "A invasao de " .. myRaids.name .. " teve inicio!") addEvent(doBroadcastMessage, myRaids.maxMonsters * 500 + myRaids.timeBoss * 1000, "O boss " .. myRaids.boss .. " chegou na invasao!") while not(a == myRaids.maxMonsters) do local bonsters = math.random(1, #myRaids.monsters) local pos = {x = math.random(myRaids.fromPoss.x, myRaids.toPoss.x), y = math.random(myRaids.fromPoss.y, myRaids.toPoss.y), z = math.random(myRaids.fromPoss.z, myRaids.toPoss.z)} addEvent(function() if isWalkable(pos) then doCreateMonster(myRaids.monsters[bonsters], pos) end end, b) a = a + 1 b = b + 500 end addEvent(function() if isWalkable(pos) then doCreateMonster(myRaids.boss, pos) end end, myRaids.maxMonsters * 500 + myRaids.timeBoss * 1000) end end return true end
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.