Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Conquer Online 2 > CO2 Private Server
You last visited: Today at 12:07

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Help]How to change damage 5165

Discussion on [Help]How to change damage 5165 within the CO2 Private Server forum part of the Conquer Online 2 category.

Reply
 
Old 01/12/2010, 23:46   #31
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,376
:O maybe I'm just underestimating how fragmented the lotf source coding is but how has no one released a real fix for the damage calculations yet?

Assuming stats are reading properly from items it shouldn't be THAT hard.. just fix the damage calculation void by re-writing how it handles damage...

Question:

Are stats from items reading properly
Are gems in items being pulled properly


If so I may download source later and attempt to re-write it so it will work a bit better for ppl.
pro4never is offline  
Thanks
2 Users
Old 01/13/2010, 01:30   #32


 
Korvacs's Avatar
 
elite*gold: 20
Join Date: Mar 2006
Posts: 6,125
Received Thanks: 2,518
Quote:
Originally Posted by pro4never View Post
:O maybe I'm just underestimating how fragmented the lotf source coding is but how has no one released a real fix for the damage calculations yet?

Assuming stats are reading properly from items it shouldn't be THAT hard.. just fix the damage calculation void by re-writing how it handles damage...

Question:

Are stats from items reading properly
Are gems in items being pulled properly


If so I may download source later and attempt to re-write it so it will work a bit better for ppl.
Character.cs Line 3959
Code:
                if (A == AttackType.Melee || A == AttackType.Ranged)
                {
                    uint Damage = (uint)Rnd.Next((int)EqStats.minatk, (int)EqStats.maxatk);
                    Damage = (uint)((Damage + Str) * EqStats.GemExtraAttack);
                    Buff Stig = BuffOf(SkillsClass.ExtraEffect.Stigma);
                    if (Stig.Eff == SkillsClass.ExtraEffect.Stigma)
                        Damage = (uint)(Damage * Stig.Value);
                    return Damage;
                }
Character.cs Line 3814
Code:
                        ushort Def = EqStats.defense;
                        Buff Shield = BuffOf(SkillsClass.ExtraEffect.MagicShield);
                        if (Shield.Eff == SkillsClass.ExtraEffect.MagicShield)
                            Def = (ushort)(Def * Shield.Value);

                        if (Def >= Damage)
                            Damage = 1;
                        else
                            Damage -= Def;

                        Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 100);

                        Damage += Attacker.EqStats.MeleeDamageIncrease;

                        if (EqStats.MeleeDamageDecrease >= Damage)
                            Damage = 1;
                        else
                            Damage -= EqStats.MeleeDamageDecrease;
Thats the sum of the Melee damage calculation, (the existing one in the source), its overly complicated in every aspect, at no point does the server half the left hand weapon damage (which is a must to get attack damage correct). Along with a number of other errors which are missing (for example potency doesnt count for shit in this source, neither it seems does tort gems).

I considered fixing it once, but honestly its not worth it having looked through the source.
Korvacs is offline  
Thanks
2 Users
Old 01/13/2010, 01:35   #33
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,376
yah it certainly doesn't look very effective (assuming even that the sub calculations such as bless and gems are calculating properly...)

I dunno, depends how completely bored out of my mind I get... although I'm probably headed to the gym soon so that would solve that problem.

<edit>

wtf... is it just me being dumb or are they doing defence calculations BEFORE attack boost calcs?...

*** the entire order of these is wrong... It's been ages since I've seen any proper attack calculations but shouldnt it be

(((min-max atk * dragon gem %) * stig %) - ((pdef * (1 + bless pct) * magic shield %) / (1 * tort %))) + bonus damage (fan/tower)

or something similar to that..

it was atk, then dragons, THEN stig. Once attack was calculated it removed the defence, bless and shield and the FINAL damage was done through torts... or maybe shield was over were torts are also...

Guuhhh now I really wanna read old dmg calc threads on co forget too much of this stuff.
pro4never is offline  
Thanks
1 User
Old 01/13/2010, 01:37   #34


 
Korvacs's Avatar
 
