TE
pedido

Como aumentar o dano conforme os resets

Por teteusinhu, 02 de jul. de 2015 em Scripts

reset
aumentar
dano
conforme
otserv
tibia
resolvido
script
8
3.9k
teteusinhuT
02 de julho de 2015 às 19:46

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 Julho 2 por teteusinhu

RigByR
02 de julho de 2015 às 20:57

#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.
teteusinhuT
02 de julho de 2015 às 21:10

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

RigByR
02 de julho de 2015 às 21:26
Melhor resposta

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
teteusinhuT
02 de julho de 2015 às 21:36

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

 

7Tvrsfq.png

 

 

 

RigByR
02 de julho de 2015 às 21:51

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
teteusinhuT
02 de julho de 2015 às 21:59

 

 

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 Julho 6 por teteusinhu

2 semanas depois...
BrunoB
14 de julho de 2015 às 17:33

Tópico movido para dúvidas / pedidos resolvidos.