Como regular o ataque dos skill

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como regular o ataque dos skill

Mensagem por FelipeXP em Qua Jul 20, 2016 5:58 pm

Tutorial em Texto:
1-Abra o projeto da sua source no visual Studio
2-No solution Explore procure por : Game/Attacking/Handle.cs


Bom é na Handle.cs que fica programado todos os skill e quando eles vão tirar de dano, para você mudar você certamente terá que pesquisar por um skill e nesse tutorial vou usar como exemplo o skill do Mortal Wound ( é só apertar ctrl +f no visual studio, e colocar o nome do skill que você será levado até o skill, ou procure pelo id do skill)

(Amplie a imagem clicando em  Ver em tamanho real )


Notem que na imagem eu circulei em azul la em baixo a seguinte parte:



Código:
damage = (uint)(damage * 0.7);
Essa é a linha que regula o dano do skill

No meu caso o skill está tirando pouco então vou simplesmente alterar dessa forma para que meu skill tire mais dano:
Código:
damage = (uint)(damage * 1.0);

Apos fazer a alteração você tem que fazer o debug e testar se está como você quer.
No vídeo eu explico melhor como obter o id de todos os skills Very Happy


Última edição por FelipeXP em Seg Dez 19, 2016 5:10 pm, editado 4 vez(es)
avatar
FelipeXP
Administrador
Administrador

Mensagens : 317
Data de inscrição : 28/05/2014

Ver perfil do usuário https://www.youtube.com/channel/UCOmLJd3M1OSrMmlcR7UGlhw

Voltar ao Topo Ir em baixo

Re: Como regular o ataque dos skill

Mensagem por FelipeXP em Qua Jul 20, 2016 6:05 pm

é sempre bom lembrar que nem todo skill terá damage = (uint)(damage * 1.0);

alguns são diferentes, como o skill do ninja o SuperTwofoldBlade você irá encontrar da seguinte forma =  
Código:
damage = (uint)((damage * 40) / 100);

se vim dessa forma você ira alterar sempre o numero depois do * sendo dessa forma :
Código:
damage = (uint)((damage * 60) / 100);

mais sempre virá damage =
avatar
FelipeXP
Administrador
Administrador

Mensagens : 317
Data de inscrição : 28/05/2014

Ver perfil do usuário https://www.youtube.com/channel/UCOmLJd3M1OSrMmlcR7UGlhw

Voltar ao Topo Ir em baixo

parabens mano

Mensagem por cleitoM em Qua Jul 20, 2016 6:42 pm

Felipe Costa escreveu:é sempre bom lembrar que nem todo skill terá damage = (uint)(damage * 1.0);

alguns são diferentes, como o skill do ninja o SuperTwofoldBlade você irá encontrar da seguinte forma =  
Código:
damage = (uint)((damage * 40) / 100);

se vim dessa forma você ira alterar sempre o numero depois do * sendo dessa forma :
Código:
damage = (uint)((damage * 60) / 100);

mais sempre virá damage =

cleitoM
Membro
Membro

Mensagens : 2
Data de inscrição : 11/06/2014

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Como regular o ataque dos skill

Mensagem por nagnata em Qui Set 29, 2016 2:49 pm

eu fiz exatamente e não consigo achar os skill radiant palm, e tornado de mago...na fb, ss, hercules...não existe valores para ser alterado...como arrumo isso?

nagnata
Membro
Membro

Mensagens : 32
Data de inscrição : 28/09/2016

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Como regular o ataque dos skill

Mensagem por CodeMaster em Qui Set 29, 2016 4:02 pm

nagnata escreveu:eu fiz exatamente e não consigo achar os skill radiant palm, e tornado de mago...na fb, ss, hercules...não existe valores para ser alterado...como arrumo isso?

procura pelo id do skill e adiciona essa linha para editar

_________________
 Twisted Evil CodeMaster
avatar
CodeMaster
Membro
Membro

Mensagens : 34
Data de inscrição : 28/05/2014
Idade : 20
Localização : Fortaleza ceara

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Como regular o ataque dos skill

Mensagem por nagnata em Ter Out 04, 2016 4:05 am

