Ir para conteúdo
  • 0

Piso que teleporta player e sumona monstro, depois 2 minuto's monstros summonados sao removidos


Dennyz Dias

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0

data\movements\scripts\nomedoscript.lua:

local tilepos = {x=136, y=48, z=7} -- Posiçao do tile noroeste ( /\ < )
local sq = 3 -- Area 3x3 usar somente numeros impares > 2
local monster = "Demon"
local time = 2 -- Tempo em minutos pra desaparecer

function getUidsInArea(extr1, extr2)
	local dat = {}
	for y = extr1.y, extr2.y do
		for x = extr1.x, extr2.x do
			if isCreature(getThingFromPos({x=x, y=y, z=extr1.z, stackpos=255}).uid) then
				table.insert(dat, getThingFromPos({x=x, y=y, z=extr1.z, stackpos=255}).uid)
			end
		end
	end
	return dat
end

function summonAndRemove(monster, pos, t)
	local function removeCreatureEvent(uid)
		if isCreature(uid) then
			doRemoveCreature(uid)
		end
	end
	local uid = doSummonCreature(monster, pos)
	addEvent(removeCreatureEvent, t*1000, uid)
end

function onStepIn(cid, item, pos, frompos)
	if sq < 3 or sq%2 == 0 then
		return error("SOMENTE NUMEROS IMPARES MAIORES QUE 2")
	end
	local uids = getUidsInArea(tilepos, {x=tilepos.x+sq-1, y=tilepos.y+sq-1, z=tilepos.z})
	if #uids == 0 then
		for y = tilepos.y, tilepos.y+sq-1 do
			for x = tilepos.x, tilepos.x+sq-1 do
				if y == tilepos.y+(sq-1)/2 and x == tilepos.x+(sq-1)/2 then
					doTeleportThing(cid, {x=x, y=y, z=tilepos.z})
				else
					summonAndRemove(monster, {x=x, y=y, z=tilepos.z}, time*60)
				end
			end
		end
	else
		doTeleportThing(cid,frompos,true)
		return doPlayerSendCancel(cid, "There are people inside right now.")
	end
end


xml:

<movevent type="StepIn" actionid="2930" event="script" value="nomedoscript.lua"/>

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

  • 0

data\movements\scripts\nomedoscript.lua:

local tilepos = {x=136, y=48, z=7} -- Posiçao do tile noroeste ( /\ < )
local sq = 3 -- Area 3x3 usar somente numeros impares > 2
local monster = "Demon"
local time = 2 -- Tempo em minutos pra desaparecer

function getUidsInArea(extr1, extr2)
	local dat = {}
	for y = extr1.y, extr2.y do
		for x = extr1.x, extr2.x do
			if isCreature(getThingFromPos({x=x, y=y, z=extr1.z, stackpos=255}).uid) then
				table.insert(dat, getThingFromPos({x=x, y=y, z=extr1.z, stackpos=255}).uid)
			end
		end
	end
	return dat
end

function summonAndRemove(monster, pos, t)
	local function removeCreatureEvent(uid)
		if isCreature(uid) then
			doRemoveCreature(uid)
		end
	end
	local uid = doSummonCreature(monster, pos)
	addEvent(removeCreatureEvent, t*1000, uid)
end

function onStepIn(cid, item, pos, frompos)
	if sq < 3 or sq%2 == 0 then
		return error("SOMENTE NUMEROS IMPARES MAIORES QUE 2")
	end
	local uids = getUidsInArea(tilepos, {x=tilepos.x+sq-1, y=tilepos.y+sq-1, z=tilepos.z})
	if #uids == 0 then
		for y = tilepos.y, tilepos.y+sq-1 do
			for x = tilepos.x, tilepos.x+sq-1 do
				if y == tilepos.y+(sq-1)/2 and x == tilepos.x+(sq-1)/2 then
					doTeleportThing(cid, {x=x, y=y, z=tilepos.z})
				else
					summonAndRemove(monster, {x=x, y=y, z=tilepos.z}, time*60)
				end
			end
		end
	else
		doTeleportThing(cid,frompos,true)
		return doPlayerSendCancel(cid, "There are people inside right now.")
	end
end


xml:

<movevent type="StepIn" actionid="2930" event="script" value="nomedoscript.lua"/>

@

 

vlw manooow shoow , era isso mesmo!

 

Rep++

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

  • 0

data\movements\scripts\nomedoscript.lua:

local tilepos = {x=136, y=48, z=7} -- Posiçao do tile noroeste ( /\ < )
local sq = 3 -- Area 3x3 usar somente numeros impares > 2
local monster = "Demon"
local time = 2 -- Tempo em minutos pra desaparecer