elite*gold: 20
Join Date: Mar 2006
Posts: 6,125
Received Thanks: 2,518
Quote:
Originally Posted by pro4never View Post
yah it certainly doesn't look very effective (assuming even that the sub calculations such as bless and gems are calculating properly...)

I dunno, depends how completely bored out of my mind I get... although I'm probably headed to the gym soon so that would solve that problem.
This is only an snippet, the full "Attack Handler" goes like this:

Attack.cs
Code:
    public class Attack
    {
        public static void Handle(Main.GameClient GC, byte[] Data)
        {
            try
            {
                uint AttackType = BitConverter.ToUInt32(Data, 20);
                if (AttackType != 24)
                    GC.MyChar.AtkMem.AtkType = (byte)AttackType;
                GC.MyChar.Action = 100;

                if (!GC.MyChar.Alive) return;

                if (AttackType == 2 || AttackType == 28)
                {
                    uint TargetUID = BitConverter.ToUInt32(Data, 12);
                    Game.Mob PossMob = null;
                    Game.Character PossChar = null;

                    if (Game.World.H_Mobs.Contains(GC.MyChar.Loc.Map))
                    {
                        Hashtable MapMobs = (Hashtable)Game.World.H_Mobs[GC.MyChar.Loc.Map];
                        if (MapMobs.Contains(TargetUID))
                            PossMob = (Game.Mob)MapMobs[TargetUID];
                        else if (Game.World.H_Chars.Contains(TargetUID))
                            PossChar = (Game.Character)Game.World.H_Chars[TargetUID];
                    }
                    else if (Game.World.H_Chars.Contains(TargetUID))
                        PossChar = (Game.Character)Game.World.H_Chars[TargetUID];
                    if (PossChar != null)
                        if (GC.GM)
                            return;
                    if (PossMob != null || PossChar != null)
                    {
                        GC.MyChar.AtkMem.Target = TargetUID;
                        GC.MyChar.AtkMem.Attacking = true;

                        if (DateTime.Now > GC.MyChar.AtkMem.LastAttack.AddMilliseconds(GC.MyChar.AtkFrequence))
                        {
                            uint Damage = GC.MyChar.PrepareAttack((byte)AttackType, true);
                            if (PossMob != null && PossMob.Alive && (MyMath.PointDistance(GC.MyChar.Loc.X, GC.MyChar.Loc.Y, PossMob.Loc.X, PossMob.Loc.Y) <= 3 || AttackType == 28 && MyMath.PointDistance(GC.MyChar.Loc.X, GC.MyChar.Loc.Y, PossMob.Loc.X, PossMob.Loc.Y) <= 15 || GC.MyChar.StatEff.Contains(Game.StatusEffectEn.FatalStrike)))
                            {
                                if (!GC.MyChar.WeaponSkill(PossMob.Loc.X, PossMob.Loc.Y, PossMob.EntityID))
                                    PossMob.TakeAttack(GC.MyChar, ref Damage, (NewestCOServer.Game.AttackType)AttackType, false);
                            }
                            else if (PossChar != null && (PossChar.CanBeMeleed || GC.MyChar.AtkMem.AtkType != 2) && PossChar.Alive && (MyMath.PointDistance(GC.MyChar.Loc.X, GC.MyChar.Loc.Y, PossChar.Loc.X, PossChar.Loc.Y) <= 2 || AttackType == 28 && MyMath.PointDistance(GC.MyChar.Loc.X, GC.MyChar.Loc.Y, PossChar.Loc.X, PossChar.Loc.Y) <= 15))
                            {
                                if(!GC.GM)
                                if (!GC.MyChar.WeaponSkill(PossChar.Loc.X, PossChar.Loc.Y, PossChar.EntityID))
                                    PossChar.TakeAttack(GC.MyChar, Damage, (NewestCOServer.Game.AttackType)AttackType, false);
                            }
                            else
                            {
                                GC.MyChar.AtkMem.Target = 0;
                                GC.MyChar.AtkMem.Attacking = false;
                            }
                        }
                    }
                    else if (TargetUID >= 6700 && TargetUID <= 6702)
                    {
                        GC.MyChar.AtkMem.Target = TargetUID;
                        GC.MyChar.AtkMem.Attacking = true;

                        if (DateTime.Now > GC.MyChar.AtkMem.LastAttack.AddMilliseconds(GC.MyChar.AtkFrequence))
                        {
                            uint Damage = GC.MyChar.PrepareAttack((byte)AttackType, true);
                            if (TargetUID == 6700)
                            {
                                if (Features.GuildWars.War)
                                {
                                    if (!GC.MyChar.WeaponSkill(Features.GuildWars.ThePole.Loc.X, Features.GuildWars.ThePole.Loc.Y, Features.GuildWars.ThePole.EntityID))
                                        Features.GuildWars.ThePole.TakeAttack(GC.MyChar, Damage, (byte)AttackType);
                                }
                                else
                                {
                                    GC.MyChar.AtkMem.Target = 0;
                                    GC.MyChar.AtkMem.Attacking = false;
                                }
                            }
                            else if (TargetUID == 6701)
                            {
                                if (!GC.MyChar.WeaponSkill(Features.GuildWars.TheLeftGate.Loc.X, Features.GuildWars.TheLeftGate.Loc.Y, Features.GuildWars.TheLeftGate.EntityID))
                                    Features.GuildWars.TheLeftGate.TakeAttack(GC.MyChar, Damage, (byte)AttackType);

                            }
                            else
                            {
                                if (!GC.MyChar.WeaponSkill(Features.GuildWars.TheRightGate.Loc.X, Features.GuildWars.TheRightGate.Loc.Y, Features.GuildWars.TheRightGate.EntityID))
                                    Features.GuildWars.TheRightGate.TakeAttack(GC.MyChar, Damage, (byte)AttackType);
                            }
                        }
                        return;
                    }
                    else
                        GC.MyChar.AtkMem.Attacking = false;

                    if (PossChar == null && PossMob == null)
                    {
                        Game.NPC PossNPC = (Game.NPC)Game.World.H_NPCs[TargetUID];
                        if (PossNPC != null && PossNPC.Flags == 21 && (MyMath.PointDistance(GC.MyChar.Loc.X, GC.MyChar.Loc.Y, PossNPC.Loc.X, PossNPC.Loc.Y) <= 3 || AttackType == 28 && MyMath.PointDistance(GC.MyChar.Loc.X, GC.MyChar.Loc.Y, PossNPC.Loc.X, PossNPC.Loc.Y) <= 15))
                        {
                            GC.MyChar.AtkMem.Target = TargetUID;
                            GC.MyChar.AtkMem.Attacking = true;

                            if (DateTime.Now > GC.MyChar.AtkMem.LastAttack.AddMilliseconds(GC.MyChar.AtkFrequence))
                            {
                                uint Damage = GC.MyChar.PrepareAttack((byte)AttackType, true);
                                if (!GC.MyChar.WeaponSkill(PossNPC.Loc.X, PossNPC.Loc.Y, PossNPC.EntityID))
                                    PossNPC.TakeAttack(GC.MyChar, Damage, (NewestCOServer.Game.AttackType)AttackType, false);
                            }
                        }
                    }
                }
                else if (AttackType == 44)
                {
                    ushort SkillId = 6003;
                    ushort x = GC.MyChar.Loc.X;
                    ushort y = GC.MyChar.Loc.Y;
                    uint Target = GC.MyChar.EntityID;

                    if (SkillId != 0 && GC.MyChar.Skills.Contains(SkillId))
                    {
                        Game.Skill S = (Game.Skill)GC.MyChar.Skills[SkillId];
                        if (Features.SkillsClass.SkillInfos.Contains(S.ID + " " + S.Lvl))
                        {
                            Features.SkillsClass.SkillUse SU = new NewestCOServer.Features.SkillsClass.SkillUse();
                            SU.Init(GC.MyChar, S.ID, S.Lvl, (ushort)x, (ushort)y);
                            if (SU.Info.ID == 0)
                                return;
                            SU.GetTargets(Target);
                            SU.Use();
                        }
                    }
                }
                else if (AttackType == 24)
                {
                    ushort SkillId;
                    long x;
                    long y;
                    uint Target;
                    #region GetSkillID
                    SkillId = Convert.ToUInt16(((long)Data[24] & 0xFF) | (((long)Data[25] & 0xFF) << 8));
                    SkillId ^= (ushort)0x915d;
                    SkillId ^= (ushort)GC.MyChar.EntityID;
                    SkillId = (ushort)(SkillId << 0x3 | SkillId >> 0xd);
                    SkillId -= 0xeb42;
                    #endregion
                    #region GetCoords
                    x = (Data[16] & 0xFF) | ((Data[17] & 0xFF) << 8);
                    x = x ^ (uint)(GC.MyChar.EntityID & 0xffff) ^ 0x2ed6;
                    x = ((x << 1) | ((x & 0x8000) >> 15)) & 0xffff;
                    x |= 0xffff0000;
                    x -= 0xffff22ee;

                    y = (Data[18] & 0xFF) | ((Data[19] & 0xFF) << 8);
                    y = y ^ (uint)(GC.MyChar.EntityID & 0xffff) ^ 0xb99b;
                    y = ((y << 5) | ((y & 0xF800) >> 11)) & 0xffff;
                    y |= 0xffff0000;
                    y -= 0xffff8922;
                    #endregion
                    #region GetTarget
                    Target = ((uint)Data[12] & 0xFF) | (((uint)Data[13] & 0xFF) << 8) | (((uint)Data[14] & 0xFF) << 16) | (((uint)Data[15] & 0xFF) << 24);
                    Target = ((((Target & 0xffffe000) >> 13) | ((Target & 0x1fff) << 19)) ^ 0x5F2D2463 ^ GC.MyChar.EntityID) - 0x746F4AE6;
                    #endregion
                    if (SkillId != 0 && GC.MyChar.Skills.Contains(SkillId))
                    {
                        Game.Skill S = (Game.Skill)GC.MyChar.Skills[SkillId];
                        if (Features.SkillsClass.SkillInfos.Contains(S.ID + " " + S.Lvl))
                        {
                            Features.SkillsClass.SkillUse SU = new NewestCOServer.Features.SkillsClass.SkillUse();
                            SU.Init(GC.MyChar, S.ID, S.Lvl, (ushort)x, (ushort)y);
                            if (SU.Info.ID == 0)
                                return;
                            bool EnoughArrows = true;
                            if (SU.Info.ArrowsCost > 0)
                            {
                                if (GC.MyChar.Loc.Map != 1039)
                                {
                                    if (GC.MyChar.Equips.LeftHand.ID != 0 && Game.Item.IsArrow(GC.MyChar.Equips.LeftHand.ID))
                                    {
                                        if (GC.MyChar.Equips.LeftHand.CurDur >= SU.Info.ArrowsCost)
                                            GC.MyChar.Equips.LeftHand.CurDur -= SU.Info.ArrowsCost;
                                        else
                                            GC.MyChar.Equips.LeftHand.CurDur = 0;
                                        if (GC.MyChar.Equips.LeftHand.CurDur == 0)
                                        {
                                            GC.AddSend(Packets.ItemPacket(GC.MyChar.Equips.LeftHand.UID, 5, 6));
                                            GC.AddSend(Packets.ItemPacket(GC.MyChar.Equips.LeftHand.UID, 0, 3));
                                            GC.MyChar.Equips.LeftHand = new Game.Item();
                                        }
                                        else
                                            GC.AddSend(Packets.AddItem(GC.MyChar.Equips.LeftHand, 5));
                                    }
                                    else
                                    {
                                        GC.MyChar.AtkMem.Attacking = false;
                                        EnoughArrows = false;
                                    }
                                }
                            }
                            if (GC.MyChar.CurMP >= SU.Info.ManaCost && GC.MyChar.Stamina >= SU.Info.StaminaCost && EnoughArrows || GC.MyChar.Loc.Map == 1039)
                            {
                                if (SU.Info.EndsXPWait)
                                {
                                    if (GC.MyChar.StatEff.Contains(NewestCOServer.Game.StatusEffectEn.XPStart))
                                    {
                                        GC.MyChar.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.XPStart);
                                        GC.MyChar.XPKO = 0;
                                    }
                                    else
                                        return;
                                }
                                try
                                {
                                    if (GC.MyChar.Loc.Map != 1039)
                                    {
                                        GC.MyChar.CurMP -= SU.Info.ManaCost;
                                        GC.MyChar.Stamina -= SU.Info.StaminaCost;
                                        if (SkillId >= 1000 && SkillId <= 1002)
                                        {
                                            GC.MyChar.AtkMem.AtkType = 21;
                                            GC.MyChar.AtkMem.Skill = SU.Info.ID;
                                            GC.MyChar.AtkMem.Attacking = true;
                                            GC.MyChar.AtkMem.Target = Target;
                                            GC.MyChar.AtkMem.LastAttack = DateTime.Now;
                                            GC.MyChar.AtkMem.SX = (ushort)x;
                                            GC.MyChar.AtkMem.SY = (ushort)y;
                                        }
                                    }
                                    else
                                    {
                                        GC.MyChar.AtkMem.AtkType = 21;
                                        GC.MyChar.AtkMem.Skill = SU.Info.ID;
                                        GC.MyChar.AtkMem.Attacking = true;
                                        GC.MyChar.AtkMem.Target = Target;
                                        GC.MyChar.AtkMem.LastAttack = DateTime.Now;
                                        GC.MyChar.AtkMem.SX = (ushort)x;
                                        GC.MyChar.AtkMem.SY = (ushort)y;
                                    }
                                }
                                catch (Exception c) { Program.WriteLine(c.ToString()); }
                                if (SU.Info.ID == 6001)//toxic fog
                                {
                                    #region ToxicFog
                                    if (GC.MyChar.Loc.Map != 1039)
                                    {
                                        #region Mobs
                                        try
                                        {
                                            foreach (Game.Mob Mob in (Game.World.H_Mobs[GC.MyChar.Loc.Map] as Hashtable).Values)
                                            {
                                                if (Mob.Alive)
                                                {
                                                    int Dst = 6;
                                                    if (MyMath.PointDistance(Mob.Loc.X, Mob.Loc.Y, x, y) <= Dst)
                                                    {
                                                        if (Mob.Name.Contains("Guard"))
                                                        {
                                                            continue;
                                                        }
                                                        Mob.PoisonedInfo = new NewestCOServer.Game.PoisonType(SU.Info.Level);
                                                        foreach (Game.Character C in Game.World.H_Chars.Values)
                                                            if (Mob.Loc.Map == C.Loc.Map)
                                                                if (MyMath.PointDistance(Mob.Loc.X, Mob.Loc.Y, C.Loc.X, C.Loc.Y) <= 20)
                                                                    C.MyClient.AddSend(Packets.Status(Mob.EntityID, NewestCOServer.Game.Status.Effect, (ulong)Game.StatusEffectEn.Poisoned));
                                                        uint Damage = 0;
                                                        Mob.TakeAttack(GC.MyChar, ref Damage, NewestCOServer.Game.AttackType.Magic, true);
                                                        GC.MyChar.AddSkillExp(SU.Info.ID, 100);
                                                    }
                                                }
                                            }
                                        }
                                        catch { }
                                        #endregion
                                        #region Players
                                        try
                                        {
                                            if (!Game.World.NoPKMaps.Contains(GC.MyChar.Loc.Map))
                                            {
                                                foreach (Game.Character Player in Game.World.H_Chars.Values)
                                                {
                                                    if (Player.Alive)
                                                    {
                                                        int Dst = 6;
                                                        if (MyMath.PointDistance(Player.Loc.X, Player.Loc.Y, x, y) <= Dst)
                                                        {
                                                            if (GC.MyChar.PKMode == NewestCOServer.Game.PKMode.PK)
                                                            {
                                                                if (Player != GC.MyChar)
                                                                {
                                                                    if (Player.Potency <= GC.MyChar.Potency)
                                                                    {
                                                                        Player.PoisonedInfo = new NewestCOServer.Game.PoisonType(SU.Info.Level);
                                                                        Player.StatEff.Add(NewestCOServer.Game.StatusEffectEn.Poisoned);
                                                                        Player.TakeAttack(GC.MyChar, 0, NewestCOServer.Game.AttackType.Magic, true);
                                                                        SU.PlayerTargets.Add(Player, (uint)1);
                                                                    }
                                                                    else
                                                                    {
                                                                        SU.PlayerTargets.Add(Player, (uint)0);
                                                                    }
                                                                }
                                                            }
                                                            GC.MyChar.AddSkillExp(SU.Info.ID, 100);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        catch { }
                                        #endregion


                                        }
                                        else
                                            GC.MyChar.AddSkillExp(SU.Info.ID, 10);
                                    Game.World.Action(GC.MyChar, Packets.SkillUse(SU).Get);
                                    #endregion
                                }
                                else if (SU.Info.ID == 1100 || SU.Info.ID == 1050)
                                {
                                    #region Pray
                                    if (GC.MyChar.EntityID != Target)
                                    {
                                        if (Game.World.H_Chars.ContainsKey(Target))
                                        {
                                            Game.Character Char = (Game.Character)Game.World.H_Chars[Target];
                                            if (!Char.Alive)
                                            {
                                                SU.GetTargets(Target);
                                                SU.PlayerTargets[Char] = (uint)1;
                                                Game.World.Action(Char, Packets.SkillUse(SU).Get);
                                                Char.Ghost = false;
                                                Char.BlueName = false;
                                                Char.CurHP = (ushort)Char.MaxHP;
                                                Char.Alive = true;
                                                Char.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.Dead);
                                                Char.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.BlueName);
                                                Char.Body = Char.Body;
                                                Char.Hair = Char.Hair;
                                                Char.Equips.Send(Char.MyClient, false);
                                            }
                                        }
                                    }
                                    #endregion
                                }
                                else
                                {
                                    SU.GetTargets(Target);
                                    SU.Use();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e) { Program.WriteLine(e); }
        }
    }
I wont link you Character.cs because its 5667 lines long, but you will get the idea of how badly written it is from the above.
Korvacs is offline  
Thanks
1 User
Old 01/13/2010, 07:35   #35
 
necuja's Avatar
 
elite*gold: 0
Join Date: Feb 2007
Posts: 114
Received Thanks: 25
Does anyone know if i change these following If everyone will do less damage?

Quote:
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 100);
Damage = (uint)((double)Damage * (((double)(110 - EqStats.Dodge) / 100)));
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 100);
Damage = (uint)((double)Damage * (((double)(100 - EqStats.MDef1) / 100)));
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 100);
Too

Quote:
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 160);
Damage = (uint)((double)Damage * (((double)(110 - EqStats.Dodge) / 160)));
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 160);
Damage = (uint)((double)Damage * (((double)(100 - EqStats.MDef1) / 160)));
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 160);
And this

Quote:
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 100);
Damage = (uint)((double)Damage * (((double)(100 - EqStats.MDef1) / 100)));
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 100);
Damage = (uint)((double)Damage * (((double)(110 - EqStats.Dodge) / 100)));
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 100);
To this

