Jump to content
Close
Zazeros

Scripting Players sao teleportados apos puxar a alavanca

Recommended Posts

0.4

 

Boa tarde galera, eu queria uma ajuda numa script que parece com a annihilator, com alguns detalhes a mais.

Quando os players puxassem a alavanca, eles seriam teleportados para a sala, teria um tempo la dentro, e quando esse tempo acabar, eles seriam teleportados pra fora e as criaturas la dentro, seriam removidas. Quando puxassem novamente a alavanca, outros players, as criaturas seria criadas nos devidos lugares.

 

Tem uma script do @Vodkart, que funciona muito bem, os players sao teleportados, as criaturas sao sumonadas, e quando o tempo acaba, eles sao teleportados. O problema é que as criaturas nao estao sumindo, entao quando outros players puxam a alavanca, cria-se mais criaturas, e as que estavam la, continuam.

 

Citar

local t = {
    lvl = 100,
    Time = 15, -- em minutos
    entrada =
    {
        {x = 1045, y = 1014, z = 6}, -- pos players
        {x = 1045, y = 1015, z = 6}
    },
    saida =
    {
        {x = 1110, y = 1122, z = 7}, -- pos para onde eles irão
        {x = 1110, y = 1123, z = 7}
    },
    monstros =
    {
        {{x = 1108, y = 1116, z = 7}, "Orc"}, -- defina pos dos montros e nomes
        {{x = 1108, y = 1117, z = 7}, "Orc"},
        {{x = 1108, y = 1118, z = 7}, "Orc"},
        {{x = 1108, y = 1119, z = 7}, "Orc"}
    }
}
function VarAnihiPlayer(cid)
    if not isCreature(cid) then return LUA_ERROR end
    if isInRange(getPlayerPosition(cid), t.saida[1], t.saida[#t.saida]) then
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    end
end
function getPlayersInArea(fromPos, toPos)
    local players = {}
    for _, pid in ipairs(getPlayersOnline()) do
        if isInRange(getPlayerPosition(pid), fromPos, toPos) then
            table.insert(players, pid)
        end
    end
    return players
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local check = {}
    if #getPlayersInArea(t.saida[1], t.saida[#t.saida]) > 0 then
        doPlayerSendCancel(cid, 'Aguarde, tem jogadores fazendo a quest.') return true
    end
    for _, k in ipairs(t.entrada) do
        local x = getTopCreature(k).uid
        if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < t.lvl) then
            doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..t.lvl..' ou mais.') return true
        end
        table.insert(check, x)
    end
    for _, summon in pairs(t.monstros) do
        local creature = getTopCreature(summon[1]).uid
        if(creature > 0 and not isPlayer(creature)) then
            doRemoveCreature(creature)
        end
        doCleanTile(summon[1])
        doCreateMonster(summon[2], summon[1])
    end
    for i, tid in ipairs(check) do
        doSendMagicEffect(t.entrada, CONST_ME_POFF)
        doTeleportThing(tid, t.saida, false)
        addEvent(VarAnihiPlayer, t.Time*1000, tid)
        doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)
    end
    doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
    return true
end

 


Share this post


Link to post
Share on other sites

que estranho, nenhum deles somem? você pode me passar então a pos de inicio e final da sala? no caso de toda a sala da anihi ai, tipo um quadrado.



vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

@Vodkart Cara, eu tinha feito uma salinha só pra testa:

 

  x = 1105, y = 1113, z = 7    (canto superior esquerdo)

  x = 1115, y = 1123, z = 7    (canto inferior direito)


Share this post


Link to post
Share on other sites

@Zazeros 

 

function HaveCreatureArena(area, remove, clean)
	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 m ~= 0 and isMonster(m) then 
				var = var +1 
			end
			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 from, to = {x = 1105, y = 1113, z = 7}, {x = 1115, y = 1123, z = 7}
local t = {
	lvl = 100,
	Time = 15, -- em minutos
	entrada =
	{
		{x = 1045, y = 1014, z = 6}, -- pos players
		{x = 1045, y = 1015, z = 6}
	},
	saida =
	{
		{x = 1110, y = 1122, z = 7}, -- pos para onde eles irão
		{x = 1110, y = 1123, z = 7}
	},
	monstros =
	{
		{{x = 1108, y = 1116, z = 7}, "Orc"}, -- defina pos dos montros e nomes
		{{x = 1108, y = 1117, z = 7}, "Orc"},
		{{x = 1108, y = 1118, z = 7}, "Orc"},
		{{x = 1108, y = 1119, z = 7}, "Orc"}
	}
}
function VarAnihiPlayer(cid)
	if not isCreature(cid) then return LUA_ERROR end
	if isInRange(getPlayerPosition(cid), t.saida[1], t.saida[#t.saida]) then
		doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
	end
end
function getPlayersInArea(fromPos, toPos)
	local players = {}
	for _, pid in ipairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(pid), fromPos, toPos) then
			table.insert(players, pid)
		end
	end
	return players
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local check = {}
	if #getPlayersInArea(t.saida[1], t.saida[#t.saida]) > 0 then
		doPlayerSendCancel(cid, 'Aguarde, tem jogadores fazendo a quest.') return true
	end
	for _, k in ipairs(t.entrada) do
		local x = getTopCreature(k).uid
		if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < t.lvl) then
			doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..t.lvl..' ou mais.') return true
		end
		table.insert(check, x)
	end
	HaveCreatureArena({from,to}, true, true)
	for _, summon in pairs(t.monstros) do
		doCreateMonster(summon[2], summon[1])
	end
	for i, tid in ipairs(check) do
		doSendMagicEffect(t.entrada, CONST_ME_POFF)
		doTeleportThing(tid, t.saida, false)
		addEvent(VarAnihiPlayer, t.Time*1000, tid)
		doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)
	end
	doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
	return true
