Ir para conteúdo

[Movements] Summon Tile


Vodkart

Posts Recomendados

Server testado:

 

Baiak 8.54 ~ 8.60

 

Mix War 8.60

 

Real server 8.57 ~ 8;60

 

 

 

Explicação:

 

O Script é um como um "trap"(armadilha) em que o mesmo é executado quando um jogador passa por cima do piso,

 

ao passar é criado Vários ou Randomicamente alguns monstros(a sua escolha,são duas versões de script)

 

sendo cada monstro em sua determinada pos.

 

 

 

Vamos ao script.

 

 

 

------------------------------//----------------------------------

 

Primeira versão : Sumonar monstros randomicamente

 

 

 

 

 

summontile.lua

 

--[[script By Vodkart]]-- 
function onStepIn(cid, item, position, fromPosition) 
--[[
Nome do monstros, Coordenada de onde ele irá ser sumonado.
Pode adicionar mais monstro caso assim desejar.
--]]


local M = {  
[1] = {"cyclops",{x=157, y=35, z=7}},  
[2] = {"Demon",{x=161, y=38, z=7}},
[3] = {"Hydra",{x=155, y=38, z=7}},
[4] = {"Dragon",{x=160, y=39, z=7}} 
}  

local storage = 14678 -- n mexa 
local time_summon = 1 -- tempo em minutos

