Ir para conteúdo
  • 0

Teleport pro global events


f55felipe

Pergunta

Tudo beleza, estou com uma duvida em uma script que fiz, vamos la:

queria que em2h em 2h abri-se o portal e leva-se tudos pra uma sala de espera

depois de 5 minutos o portal fechava, ai se tivesse mais que 5 players nessa sala

ele teleportaria todos para area diferentes no mapa se tivesse menos que 5 players jogava todos para o templo.

 

comecei fazer um, so que nao consigo continuar porque sou bem ruim em lua. vo postar aq.

 

local positioni = x=XXX, y=XXX, z=XXX}

function onThink(interval, lastExecution, thinkInterval)

local time = 5

doCreateTeleport(1387, {x=XXX, y=XXX, z=XXX}, positioni)

doBroadcastMessage("O portal para o evento foi aberto e se fexará em 5 minutos.")

addEvent(deleteTp, time*60)

addEvent(mover, (time+1)*60)

addEvent(doBroadcastMessage, time*100*60, "O portal do evento foi fexado. Próximo evento em 2 horas.")

end

function deleteTp()

local delete = getTileItemById(positioni, 1387)

doRemoveItem(delete.uid, 1)

doSendMagicEffect(positioni, CONST_ME_TELEPORT)

end

function mover()

local frompos,topos = {x=xxx, y=yyy, z=z}, {x=xxx, y=yyy, z=z}

area = {x = 1017, y = 1026, z = 7}

for a,b in pairs(getPlayersOnline()) do

if isInArea(getThingPos(b),frompos, topos) then

doTeleportThing(b, area)

end

return true

end


----------------

 

desde ja obrigado e agradeco

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
local Config = 
{
	PosTPSpawn = {x=XXX, y=XXX, z=XXX}, -- pos que o tp irá aparecer
	PosPlayerTP = {x=XXX, y=XXX, z=XXX}, -- pos que o tp irá teleportar o player
	Tempo = 10, -- Tempo em segundos que o TP ficará no local até desaparecer e o tempo que irá teleportar os players da sala
	PosicoesTeleporte =
	{ -- Posições que teleportará cada player, caso a sala tenha 5 players
		{x = XXX, y = YYY, z = ZZZ}, -- Tp Player Pos1
		{x = XXX, y = YYY, z = ZZZ}, -- Tp Player Pos2
		{x = XXX, y = YYY, z = ZZZ}, -- Tp Player Pos3
		{x = XXX, y = YYY, z = ZZZ}, -- Tp Player Pos4
		{x = XXX, y = YYY, z = ZZZ}, -- Tp Player Pos5
	},
	AreaDe = {x=XXX, y=XXX, z=XXX},
	AreaAte = {x=XXX, y=XXX, z=XXX},
}

function onThink(interval, lastExecution, thinkInterval)


	doCreateTeleport(1387, Config.PosTPSpawn, Config.PosPlayerTP)

	doBroadcastMessage("O portal para o evento foi aberto e se fexará em 5 minutos.")

	addEvent(function() deleteTp() end, ((Config.Tempo * 1000)*60))

	addEvent(function() mover() end, ((Config.Tempo * 1000)*60))

	addEvent(function() doBroadcastMessage("O portal do evento foi fexado. Próximo evento em 2 horas.", 25) end, ((Config.Tempo * 1000)*60))

end

function deleteTp()

	local delete = getTileItemById(Config.PosTPSpawn, 1387)

	doRemoveItem(delete.uid, 1)

	doSendMagicEffect(positioni, CONST_ME_TELEPORT)

end