Quote:
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 160);
Damage = (uint)((double)Damage * (((double)(100 - EqStats.MDef1) / 160)));
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 160);
Damage = (uint)((double)Damage * (((double)(110 - EqStats.Dodge) / 160)));
Damage = (uint)((double)Damage * (100 - EqStats.TotalBless) / 160);
I found those in Character.cs and Skill.cs

If anyone knows if it will reduce the damage let me know THANKS!!!
necuja is offline  
Old 01/13/2010, 08:17   #36
 
Arcо's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 8,765
Received Thanks: 5,291
Quote:
Originally Posted by necuja View Post
Does anyone know if i change these following If everyone will do less damage?



Too



And this



To this



I found those in Character.cs and Skill.cs

If anyone knows if it will reduce the damage let me know THANKS!!!
It sure will :]
Arcо is offline  
Thanks
1 User
Old 01/13/2010, 08:36   #37
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,376
Yes. Those are all dividing the certain stats like bless and dodge by a set number (100 to give a percentage value) and multiplying it by the actual damage.

Eg:

10,000 ph dmg but player has 50 percent bless (50 / 100 = .5)
10,000 * .5 = 5,000

therefore half the damage

the quick fix people are suggesting (without correcting the actual damage calculations in the source) is to raise the 100 to something higher, thus making bless/dodge and other stats more effective.