function getUidsInArea(extr1, extr2)
	local dat = {}
	for y = extr1.y, extr2.y do
		for x = extr1.x, extr2.x do
			if isCreature(getThingFromPos({x=x, y=y, z=extr1.z, stackpos=255}).uid) then
				table.insert(dat, getThingFromPos({x=x, y=y, z=extr1.z, stackpos=255}).uid)
			end
		end
	end
	return dat
end

function summonAndRemove(monster, pos, t)
	local function removeCreatureEvent(uid)
		if isCreature(uid) then
			doRemoveCreature(uid)
		end
	end
	local uid = doSummonCreature(monster, pos)
	addEvent(removeCreatureEvent, t*1000, uid)
end

function onStepIn(cid, item, pos, frompos)
	if sq < 3 or sq%2 == 0 then
		return error("SOMENTE NUMEROS IMPARES MAIORES QUE 2")
	end
	local uids = getUidsInArea(tilepos, {x=tilepos.x+sq-1, y=tilepos.y+sq-1, z=tilepos.z})
	if #uids == 0 then
		for y = tilepos.y, tilepos.y+sq-1 do
			for x = tilepos.x, tilepos.x+sq-1 do
				if y == tilepos.y+(sq-1)/2 and x == tilepos.x+(sq-1)/2 then
					doTeleportThing(cid, {x=x, y=y, z=tilepos.z})
				else
					summonAndRemove(monster, {x=x, y=y, z=tilepos.z}, time*60)
				end
			end
		end
	else
		doTeleportThing(cid,frompos,true)
		return doPlayerSendCancel(cid, "There are people inside right now.")
	end
end


xml:

<movevent type="StepIn" actionid="2930" event="script" value="nomedoscript.lua"/>

Parabens pelo script...

 

Teria como adicionar uma funçao? Quando se passar esses 2 minutos e os monstros for retirados aparecer um teleporte por 10 segundos para x lugar?

Link para o comentário
Compartilhar em outros sites

  • 0

Parabens pelo script...

 

Teria como adicionar uma funçao? Quando se passar esses 2 minutos e os monstros for retirados aparecer um teleporte por 10 segundos para x lugar?

local tilepos = {x=136, y=48, z=7} -- Posiçao do tile noroeste ( /\ < )
local sq = 3 -- Area 3x3 usar somente numeros impares > 2
local monster = "Demon"
local time = 2 -- Tempo em minutos pra desaparecer
local tptime = 10 -- tempo em segundos pra desaparecer tp
local tppos = {x=135, y=48, z=7} -- lugar do tp
local tpdest = {x=134,y=55, z=7} -- destino do tp

function getUidsInArea(extr1, extr2)
	local dat = {}
	for y = extr1.y, extr2.y do
		for x = extr1.x, extr2.x do
			if isCreature(getThingFromPos({x=x, y=y, z=extr1.z, stackpos=255}).uid) then
				table.insert(dat, getThingFromPos({x=x, y=y, z=extr1.z, stackpos=255}).uid)
			end
		end
	end
	return dat
end

function summonAndRemove(monster, pos, t)
	local function removeCreatureEvent(uid)
		if isCreature(uid) then
			doRemoveCreature(uid)
		end
	end
	local uid = doSummonCreature(monster, pos)
	addEvent(removeCreatureEvent, t*1000, uid)
end

function createTpAndRemove(pos, topos, t)
	local function removeTp(pos)
		pos.stackpos = 1
		local thing = getThingFromPos(pos)
		if thing.itemid == 1387 then
			doRemoveItem(thing.uid)
		end
	end
	doCreateTeleport(1387, topos, pos)
	addEvent(removeTp, t*1000, pos)
end

function onStepIn(cid, item, pos, frompos)
	if sq < 3 or sq%2 == 0 then
		return error("SOMENTE NUMEROS IMPARES MAIORES QUE 2")
	end
	local uids = getUidsInArea(tilepos, {x=tilepos.x+sq-1, y=tilepos.y+sq-1, z=tilepos.z})
	if #uids == 0 then
		tppos.stackpos = 1
		local tpthing = getThingFromPos(tppos)
		if tpthing.itemid == 1387 then
			doRemoveItem(tpthing.uid)
		end
		for y = tilepos.y, tilepos.y+sq-1 do
			for x = tilepos.x, tilepos.x+sq-1 do
				if y == tilepos.y+(sq-1)/2 and x == tilepos.x+(sq-1)/2 then
					doTeleportThing(cid, {x=x, y=y, z=tilepos.z})
				else
					summonAndRemove(monster, {x=x, y=y, z=tilepos.z}, time*60)
				end
			end
		end
		addEvent(createTpAndRemove, time*60*1000, tppos, tpdest, tptime)
	else
		doTeleportThing(cid,frompos,true)
		return doPlayerSendCancel(cid, "There is people inside right now.")
	end
end


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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...