Ir para conteúdo
Entre para seguir isso  
Mock

doSendMagicEffectInArea

Recommended Posts

Mock    32
Mock

Essa função é MUITO simples e roda em QUALQUER otserver, ela manda um magic effect em area. wink.gif

 

Para instalar vá no global.lua (para otservs antigos) ou data.lua (TFS 0.3.5 pra baixo) ou no 050-functions (TFS 0.3.6) em data/lib

Depois disso adcione esse code na utima linha:

function doSendMagicEffectInArea(pos,effect,area,cid) -- Function by mock
local centro = {}
centro.y = math.floor(table.getn(area)/2)+1
for y = 1, table.getn(area) do
	for x = 1, table.getn(area[y]) do
		if area[y][x] > 0 then
			centro.x = math.floor(table.getn(area[y])/2)+1
			if type(effect) == 'table' then
				doSendMagicEffect({x=pos.x+x-centro.x,y=pos.y+y-centro.y,z= pos.z},(effect[area[y][x]] or 0),cid)
			else
				doSendMagicEffect({x=pos.x+x-centro.x,y=pos.y+y-centro.y,z= pos.z},effect or 0,cid)
			end
		end
	end
end
return true
end

 

Depois é so usar ^^

Exemplo de uso:

local area = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
}
function onUse(cid, item, frompos, item2, topos)
 doSendMagicEffectInArea(topos,36,area)
 return true
end

 

Quando der use vai sair um fire em cada SQM kewl.gif

imagemaqr.png

 

Ou assim:

local area = {
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 3, 3, 3, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0},
{0, 2, 1, 3, 1, 1, 1, 1, 1, 4, 0},
{2, 2, 1, 1, 1, 4, 4, 1, 1, 4, 4},
{0, 2, 1, 6, 1, 4, 4, 1, 1, 4, 0},
{0, 1, 1, 6, 1, 5, 5, 1, 1, 1, 0},
{0, 0, 1, 6, 1, 5, 5, 1, 1, 0, 0},
{0, 0, 0, 1, 5, 5, 5, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0}
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
 doSendMagicEffectInArea(toPosition,{36,5,10,15,20,50},area)
 return true
end

imagem2nc.png

Editado por Mock

Compartilhar este post


Link para o post
Shrinks6    0
Shrinks6

tem que seguir esse modelo ai dos 2 exemplo?

Compartilhar este post


Link para o post
Mock    32
Mock

@shrink

naverdade foi apenas um exemplo mais o padrão sim

vc tem que por a area (igual das spells) e depois

doSendMagicEffectInArea(toPosition,12,area)

mais pode lançar mais de um effect usando tabela

doSendMagicEffectInArea(toPosition,{36,5,10,15,20, 50},area)

Compartilhar este post


Link para o post
Biozard    0
Biozard

ou mock...n entendi...poem uma spells simples ai pra min ver se consigo intender melhor...

Compartilhar este post


Link para o post
Mock    32
Mock

@LUCASF

isso nao é spell cara isso é uma função pra mandar effects em area

Compartilhar este post


Link para o post
Biozard    0
Biozard

mais nao da pra usar isso em spells...tipo akelas spells "simplificada"...

doTargetCombatHealth...e tals...

pois nao consigo crair spells dakele jeito em area...=[

Compartilhar este post


Link para o post
Mock    32
Mock

@LUCASF

isso na otem NADA aver com spell cara

nao confunda isso é para mandar magic effect em area é uma funçao.

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×