Ir para conteúdo
  • 0

Magia que invoca monstros por 5 segundos.


Pergunta

Eu queria o script de alguma magia que invoca monstros e que esses monstros ataquem quem o cara que invocou atacar.

também queria que eles sumissem em 5 segundos.

Se alguem puder ajudar, dou REP+

Link para o comentário
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
  Em 18/01/2016 em 03:30, System Hardcore disse:

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
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/#findComment-1681884
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
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/#findComment-1680469
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
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/#findComment-1680472
Compartilhar em outros sites

  • 0

 

 

  Em 08/01/2016 em 19:29, Drazyn1291 disse:
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

 

 

  Em 08/01/2016 em 19:29, Drazyn1291 disse:
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
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/#findComment-1680640
Compartilhar em outros sites

  • 0
  Em 10/01/2016 em 03:41, Caronte disse:

 

 

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

 

 

  Em 10/01/2016 em 04:41, Drazyn1291 disse:

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
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/#findComment-1680667
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
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/#findComment-1681875
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
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/#findComment-1681887
Compartilhar em outros sites

  • 0

Não tinha pensado em fazer mais simples também...

 


Tópico Movido
Este tópico foi movido de "OTServScriptingSuporte Scripting"
para "OTServScriptingSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".

 

 

Link para o comentário
https://xtibia.com/forum/topic/238707-magia-que-invoca-monstros-por-5-segundos/#findComment-1681889
Compartilhar em outros sites

×
×
  • Criar Novo...