#region SuperTwofoldBlade
case 12080:
{
if (CanUseSpell(spell, attacker.Owner))
{
//var dis = spell.Distance;
//if (Kernel.GetDistance(attacker.X, attacker.Y, X, Y) <= dis)
if (Kernel.GetDistance(attacker.X, attacker.Y, X, Y) <= spell.Distance)
{
PrepareSpell(spell, attacker.Owner);

SpellUse suse = new SpellUse(true);
suse.Attacker = attacker.UID;
suse.SpellID = spell.ID;
suse.SpellLevel = spell.Level;
suse.X = X;
suse.Y = Y;
http://suse.SpellLevelHu = client_Spell.UseSpell;
Game.Attacking.InLineAlgorithm ila = new LordsRoad.Game.Attacking.InLineAlgorithm(attacker.X,
X, attacker.Y, Y, (byte)spell.Range, InLineAlgorithm.Algorithm.DDA);
bool aaAttack = false;
var Array = attacker.Owner.Screen.Objects;
foreach (Interfaces.IMapObject _obj in Array)
{
if (_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
{
attacked = _obj as Entity;
if (Kernel.GetDistance(attacker.X, attacker.Y, attacked.X, attacked.Y) <= 4)
{
if (attacked.UID == Target)
{
if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
{
aaAttack = true;
var damage = Game.Attacking.Calculate.Melee(attacker, attacked, ref attack, client_Spell.LevelHu2);
ReceiveAttack(attacker, attacked, attack, ref damage, spell);

suse.AddTarget(attacked, damage, attack);
}
}
else if (ila.InLine(attacked.X, attacked.Y))
{
if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
{
aaAttack = true;
var damage = Game.Attacking.Calculate.Melee(attacker, attacked, spell, ref attack, client_Spell.LevelHu2);

ReceiveAttack(attacker, attacked, attack, ref damage, spell);

suse.AddTarget(attacked, damage, attack);
}
}
}
}
else if (_obj.MapObjType == MapObjectType.SobNpc)
{
attackedsob = _obj as SobNpcSpawn;
if (attackedsob.UID == Target)
{
if (CanAttack(attacker, attackedsob, spell))
{
aaAttack = true;
// if (!moveIn.InRange(attackedsob.X, attackedsob.Y, 4, ranger))
// continue;
var damage = Game.Attacking.Calculate.Melee(attacker, attackedsob, ref attack);
//damage += damage * 15 / 100;
ReceiveAttack(attacker, attackedsob, attack, damage, spell);
suse.AddTarget(attackedsob, damage, attack);
}
}
}
}
if (aaAttack)
attacker.Owner.SendScreen(suse, true);
http://attacker.RadiantStamp = DateTime.Now;
}

}
break;
}


#endregion



independente de onde eu mecha ai, o ataque não altera....

nagnata
Membro
Membro

Mensagens : 32
Data de inscrição : 28/09/2016

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Como regular o ataque dos skill

Mensagem por FelipeXP em Ter Out 04, 2016 1:52 pm

nagnata escreveu: #region SuperTwofoldBlade
                               case 12080:
                                   {
                                       if (CanUseSpell(spell, attacker.Owner))
                                       {
                                           //var dis = spell.Distance;
                                           //if (Kernel.GetDistance(attacker.X, attacker.Y, X, Y) <= dis)
                                           if (Kernel.GetDistance(attacker.X, attacker.Y, X, Y) <= spell.Distance)
                                           {
                                               PrepareSpell(spell, attacker.Owner);

                                               SpellUse suse = new SpellUse(true);
                                               suse.Attacker = attacker.UID;
                                               suse.SpellID = spell.ID;
                                               suse.SpellLevel = spell.Level;
                                               suse.X = X;
                                               suse.Y = Y;
                                               //suse.SpellLevelHu = client_Spell.UseSpell;
                                               Game.Attacking.InLineAlgorithm ila = new LordsRoad.Game.Attacking.InLineAlgorithm(attacker.X,
                             X, attacker.Y, Y, (byte)spell.Range, InLineAlgorithm.Algorithm.DDA);
                                               bool aaAttack = false;
                                               var Array = attacker.Owner.Screen.Objects;
                                               foreach (Interfaces.IMapObject _obj in Array)
                                               {
                                                   if (_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                                                   {
                                                       attacked = _obj as Entity;
                                                       if (Kernel.GetDistance(attacker.X, attacker.Y, attacked.X, attacked.Y) <= 4)
                                                       {
                                                           if (attacked.UID == Target)
                                                           {
                                                               if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
                                                               {
                                                                   aaAttack = true;
                                                                   var damage = Game.Attacking.Calculate.Melee(attacker, attacked, ref attack, client_Spell.LevelHu2);
                                                                   ReceiveAttack(attacker, attacked, attack, ref damage, spell);

                                                                   suse.AddTarget(attacked, damage, attack);
                                                               }
                                                           }
                                                           else if (ila.InLine(attacked.X, attacked.Y))
                                                           {
                                                               if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
                                                               {
                                                                   aaAttack = true;
                                                                   var damage = Game.Attacking.Calculate.Melee(attacker, attacked, spell, ref attack, client_Spell.LevelHu2);

                                                                   ReceiveAttack(attacker, attacked, attack, ref damage, spell);
                                                                   
                                                                   suse.AddTarget(attacked, damage, attack);
                                                               }
                                                           }
                                                       }
                                                   }
                                                   else if (_obj.MapObjType == MapObjectType.SobNpc)
                                                   {
                                                       attackedsob = _obj as SobNpcSpawn;
                                                       if (attackedsob.UID == Target)
                                                       {
                                                           if (CanAttack(attacker, attackedsob, spell))
                                                           {
                                                               aaAttack = true;
                                                               // if (!moveIn.InRange(attackedsob.X, attackedsob.Y, 4, ranger))
                                                               //  continue;
                                                               var damage = Game.Attacking.Calculate.Melee(attacker, attackedsob, ref attack);
                                                               //damage += damage * 15 / 100;
                                                               ReceiveAttack(attacker, attackedsob, attack, damage, spell);
                                                               suse.AddTarget(attackedsob, damage, attack);
                                                           }
                                                       }
                                                   }
                                               }
                                               if (aaAttack)
                                                   attacker.Owner.SendScreen(suse, true);
                                               //attacker.RadiantStamp = DateTime.Now;
                                           }

                                       }
                                       break;
                                   }


                               #endregion



independente de onde eu mecha ai, o ataque não altera....

isso acontece por que a linha que calcula o dano do skill está entre //.
Todo código com essas barras // são nulos, é como se não estivesse ali
é só tirar as barras //, nessa parte:
 //damage += damage * 15 / 100;
avatar
FelipeXP
Administrador
Administrador

Mensagens : 317
Data de inscrição : 28/05/2014

Ver perfil do usuário https://www.youtube.com/channel/UCOmLJd3M1OSrMmlcR7UGlhw

Voltar ao Topo Ir em baixo

Re: Como regular o ataque dos skill

Mensagem por João Paulo em Sab Dez 17, 2016 3:06 pm

Felipe como resolver um bug parecido, sendo que e no ataque basico, tipo ataque normal tirando muito dano, como resolver?
avatar
João Paulo
Membro
Membro

Mensagens : 8
Data de inscrição : 20/01/2016

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Como regular o ataque dos skill

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum