Ir para conteúdo

[spell] Duvida Sobre Sqm...


luizfel

Posts Recomendados

Olá...

Venho por meio da acc de 1 amigo tirar uma duvida sobre spell...

Eh que eu to teno dificuldade em criar algumas spell...Mas por causa do erro ah spell nunca sai como planejado...resultando em raiva sobre a msma :p~~

Gostaria que vocês me dissem algum meio de arruma esse lugar sqm ela acerta...

 

a spell \/

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)

setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)

 

local combat2 = createCombatObject()

setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat2, COMBAT_PARAM_EFFECT, 3)

setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)

 

local combat3 = createCombatObject()

setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat3, COMBAT_PARAM_EFFECT, 0)

setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)

 

local arr1 = {

{1, 0, 0,},

{0, 1, 0,},

{0, 2, 1,},

{0, 0, 0,},

}

 

local arr2 = {

{0, 0, 1,},

{0, 1, 0,},

{1, 2, 0,},

{0, 0, 0,},

}

 

local arr3 = {

{1, 1, 1,},

{2, 0, 0,},

{0, 0, 0,},

}

 

 

local area1 = createCombatArea(arr1)

local area2 = createCombatArea(arr2)

local area3 = createCombatArea(arr3)

 

setCombatArea(combat1, area1)

setCombatArea(combat2, area2)

setCombatArea(combat3, area3)

 

local function onCastSpell1(parameters)

doCombat(parameters.cid, parameters.combat1, parameters.var)

end

 

local function onCastSpell2(parameters)

doCombat(parameters.cid, parameters.combat2, parameters.var)

end

 

local function onCastSpell3(parameters)

doCombat(parameters.cid, parameters.combat3, parameters.var)

end

 

function onCastSpell(cid, var)

 

local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3 }

 

addEvent(onCastSpell1, 100, parameters)

addEvent(onCastSpell2, 250, parameters)

addEvent(onCastSpell3, 400, parameters)

 

 

end

 

ss \/

 

http://img230.imageshack.us/img230/7156/bugcj6.jpg

 

 

Agradeco desde jah! :}

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

Olá...
Venho por meio da acc de 1 amigo tirar uma duvida sobre spell...
Eh que eu to teno dificuldade em criar algumas spell...Mas por causa do erro ah spell nunca sai como planejado...resultando em raiva sobre a msma :p~~
Gostaria que vocês me dissem algum meio de arruma esse lugar sqm ela acerta...

a spell \/
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 3)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 0)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)

local arr1 = {
{1, 0, 0,},
{0, 1, 0,},
{0, 2, 1,},
{0, 0, 0,},
}

local arr2 = {
{0, 0, 1,},
{0, 1, 0,},
{1, 2, 0,},
{0, 0, 0,},
}

local arr3 = {
{1, 1, 1,},
{2, 0, 0,},
{0, 0, 0,},
}


local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)

setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)

local function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end

local function onCastSpell2(parameters)
doCombat(parameters.cid, parameters.combat2, parameters.var)
end

local function onCastSpell3(parameters)
doCombat(parameters.cid, parameters.combat3, parameters.var)
end

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3 }

addEvent(onCastSpell1, 100, parameters)
addEvent(onCastSpell2, 250, parameters)
addEvent(onCastSpell3, 400, parameters)


end


ss \/

http://img230.imageshack.us/img230/7156/bugcj6.jpg


Agradeco desde jah! :}



provavelmente o erro ta no config das áreas... agora desenha onde vc qr q a spell acerte =P
ninguém aki eh adivinho né
Link para o comentário
Compartilhar em outros sites

Mais ja ta desenhado uai...

 

local arr1 = {

{1, 0, 0,},

{0, 1, 0,},

{0, 2, 1,},

{0, 0, 0,},

}

 

local arr2 = {

{0, 0, 1,},

{0, 1, 0,},

{1, 2, 0,},

{0, 0, 0,},

}

 

local arr3 = {

{1, 1, 1,},

{2, 0, 0,},

{0, 0, 0,},

}

 