function mover()
	
	local PlayersArea = RetornarPlayersArea(Config.AreaDe, Config.AreaAte)
	local TpTemplo = false
	
	if #PlayersArea < 5 then
		TpTemplo = true
	end
	
	for i = 1, #PlayersArea do
		if TpTemplo == true
			doTeleportThing(PlayersArea[i], getTownTemplePosition(getPlayerTown(PlayersArea[i])))
		else
			local IndexPos = math.random(1, #Config.PosicoesTeleporte)
			doTeleportThing(PlayersArea[i], Config.PosicoesTeleporte[IndexPos])
		end
	end
	
	return true

end

function RetornarPlayersArea(PosIn, PosFn)
	playersInArea = {}
	for _, pid in ipairs(getPlayersOnline()) do
		local Pos = getCreaturePosition(pid)
		
		if PosIn.x <= Pos.x and PosIn.y <= Pos.y and PosIn.z == Pos.z then
		
			if PosFn.x >= Pos.x and PosFn.y >= Pos.y and PosFn.z == Pos.z then
				table.insert(playersInArea, pid)
			end
		end
	end
	
	return playersInArea
end

Tenta isso, eu não testei mas acho que vai funcionar, qualquer coisa retorna o print do erro :D que as vezes pode ter erro bobo... Ai o tempo que esse script será chamado, você coloca no globalevents.xml

 

valeu

Editado por Pokemon Nox Ofi
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado por responder e desculpa a demora, peguei o seu script e modifiquei para ele fazer teleport radom, VLW pela ajuda REP+ , falta so arrumar as pessoas ele sempre teleporta todas indepentes se tem 1 so na sala.

__________________________________

local Config = 
{
    PosTPSpawn = {x=32991, y=32416, z=7}, -- pos que o tp vai manda
    PosPlayerTP = {x=32962, y=32077, z=7}, -- pos que o tp irá aparecer
    Tempo = 30, -- Tempo em segundos que o TP ficará no local até desaparecer e o tempo que irá teleportar os players da sala

    templo = {x=32957, y=32076, z=7},

    AreaDe = {x=32989, y=32415, z=7},
    AreaAte = {x=32993, y=32419, z=7},
        

     from = {x = 32989, y = 32405, z = 8}, -- Posicao da topo esquerdo
     to = {x = 33003, y = 32419, z = 8}, -- posicao da base direita


}

function onThink(interval, lastExecution, thinkInterval)


    doCreateTeleport(1387, Config.PosTPSpawn, Config.PosPlayerTP)

    doBroadcastMessage("O portal para o evento foi aberto e se fexará em 30 segundos.")

    addEvent(function() deleteTp() end, ((Config.Tempo * 1000)*1))

    addEvent(function() mover() end, ((Config.Tempo * 1000)*1))    

    addEvent(function() doBroadcastMessage("O portal do evento foi fexado. Próximo evento em 1 horas.", 25) end, ((Config.Tempo * 1000)*1))


    return true
end

function deleteTp()

    local delete = getTileItemById(Config.PosPlayerTP, 1387)

    doRemoveItem(delete.uid, 1)

    doSendMagicEffect(positioni, CONST_ME_TELEPORT)

end


function mover()
    
    local PlayersArea = RetornarPlayersArea(Config.AreaDe, Config.AreaAte)
    local TpTemplo = false
    
    if #PlayersArea > 3 then
        TpTemplo = true
    end
    
    for i = 1, #PlayersArea do

        if TpTemplo == true then
            
            local p = {x = math.random(Config.from.x, Config.to.x), y = math.random(Config.from.y, Config.to.y), z = math.random(Config.from.z, Config.to.z)}
            doTeleportThing(PlayersArea, p)
             doSendMagicEffect(p, CONST_ME_TELEPORT)
             doPlayerSendTextMessage(PlayersArea, MESSAGE_STATUS_WARNING, "Comecssssou!")
            

        else            
            doTeleportThing(PlayersArea, config.templo)
            doPlayerSendTextMessage(PlayersArea, MESSAGE_STATUS_WARNING, "sem Pessoas suficentes, menos que 3.")

                            
        end
        
    end
    
    return true

end

function RetornarPlayersArea(PosIn, PosFn)
    playersInArea = {}
    for _, pid in ipairs(getPlayersOnline()) do
        local Pos = getCreaturePosition(pid)
        
        if PosIn.x <= Pos.x and PosIn.y <= Pos.y and PosIn.z == Pos.z then
        
            if PosFn.x >= Pos.x and PosFn.y >= Pos.y and PosFn.z == Pos.z then
                table.insert(playersInArea, pid)
            end
        end
    end
    
    return playersInArea
end

 

 

 

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

×
×
  • Criar Novo...