Ir para conteúdo
  • 0

Exori com turnos


razurator

Pergunta

Olá xTibianos, estou precisando fazer uma magia que é na verdade um exori gran, mas ao em vez de soltar uma vez o efeito a magia faz esse mesmo efeito 5 vezes com intervalos de 0,5 a 1 segundo(s), e com o dano dividido entre cada turno. Agradeço desde já se for possível me dar um suporte para isso.

Aproveitando o tópico e sem fugir nada do assunto, estou precisando entender como o dano das magias é calculado, mas não achei aqui no forum. Exemplo: setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 10, 14)

Eu sei que alterando os números eu altero o resultado, mas não faço ideia do que é o que. Para as vocations eu também não entendo nada, sempre fui com a cara e com a coragem, mas procuro entender isso agora

 

Desculpas antecipadas se fugi do assunto. Em caso de lugar inapropriado, favor desconsiderar a parte contraria ao titulo.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Fórmulas Úteis. Use esse tutorial pra entender as fórmulas que você precisar.

Quanto ao seu "exori gran", aqui vai um que vai dar esses 5 danos igualmente distribuídos e a fórmula está bem evidenciada. Mas o problema é que vai dar na mesma área sempre, não importa se o cara se mover.

 

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill + attack * 2, level / 5
	return -(skillTotal * 1.1 + levelTotal), -(skillTotal * 3 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	local time = 500
	for i = 1, 4 do
		addEvent(doCombat, time, cid, combat, var)
		time = time + 500
	end
	return doCombat(cid, combat, var)
end

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Fórmulas Úteis. Use esse tutorial pra entender as fórmulas que você precisar.

Quanto ao seu "exori gran", aqui vai um que vai dar esses 5 danos igualmente distribuídos e a fórmula está bem evidenciada. Mas o problema é que vai dar na mesma área sempre, não importa se o cara se mover.

 

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill + attack * 2, level / 5
	return -(skillTotal * 1.1 + levelTotal), -(skillTotal * 3 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	local time = 500
	for i = 1, 4 do
		addEvent(doCombat, time, cid, combat, var)
		time = time + 500
	end
	return doCombat(cid, combat, var)
end

 

 

Agradeço muito Finiarel, o problema é que o conceito é como se ele saísse girando e andando com a espada, então eu preciso que cada "pancada" seja na position atual dele.

 

Já as formulas ajudaram bastante.

Link para o comentário
Compartilhar em outros sites

  • 0

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat1, COMBAT_PARAM_USECHARGES, true)

 

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat2, COMBAT_PARAM_USECHARGES, true)

 

local combat3 = createCombatObject()

setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat3, COMBAT_PARAM_USECHARGES, true)

 

local combat4 = createCombatObject()

setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat4, COMBAT_PARAM_USECHARGES, true)

 

local combat5 = createCombatObject()

setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat5, COMBAT_PARAM_USECHARGES, true)

 

local combat6 = createCombatObject()

setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat6, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat6, COMBAT_PARAM_USECHARGES, true)

 

local combat7 = createCombatObject()

setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat7, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat7, COMBAT_PARAM_USECHARGES, true)

 

local combat8 = createCombatObject()

setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat8, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat8, COMBAT_PARAM_USECHARGES, true)

 

local arr1 = {

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

}

local arr2 = {

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

}

local arr3 = {

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

}

local arr4 = {

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

}

local arr5 = {

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

}

local arr6 = {

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

}

local arr7 = {

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

}

local arr8 = {

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

}

 

local area1 = createCombatArea(arr1)

local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
local area5 = createCombatArea(arr5)
local area6 = createCombatArea(arr6)
local area7 = createCombatArea(arr7)
local area8 = createCombatArea(arr8)

 

setCombatArea(combat1, area1)

setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
setCombatArea(combat5, area5)
setCombatArea(combat6, area6)
setCombatArea(combat7, area7)
setCombatArea(combat8, area8)

 

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

local function onCastSpell4(parameters)
doCombat(parameters.cid, parameters.combat4, parameters.var)
end

local function onCastSpell5(parameters)
doCombat(parameters.cid, parameters.combat5, parameters.var)
end

local function onCastSpell6(parameters)
doCombat(parameters.cid, parameters.combat6, parameters.var)
end

local function onCastSpell7(parameters)
doCombat(parameters.cid, parameters.combat7, parameters.var)
end

local function onCastSpell8(parameters)
doCombat(parameters.cid, parameters.combat8, parameters.var)
end

 

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var,combat1 = combat1,combat2 = combat2,combat3 = combat3,combat4 = combat4,combat5 = combat5,combat6 = combat6,combat7 = combat7,combat8 = combat8 }
addEvent(onCastSpell1, 100, parameters)
addEvent(onCastSpell2, 300, parameters)
addEvent(onCastSpell3, 500, parameters)
addEvent(onCastSpell4, 700, parameters)
addEvent(onCastSpell5, 900, parameters)
addEvent(onCastSpell6, 1100, parameters)
addEvent(onCastSpell7, 1300, parameters)
addEvent(onCastSpell8, 1500, parameters)
end

 

 

Desculpa pelo imenso script, ve se esse serve =D

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...