10,000 ph dmg again 50 percent bless (50 / 160 = .3125)
10,000 * .3125 = 3125 effectively reducing damage.
pro4never is offline  
Thanks
1 User
Old 01/13/2010, 08:52   #38
 
ramix's Avatar
 
elite*gold: 0
Join Date: Aug 2008
Posts: 272
Received Thanks: 61
this damage is for all classes? your for une class have a calculation damage?
ramix is offline  
Old 01/13/2010, 08:58   #39
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,376
Classes do not have their own damage type. The way this is working it will lower all damage.

Physical and magic damage will be lowered through blessed gear
Magic damage will be further lowered through Mdef1 (percentage mdef)
Archer damage will be lowered through dodge.
pro4never is offline  
Old 01/13/2010, 09:15   #40
 
necuja's Avatar
 
elite*gold: 0
Join Date: Feb 2007
Posts: 114
Received Thanks: 25
Wow guy's thanks i understand now ^_^

Another question i added level 137-150 and i dont think it worked can someone tell me if i did it right?

Quote:
}
public static void LoadLevelExp()
{
LevelExp = new ulong[150];
LevelExp[0] = 0;
FileStream FS = new FileStream(@"C:\OldCODB\ExpNeed.dat", FileMode.Open);
BinaryReader BR = new BinaryReader(FS);
for (byte i = 1; i < 130; i++)
LevelExp[i] = BR.ReadUInt32();

LevelExp[130] = 8589148160;
LevelExp[131] = 25767444480;
LevelExp[132] = 77302333440;
LevelExp[133] = 231907000320;
LevelExp[134] = 347860500480;
LevelExp[135] = 521790750720;
LevelExp[136] = 782686126080;
LevelExp[137] = 792686126080;
LevelExp[138] = 802686126080;
LevelExp[139] = 822686126080;
LevelExp[140] = 842686126080;
LevelExp[141] = 882686126080;
LevelExp[142] = 922686126080;
LevelExp[143] = 942686126080;
LevelExp[144] = 952686126080;
LevelExp[145] = 972686126080;
LevelExp[146] = 982686126080;
LevelExp[147] = 1002686126080;
LevelExp[148] = 1022686126080;
LevelExp[149] = 1082686126080;



BR.Close();
FS.Close();
}
I changed/added the stuff in red It doesn't seem to be working...I went changed my level to 137 and tryed leveling for about 10 minutes and dint level?

