Ir para conteúdo

Posts Recomendados

Atendendo ao pedido do LourencoTibia (http://www.xtibia.com/forum/topic/221228-peca-aqui-o-seu-sistemaevento/page-2#entry1563530)

 

Explicação:

 

Você cria uma casa. Através dessa casa você dá acesso a um lugar (preferivelmente pequeno). Nesse lugar você coloca uma alavanca e um quadro negro, placa, ou coisa do tipo. Ao puxar a alavanca, será ativado um respawn de um determinado monstro (configurável), limpando todos os outros monstros que existem nessa área, enviando uma msg para o jogador sobre qual respawn está ativado. Ao olhar para a placa/quadro/etc (você escolhe), o jogador receberá uma janela com os monstros que podem ser ativados e qual está ativo no momento.

 

Códigos:

  • Salve em actions/scripts como qgaction1.lua

 

local monsters = {
	[1] = 'demon',
	[2] = 'vampire',
	[3] = 'dragon lord',
	[4] = 'hydra',
}

local respPos = {
	[1] = {x=57, y=223, z=7},
	[2] = {x=79, y=223, z=7},
	[3] = {x=56, y=224, z=7},
	[4] = {x=82, y=242, z=7},
}

local exhaust = 10 -- Em segundos
local posi = {x=49, y=217, z=7}
local posf = {x=90, y=271, z=7}

local gstorage1 = 8671
local gstorage2 = 8672

function getCreaturesInArea(pos1, pos2)
	if not pos1.x or not pos2.x or not pos1.y or not pos2.y or not pos1.z or not pos2.z then
		return false
	end
	local players, monsters = {}, {}
	for x = pos1.x, pos2.x do
		for y = pos1.y, pos2.y do
			for z = pos1.z, pos2.z do
				local creature = getTopCreature({x=x, y=y, z=z})
				if isPlayer(creature.uid) then
					table.insert(players, creature.uid)
				elseif isMonster(creature.uid) then
					table.insert(monsters, creature.uid)
				end
			end
		end
	end
	return {monsters = monsters, players = players}
end

function onUse(cid, item, fromPos)
	if getGlobalStorageValue(gstorage2) <= os.time() then
		local gsto = getGlobalStorageValue(gstorage1)
		local next_monster = gsto + 1
		if not monsters[next_monster] then
			next_monster = 1
		end
		setGlobalStorageValue(gstorage1, next_monster)
		next_monster = monsters[next_monster]
		doPlayerSendTextMessage(cid, 27, 'Respawn ativado: '..next_monster..'.')
		local creatures = getCreaturesInArea(posi, posf)
		for _, mid in ipairs(creatures.monsters) do
			doRemoveCreature(mid)
		end
		for _, pos in ipairs(respPos) do
			doCreateMonster(next_monster, pos)
		end
		setGlobalStorageValue(gstorage2, os.time() + exhaust)
		if item.itemid % 2  == 1 then
			doTransformItem(item.uid, item.itemid + 1)
		else
			doTransformItem(item.uid, item.itemid - 1)
		end
		return true
	else
		doPlayerSendCancel(cid, getGlobalStorageValue(gstorage2) - os.time()..' segundos para que a alavanca possa ser utilizada novamente.')
		doSendMagicEffect(getThingPos(cid), 2)
		return true
	end
end

  • Salve em creaturescripts/scripts como qglook1.lua:

 

local monsters = {
	[1] = 'demon',
	[2] = 'vampire',
	[3] = 'dragon lord',
	[4] = 'hydra',
}
local gstorage1 = 8671
local gstorage2 = 8672
local aid = 75000

function onLook(cid, thing, position, lookDistance)
	if isCreature(thing.uid) then return true end
	if thing.actionid == aid then
		local monster = monsters[getGlobalStorageValue(gstorage1)]
		if not monster then
			monster = monsters[1]
		end
		local str = ''
		for i, monstername in ipairs(monsters) do
			str = str.. '['..i..'] '..monstername..'\n'
		end
		str = 'Monstros disponiveis nesse QG:\n'..str..'Monstro definido atualmente:\n'..monster
		doShowTextDialog(cid, thing.itemid, str)
		return false
	end
	return true
end

 

 

TAGs

  • Em creaturescripts.xml, adicione:
<event type="look" name="QGboard1" event="script" value="qglook1.lua"/>
  • Em actions.xml, adicione:
<action actionid="> actionid de sua escolha <" script="qgaction1.lua"/>
  • Em login.lua, adicione (próximo aos demais registerCreatureEvents)
registerCreatureEvent(cid, "QGboard1")
Configurações (preste atenção ou não irá funcionar)

 

local aid = 75000
  • Aqui você deverá adicionar um actionid (diferente para cada QG) no quadro/placa/etc (pelo editor do mapa) e ele deverá ser o mesmo daqui
local monsters = {
	[1] = 'demon',
	[2] = 'vampire',
	[3] = 'dragon lord',
	[4] = 'hydra',
}
  • Aqui você deve configurar, ordenadamente, os monstros que estarão disponíveis do Quartel General
local posi = {x=49, y=217, z=7}
local posf = {x=90, y=271, z=7}
  • Aqui você deve configurar a posição inicial (canto superior esquerdo) e a posição final (canto inferior direito) do seu QG
local gstorage1 = 8671
local gstorage2 = 8672
  • Aqui você deve colocar números aleatórios e diferentes em cada QG (lembre-se de editar nos dois arquivos e deixe assim para o primeiro QG)
local respPos = {
	[1] = {x=57, y=223, z=7},
	[2] = {x=79, y=223, z=7},
	[3] = {x=56, y=224, z=7},
	[4] = {x=82, y=242, z=7},
}
  • Aqui você insere cada uma das posições dos spawns, dentro da área em que os monstros serão criados
O processo deverá ser repetido inteiro para cada novo QG, mudando, além das configurações, os nomes QGboard1, qglook1, qgaction1 para o número do QG que você está fazendo!

 

Screenshot

5nt3dy.png

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

tem como fazer um evento de guild por alancanca podendo entrar no local de guild de duelos 5 em 5 pessoas?

http://www.xtibia.com/forum/topic/221228-peca-aqui-o-seu-sistemaevento/

pede ai tio.

 

 

LoooL que massa kkkk' curti paaks pena que to sem rep por hoje amanhã eu te dou rep++ vou dar uma modificada nos monstros e nas msg pro meu servidor kkkkk'

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

  • 2 weeks later...

ae omega queria lhe pedir este event : CASTELO DO REI!!

 

ele é do servidor de gta

é o seguinte:

 

o admin fala !castlerei e aparece uma msg (branca) :o Evento CASTELO DO REI terá inicio em 1 minuto!!

para entrar no evento, o player tem q escolher um time (PRETO ou BRANCO) digitando o comando !PRETO , !BRANCO,

quando dá o tempo, no centro do templo principal abre um teleport levando os players para uma ilha,

Obs: se o player nao escolher o time, ele nao entra no evento. e se ele ja tiver sido rei, ele também n pode entra, até outra pessoa ser rei.

o objetivo do evento é ficar emcima de uma cadeira no meio da ilha por 1200 segundos para ser o REI do servidor, sendo que o evento dura 30min

ai ja viu ne ^^ continuando:

Obs: a cadeira fica contando 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15... até bater 1200.

quando conta os 1200 segundos emcima da cadeira, todos voltão para o templo e o player vencedor também, mais com um item (premio(Configuravel)) em sua backpack.

 

Já ia esquecendo, atras da cadeira, como no video, tem 1 alavanca (se ouver algum player na cadeira, um segundo player (inimigo) nao tao afim de matar o que está la na cadeira, invade ali e pucha a alavanca, movendo o player (Na cadeira) para o templo e tomando o seu lugar (e a contagem volta do 0).

 

expliquei o maximo que pude, nesse link da pra entender um pouco

 

http://www.youtube.com/watch?v=FdqUWzpGJfg

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

×
×
  • Criar Novo...