Ir para conteúdo
  • 0

Sommonar Monstro


fokus090

Pergunta

Preciso de um Script de Summon Monster, mas com um diferencial :

 

Clico em um Objeto, e antes de Summonar o monstro, ele verifica se na área, já possue um monstro Summonado lá. Caso não houver, aí o monstro aparece lá. O Player só poderá fazer isso uma vez.

 

Espero que tenha ficado claro.

  • Clicar no Objeto
  • Verificar se já Summonarão o Monstro
  • Se não, Summona-o
  • Player fazer apenas uma Vez

 

Abraços !!

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

em actions crie um arquivo com o nome que desejar e cole o seguinte código:

  function onUse(cid, item)
	   local summons = {
									 [2544] = {monster= "Rat"},
	    }

   if #getCreatureSummons(cid) > 0 then
 doPlayerSendCancel(cid, "Sorry, is not possible.")
   return true
   end
doSummonMonster(cid, summons[item.itemid].monster)
local m = getCreatureSummons(cid)
if #m >= 1 then
  for i = 1, #m do
	   doSendMagicEffect(getThingPos(m[i]), 10)
  end
end
									   if getPlayerAccess(cid) < 3 then
											  doRemoveItem(item.uid, 1)
									   end
return true
end

depois cole esta TAG em actions.XML:

<action itemid="2544" script="summon.lua" />

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

  • 0
[Error - LuaScriptInterface::loadFile] data/actions/scripts/quest/Summon_Boss_1.lua:22: '<eof>' expected near 'end'

[15/10/2012 10:55:18] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/quest/Summon_Boss_1.lua)

[15/10/2012 10:55:18] data/actions/scripts/quest/Summon_Boss_1.lua:22: '<eof>' expected near 'end'

 

Poderia fazer a gentileza de adaptar duas coisas no script?

 

- Local onde o Monstro deve aparecer

- Objeto só ativa script se tiver UniqueID

 

Obrigado desde já!

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

  • 0


  function onUse(cid, item)
			   local config = {
				 [2544] = {monster= "Rat"}, -- Aqui o nome do monster e o item que vai summonar ele
pos_Inicial = { x = , y = , z = }, -- Aqui bota a pos inicial da onde o monster vai estar
pos_Final = { x = , y = , z = }, -- Aqui bota a pos final da onde o monster vai estar, formando assim um quadrado
msg_Erro = "Mensagem de erro, caso exista um monstro na area.", -- Mensagem de erro caso exista um monster nesta area
   pos = { x = , y = , z = } -- Aqui aonde o monster vai ser summonzado					}

if isInArea(isMonster(cid), config.pos_Inicial, config.pos_Final) then
	 doPlayerSendCancel(cid, config.msg_Erro)
return true
end
doSummonCreature(config[item.itemid].monster, config.pos)
											 if getPlayerAccess(cid) < 3 then
												doRemoveItem(item.uid, 1)
											 end
return true
end

Tenta esse ai...

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

  • 0

[Error - Action Interface]

[16/10/2012 12:54:35] data/actions/scripts/quest/Summon_Boss_1.lua:onUse

[16/10/2012 12:54:35] Description:

[16/10/2012 12:54:35] data/lib/032-position.lua:2: attempt to index local 'position' (a boolean value)

[16/10/2012 12:54:35] stack traceback:

[16/10/2012 12:54:35] data/lib/032-position.lua:2: in function 'isInArea'

[16/10/2012 12:54:35] data/actions/scripts/quest/Summon_Boss_1.lua:10: in function <data/actions/scripts/quest/Summon_Boss_1.lua:1>

Link para o comentário
Compartilhar em outros sites

  • 0

Só editar as posição só mecha em "Nome" Posição From e To.

 

 

function onUse(cid, item)

local from, to = {x = x, y = y, z = z}, {x = x, y = y, z = z}

for x = from.x, to.x do
for y = from.y, to.y do
position = {x = x, y = y, z = to.z}
end
end

if isMonster(getTopCreature(position)) and getCreatureName(getTopCreature(position)) == "Nome" then return true end

doSummonCreature("Monstro", posição)
doSendMagicEffect(getPlayerPosition(cid), math.random(28, 30))
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

[17/10/2012 09:31:19] [Error - Action Interface]

[17/10/2012 09:31:19] data/actions/scripts/quest/Summon_Boss_1.lua:onUse

[17/10/2012 09:31:19] Description:

[17/10/2012 09:31:19] attempt to index a nil value

[17/10/2012 09:31:19] stack traceback:

[17/10/2012 09:31:19] [C]: in function 'getTopCreature'

[17/10/2012 09:31:19] data/actions/scripts/quest/Summon_Boss_1.lua:11: in function <data/actions/scripts/quest/Summon_Boss_1.lua:1>

 

