Man I feel sorry for u, because u aren't the creator.Quote:
This ie my source
If you really made it, explain this please:
Code:
public unsafe class COPacket
{
byte[] PData;
public ushort PType;
int Count;
public byte* Ptr
{
get
{
fixed (byte* p = PData)
return p;
}
}
public byte[] Get
{
get
{
return PData;
}
}
public ushort InLength
{
get
{
return *((ushort*)(Ptr));
}
}
public ushort Type
{
get
{
return *((ushort*)(Ptr + 2));
}
}
public unsafe COPacket(byte[] Data)
{
Count = 0;
PData = Data;
}
public unsafe void WriteByte(byte val)
{
*((byte*)(Ptr + Count)) = val;
Count++;
}
public unsafe void WriteInt16(ushort val)
{
*((ushort*)(Ptr + Count)) = val;
Count += 2;
}
public unsafe void WriteInt32(uint val)
{
*((uint*)(Ptr + Count)) = val;
Count += 4;
}
public unsafe void WriteInt64(ulong val)
{
*((ulong*)(Ptr + Count)) = val;
Count += 8;
}
public unsafe void WriteString(string val)
{
for (int i = 0; i < val.Length; i++)
{
try
{
*((byte*)(Ptr + Count)) = Convert.ToByte(val[i]);
}
catch { }//For weird letters that cannot be converted into byte...
Count++;
}
}
public unsafe void WriteString(string val, int MaxLength)
{
if (val.Length <= MaxLength)
for (int i = 0; i < val.Length; i++)
{
*((byte*)(Ptr + Count)) = Convert.ToByte(val[i]);
Count++;
}
else
for (int i = 0; i < MaxLength; i++)
{
*((byte*)(Ptr + Count)) = Convert.ToByte(val[i]);
Count++;
}
}
public unsafe void WriteBytes(byte[] val)
{
for (int i = 0; i < val.Length; i++)
{
*((byte*)(Ptr + Count)) = val[i];
Count++;
}
}
public void Move(int count)
{
Count += count;
}
}