So look what I got here, maybe you will spot a problem:
SpawnEntity:-
Code:
public byte[] SpawnEntity(Character Player)
{
string[] equip;
long HeadId = 0;
long ArmorId = 0;
long RightHandId = 0;
long LeftHandId = 0;
long GarmentId = 0;
if (Player.Equips[1] != null)
{
equip = Player.Equips[1].Split('-');
HeadId = Convert.ToInt64(equip[0]);
}
if (Player.Equips[3] != null)
{
equip = Player.Equips[3].Split('-');
ArmorId = Convert.ToInt64(equip[0]);
}
if (Player.Equips[4] != null)
{
equip = Player.Equips[4].Split('-');
RightHandId = Convert.ToInt64(equip[0]);
}
if (Player.Equips[5] != null)
{
equip = Player.Equips[5].Split('-');
LeftHandId = Convert.ToInt64(equip[0]);
}
if (Player.Equips[9] != null)
{
equip = Player.Equips[9].Split('-');
GarmentId = Convert.ToInt64(equip[0]);
}
long ToArmor;
if (Player.Equips[9] != null)
ToArmor = GarmentId;
else
ToArmor = ArmorId;
uint Model;
if (Player.Alive)
Model = uint.Parse(Convert.ToString(Player.Avatar) + Convert.ToString(Player.Model));
else
{
if (Player.Model == 1003 || Player.Model == 1004)
Model = uint.Parse(Convert.ToString(Player.Avatar) + 1098.ToString());
else
Model = uint.Parse(Convert.ToString(Player.Avatar) + 1099.ToString());
}
ushort PacketType = 0x3F6;
byte[] Packet = new byte[138 + Convert.ToByte(Player.Name)];
fixed (byte* p = Packet)
{
*((ushort*)p) = (ushort)Packet.Length;
*((ushort*)(p + 2)) = (ushort)PacketType;
*((uint*)(p + 4)) = (uint)Model;
*((uint*)(p + 8)) = (uint)Player.UID;
*((ushort*)(p + 12)) = (ushort)Player.GuildID;
*(p + 14) = Player.GuildPosition;
*((ulong*)(p + 16)) = (ulong)Player.GetStat();
if (Player.Alive)
{
*((uint*)(p + 24)) = (uint)HeadId;
*((uint*)(p + 28)) = (uint)ToArmor;
*((uint*)(p + 32)) = (uint)GarmentId;
*((uint*)(p + 36)) = (uint)LeftHandId;
*((uint*)(p + 40)) = (uint)RightHandId;
}
*((uint*)(p + 44)) = (uint)Player.SteedID;
*((ushort*)(p + 56)) = (ushort)Player.Hair;
*((ushort*)(p + 58)) = (ushort)Player.LocX;
*((ushort*)(p + 60)) = (ushort)Player.LocY;
*(p + 62) = Player.Direction;
*(p + 63) = Player.Action;
*(p + 68) = Player.Reborn;
*(p + 69) = Player.Level;
*(p + 88) = Player.Nobility;
*((ushort*)(p + 92)) = (ushort)Player.ArmorColor;
*((ushort*)(p + 94)) = (ushort)Player.LeftHandColor;
*((ushort*)(p + 96)) = (ushort)Player.HeadgearColor;
*((uint*)(p + 98)) = (uint)Player.QuizPoints;
*((ushort*)(p + 102)) = (ushort)Player.Linage;
*((uint*)(p + 108)) = (uint)Player.LinagePoints;
*(p + 136) = 1;
*(p + 137) = (byte)Player.Name.Length;
for (int i = 0; i < Player.Name.Length; i++)
{
*(p + 138 + i) = Convert.ToByte(Player.Name[i]);
}
}
return Packet;
}
SpawnEntity Packet Layout:-
Code:
0 ushort 138 + Character_Name 2 ushort 10014 4 uint Character_ModelID 8 uint Character_ID 12 ushort Character_GuildID 14 ushort Character_GuildRank 16 ulong Character_Status 24 uint Character_Helm_ID 28 uint Character_Armour_ID 32 uint Character_Garment_ID 36 uint Character_LeftHand_ID 40 uint Character_RightHand_ID 44 uint Character_Steed_ID 56 ushort Character_HairStyle 58 ushort Character_CordX 60 ushort Character_CordY 62 byte Character_Direction 63 byte Character_Action 68 byte Character_Reborn 69 byte Character_Level 88 byte Character_Nobility 92 ushort Armour_Colour 94 ushort leftHand_Colour 96 ushort HeadGear_Colour 98 uint Character_QuizPoints 102 ushort Linage 108 uint Linage_Points 136 byte String_Count 137 byte Character_Name_Length 138 string Character_Name
CharInfo:-
Code:
public byte[] CharacterInfo(Character Charr)
{
ushort PacketType = 0x3ee;
string Spouse = "None";
short Length = (short)(75 + Charr.Name.Length);
byte[] Packet = new byte[Length];
long Model = Convert.ToInt64(Convert.ToString(Charr.Avatar) + Convert.ToString(Charr.Model));
fixed (byte* p = Packet)
{
*((ushort*)p) = (ushort)Packet.Length;
*((ushort*)(p + 2)) = (ushort)PacketType;
*((uint*)(p + 4)) = (uint)Charr.UID;
*((uint*)(p + 8)) = (uint)Model;
*((ushort*)(p + 12)) = (ushort)Charr.Hair;
*((uint*)(p + 14)) = (uint)Charr.Silvers;
*((uint*)(p + 18)) = (uint)Charr.CPs;
*((uint*)(p + 22)) = (uint)Charr.Exp;
//*((ushort*)(p + 42)) = (ushort)5130;
*((ushort*)(p + 50)) = (ushort)Charr.Str;
*((ushort*)(p + 52)) = (ushort)Charr.Agi;
*((ushort*)(p + 54)) = (ushort)Charr.Vit;
*((ushort*)(p + 56)) = (ushort)Charr.Spi;
*((ushort*)(p + 58)) = (ushort)Charr.StatP;
*((ushort*)(p + 60)) = (ushort)Charr.CurHP;
*((ushort*)(p + 62)) = (ushort)Charr.MaxMana();
*((ushort*)(p + 64)) = (ushort)Charr.PKPoints;
*(p + 66) = Charr.Level;
*(p + 67) = Charr.Job;
*(p + 69) = Charr.Reborn;
*(p + 70) = 1;
*(p + 71) = 2;
*(p + 72) = (byte)Charr.Name.Length;
for (int i = 0; i < Charr.Name.Length; i++)
{
*(p + 73 + i) = Convert.ToByte(Charr.Name[i]);
}
*(p + 74 + Charr.Name.Length) = (byte)Spouse.Length;
for (int i = 0; i < Spouse.Length; i++)
{
*(p + Charr.Name.Length + 75 + i) = Convert.ToByte(Spouse[i]);
}
}
return Packet;
}
CharInfo Packet Layout:-
Code:
0 ushort 75 + TotalStringLength 2 ushort 1006 4 uint Character_ID 8 uint Character_Model 12 ushort Character_HairStyle 14 uint Character_Gold 18 uint Character_CPoints 22 ulong Character_Experience 50 ushort Character_Strength 52 ushort Character_Dexterity 54 ushort Character_Vitality 56 ushort Character_Spirit 58 ushort Character_StatPoints 60 ushort Character_HP 62 ushort Character_MP 64 ushort Character_PKPoints 66 byte Character_Level 67 byte Character_Class 69 byte Character_Reborn 70 bool Character_Name_Display 71 byte String_Count 72 byte Character_Name_Length 73 string Character_Name 74 + Pos byte Spouse_Name_Length 75 + Pos string Spouse_Name
Help would be greatly appreciated.
Thanks