Esse Script parece ser mais difícil do que imaginei :(

Link para o comentário
Compartilhar em outros sites

  • 0

function onUse(cid, item)

local from, to = {x = x, y = y, z = z}, {x = x, y = y, z = z}

for x = from.x, to.x do
for y = from.y, to.y do
position = {x = x, y = y, z = to.z}
if isMonster(getTopCreature(position)) and getCreatureName(getTopCreature(position)) == "Nome" then return true end
end
end

local monsterPos = {x = math.random(from.x, to.x), y = math.random(from.y, to.y), z = to.z}
doSummonCreature("Monstro", monsterPos)
doSendMagicEffect(getPlayerPosition(cid), math.random(28, 30))
return true
end

talvez assim? ^^

Link para o comentário
Compartilhar em outros sites

  • 0

[17/10/2012 10:50:58] [Error - Action Interface]

[17/10/2012 10:50:58] data/actions/scripts/quest/Summon_Boss_1.lua:onUse

[17/10/2012 10:50:58] Description:

[17/10/2012 10:50:58] data/actions/scripts/quest/Summon_Boss_1.lua:12: bad argument #2 to 'random' (interval is empty)

[17/10/2012 10:50:58] stack traceback:

[17/10/2012 10:50:58] [C]: in function 'random'

[17/10/2012 10:50:58] data/actions/scripts/quest/Summon_Boss_1.lua:12: in function <data/actions/scripts/quest/Summon_Boss_1.lua:1>

 

Vllw a Tentativa!

Link para o comentário
Compartilhar em outros sites

  • 0

ah e vc pediu um q o player soh possa fazer isso 1x neh? entao use esse.. \/ e faças as configuraçoes descritas abaixo...

 

 

function onUse(cid, item)

 

local from, to = {x = x, y = y, z = z}, {x = x, y = y, z = z}

 

if getPlayerStorageValue(cid, 69857) >= 1 then

return true

end

 

for x = from.x, to.x do

for y = from.y, to.y do

position = {x = x, y = y, z = to.z}

if isMonster(getTopCreature(position)) and getCreatureName(getTopCreature(position)) == "Nome" then return true end

end

end

 

local monsterPos = {x = math.random(from.x, to.x), y = math.random(from.y, to.y), z = to.z}

doSummonCreature("Monstro", monsterPos)

doSendMagicEffect(getPlayerPosition(cid), math.random(28, 30))

setPlayerStorageValue(cid, 69857, 1)

return true

end

 

 

vc configuro as coisas no script neh? boto as pos ali emcima, e o "nome" e o "monstro" neh? u,U

 

vc tem q por aki..

local from, to = {x = x, y = y, z = z}, {x = x, y = y, z = z} 

a pos acima e a pos abaixo, formando um quadrado/retangulo, da onde o monstro pode aparecer...

 

tem q por aki..

if isMonster(getTopCreature(position)) and getCreatureName(getTopCreature(position)) == "Nome" then return true end
doSummonCreature("Monstro", monsterPos) 

o nome do monstro q vai ser sumonado...

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

  • 0

function onUse(cid, item)

local from, to = {x = 450, y = 640, z = 5}, {x = 469, y = 562, z = 5}

for x = from.x, to.x do
for y = from.y, to.y do
position = {x = 457, y = 647, z = to.z}
if isMonster(getTopCreature(position)) and getCreatureName(getTopCreature(position)) == "Troll Lutador" then return true end
end
end

local monsterPos = {x = math.random(from.x, to.x), y = math.random(from.y, to.y), z = to.z}
doSummonCreature("Monstro", monsterPos)
doSendMagicEffect(getPlayerPosition(cid), math.random(28, 30))
return true
end

 

Configurei errado? happy.png

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

  • 0

doSummonCreature("Monstro", monsterPos)

falto isso n?

 

e isso.. n precisava mexer ^^

position = {x = 457, y = 647, z = to.z} 

 

pode deixar assim ms..

position = {x = x, y = y, z = to.z} 

 

 

tpw.. essa area aki n forma um retangulo/quadrado neh?

local from, to = {x = 450, y = 640, z = 5}, {x = 469, y = 562, z = 5} 

tem q pegar a pos acima pro 'from' e a pos abaixo pro 'to'... formando um retangulo/quadrado...

algu tpw assim..

local from, to = {x = 450, y = 562, z = 5}, {x = 469, y = 640, z = 5} 

a 1* pos tem q ser menor q a 2*... tanto o x quanto o y..

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

  • 0

function onUse(cid, item)

local from, to = {x = 450, y = 640, z = 5}, {x = 469, y = 562, z = 5}

for x = from.x, to.x do
for y = from.y, to.y do
position = {x = 457, y = 647, z = to.z}
if isMonster(getTopCreature(position)) and getCreatureName(getTopCreature(position)) == "Troll Lutador" then return true end
end
end

local monsterPos = {x = math.random(from.x, to.x), y = math.random(from.y, to.y), z = to.z}
doSummonCreature("Troll Lutador", monsterPos)
doSendMagicEffect(getPlayerPosition(cid), math.random(28, 30))
return true
end

 

Ok, configurei certo dessa vez, mas continua dando um erro. Algo relacionado á "random" :

 

[17/10/2012 11:06:57] [Error - Action Interface]

[17/10/2012 11:06:57] data/actions/scripts/quest/Summon_Boss_1.lua:onUse

[17/10/2012 11:06:57] Description:

[17/10/2012 11:06:57] data/actions/scripts/quest/Summon_Boss_1.lua:12: bad argument #2 to 'random' (interval is empty)

[17/10/2012 11:06:57] stack traceback:

[17/10/2012 11:06:57] [C]: in function 'random'

[17/10/2012 11:06:57] data/actions/scripts/quest/Summon_Boss_1.lua:12: in function <data/actions/scripts/quest/Summon_Boss_1.lua:1>

 

 

Duvida: Essa parte eu deixo configurado assim? :

position = {x = 457, y = 647, z = to.z}

Ou deixo como no Original?

position = {x = x, y = y, z = to.z}

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

×
×
  • Criar Novo...