end

 


Edited by Vodkart (see edit history)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

@Vodkart Cara, deu esse erro:

 

[9/6/2019 15:30:2] [Error - LuaInterface::loadFile] data/actions/scripts/dungeon test.lua:1: '(' expected near 'ï'
[9/6/2019 15:30:2] [Error - Event::checkScript] Cannot load script (data/actions/scripts/dungeon test.lua)
[9/6/2019 15:30:2] data/actions/scripts/dungeon test.lua:1: '(' expected near 'ï'

 

Edit: era um erro de formatação, mas depois que eu corrigi, deu esse novo:

 

/2019 15:39:13] data/actions/scripts/dungeon test.lua:7: attempt to perform arithmetic on global 'var' (a nil value)
[9/6/2019 15:39:13] stack traceback:
[9/6/2019 15:39:13]     data/actions/scripts/dungeon test.lua:7: in function 'HaveCreatureArena'
[9/6/2019 15:39:13]     data/actions/scripts/dungeon test.lua:67: in function <data/actions/scripts/dungeon test.lua:55>


Edited by Zazeros
atualização (see edit history)

Share this post


Link to post
Share on other sites

@Zazeros esqueci de excluir a linha, desculpa!!

 

function HaveCreatureArena(area, remove, clean)
	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 from, to = {x = 1105, y = 1113, z = 7}, {x = 1115, y = 1123, z = 7}
local t = {
	lvl = 100,
	Time = 15, -- em minutos
	entrada =
	{
		{x = 1045, y = 1014, z = 6}, -- pos players
		{x = 1045, y = 1015, z = 6}
	},
	saida =
	{
		{x = 1110, y = 1122, z = 7}, -- pos para onde eles irão
		{x = 1110, y = 1123, z = 7}
	},
	monstros =
	{
		{{x = 1108, y = 1116, z = 7}, "Orc"}, -- defina pos dos montros e nomes
		{{x = 1108, y = 1117, z = 7}, "Orc"},
		{{x = 1108, y = 1118, z = 7}, "Orc"},
		{{x = 1108, y = 1119, z = 7}, "Orc"}
	}
}
function VarAnihiPlayer(cid)
	if not isCreature(cid) then return LUA_ERROR end
	if isInRange(getPlayerPosition(cid), t.saida[1], t.saida[#t.saida]) then
		doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
	end
end
function getPlayersInArea(fromPos, toPos)
	local players = {}
	for _, pid in ipairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(pid), fromPos, toPos) then
			table.insert(players, pid)
		end
	end
	return players
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local check = {}
	if #getPlayersInArea(t.saida[1], t.saida[#t.saida]) > 0 then
		doPlayerSendCancel(cid, 'Aguarde, tem jogadores fazendo a quest.') return true
	end
	for _, k in ipairs(t.entrada) do
		local x = getTopCreature(k).uid
		if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < t.lvl) then
			doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..t.lvl..' ou mais.') return true
		end
		table.insert(check, x)
	end
	HaveCreatureArena({from,to}, true, true)
	for _, summon in pairs(t.monstros) do
		doCreateMonster(summon[2], summon[1])
	end
	for i, tid in ipairs(check) do
		doSendMagicEffect(t.entrada, CONST_ME_POFF)
		doTeleportThing(tid, t.saida, false)
		addEvent(VarAnihiPlayer, t.Time*1000, tid)
		doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)
	end
	doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
	return true
end

 



vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

@Vodkart Cara, não deu nem um erro no console, mas quando puxa a alavanca, os players não são teleportados, mas os monstros são criados, e depois do tempo,e eles ainda não somem. Ja verifiquei as posições deles e do lugar. Ta tudo certo


Share this post


Link to post
Share on other sites

UP!



MEUS TÓPICO DE DOWNLOAD:

 

 

Sistemas/Scripts:

 

Share this post


Link to post
Share on other sites

Aqui no TibiaKing mensagens como UP e BUMP são proibidas, utilize o botão subir este tópico. Esta é uma mensagem automática!
Pedimos que leia as regras do fórum!

Spoiler

Here in TibiaKing messages like UP and BUMP are prohibited, use the button raise this topic. This is an automated message!
Please read the forum rules.

 


Share this post


