NI
pedido

Evento Invasão com horário e No-Pvp

Por nickissonlobo, 26 de nov. de 2013 em Scripts

evento
resolvido
12
2.3k
nickissonloboN
26 de novembro de 2013 às 12:11

Preciso de um evento invasão automático todos os dias as 19 horas, e que neste horário fique No-pvp, e assim que acabar o evento, volte o pvp automático, alguém consegue fazer ? Rep ++

meubkM
26 de novembro de 2013 às 13:21

quais são os montros q ira invadir e quantos monstros, por quanto tempo o server vai ficar no-pvp ?

Editado Novembro 26 por xotservx

nickissonloboN
26 de novembro de 2013 às 13:42

são vários monstros e pode ficar por 30 minutos

só por em maiúsculo que eu boto os nomes pode ser ?

meubkM
26 de novembro de 2013 às 14:08
local configInv = {
	["19:00"] = {nome = "The Demon Invasion", pos = {x=32369, y=32167, z=7}, monster = {"50 Demon", "200 Dragon"}},
}



local timenopvp = 30 -- em minutos
	

function onThink(interval, lastExecution)
	local day = tonumber(os.date():sub(1,2))
	local hours = tostring(os.date("%X")):sub(1, 5)
	if configInv[hours] then
		if getGlobalStorageValue(95474) == day then return true end
		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
		setWorldType(WORLD_TYPE_NO_PVP)
		addEvent(setWorldType, 1000 * 60 * timenopvp, WORLD_TYPE_PVP)
		setGlobalStorageValue(95474, day)
		
	end
	return true
end

bom as configuração ta no inicio o tempo de no-pvp em minutos e a tabela para vc escolhe a posição do evento e qntos montros vai aparecer e o nome da invasão, lembra de seprar cada monstro por virgula tipo:

{"50 Dragon", "20 Demon", "10 Amazon"}

e sempre entre aspas

nickissonloboN
26 de novembro de 2013 às 14:21

qual tag ponho no globalevents.xml ? e tem como avisar 5 minutos antes de começar a invasão ?

meubkM
26 de novembro de 2013 às 15:56

- cria um arquivo inv.lua e cola o script:

local configInv = {
	["19:00"] = {nome = "The Demon Invasion", pos = {x=32369, y=32167, z=7}, monster = {"50 Demon", "200 Dragon"}},
}


local timenopvp = 30 -- em minutos


function onThink(interval, lastExecution)
	local hours = tostring(os.date("%X")):sub(1, 5)
	local tb = configInv[hours]
	if tb then
		function startInvasion()
			doBroadcastMessage(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
			setWorldType(WORLD_TYPE_NO_PVP)
			addEvent(setWorldType, 1000 * 60 * timenopvp, WORLD_TYPE_PVP)
		end
		doBroadcastMessage(tb.nome .. " ira iníciar em 5 minutos.")
		addEvent(startInvasion, 1000 * 60 * 5)
	end
	return true
end

tag no xml:

<globalevent name="Invasao" interval="60" event="script" value="inv.lua"/>
nickissonloboN
27 de novembro de 2013 às 16:20

Beleza teu rep ta ai, agora tem como eu por 1 bixo cada dia da semana ? tipo ai toda segunda vem Kisame, toda terça Itachi.

kaizy536K
27 de novembro de 2013 às 21:15

bom script, mais eu queria saber, tem como fazer pra o broadcast avisar a cada 1 minuto?, tipo

"Daily Invasion ira iníciar em 5 minutos."

"Daily Invasion ira iníciar em 4 minutos."

"Daily Invasion ira iníciar em 3 minutos."

"Daily Invasion ira iníciar em 2 minutos."

"Daily Invasion ira iníciar em 1 minutos."

"Daily Invasion comecou"

queria saber tambem se tem como escolher aleatoriamente os lugares do spawn, pra nao ficar tudo junto

Editado Novembro 27 por kaizy536

MycryM
04 de dezembro de 2013 às 19:40

Hey,o interval e para que?

Coloquei {"2 Apocalypse", "50 Demon", "20 Orshabaal"}}

Mas não apareceu todos.

Fiz algo errado?

kaizy536K
04 de dezembro de 2013 às 21:52

o meu tambem da isso, eu boto tipo 50 monstros, e so apareçe 9

MycryM
05 de dezembro de 2013 às 11:27

Uai em,qual sera o error no script,não entendo muito =S

1 mês depois...
zipter98Z
15 de janeiro de 2014 às 21:44

Tópico movido para a seção de dúvidas e pedidos resolvidos.