Dragon Souls

02/08/2011 23:15 ßøøm#1
Does anyone know what patch dragon souls had been released?
And do dragon souls have a packet that they require or does the NPC just do all the work and dragon soul are just plain items that do nothing?

Just curious if anyone would like to answer
02/08/2011 23:38 Syst3m_W1z4rd#2
Yes there is a patch release. Might use the search function.

No it doesn't need a packet.
It's normal items and it's handling like other items.

NPC? You do know NPC's have nothing to do with items.
02/09/2011 00:08 ßøøm#3
Quote:
Originally Posted by Syst3m_W1z4rd View Post
Yes there is a patch release. Might use the search function.

No it doesn't need a packet.
It's normal items and it's handling like other items.

NPC? You do know NPC's have nothing to do with items.
And how would i go about searching? I'm not sure what i should search haha

The NPC is what add the souls to the items isn't it?
I've never used the souls before so i don't know that much about them :p
02/09/2011 00:51 Syst3m_W1z4rd#4
You mean the upgrade. It's just a function in your npc dialog. You could technical send the function any places from your source.

About search just click search in the forum.
02/09/2011 01:20 ßøøm#5
Quote:
Originally Posted by Syst3m_W1z4rd View Post
You mean the upgrade. It's just a function in your npc dialog. You could technical send the function any places from your source.

About search just click search in the forum.
Hm thanks dude.
02/09/2011 02:10 pro4never#6
Quote:
Originally Posted by Syst3m_W1z4rd View Post
Yes there is a patch release. Might use the search function.

No it doesn't need a packet.
It's normal items and it's handling like other items.

NPC? You do know NPC's have nothing to do with items.
Umm... their certainly is a separate packet for dragon soul/refinery information.

The dragon souls themselves are obviously just normal items but those don't actually do anything. When you apply them to an item you have the old item, old item stats etc + the new item name, boosted stats and dragon soul information. This is done through the pairing of the normal iteminfo packet (always sent) with an optional paired refinery/dragon info packet which contains any information on refinery upgrades and dragon souls applied to the item.

The packet isn't very difficult. I think I released the refinery version of it, the dragon soul is a bit longer/more complex but holds the same structure to it.
02/09/2011 02:14 Syst3m_W1z4rd#7
Quote:
Originally Posted by pro4never View Post
Umm... their certainly is a separate packet for dragon soul/refinery information.

The dragon souls themselves are obviously just normal items but those don't actually do anything. When you apply them to an item you have the old item, old item stats etc + the new item name, boosted stats and dragon soul information. This is done through the pairing of the normal iteminfo packet (always sent) with an optional paired refinery/dragon info packet which contains any information on refinery upgrades and dragon souls applied to the item.

The packet isn't very difficult. I think I released the refinery version of it, the dragon soul is a bit longer/more complex but holds the same structure to it.
I know, but I assumed he just meant the items it self, not the upgrading system. When peoples say dragonsouls, they don't mean the exactly, but those wack rip off edits :P
02/09/2011 03:00 ßøøm#8
Quote:
Originally Posted by pro4never View Post
Umm... their certainly is a separate packet for dragon soul/refinery information.

The dragon souls themselves are obviously just normal items but those don't actually do anything. When you apply them to an item you have the old item, old item stats etc + the new item name, boosted stats and dragon soul information. This is done through the pairing of the normal iteminfo packet (always sent) with an optional paired refinery/dragon info packet which contains any information on refinery upgrades and dragon souls applied to the item.

The packet isn't very difficult. I think I released the refinery version of it, the dragon soul is a bit longer/more complex but holds the same structure to it.
Thanks for some more information

Quote:
Originally Posted by Syst3m_W1z4rd View Post
I know, but I assumed he just meant the items it self, not the upgrading system. When peoples say dragonsouls, they don't mean the exactly, but those wack rip off edits :P
Oh sorry next time i will make sure you can understand what im asking haha sorry
02/09/2011 03:34 pro4never#9
Quote:
Originally Posted by Syst3m_W1z4rd View Post
I know, but I assumed he just meant the items it self, not the upgrading system. When peoples say dragonsouls, they don't mean the exactly, but those wack rip off edits :P
Ahh I assumed he meant the real system as he asked which path they were introduced in :P

Anyways, best of luck to the threadstarter.
02/09/2011 09:23 -impulse-#10
Quote:
Originally Posted by pro4never View Post
The packet isn't very difficult. I think I released the refinery version of it, the dragon soul is a bit longer/more complex but holds the same structure to it.
Actually, they both use the same packet (which you already knew). The packet is same as the 10017 one. It contains updates.