Can someone help me with this problem THANKS!!!!!!!
necuja is offline  
Old 01/13/2010, 09:18   #41
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,376
Couple things: Why did you change the LevelExp = new ulong[150];

Don't think that needs to be changed

#2: not added new levels before but wouldn't you need to modify client side also?

I'd suggest searching as I know levels past 130 have been released for sources before. See what those threads have to say.
pro4never is offline  
Thanks
1 User
Old 01/13/2010, 09:18   #42
 
ramix's Avatar
 
elite*gold: 0
Join Date: Aug 2008
Posts: 272
Received Thanks: 61
if i up the dodge archer get low damage?
ramix is offline  
Old 01/13/2010, 09:49   #43
 
necuja's Avatar
 
elite*gold: 0
Join Date: Feb 2007
Posts: 114
Received Thanks: 25
Quote:
Originally Posted by pro4never View Post
Couple things: Why did you change the LevelExp = new ulong[150];

Don't think that needs to be changed

#2: not added new levels before but wouldn't you need to modify client side also?

I'd suggest searching as I know levels past 130 have been released for sources before. See what those threads have to say.
Alright thanks

I changed LevelExp=new ulong[150]; because i got a error if i left it 137

Also ever since i added those levels i got these errors now ;/ help?

Quote:
Error 1 The type or namespace name 'Skill' does not exist in the namespace 'NewestCOServer.Game' (are you missing an assembly reference?) C:\rikardo updated\Database.cs 38 18 NewestCOServer
Error 2 The type or namespace name 'Skill' does not exist in the namespace 'NewestCOServer.Game' (are you missing an assembly reference?) C:\rikardo updated\Database.cs 38 37 NewestCOServer
Error 3 The type or namespace name 'NPC' does not exist in the namespace 'NewestCOServer.Game' (are you missing an assembly reference?) C:\rikardo updated\Database.cs 479 22 NewestCOServer
Error 4 The type or namespace name 'NPC' does not exist in the namespace 'NewestCOServer.Game' (are you missing an assembly reference?) C:\rikardo updated\Database.cs 479 54 NewestCOServer
Error 5 The type or namespace name 'DMap' could not be found (are you missing a using directive or an assembly reference?) C:\rikardo updated\Database.cs 514 17 NewestCOServer
Error 6 The type or namespace name 'DMap' could not be found (are you missing a using directive or an assembly reference?) C:\rikardo updated\Database.cs 514 27 NewestCOServer
Error 7 The name 'DMaps' does not exist in the current context C:\rikardo updated\Database.cs 514 32 NewestCOServer
necuja is offline  
Old 01/13/2010, 09:51   #44


 
Korvacs's Avatar
 
