Ir para conteúdo
  • 0

Magia que invoca monstros por 5 segundos.


ShinySprite

Pergunta

9 respostass a esta questão

Posts Recomendados

  • 0

Dando uma olhada rápida no script, não seria melhor adicionar uma checagem antes de remover pra saber se o player tem algum summon? Posso estar enganado, mas me parece que se o summon morrer antes do tempo acabar vai retornar erros na distro do servidor. De qualquer modo, nice script.

 

Tem razão.

function onCastSpell(cid, var)    
    local tempo = 5
    local creature = {doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)) }
  
    for i = 1, #creature do
        doConvinceCreature(cid, creature[i])
    end    
 
    addEvent(    function()
        for i = 1, #creature do
			if isCreature(creature[i]) then
				doRemoveCreature(creature[i])
			end
		end
	end, 1000 * tempo)
 
    return true
end

Como o dono do pedido nem se manifestou, vou dar como resolvido

Link para o comentário
Compartilhar em outros sites

  • 0


function onCastSpell(cid, var)

 

local tempo = 5

local monstro1 = doSummonCreature("Demon", getThingPos(cid))

local monstro2 = doSummonCreature("Demon", getThingPos(cid))

local monstro3 = doSummonCreature("Demon", getThingPos(cid))

 

doConvinceCreature(cid, monstro1)

doConvinceCreature(cid, monstro2)

doConvinceCreature(cid, monstro3)

 

addEvent( function()

doRemoveCreature(monstro1)

doRemoveCreature(monstro2)

doRemoveCreature(monstro3)

end, 1000 * tempo)

 

return true

end

 


<instant name="Summon Monster" words="xtibia" lvl="8" mana="20" prem="0" exhaustion="2000" event="script" value="attack/test.lua">

<vocation id="1"/>

<vocation id="2"/>

<vocation id="5"/>

<vocation id="6"/>

</instant>

 

Link para o comentário
Compartilhar em outros sites

  • 0

Eu dei uma otmizada no script do Caronte:

function onCastSpell(cid, var)    
    local tempo = 5
    local monstros = 3
    local creature = doSummonCreature("Demon", getThingPos(cid))
  
    for i = 1, monstros do
        doConvinceCreature(cid, creature)
        break
    end    
 
    addEvent(    function()
        for i = 1, monstros do
            doRemoveCreature(creature)
            break
        end
    end, 1000 * tempo)
 
    return true
end


Caso queira, algo a mais avisa ai que posso fazer :D

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Eu dei uma otmizada no script do Caronte:

 

Não cara, isso não funciona, você tem que fazer do meu jeito mesmo, pois assim, você só armazena uma variável, por mais que você mude o número da variável monstros, sempre vai sumonar 1, e você colocou um break sem sentido.

 

Você sabe para que serve break?

 

 

Estaria certo, se você tivesse feito isso:

function onCastSpell(cid, var)    
    local tempo = 5
    local creature = {doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)) }
  
    for i = 1, #creature do
        doConvinceCreature(cid, creature[i])
    end    
 
    addEvent(    function()
        for i = 1, #creature do
            doRemoveCreature(creature[i])
        end
    end, 1000 * tempo)
 
    return true
end

 

 

Eu dei uma otmizada no script do Caronte:

 

Não cara, isso não funciona, você tem que fazer do meu jeito mesmo, pois assim, você só armazena uma variável, por mais que você mude o número da variável monstros, sempre vai sumonar 1, e você colocou um break sem sentido.

 

Você sabe para que serve break?

 

 

Estaria certo, se você tivesse feito isso:

function onCastSpell(cid, var)    
    local tempo = 5
    local creature = {doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)) }
  
    for i = 1, #creature do
        doConvinceCreature(cid, creature[i])
    end    
 
    addEvent(    function()
        for i = 1, #creature do
            doRemoveCreature(creature[i])
        end
    end, 1000 * tempo)
 
    return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Não cara, isso não funciona, você tem que fazer do meu jeito mesmo, pois assim, você só armazena uma variável, por mais que você mude o número da variável monstros, sempre vai sumonar 1, e você colocou um break sem sentido.

 

Você sabe para que serve break?

 

 

Estaria certo, se você tivesse feito isso:

function onCastSpell(cid, var)    
    local tempo = 5
    local creature = {doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)) }
  
    for i = 1, #creature do
        doConvinceCreature(cid, creature[i])
    end    
 
    addEvent(    function()
        for i = 1, #creature do
            doRemoveCreature(creature[i])
        end
    end, 1000 * tempo)
 
    return true
end

 

 

 

Não cara, isso não funciona, você tem que fazer do meu jeito mesmo, pois assim, você só armazena uma variável, por mais que você mude o número da variável monstros, sempre vai sumonar 1, e você colocou um break sem sentido.

 

Você sabe para que serve break?

 

 

Estaria certo, se você tivesse feito isso:

function onCastSpell(cid, var)    
    local tempo = 5
    local creature = {doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)), doSummonCreature("Demon", getThingPos(cid)) }
  
    for i = 1, #creature do
        doConvinceCreature(cid, creature[i])
    end    
 
    addEvent(    function()
        for i = 1, #creature do
            doRemoveCreature(creature[i])
        end
    end, 1000 * tempo)
 
    return true
end

 

 

Blz, to meio noiado ultimamente kkkk dando lezera kk

 

Funcionaria em poketibia? creio que não, poderiam adaptar caso não funcione? mas queria pra outros pokemons serem "sumonados" por 1 pokemon, exemplo em uma quest com celebi, ele sumonaria alguns outros pokemons para ajuda-lo (sei que pokemons não fazem isso, mas ninguém saberia que o celebi que sumonou, poderia ter "spawnado" no local) se possivel fazer isso sem ser por 1 spell, talvez um evento em creaturescripts

Link para o comentário
Compartilhar em outros sites

  • 0

Dando uma olhada rápida no script, não seria melhor adicionar uma checagem antes de remover pra saber se o player tem algum summon? Posso estar enganado, mas me parece que se o summon morrer antes do tempo acabar vai retornar erros na distro do servidor. De qualquer modo, nice script.

Link para o comentário
Compartilhar em outros sites

  • 0

Uma pequena alteração no script acima, porem que pode facilitar a configuração e o entendimento do sistema.



function onCastSpell(cid, var)
local time = 5
local creature = {
"Demon",
"Demon",
"Dragon"
}

for index, creatureName in ipairs(creature) do
local monster = doSummonCreature(creatureName, getThingPos(cid))
doConvinceCreature(cid, monster)
creature[index] = monster
end

addEvent(function()
for i = 1, #creature do
if isCreature(creature[i]) then
doRemoveCreature(creature[i])
end
end
end, 1000 * time)
return true
end

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

×
×
  • Criar Novo...