Code:
using System;

namespace Conquer_Online_Server.Network.GamePackets
{
    public class ItemAdding : Writer, Interfaces.IPacket
    {
        public struct Purification_
        {
            public bool Available;
            public uint ItemUID;
            public uint PurificationItemID;
            public uint PurificationLevel;
            /// <summary>
            /// In minutes.
            /// </summary>
            public uint PurificationDuration;
            public DateTime AddedOn;
        }
        public struct Refinery_
        {
            public bool Available;
            public uint ItemUID;
            public uint EffectID;
            public uint EffectLevel;
            public uint EffectPercent;
            /// <summary>
            /// In minutes.
            /// </summary>
            public uint EffectDuration;
            public DateTime AddedOn;
        }

        public const uint ExtraEffect = 2, PurificationAdding = 6;
        
        byte[] Buffer;
        const byte minBufferSize = 8;
        public ItemAdding(bool Create)
        {
            if (Create)
            {
                Buffer = new byte[minBufferSize + 8];
                WriteUInt16(minBufferSize, 0, Buffer);
                WriteUInt16(2077, 2, Buffer);
            }
        }

        public uint UpdateCount
        {
            get { return BitConverter.ToUInt32(Buffer, 4); }
            set
            {
                byte[] buffer = new byte[minBufferSize + 8 + 28 * value];
                int count = buffer.Length;
                if (count > Buffer.Length)
                    count = Buffer.Length;
                System.Buffer.BlockCopy(Buffer, 0, buffer, 0, count);
                WriteUInt16((ushort)(minBufferSize + 28 * value), 0, buffer);
                Buffer = buffer;
                WriteUInt32(value, 4, Buffer);
            }
        }

        public bool Append(Purification_ purify)
        {
            UpdateCount = UpdateCount + 1;
            ushort offset = (ushort)(8 + (UpdateCount - 1) * 28);
            WriteUInt32(purify.ItemUID, offset, Buffer);
            WriteUInt32(PurificationAdding, offset + 4, Buffer);
            WriteUInt32(purify.PurificationItemID, offset + 8, Buffer);
            WriteUInt32(purify.PurificationLevel, offset + 12, Buffer);
            if (purify.PurificationDuration != 0)
            {
                TimeSpan span1 = new TimeSpan(purify.AddedOn.AddSeconds(purify.PurificationDuration).Ticks);
                TimeSpan span2 = new TimeSpan(DateTime.Now.Ticks);
                int secondsleft = (int)(span1.TotalSeconds - span2.TotalSeconds);
                if (secondsleft <= 0)
                {
                    purify.Available = false;
                    UpdateCount = UpdateCount - 1;
                    return false;
                }
                WriteUInt32((uint)secondsleft, offset + 20, Buffer);
            }
            return true;
        }

        public bool Append(Refinery_ effect)
        {
            UpdateCount = UpdateCount + 1;
            ushort offset = (ushort)(8 + (UpdateCount - 1) * 28);
            WriteUInt32(effect.ItemUID, offset, Buffer);
            WriteUInt32(ExtraEffect, offset + 4, Buffer);
            WriteUInt32(effect.EffectID, offset + 8, Buffer);
            WriteUInt32(effect.EffectLevel, offset + 12, Buffer);
            WriteUInt32(effect.EffectPercent, offset + 16, Buffer);
            if (effect.EffectPercent != 0)
            {
                TimeSpan span1 = new TimeSpan(effect.AddedOn.AddSeconds(effect.EffectPercent).Ticks);
                TimeSpan span2 = new TimeSpan(DateTime.Now.Ticks);
                int secondsleft = (int)(span1.TotalSeconds - span2.TotalSeconds);
                if (secondsleft <= 0)
                {
                    effect.Available = false;
                    UpdateCount -= 1;
                    return false;
                }
                WriteUInt32((uint)secondsleft, offset + 20, Buffer);
            }
            return true;
        }

        public byte[] ToArray()
        {
            return Buffer;
        }

        public void Deserialize(byte[] buffer)
        {
            Buffer = buffer;
        }

        public void Send(Client.GameState client)
        {
            client.Send(Buffer);
        }
    }
}
02/09/2011 12:52 §hift#11
Quote:
Originally Posted by -impulse- View Post
Actually, they both use the same packet (which you already knew). The packet is same as the 10017 one. It contains updates.

Code:
using System;

