Ir para conteúdo
  • 0

Como aumentar o dano conforme os resets


teteusinhu

Pergunta

Boa noite, tenho uma dúvida relacionada ao sistema de resets. Gostaria de saber como posso fazer com que o dano base, tanto de ataques corpo a corpo, como spells, aumentem de acordo com a quantidade de resets.

 

-> Suponhamos que após o primeiro reset, o dano seja aumentado em 2 vezes, segundo reset em 3x e assim por diante.

 

Creio que se fosse por storage seria mais fácil, porem com o sistema de reset do MarcelloMkez no seguinte tópico:

http://www.xtibia.com/forum/topic/142463-advanced-reset-system-20/ ele acaba sendo por Database.

 

Gostaria de saber como proceder? Estou realmente perdido. Quem puder me ajudar agradeço imensamente.

 

Agradeço desde já,

Abraços.

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

7 respostass a esta questão

Posts Recomendados

  • 0

Você tem que remove:

setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 6, 12)

e adiciona oque eu falei ficando assim:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICETORNADO)
 
 
local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)
 
function onGetFormulaValues(cid, level, skill, attack, factor)
local reset = getPlayerReset(cid) -- variavel
local skillTotal, levelTotal = skill + attack, level / 5
return -(skillTotal * 1.5 + levelTotal)*(reset*0.1), -(skillTotal * 2.5 + levelTotal)*(reset*0.1) -- dano
end
 
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
Link para o comentário
Compartilhar em outros sites

  • 0

#CORPO A CORPO

Para combate corpo a corpo "DO JEITO QUE EU TO PENSANDO", amenos que funcione apenas para player vai da um trabalho bem grande porque vai ter que registrar o evento em todos os monstro.

 

#SPELL

Nesse sistema a função que ver é quantidade de reset do player é essa:

getPlayerReset(cid)

Você teraque troca todas essas linhas de spells (pelomenos das magias que você quer que aumente).

function onGetFormulaValues(cid, level, skill, attack, factor)
local skillTotal, levelTotal = skill + attack, level / 5
return -(skillTotal * 1.5 + levelTotal), -(skillTotal * 2.5 + levelTotal)
end
 
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
por essa

 

function onGetFormulaValues(cid, level, skill, attack, factor)
local reset = getPlayerReset(cid)
local skillTotal, levelTotal = skill + attack, level / 5
return -(skillTotal * 1.5 + levelTotal)*(reset*0.1), -(skillTotal * 2.5 + levelTotal)*(reset*0.1)
end
 
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
Eu so adicionei isso "local reset = getPlayerReset(cid)" "(reset*0.1)"
só basta você alterar em "(reset*0.1)" o quanto você quer que aumente por reset.
Link para o comentário
Compartilhar em outros sites

  • 0

Antes de tudo ja vou te agradecendo RigBy pela atenção já tem meu REP+, mas voltando ao tópico creio então que o combate corpo a corpo ira acabar sendo bem mais complicado de se realizar, vamos deixar de lado por enquanto. Já em relação as spells, peguei um exemplo do exevo gran mas frigo aqui, como ficaria? Eu teria que criar a variavel do reset do mesmo modo, mas como faria em relação ao dano?

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICETORNADO)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 6, 12)


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

function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end

Link para o comentário
Compartilhar em outros sites

  • 0

Aparentemente tinha dado tudo certo, até a spell não dar mais dano e aparecer seguinte erro no console:

 

7Tvrsfq.png

 

 

 

 

Adiciona essa função na lib/050-function, antes do ultimo end

function getPlayerReset(cid)
local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid)..";")
rss = qr:getDataInt("reset", getPlayerGUID(cid))
if rss < 0 then
rss = 0
end
return rss
end
Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Adiciona essa função na lib/050-function, antes do ultimo end

function getPlayerReset(cid)
local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid)..";")
rss = qr:getDataInt("reset", getPlayerGUID(cid))
if rss < 0 then
rss = 0
end
return rss
end

 

Muito obrigado RigBy! A questão Spell esta tinindo agora! Mas ainda gostaria de saber se realmente há uma resolução para o problema do ataque corpo a corpo. Vou esperar alguém se pronunciar sobre o assunto, caso não haja outra possibilidade, menos complicada que a sua listada irei dar por dúvida sanada =) E novamente, muito obrigado pela atenção e paciência RigBy.

 

Edit:

 

Aparentemente, não existe outro possibilidade mais prática e fácil em relação ao ataque corpo a corpo. Então irei dar por dúvida sanada. Caso alguém, por algum acaso, tenha alguma ideia ou uma solução, peço encarecidamente que me envie um PM.

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...