Gostaria que o char ficasse no numero "2" mais quando uso a spell ele não fica nao eh como se o char ficasse no 0 abaixo...

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

to falando pra vc me explicar em quais sqm vc qr q a spell aconteça... ¬¬'

 

ex... se fosse uma energy wave vc me desenharia algo assim

 

2m2h00i.jpg

 

 

desculpa minha burrice hj mais cedo :p~~

entao vo posta as imagem

 

era pa ela ta saindo assim \/

 

http://img246.imageshack.us/img246/7140/imagem32rc9.jpg

 

mas ela ta saindo assim \/

 

http://img243.imageshack.us/img243/4295/imagem33ud8.jpg

 

Srry mais uma vez...

tb nao so muito bom em desenha no paint heiauheaIU :B

Link para o comentário
Compartilhar em outros sites

pra começar

 

essa spell eh dividida em 3 partes

 

faça em um pedaço só que facilita

 

ao não ser q ela tire 3 danos dependendo da posicao

 

Disculpe a demora a responder...

tive q i no pronto socorro ;B

 

uma parte dela em pedaco :} \/

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)

 

local arr = {

{1, 0, 0,},

{0, 1, 0,},

{0, 2, 1,},

{0, 0, 0,},

}

 

local area = createCombatArea(arr)

 

setCombatArea(combat, area)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

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

O estranhu eh que eu andei dano procuradas em tutoriais talz... aki msmo no xtibia de como criar spells

axei um tutorial otimo do usuario koti link abaxo

http://www.xtibia.com/forum/Criando-Spells...-80-t58996.html

 

e no tutorial indica

 

Rosa: Área da magia. "0": Representa uma área em que a magia não vai pegar. "1": Representa uma área em que a magia vai pegar. "3 ou 2": "3": Representa o centro da magia, onde o player vai estar, a magia vai passar embaixo do player mais não vai dar dano. "2": A magia não passa embaixo do player.

 

e como ta escrito ali

 

"3 ou 2": "3": Representa o centro da magia, onde o player vai estar

 

mais o 3 ow 2 quando coloko acaba nao sendo o centro da magia não sei porque....

e ela acaba pulando 1 sqm a +...

nao sei tambem se eh problema em alguma linha do arquivo spells.xml a tag esta assim...

 

<instant name="Santouryuu: Oni Guiri!" words="Santouryuu: Oni Guiri!" direction="1" lvl="5" maglv="2" mana="50" soul="0" exhaustion="1" prem="0" enabled="1" script="Oni guiri.lua"><vocation id="1"/></instant>

 

EDIT@~~

 

E a versao do ot eh 8.1 o-o"

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

apague a última array de cada área "{0,0,0}"

 

e, por via das dúvidas, apague também a última vírgula da última array restante

 

antes:

local arr2 = {

{0, 0, 1,},

{0, 1, 0,},

{1, 2, 0,},

{0, 0, 0,},

}

 

depois:

local arr2 = {

{0, 0, 1},

{0, 1, 0},

{1, 2, 0}

}

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

apague a última array de cada área "{0,0,0}"

 

e, por via das dúvidas, apague também a última vírgula da última array restante

 

antes:

local arr2 = {

{0, 0, 1,},

{0, 1, 0,},

{1, 2, 0,},

{0, 0, 0,},

}

 

depois:

local arr2 = {

{0, 0, 1},

{0, 1, 0},

{1, 2, 0}

}

 

Fiz do mesmo jeito que vc disse mas...

nao deu em nada ainda continua pulano 1 sqm e o 2 continua nao sendo o centro da spell...

;/

Link para o comentário
Compartilhar em outros sites

a tarde toda trabalhando nisso =).. claro, dps de ter descoberto o problema...

 

assim kra... primeiro de tudo... pra spell sair em volta do char... vc tem q desabilitar o atributo direction="1" no arquivo spells.xml

 

feito isso... temos um outro problema... a spell ficará fixa, apontando sempre pra um determinado local quando for acionada.

 

