Fixar refinery in LordsRoad 100% byFelipeXP
2 participantes
Página 1 de 1
Fixar refinery in LordsRoad 100% byFelipeXP
Download refinery[LordsRoad]
ItemAdding.cs
ItemSoul.cs
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);
}
}
}
Re: Fixar refinery in LordsRoad 100% byFelipeXP
Felipe, fiz exatamente isso, apenas as refinarias voltaram a funcionar, mais a soul não funcionou...
nagnata- Membro
- Mensagens : 32
Data de inscrição : 28/09/2016
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|