Link to post
Share on other sites

só agora que vi, erro meu

 

function HaveCreatureArena(area, remove, clean)
	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 from, to = {x = 1105, y = 1113, z = 7}, {x = 1115, y = 1123, z = 7}
local t = {
	lvl = 100,
	Time = 15, -- em minutos
	entrada =
	{
		{x = 1045, y = 1014, z = 6}, -- pos players
		{x = 1045, y = 1015, z = 6}
	},
	saida =
	{
		{x = 1110, y = 1122, z = 7}, -- pos para onde eles irão
		{x = 1110, y = 1123, z = 7}
	},
	monstros =
	{
		{{x = 1108, y = 1116, z = 7}, "Orc"}, -- defina pos dos montros e nomes
		{{x = 1108, y = 1117, z = 7}, "Orc"},
		{{x = 1108, y = 1118, z = 7}, "Orc"},
		{{x = 1108, y = 1119, z = 7}, "Orc"}
	}
}
function VarAnihiPlayer(cid)
	if not isCreature(cid) then return LUA_ERROR end
	if isInRange(getPlayerPosition(cid), from, to) then
		doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
	end
end
function getPlayersInArea(fromPos, toPos)
	local players = {}
	for _, pid in ipairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(pid), fromPos, toPos) then
			table.insert(players, pid)
		end
	end
	return players
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local check = {}
	if #getPlayersInArea(from, to) > 0 then
		doPlayerSendCancel(cid, 'Aguarde, tem jogadores fazendo a quest.') return true
	end
	for _, k in ipairs(t.entrada) do
		local x = getTopCreature(k).uid
		if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < t.lvl) then
			doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..t.lvl..' ou mais.') return true
		end
		table.insert(check, x)
	end
	HaveCreatureArena({from,to}, true, true)
	for _, summon in pairs(t.monstros) do
		doCreateMonster(summon[2], summon[1])
	end
	for i, tid in ipairs(check) do
		doSendMagicEffect(t.entrada, CONST_ME_POFF)
		doTeleportThing(tid, t.saida, false)
		addEvent(VarAnihiPlayer, t.Time*1000, tid)
		doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)
	end
	doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
	return true
end

 

 


Edited by Vodkart (see edit history)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

@Brunds 

 

function HaveCreatureArena(area, remove, clean)
	for x = area[1].x - 1, area[2].x + 1 do
		for y = area[1].y - 1, area[2].y + 1 do
			for z = area[1].z, area[2].z do
				local pos = {x=x, y=y, z=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
end

local areas = { -- colocas começo e final pos de todas as salas
	{{x=909,y=1019,z=7}, {x=1000,y=1019,z=7}},
	{{x=156,y=1019,z=7}, {x=200,y=1019,z=7}},
	{{x=200,y=1019,z=7}, {x=300,y=1019,z=9}}
}

local t = {
	lvl = 100,
	Time = 15, -- em minutos
	entrada =
	{
		{x = 1045, y = 1014, z = 6}, -- pos players
		{x = 1045, y = 1015, z = 6}
	},
	saida =
	{
		{x = 1110, y = 1122, z = 7}, -- pos para onde eles irão
		{x = 1110, y = 1123, z = 7}
	},
	monstros =
	{
		{{x = 1108, y = 1116, z = 7}, "Orc"}, -- defina pos dos montros e nomes
		{{x = 1108, y = 1117, z = 7}, "Orc"},
		{{x = 1108, y = 1118, z = 7}, "Orc"},
		{{x = 1108, y = 1119, z = 7}, "Orc"}
	}
}

function VarAnihiPlayer(cid, tab)
	if not isCreature(cid) then return LUA_ERROR end
	for _, var in ipairs(tab) do
		if isInRange(getPlayerPosition(cid), var[1], var[2]) then
			doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
		end
	end
end
function getPlayersInArea(fromPos, toPos)
	local players = {}
	for _, pid in ipairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(pid), fromPos, toPos) then
			table.insert(players, pid)
		end
	end
	return players
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local check = {}
	for _, var in ipairs(areas) do
		if #getPlayersInArea(var[1], var[2]) > 0 then
			doPlayerSendCancel(cid, 'Aguarde, tem jogadores fazendo a quest.') return true
		end
	end
	for _, k in ipairs(t.entrada) do
		local x = getTopCreature(k).uid
		if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < t.lvl) then
			doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..t.lvl..' ou mais.') return true
		end
		table.insert(check, x)
	end
	for _, clear in ipairs(areas) do
		HaveCreatureArena({clear[1],clear[2]}, true, true) -- limpar monstro de todas as salas
	end
	for _, summon in pairs(t.monstros) do
		doCreateMonster(summon[2], summon[1])
	end
	for i, tid in ipairs(check) do
		doSendMagicEffect(t.entrada, CONST_ME_POFF)
		doTeleportThing(tid, t.saida, false)
		addEvent(VarAnihiPlayer, t.Time*1000, tid, areas)
		doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)
	end
	doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
	return true
end

 


Edited by Vodkart (see edit history)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...