elite*gold: 20
Join Date: Mar 2006
Posts: 6,125
Received Thanks: 2,518
If your looking for help and support for 5165 in general there is a huge thread in the guide section, this topic is just for attack/damage calculation discussion.
Korvacs is offline  
Old 01/13/2010, 10:13   #45
 
elite*gold: 0
Join Date: May 2006
Posts: 52
Received Thanks: 25
Quote:
Originally Posted by ramix View Post
if i up the dodge archer get low damage?
to
i should search today a see how the arrows work .. did u try and see if there is a diference betwen normal attak and scatter attak dmg .. if in scater attak dmg the damage is les then on the skills all things are ok and u dind modify the dmg on normal attak

PS are u testing DMG on moobs or on another character
intel_ro is offline  
Reply


Similar Threads Similar Threads
5165 Damage Calculation
03/07/2010 - CO2 Private Server - 7 Replies
Fixes around the forum are useless and no where near good enough if you want to make a server public. Someone should go ahead and fix it then release their code. Get some thanks and make everyone happy. I wont because I can't, I would if i could. ^^
5165 Damage issues
02/06/2010 - CO2 Private Server - 1 Replies
Okay, this is odd. Somehow my lvl 100 naked ninja one hits my 2nd rb PM with over 17k hp, yet... he does only 52 damage. WTF. How can i change this damage? Thanks in advance!
Simple Handle Damage for 5165
01/31/2010 - CO2 Private Server - 0 Replies
Sry with my english, Here it is simple method for handle damage for 5165 source, couse i hve trouble with damage, all player can hit by 1. go to Character.cs after TakeAttack method i create new method, like this : public void ExtraDefence(ushort pDef) { pDef = (ushort)(this.Level * 100);//<-----put every value u need if (this.Reborns == 1) { pDef = (ushort)(pDef + ((pDef * 30) / 100));
Is it possible to change damage of critical?
07/15/2008 - Kal Online - 3 Replies
I seen today that someone used a hack and gm said it was a crithacker and its also a knight so any ideas of hack that could have done this? And is there any other good Kal Online hacking site beside this one?



All times are GMT +2. The time now is 12:07.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.