if not isPlayer(cid) then
return false
elseif getGlobalStorageValue(storage) >= os.time() then
return false
end
r = math.random(1, #M)  
doCreateMonster(M[r][1], M[r][2])
doCreatureSay(cid, "Oh my god, a trap!", 19)   
setGlobalStorageValue(storage, os.time()+time_summon*60)   
return TRUE  
end

 

movements.xml

 


<movevent type="StepIn" uniqueid="14500" event="script" value="summontile.lua"/>

 

 

 

 

 

 

Segunda versão : Sumonar todos os monstro de Uma vez só

 

 

 

 

tilesummon.lua

 

--[[script By Vodkart]]-- 
function onStepIn(cid, item, position, fromPosition) 
--[[ 
Nome do monstros, Coordenada de onde ele irá ser sumonado. 
Pode adicionar mais monstro caso assim desejar. 
--]] 
local M = {  
[1] = {"cyclops",{x=157, y=35, z=7}},  
[2] = {"Demon",{x=161, y=38, z=7}}, 
[3] = {"Hydra",{x=155, y=38, z=7}}, 
[4] = {"Dragon",{x=160, y=39, z=7}}  
}  

local storage = 13311 -- n mexa 
local time_summon = 3 -- intervalo de tempo em minutos para nao summonar novamente 

if not isPlayer(cid) then
return FALSE
elseif getGlobalStorageValue(storage) >= os.time() then 
return FALSE
end
for i = 1, #M do  
doCreateMonster(M[i][1], M[i][2]) 
end 
doCreatureSay(cid, "OMG, a trap!", 19)  
setGlobalStorageValue(storage, os.time()+time_summon*60)   
return TRUE  
end

 

movements.xml

 


<movevent type="StepIn" uniqueid="14600" event="script" value="tilesummon.lua"/>

 

 

 

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

Eu queriade algo similar. Muito bom e funcionou direitinho... Thanks :smile_positivo:

 

Dúvida: Existe algum script postado no Xtibia que ao player pisar em certo tile, apareçam ao redor dele algum item que o trape? Por exemplo a rock stone (ID - 1304)? Eu também precisava disso para uma quest :S

Link para o comentário
Compartilhar em outros sites

Sumir depois de 5 minutos :S

 

A idéia da quest, é pisar nos tiles certos durante a primeira parte... Os errados serão demarcados com o ground diferente e se pisar ficar preso. É meio complicado pra explicar, porque faz parte do RPG do jogo... Mais a idéia é, que o player (não um criatura ou um npc ou um item) se pisar no tile tal, fique rodeado pelas pedras por 5 minultos sem ter como sair :S

Link para o comentário
Compartilhar em outros sites

@UP

 

 

 

 

rocktrap.lua

function onStepIn(cid, item, position, fromPosition)
local p = position
local rock_id = 1304
local Timewall = 1 -- em minutos


   rocks = {
   {
   {{x=p.x-3, y=p.y-3, z=p.z}, rock_id},
   {{x=p.x-3, y=p.y-2, z=p.z}, rock_id},
   {{x=p.x-3, y=p.y-1, z=p.z}, rock_id},
   {{x=p.x-3, y=p.y,   z=p.z}, rock_id},
   {{x=p.x-3, y=p.y+1, z=p.z}, rock_id},
   {{x=p.x-3, y=p.y+2, z=p.z}, rock_id},
   {{x=p.x-3, y=p.y+3, z=p.z}, rock_id},
   {{x=p.x-2, y=p.y-3, z=p.z}, rock_id},
   {{x=p.x-1, y=p.y-3, z=p.z}, rock_id},
   {{x=p.x,   y=p.y-3, z=p.z}, rock_id},
   {{x=p.x+1, y=p.y-3, z=p.z}, rock_id},
   {{x=p.x+2, y=p.y-3, z=p.z}, rock_id},
   {{x=p.x+3, y=p.y-3, z=p.z}, rock_id},
   {{x=p.x-2, y=p.y+3, z=p.z}, rock_id},
   {{x=p.x-1, y=p.y+3, z=p.z}, rock_id},
   {{x=p.x,   y=p.y+3, z=p.z}, rock_id},
   {{x=p.x+1, y=p.y+3, z=p.z}, rock_id},
   {{x=p.x+2, y=p.y+3, z=p.z}, rock_id},
   {{x=p.x+3, y=p.y+3, z=p.z}, rock_id},
   {{x=p.x+3, y=p.y-3, z=p.z}, rock_id},
   {{x=p.x+3, y=p.y-2, z=p.z}, rock_id},
   {{x=p.x+3, y=p.y-1, z=p.z}, rock_id},
   {{x=p.x+3, y=p.y,   z=p.z}, rock_id},
   {{x=p.x+3, y=p.y+1, z=p.z}, rock_id},
   {{x=p.x+3, y=p.y+2, z=p.z}, rock_id},
   {{x=p.x+3, y=p.y+3, z=p.z}, rock_id},
   }
}

function trap(x) -- function by Azi
nbr = x[2]
rocks = x[1]
for i=1,#rocks[nbr] do
rock = rocks[nbr][i][1]
rock.stackpos = 1
doSendMagicEffect(rock, 2)
doPlayerSetNoMove(cid, 0)
doRemoveItem(getThingfromPos(rock).uid,1)
end
end

for i=1,#rocks[1] do
doSendMagicEffect(rocks[1][i][1], 2)
doCreateItem(rocks[1][i][2], 1, rocks[1][i][1])
end

doPlayerSetNoMove(cid, 1)
addEvent(trap, (Timewall*60*1000), {rocks, 1, cid})
return TRUE
end 

 

movements.xml

<movevent type="StepIn" uniqueid="13900" event="script" value="rocktrap.lua"/> 

 

 

Link para o comentário
Compartilhar em outros sites

thiago esse seu script e muito bom mas sera que tem como vc editar ele pra me? assim o seu o player so pode pisar uma vez so ne?

eu queria que o player pisase toda hora

tipo assim ele pisa no tile os bicho aparese e quando ele pisa-se dnv aparese-se

Link para o comentário
Compartilhar em outros sites

@UP

o script ta para quando pisar ele aparece o monstro ai tem um tempo estipulado para o bicho aparecer denovo(ex: 3 minutos),nesse meio tempo voce pode passar por cima e nao vai summona nenhum bicho.

 

Você quer que ele passe pelo piso e sempre que passar criar os bixo,ou sejá sem tempo é isso?

Link para o comentário
Compartilhar em outros sites

@UP

 

 

--[[script By Vodkart and MatheusMkalo]]--

--[[ 
Nome do monstros, Coordenada de onde ele irá ser sumonado. 
Pode adicionar mais monstro caso assim desejar. 
--]] 
local M = {  
["Cyclops"] = {x = 157, y = 35, z = 7, stackpos=255},  
["Demon"] = {x = 161, y = 38, z = 7, stackpos=255}, 
["Hydra"] = {x = 155, y = 38, z = 7, stackpos=255}, 
["Dragon"] = {x = 160, y = 39, z = 7, stackpos=255}  
}  

function removeCreatures(pos)
   for i,x in pairs(pos) do
       doRemoveCreature(getThingFromPos(x).uid)
   end
end

local s = 46846

function onStepIn(cid, item, position, fromPosition)
if getPlayerStorageValue(cid, s)  == -1 then   
if isPlayer(cid) == TRUE then
for i,x in pairs(M) do
doCreateMonster(i,x)
end
setPlayerStorageValue(cid, s, 1)
else
return FALSE
end
elseif getPlayerStorageValue(cid, s)  >= 1 then 
removeCreatures(M)
setPlayerStorageValue(cid, s, -1)
end
return TRUE
end

 

 

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
  • 1 month later...

Ainda nao funciono Aqui puis assm \/

 

function onStepIn(cid, item, position, fromPosition)

--[[

Nome do monstros, Coordenada de onde ele irá ser sumonado.

Pode adicionar mais monstro caso assim desejar.

--]]

local M = {

[1] = {"Gigante de Gelo",{x=408, y=317, z=9}},

[2] = {"Gigante de Gelo",{x=161, y=38, z=7}},

[3] = {"Gigante de Gelo",{x=155, y=38, z=7}},

[4] = {"Gigante de Gelo",{x=160, y=39, z=7}}

}

 

local storage = 13311 -- n mexa

local time_summon = 1 -- intervalo de tempo em minutos para nao summonar novamente

 

if isPlayer(cid) == TRUE then

if getGlobalStorageValue(storage) <= os.time() then

for i = 1, #M do

doCreateMonster(M[1], M[2])

end

doCreatureSay(cid, "OMG, a trap!", 19)

setGlobalStorageValue(storage, os.time()+time_summon*60)

end

else

return FALSE

end

return TRUE

end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...