namespace Conquer_Online_Server.Network.GamePackets
{
    public class ItemAdding : Writer, Interfaces.IPacket
    {
        public struct Purification_
        {
            public bool Available;
            public uint ItemUID;
            public uint PurificationItemID;
            public uint PurificationLevel;
            /// <summary>
            /// In minutes.
            /// </summary>
            public uint PurificationDuration;
            public DateTime AddedOn;
        }
        public struct Refinery_
        {
            public bool Available;
            public uint ItemUID;
            public uint EffectID;
            public uint EffectLevel;
            public uint EffectPercent;
            /// <summary>
            /// In minutes.
            /// </summary>
            public uint EffectDuration;
            public DateTime AddedOn;
        }

        public const uint ExtraEffect = 2, PurificationAdding = 6;
        
        byte[] Buffer;
        const byte minBufferSize = 8;
        public ItemAdding(bool Create)
        {
            if (Create)
            {
                Buffer = new byte[minBufferSize + 8];
                WriteUInt16(minBufferSize, 0, Buffer);
                WriteUInt16(2077, 2, Buffer);
            }
        }

        public uint UpdateCount
        {
            get { return BitConverter.ToUInt32(Buffer, 4); }
            set
            {
                byte[] buffer = new byte[minBufferSize + 8 + 28 * value];
                int count = buffer.Length;
                if (count > Buffer.Length)
                    count = Buffer.Length;
                System.Buffer.BlockCopy(Buffer, 0, buffer, 0, count);
                WriteUInt16((ushort)(minBufferSize + 28 * value), 0, buffer);
                Buffer = buffer;
                WriteUInt32(value, 4, Buffer);
            }
        }

        public bool Append(Purification_ purify)
        {
            UpdateCount = UpdateCount + 1;
            ushort offset = (ushort)(8 + (UpdateCount - 1) * 28);
            WriteUInt32(purify.ItemUID, offset, Buffer);
            WriteUInt32(PurificationAdding, offset + 4, Buffer);
            WriteUInt32(purify.PurificationItemID, offset + 8, Buffer);
            WriteUInt32(purify.PurificationLevel, offset + 12, Buffer);
            if (purify.PurificationDuration != 0)
            {
                TimeSpan span1 = new TimeSpan(purify.AddedOn.AddSeconds(purify.PurificationDuration).Ticks);
                TimeSpan span2 = new TimeSpan(DateTime.Now.Ticks);
                int secondsleft = (int)(span1.TotalSeconds - span2.TotalSeconds);
                if (secondsleft <= 0)
                {
                    purify.Available = false;
                    UpdateCount = UpdateCount - 1;
                    return false;
                }
                WriteUInt32((uint)secondsleft, offset + 20, Buffer);
            }
            return true;
        }

        public bool Append(Refinery_ effect)
        {
            UpdateCount = UpdateCount + 1;
            ushort offset = (ushort)(8 + (UpdateCount - 1) * 28);
            WriteUInt32(effect.ItemUID, offset, Buffer);
            WriteUInt32(ExtraEffect, offset + 4, Buffer);
            WriteUInt32(effect.EffectID, offset + 8, Buffer);
            WriteUInt32(effect.EffectLevel, offset + 12, Buffer);
            WriteUInt32(effect.EffectPercent, offset + 16, Buffer);
            if (effect.EffectPercent != 0)
            {
                TimeSpan span1 = new TimeSpan(effect.AddedOn.AddSeconds(effect.EffectPercent).Ticks);
                TimeSpan span2 = new TimeSpan(DateTime.Now.Ticks);
                int secondsleft = (int)(span1.TotalSeconds - span2.TotalSeconds);
                if (secondsleft <= 0)
                {
                    effect.Available = false;
                    UpdateCount -= 1;
                    return false;
                }
                WriteUInt32((uint)secondsleft, offset + 20, Buffer);
            }
            return true;
        }

        public byte[] ToArray()
        {
            return Buffer;
        }

        public void Deserialize(byte[] buffer)
        {
            Buffer = buffer;
        }

        public void Send(Client.GameState client)
        {
            client.Send(Buffer);
        }
    }
}
Thanks man
02/09/2011 13:02 ßøøm#12
Quote:
Originally Posted by -impulse- View Post
Actually, they both use the same packet (which you already knew). The packet is same as the 10017 one. It contains updates.

Code:
using System;

namespace Conquer_Online_Server.Network.GamePackets
{
    public class ItemAdding : Writer, Interfaces.IPacket
    {
        public struct Purification_
        {
            public bool Available;
            public uint ItemUID;
            public uint PurificationItemID;
            public uint PurificationLevel;
            /// <summary>
            /// In minutes.
            /// </summary>
            public uint PurificationDuration;
            public DateTime AddedOn;
        }
        public struct Refinery_
        {
            public bool Available;
            public uint ItemUID;
            public uint EffectID;
            public uint EffectLevel;
            public uint EffectPercent;
            /// <summary>
            /// In minutes.
            /// </summary>
            public uint EffectDuration;
            public DateTime AddedOn;
        }

