PV
dúvida

Spell Bugada

Por pvjf, 19 de jan. de 2014 em Scripts

spell
resolvido
script
7
700
pvjfP
19 de janeiro de 2014 às 10:27

Bem, eu configurei spells parecidas com essa (que tem sua formula baseada na skill sword e no lvl do player), mas que eram voltadas para causar dano; Esta foi feita basicamente para ser uma cura veja como ficou:

function getMinMaxValues(cid, level, magiclevel)
local skill = getPlayerSkillLevel(cid, SKILL_SWORD)
local min = (skill * 1 + level/2)
local max = min * math.random(105, 125) / 100
return min, max
end


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setHealingFormula(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getMinMaxValues")


function onCastSpell(cid, var)
doPlayerAddSkillTry(cid,  2, 100)
 return doCombat(cid, combat, var)
end

A tag dela no spells.xml:

  <instant name="Exura Sword" words="exura sword" lvl="1" mana="20" aggressive="0" selftarget="1" exhaustion="1000" needlearn="1" event="script" value="healing/exura sword.lua">
  <vocation id="1"/>
  <vocation id="2"/>
  <vocation id="3"/>
  <vocation id="4"/>
  <vocation id="5"/>
  <vocation id="6"/>
 </instant>

O problema é que ela está healando muiito mais do que o esperado [skill + (lvl dividido por 2)] variando em até 25% e esta fazendo com que o player ganhe pk Amarelo (não sei ao certo mas provavelmente ele pega pk branco, e ao se bater ele pega amarelo)

Se alguem souber um script parecido, ou souber o que esta errado no meu script favor, ficarei grato.

 

HeelNoxH
19 de janeiro de 2014 às 10:34

local max = min * math.random(105, 125) / 100

 

Amigo edite aqui e va testando, até chegar a cura a seu gosto.

OneshotO
19 de janeiro de 2014 às 10:40

O motivo dos dois bugs está no uso incorreto de uma função.

function getMinMaxValues(cid, level, magiclevel)
	local skill = getPlayerSkillLevel(cid, SKILL_SWORD)
	local min = (skill * 1 + level/2)
	local max = min * math.random(105, 125) / 100
	return min, max
end


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getMinMaxValues")


function onCastSpell(cid, var)
	doPlayerAddSkillTry(cid,  2, 100)
	return doCombat(cid, combat, var)
end
pvjfP
19 de janeiro de 2014 às 10:49

@Darkhell: Obrigado pela atenção, mas configurar o qanto heala eu sei

@Oneshot: Vou Testar e jaja Edito informando se funcionou; qual função estava bugando?

Editado Janeiro 19 por KikimDaPadaria

OneshotO
19 de janeiro de 2014 às 10:57

Não use setHealingFormula com funções que retornam fórmulas próprias de dano, a mesma coisa vale para setAttackFormula, use setCombatCallback.

Editado Janeiro 19 por Oneshot

pvjfP
19 de janeiro de 2014 às 11:18

Funcionou perfeitamente ; Vivendo e aprendendo

zipter98Z
19 de janeiro de 2014 às 17:14

Tópico movido para a seção de dúvidas e pedidos resolvidos.