para contornar isso, fazemos a mesma spell 4 vezes, 1 para cada direção, e nos utilizamos da função getPlayerLookDir(cid) lembrando que o nome da função pode variar, de acordo com a versão do server. Para verificar, consulte o arquivo lua_functions dentro da pasta doc

 

agora a particularidade da sua spell... ela é executada em 3 estágios... sendo 4 configurações por estágio... nos dá um total de 12 spells a serem configuradas...

 

abusei dos loopings só não coloquei mais loops pq não consegui manipular array[array[]] para dar uma encurtada no arquivo

 

o resultado final segue abaixo:

-- SPELL DE EFEITO FÍSICO

local areaPhysical = {
{
{0, 2, 1},
{0, 1, 0},
{1, 0, 0}
},

{
{1, 0, 0},
{0, 1, 2},
{0, 0, 1}
},

{
{0, 0, 1},
{0, 1, 0},
{1, 2, 0}
},

{
{1, 0, 0},
{2, 1, 0},
{0, 0, 1}
}

}

local combatPhysical = {}

for i = 1, 4 do
  combatPhysical[i] = createCombatObject()
  setCombatParam(combatPhysical[i], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
  setCombatParam(combatPhysical[i], COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
  setCombatFormula(combatPhysical[i], COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)
  local combatArea = createCombatArea(areaPhysical[i])
  setCombatArea(combatPhysical[i], combatArea)
end


-- ÁREA DE EFEITO DEFESA DA ARMADURA

local areaArmour = {
{
{1, 2, 0},
{0, 1, 0},
{0, 0, 1}
},

{
{0, 0, 1},
{0, 1, 2},
{1, 0, 0}
},

{
{1, 0, 0},
{0, 1, 0},
{0, 2, 1}
},

{
{0, 0, 1},
{2, 1, 0},
{1, 0, 0}
}

}

local combatArmour = {}

for i = 1, 4 do
  combatArmour[i] = createCombatObject()
  setCombatParam(combatArmour[i], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
  setCombatParam(combatArmour[i], COMBAT_PARAM_EFFECT, CONST_ME_BLOCKHIT)
  setCombatFormula(combatArmour[i], COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)
  local combatArea = createCombatArea(areaArmour[i])
  setCombatArea(combatArmour[i], combatArea)
end

-- ÁREA DE EFEITO SANGUE

local areaBlood = {
{
{0, 0, 2},
{1, 1, 1}
},

{
{1, 0},
{1, 0},
{1, 2}
},

{
{1, 1, 1},
{0, 0, 2}
},

{
{2, 1},
{0, 1},
{0, 1}
}

}

local combatBlood = {}

for i = 1, 4 do
  combatBlood[i] = createCombatObject()
  setCombatParam(combatBlood[i], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
  setCombatParam(combatBlood[i], COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
  setCombatFormula(combatBlood[i], COMBAT_FORMULA_LEVELMAGIC, -1, -5, -0.5, -15)
  local combatArea = createCombatArea(areaBlood[i])
  setCombatArea(combatBlood[i], combatArea)
end

-- FIM DOS EFEITOS

local function castSpells(parameters)
  doCombat(parameters.cid, parameters.combat, parameters.var)
end

function onCastSpell(cid, var)
  dirNow = getPlayerLookDir(cid) + 1
  local combat = {combatPhysical[dirNow], combatArmour[dirNow], combatBlood[dirNow]}
  local delays = {100,250,400}
  for i = 1, 3 do
  parameters = {cid = cid, var = var, combat = combat[i]}
  addEvent(castSpells, delays[i], parameters)
  end
end

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

Obrigado brainless...

eternamente grato!

esse problema na spell tava dano dor d kbca ja ja tava pensano em disisti do meu projeto ;/

mais graca a você minhas sperancas voltaram :p

ah + uma coisa se tiver msn tem como me passar por pm?

se nao tiver como passar sem problemas...

agradeco! :}~~

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

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...