        public const uint ExtraEffect = 2, PurificationAdding = 6;
        
        byte[] Buffer;
        const byte minBufferSize = 8;
        public ItemAdding(bool Create)
        {
            if (Create)
            {
                Buffer = new byte[minBufferSize + 8];
                WriteUInt16(minBufferSize, 0, Buffer);
                WriteUInt16(2077, 2, Buffer);
            }
        }

        public uint UpdateCount
        {
            get { return BitConverter.ToUInt32(Buffer, 4); }
            set
            {
                byte[] buffer = new byte[minBufferSize + 8 + 28 * value];
                int count = buffer.Length;
                if (count > Buffer.Length)
                    count = Buffer.Length;
                System.Buffer.BlockCopy(Buffer, 0, buffer, 0, count);
                WriteUInt16((ushort)(minBufferSize + 28 * value), 0, buffer);
                Buffer = buffer;
                WriteUInt32(value, 4, Buffer);
            }
        }

        public bool Append(Purification_ purify)
        {
            UpdateCount = UpdateCount + 1;
            ushort offset = (ushort)(8 + (UpdateCount - 1) * 28);
            WriteUInt32(purify.ItemUID, offset, Buffer);
            WriteUInt32(PurificationAdding, offset + 4, Buffer);
            WriteUInt32(purify.PurificationItemID, offset + 8, Buffer);
            WriteUInt32(purify.PurificationLevel, offset + 12, Buffer);
            if (purify.PurificationDuration != 0)
            {
                TimeSpan span1 = new TimeSpan(purify.AddedOn.AddSeconds(purify.PurificationDuration).Ticks);
                TimeSpan span2 = new TimeSpan(DateTime.Now.Ticks);
                int secondsleft = (int)(span1.TotalSeconds - span2.TotalSeconds);
                if (secondsleft <= 0)
                {
                    purify.Available = false;
                    UpdateCount = UpdateCount - 1;
                    return false;
                }
                WriteUInt32((uint)secondsleft, offset + 20, Buffer);
            }
            return true;
        }

        public bool Append(Refinery_ effect)
        {
            UpdateCount = UpdateCount + 1;
            ushort offset = (ushort)(8 + (UpdateCount - 1) * 28);
            WriteUInt32(effect.ItemUID, offset, Buffer);
            WriteUInt32(ExtraEffect, offset + 4, Buffer);
            WriteUInt32(effect.EffectID, offset + 8, Buffer);
            WriteUInt32(effect.EffectLevel, offset + 12, Buffer);
            WriteUInt32(effect.EffectPercent, offset + 16, Buffer);
            if (effect.EffectPercent != 0)
            {
                TimeSpan span1 = new TimeSpan(effect.AddedOn.AddSeconds(effect.EffectPercent).Ticks);
                TimeSpan span2 = new TimeSpan(DateTime.Now.Ticks);
                int secondsleft = (int)(span1.TotalSeconds - span2.TotalSeconds);
                if (secondsleft <= 0)
                {
                    effect.Available = false;
                    UpdateCount -= 1;
                    return false;
                }
                WriteUInt32((uint)secondsleft, offset + 20, Buffer);
            }
            return true;
        }

        public byte[] ToArray()
        {
            return Buffer;
        }

        public void Deserialize(byte[] buffer)
        {
            Buffer = buffer;
        }

        public void Send(Client.GameState client)
        {
            client.Send(Buffer);
        }
    }
}
Thank you and um does any one know what patch the dragon souls released?
I did try and search but i got nothing i also tryed going through patches details on co website but couldn't find a thing any one mind lending me a hand :p
02/09/2011 15:55 chickmagnet#13
Quote:
Originally Posted by ßøøm View Post
Thank you and um does any one know what patch the dragon souls released?
I did try and search but i got nothing i also tryed going through patches details on co website but couldn't find a thing any one mind lending me a hand :p
5180 if im not mistakin
02/09/2011 15:59 Kiyono#14
Quote:
Originally Posted by chickmagnet View Post
5180 if im not mistakin
Pretty sure it was 5250 and not 5180.
02/09/2011 16:06 chickmagnet#15
Quote:
Originally Posted by Kiyono View Post
Pretty sure it was 5250 and not 5180.
hehe thx i wasnt 2 sure on the 5180 thx now i kno