Ir para conteúdo
  • 0

GlobalEvents que envia players de uma area para o templo!


lucasy

Pergunta

Olá pessoal do Xtibia, estou precisando de um script relativamente simples:

1 Script Globalevents que quando for 10:00hrs ele faz uma checagem entre duas coordenadas, se ouver players na area entre as coordenadas o script enviará os players para o templo automaticamente!

 

As posições são:

inicio: {x = 26367, y = 24832, z = 7}
Fim: {x = 26397, y = 24866, z = 7}

 

Templo: {x = 25000, y = 25000, z = 7}

qxK6sQf.jpg

 

 

Servidor 8.60, OTx Sv 2

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

6 respostass a esta questão

Posts Recomendados

  • 0

@@lucasy,

 

Primeiramente coloque essas funções nas suas librarys (qualquer uma):

 

function getFloorsBetweenPos(fromPos, toPos)
	return math.abs(fromPos.z - toPos.z)
end

function getLowestFloor(fromPos, toPos)
	return fromPos.z > toPos.z and toPos.z or fromPos.z
end

function getAllPlayersInArea(fromPos, toPos)
	local players = {}	
	local andares = getFloorsBetweenPos(fromPos, toPos)
	for index, creature in ipairs(getPlayersOnline()) do
		local z = getLowestFloor(fromPos, toPos)
		local frompos = {x = fromPos.x, y = fromPos.y, z = fromPos.z}
		local topos = {x = toPos.x, y = toPos.y, z = toPos.z}		
		for i = 0, andares do
			z = z or 0
			frompos.z = z + i
			topos.z = z + i	
			if isInArea(getThingPos(creature), frompos, topos) then
				table.insert(players, creature)
			end
		end
	end
	return players
end

 

 

Agora em globalevents, o xml:

 

<globalevent name="teleport" interval="50000" event="script" value="autoteleport.lua"/>

 

 

autoteleport.lua:

 

local config = {
	hour = 10,
	minute = 00,
	initial = {x = 26367, y = 24832, z = 7},
	final = {x = 26397, y = 24866, z = 7},
	temple = {x = 25000, y = 25000, z = 7}
}

function onThink(interval, lastExecution, thinkInterval)
	local static_time = os.time()
	local hour, minute = tonumber(os.date("%H", static_time)), tonumber(os.date("%M", static_time))
	if hour == config.hour and minute == config.minute then
		local totalplayers = getAllPlayersInArea(config.initial, config.final)
		for _, pid in pairs(totalplayers) do
			doTeleportThing(pid, config.temple)
			doSendMagicEffect(config.temple, CONST_ME_TELEPORT)
		end
	end
	return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0

@Bruno Minervino, Obrigado pela ajuda...

Coloquei o primeiro script na lib - 050-function, e o globalevents coloquei certinho. Estou testando aqui usando " hour = 00, minute = 01, " mas aparentemente não acontece nada com o jogador que está entre as coordenadas quando passa o tempo de 1 minuto .

No XML diminui o interval para fazer o teste:


<globalevent name="teleport" interval="5000" event="script" value="autoteleport.lua"/>

Poderia me ajudar?


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

  • 0

@Bruno Minervino, Obrigado pela ajuda...

 

Coloquei o primeiro script na lib - 050-function, e o globalevents coloquei certinho. Estou testando aqui usando " hour = 00, minute = 01, " mas aparentemente não acontece nada com o jogador que está entre as coordenadas quando passa o tempo de 1 minuto .

 

No XML diminui o interval para fazer o teste:

 

<globalevent name="teleport" interval="5000" event="script" value="autoteleport.lua"/>

 

Poderia me ajudar?

 

 

 

Amigo, é o horário da onde o servidor está rodando...

Teria que ser 00:01 (meia-noite e um) para que isso funcione.

 

Enquanto ao interval não precisa diminuir

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...