Fixar refinery in LordsRoad 100% byFelipeXP

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

Fixar refinery in LordsRoad 100% byFelipeXP

Mensagem por FelipeXP em Qua Ago 31, 2016 10:46 pm

Download refinery[LordsRoad]


ItemAdding.cs
Código:
using System;

namespace FelipeXP.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;
        public const uint PermanentRefinery = 3, StabilizationEffectRefined = 4, PurificationEffect = 5, ExpireTime = 7, StabilizationEffect = 9, Warehause = 10;


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

        public uint Type
        {
            get { return BitConverter.ToUInt32(Buffer, 12); }
            set { Write(value, 12, Buffer); }
        }

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

        public bool Append(Purification_ purify)
        {
            UpdateCount = UpdateCount + 1;
            ushort offset = (ushort)(8 + (UpdateCount - 1) * 32);
            Write(purify.ItemUID, offset, Buffer);
            Write(PurificationAdding, offset + 4, Buffer);
            Write(purify.PurificationItemID, offset + 8, Buffer);
            Write(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;
                }
                Write((uint)secondsleft, offset + 24, Buffer);
            }
            return true;
        }

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

        public bool Append2(Purification_ purify)
        {
            this.UpdateCount++;
            ushort offset = (ushort)(8 + ((this.UpdateCount - 1) * 32));
            Writer.Write(purify.ItemUID, offset, this.Buffer);
            Writer.Write(Type, offset + 4, this.Buffer);
            Writer.Write(purify.PurificationItemID, offset + 8, this.Buffer);
            Writer.Write(purify.PurificationLevel, offset + 12, this.Buffer);
            if (purify.PurificationDuration != 0)
            {
                TimeSpan span = new TimeSpan(purify.AddedOn.AddSeconds((double)purify.PurificationDuration).Ticks);
                TimeSpan span2 = new TimeSpan(DateTime.Now.Ticks);
                int num2 = (int)(span.TotalSeconds - span2.TotalSeconds);
                if (num2 <= 0)
                {
                    purify.Available = false;
                    this.UpdateCount--;
                    return false;
                }
                Writer.Write((uint)num2, offset + 24, this.Buffer);
            }
            return true;
        }
        public bool Append2(Refinery_ effect)
        {
            this.UpdateCount++;
            ushort offset = (ushort)(8 + ((this.UpdateCount - 1) * 32));
            Writer.Write(effect.ItemUID, offset, this.Buffer);
            Writer.Write(Type, offset + 4, this.Buffer);
            Writer.Write(effect.EffectID, offset + 8, this.Buffer);
            Writer.Write(effect.EffectLevel, offset + 12, this.Buffer);
            Writer.Write(effect.EffectPercent, offset + 0x10, this.Buffer);
            if (effect.EffectPercent != 0)
            {
                TimeSpan span = new TimeSpan(effect.AddedOn.AddSeconds((double)effect.EffectDuration).Ticks);
                TimeSpan span2 = new TimeSpan(DateTime.Now.Ticks);
                int num2 = (int)(span.TotalSeconds - span2.TotalSeconds);
                if (num2 <= 0 && effect.EffectDuration != 0)
                {
                    effect.Available = false;
                    this.UpdateCount--;
                    return false;
                }
                Writer.Write((uint)num2, offset + 24, this.Buffer);
            }
            return true;
        }

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

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

        public void Send(Client.GameClient client)
        {
            client.Send(Buffer);
        }
    }
}

ItemSoul.cs

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FelipeXP.Network.GamePackets
{
    public class Game_ItemSoul : Interfaces.IPacket
    {
        private Byte[] mData;
        public Game_ItemSoul()
        {
            this.mData = new Byte[40 + 8]; Writer.Write((UInt16)(this.mData.Length - 8), 0, mData);
            Writer.Write((UInt16)2077, 2, mData);
        }
        public UInt32 Type
        {
            get
            {
                return BitConverter.ToUInt32(mData, 4);
            }
            set
            {
                Writer.Write(value, 4, mData);
            }
        }
        public UInt32 Identifier
        {
            get
            {
                return BitConverter.ToUInt32(mData, 8);
            }
            set
            {
                Writer.Write(value, 8, mData);
            }
        }
        public Types Mode
        {
            get
            {
                return (Types)mData[12];
            }
            set
            {
                mData[12] = (Byte)value;
            }
        }
        public UInt32 ID
        {
            get
            {
                return BitConverter.ToUInt32(mData, 16);
            }
            set
            {
                Writer.Write(value, 16, mData);
            }
        }
        public UInt32 Level
        {
            get
            {
                return BitConverter.ToUInt32(mData, 20);
            }
            set
            {
                Writer.Write(value, 20, mData);
            }
        }
        public UInt32 Percent
        {
            get
            {
                return BitConverter.ToUInt32(mData, 24);
            }
            set
            {
                Writer.Write(value, 24, mData);
            }
        }
        public UInt32 Time
        {
            get
            {
                return BitConverter.ToUInt32(mData, 28);
            }
            set
            {
                Writer.Write(value, 32, mData);
            }
        }
        public void Expired(Client.GameClient c)
        {
            mData[12] = 7; c.Send(this);
        }
        public Byte[] Serialize
        {
            get
            {
                return this.mData;
            }
        }
        public void Deserialize(Byte[] d)
        {
            this.mData = new Byte[d.Length]; d.CopyTo(this.mData, 0);
        }
        public enum Types :
            byte
        {
            Refine = 0, DragonSoul = 5
        }
        public byte[] ToArray()
        {
            return mData;
        }
        public void Send
            (Client.GameClient client)
        {
            client.Send(mData);
        }
    }
}

FelipeXP
Administrador
Administrador

Mensagens : 258
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: Fixar refinery in LordsRoad 100% byFelipeXP

Mensagem por nagnata em Ter Out 04, 2016 1:02 am

Felipe, fiz exatamente isso, apenas as refinarias voltaram a funcionar, mais a soul não funcionou...

nagnata
Membro
Membro

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

Ver perfil do usuário

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