Ir para conteúdo
  • Cadastre-se

Função de mandar Templo


Posts Recomendados

Gostaria de saber uma função que remova os players que estão entre as areas tal até tal e mande pro templo..

Obrigado.

Link para o post
Compartilhar em outros sites

Retirei do meu evento que postei ontem.

   posicaoArena = {{x = 5144,y = 5062,z = 8},{x = 5160,y = 5078,z = 8}}, -- ponta a ponta da arena

--------------------------------------------------------------------------------------------------------------------------
   function HaveCreatureArena(area, remove, clean) -- função do Vodkart
                        for x = area[1].x - 1, area[2].x + 1 do
                                for y = area[1].y - 1, area[2].y + 1 do
                                        local pos = {x=x, y=y, z=area[1].z}
                                        local m = getTopCreature(pos).uid
                                        if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end
                                        if clean ~= false then doCleanTile(pos, false) end
                                end
   end


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

        HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true)
         for _, pid in ipairs(getPlayersInArena()) do
          doTeleportThing(pid,getTownTemplePosition(getPlayerTown(pid)))
         end
Caso não souber quando fizer o script me passa que eu coloco para você 2bjs.

 

Creditos : Vodkart pela função.

Editado por Ceos (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
	local player = Player(cid)
	distanciax = 5 -- A range da área que vai pegar da posição X
	distanciay = 5 -- A range da área que vai pegar da posição Y
	posicaomeio = Position(x,y,z) -- Posição do meio dessa área
	local town = player:getTown():getPosition()


	local players = Game.getSpectators(posicaomeio, false, true, 0, distanciax, 0, 5)

		for i=1, #players do
		
			players[i]:teleportTo(town)

		end
Editado por 1027929 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Ceos, a dele não verifica a posição em si, ele pega um centro e um raio, quem tiver dentro do raio, ele manda pro templo (pelo menos a logica seria essa, não se funciona, não testei nenhum ainda)

 

Só que acho que a dele ta bugada pois ele pede pra declarar a distanciay mas não usa ela pra nada? '-'

Editado por Disturbbed (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Ceos

Game.getSpectators(position[, multifloor = false[, onlyPlayer = false[, minRangeX = 0[, maxRangeX = 0[, minRangeY = 0[, maxRangeY = 0]]]]]])

Se funciona, funciona sim... mas tem que ver a versão do TFS dele xD

Editado por 1027929 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Ceos, a dele não verifica a posição em si, ele pega um centro e um raio, quem tiver dentro do raio, ele manda pro templo (pelo menos a logica seria essa, não se funciona, não testei nenhum ainda)

 

Só que acho que a dele ta bugada pois ele pede pra declarar a distanciay mas não usa ela pra nada? '-'

Tinha que que ter uma parte que ficasse a pos e frompos para checar quem esta nela e mandar para o templo.

@Ceos

Game.getSpectators(position[, multifloor = false[, onlyPlayer = false[, minRangeX = 0[, maxRangeX = 0[, minRangeY = 0[, maxRangeY = 0]]]]]])

Se funciona, funciona sim... mas tem que ver a versão do TFS dele xD

Cuidado por você comentou uma coisa depois editou.

Link para o post
Compartilhar em outros sites

@Ceos

Normal, BUG do tibia king xD

Bug do tk?, você postou o script la encima tudo errado depois editou?? 

Link para o post
Compartilhar em outros sites

Deu uns erros eu fui mexendo, aquele posicaoArena é um local ou não?

E ta faltando um end na função né? eu coloquei isso e deu o erro:

 

 

post-40662-0-53739500-1429666487_thumb.p

Link para o post
Compartilhar em outros sites

local createpos = {x=150,y=43,z=7}
local createpos2 = {x=151,y=43,z=7}
local topos = {x=1048,y=1269,z=6}
local timetoclose = 60
local posicaoArena = {{x = 1028,y = 1187,z = 6},{x = 1076,y = 1276,z = 7}} -- ponta a ponta da arena

function HaveCreatureArena(area, remove, clean) -- função do Vodkart
                        for x = area[1].x - 1, area[2].x + 1 do
                                for y = area[1].y - 1, area[2].y + 1 do
                                        local pos = {x=x, y=y, z=area[1].z}
                                        local m = getTopCreature(pos).uid
                                        if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end
                                        if clean ~= false then doCleanTile(pos, false) end
                                end
end
end

local function remove()
local tp = getTileItemById(createpos,1387).uid
local tp2 = getTileItemById(createpos2,1387).uid
if tp ~= 0 then
doRemoveItem(tp)
doRemoveItem(tp2)
HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true)
for _, pid in ipairs(getPlayersInArena()) do
doTeleportThing(pid,getTownTemplePosition(getPlayerTown(pid)))
end
end
end


function onTime(interval)
doCreateTeleport(1387, topos, createpos)
doCreateTeleport(1387, topos, createpos2)
addEvent(remove,timetoclose*1000)
return true
end

Link para o post
Compartilhar em outros sites

Bom já que nos no tibiaking estamos para ajudar e ensinar e também aprender veja esse tutorial do do meu ex-professor Summ, nele você vai ter a noção certa de teleport.

 

http://www.tibiaking.com/forum/topic/54988-arena-pvp/

Link para o post
Compartilhar em outros sites

Bom, minha visão sobre o script do cara cujo nome é composto por números...

1. No início do código,

local player = Player(cid)

a variável player foi declarada antes do laço, portanto, não pega player por player do local;

2. A variável distanciay não foi utilizada (provavelmente esqueceu de substituir no final do Game.getSpectators()

3. Esse for

for i=1, #players do

pode ser substituído por esse:

for _code, _cid in ipairs(players) do

onde _code corresponde ao indice do array (i do código anterior) e _cid ao conteúdo do array no respectivo índice, nesse caso, o creature id;

Editei a função para tfs 0.3.4

function doTeleportPlayersToTemple(center, distX, distY)
	local players = getSpectators(center, distX, distY, true)
	for _,_cid in ipairs(players) do
		doTeleportThing(_cid, getTownTemplePosition(_cid, false), true)
		doSendMagicEffect(getCreaturePosition(_cid), CONST_ME_TELEPORT)
	end
end

Como usar

local distancia = {
	x = 7, -- Raio da área afetada (horizontal)
	y = 5 -- Raio da área afetada (vertical)
}
local center = {x=0000, y=0000, z=0} --coordenadas do centro da área
doTeleportPlayersToTemple(center, distancia.x, distancia.y)

*Obs.: Recomendo colocar a função na pasta lib

Editado por david0703 (veja o histórico de edições)

Atenciosamente, David Araujo

Meu Conteúdo

 

Fui útil? Gostou? 
Faça uma doação.

 
 
 

"É errando que se erra."

"Gambiarras resolvem instantemente, porém podem complicar em problemas futuros."

"Cada dia vivido é um aprendizado."

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo