Ir para conteúdo

Ajuda Em Uma Função


godjean

Posts Recomendados

Gente tipo tem como bota por exp uma função ataca uma "DAMAGE" e deixa ela mais forte ou mais fraca?

 

EX:tenho isso(não sei muito bem script)

function getPlayerVocation(cid)

 

end

 

ae eu quero que ela vai até

 

effectiveness = {

[WATERDAMAGE] = {super = {"rock", "ground", "fire"}, weak = {"water", "grass", "dragon"}},

}

 

e deixe o WATERDAMAGE mais forte certos % dependendo da vocação.

 

Irei dar outro exemplo:Tipo eu sou Sorcerer ae tenho uma promotion de Dark Wizard ae essa Dark Wizard tem 25% mais forte em Death(DEATHDAMAGE) e 25% Mais fraco em San(HOLYDAMAGE)

 

se alguem poder me ajudar eu agradeço muito!!!

Link para o comentário
Compartilhar em outros sites

O que eu posso te sugerir é que em cada spell, dentro da função onGetFormulaValues(cid, level, maglevel) e antes de return -min, -max você coloque o seguinte código:

 

if (getPlayerVocation(cid) == #) then
 min = min * 1.25
 max = max * 1.25
end

 

Talvez seu script não seja exatamente com esses nomes, mas vai o exemplo:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA)

local distanceCombat = createCombatObject()
setCombatParam(distanceCombat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(distanceCombat, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA)
setCombatParam(distanceCombat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLEARTH)

function onGetFormulaValues(cid, level, maglevel)
 local min = (((level/5)+(maglevel*1.4))+10)
 local max = (((level/5)+(maglevel*2.1))+20)
 if (getPlayerVocation(cid) == 1) then
   min = min * 1.25
   max = max * 1.25
 end
 return -min, -max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onGetFormulaValues(cid, level, maglevel)
 local min = (((level/5)+(maglevel*1.4))+10)
 local max = (((level/5)+(maglevel*2.1))+20)
 if (getPlayerVocation(cid) == 1) then
   min = min * 1.25
   max = max * 1.25
 end
 return -min, -max
end

setCombatCallback(distanceCombat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
 if(variantToNumber(var) ~= 0) then
   return doCombat(cid, distanceCombat, var)
 end
 return doCombat(cid, combat, var)
end

 

No caso eu usei Terra Strike (exori tera) com 25% (1,25x) a mais de dano para sorcerers (voc. 1)

Link para o comentário
Compartilhar em outros sites

Isso funcionara em servidor de pokemon que por exemplo o ataque dele é baseado em comando então se eu for procurar na pasta spell tem os ataque porem ta assim

 

function onCastSpell(cid, var)

 

if isSummon(cid) then return true end

 

docastspell(cid, "Quick Attack")

 

return true

end

 

ou assim

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, 59)

setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 13)

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)

 

function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

 

ou assim

doSendMagicEffect(getThingPositionWithDebug(cid), 211)

local x = getClosestFreeTile(cid, getThingPositionWithDebug(getMasterTarget(cid)))

doTeleportThing(cid, x, false)

doFaceCreature(cid, getThingPositionWithDebug(getMasterTarget(cid)))

doAreaCombatHealth(cid, NORMALDAMAGE, getThingPositionWithDebug(getMasterTarget(cid)), 0, -min, -max, 3)

 

 

Então como eu faço?

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

×
×
  • Criar Novo...