Ir para conteúdo

Featured Replies

Postado

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

 

  • Respostas 11
  • Visualizações 1.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • UP!

  • 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

  • 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!  

Postado

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.*]

 

DISCORDvodkart#6090

 

Postado

@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

 

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

vodkart_logo.png

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

 

DISCORDvodkart#6090

 

Postado
  • Autor

@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>

Editado por Zazeros
atualização (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo