Originally Posted by .Beatz
Right, I am having quite a few problems and wanna see if anyone can see whats wrong in this code. I can view my own name in my client but I cant view other peoples names :/ and vice versa.
Also GM and PM are not showing up... I am not too fussed about that atm though
Spawn entity void
Code:
public static byte[] SpawnEntity(Character C)
{
byte[] Packet = new byte[8 + 160 + (C.Name + C.Client.AuthInfo.Status).Length + 4];
Writer.UInt16(Convert.ToUInt16(Packet.Length - 8), 0, Packet);
Writer.UInt16(10014, 2, Packet);
Writer.UInt32(C.Mesh, 4, Packet);
Writer.UInt32(C.EntityID, 8, Packet);
if (C.Guild != null)
{
Writer.UInt16(C.Guild.ID, 3, Packet);
Writer.Byte(Convert.ToByte(C.GuildRank), 15, Packet);
}
Writer.UInt64(Convert.ToUInt64(C.StatEff.Value), 24, Packet);
if (C.Alive)
{
Writer.UInt32(C.Equipment.HeadGear.ID, 30, Packet);
Writer.UInt32(C.Equipment.Garment.ID, 34, Packet);
Writer.UInt32(C.Equipment.Armor.ID, 38, Packet);
Writer.UInt32(C.Equipment.LeftHand.ID, 42, Packet);
Writer.UInt32(C.Equipment.RightHand.ID, 46, Packet);
Writer.UInt32(C.Equipment.Steed.ID, 50, Packet);
Writer.UInt16(C.Hair, 62, Packet);
}
// Offset:4 Value: Mesh (uint) //Offset:8 Value: UID (uint)
//Offset:24 Value: StatusFlag (ulong)
//Offset:58 Value: HitPoints (ushort)
//Offset:62 Value: HairStyle (ushort)
//Offet:64 Value: X (ushort)
//Offet:66 Value: Y (ushort)
//Offset:68 Vaue: Angle (byte)
//Offset:69 Value: Action (byte)
//Offset:75 Value: Level (byte)
//Offset:104 Value: QuizPoints (uint)
//Offset:156 Value: String.Length
//Offset:157 Value: String
//Writer.UInt32(12, 48, Packet);
//Writer.UInt32(0, 52, Packet);
Writer.UInt16(C.Loc.X, 64, Packet);
Writer.UInt16(C.Loc.Y, 66, Packet);
Writer.Byte(C.Direction, 68, Packet);
Writer.Byte(C.Action, 69, Packet);
Writer.Byte(C.Reborns, 74, Packet);
Writer.UInt16(C.Level, 75, Packet);
Writer.Byte(0, 71, Packet);
Writer.UInt32(Convert.ToUInt32(C.Nobility.Rank), 88, Packet);
Writer.UInt16(Convert.ToUInt16(C.Equipment.Armor.Color), 99, Packet);
Writer.UInt16(Convert.ToUInt16(C.Equipment.LeftHand.Color), 101, Packet);
Writer.UInt16(Convert.ToUInt16(C.Equipment.HeadGear.Color), 103, Packet);
Writer.UInt32(C.UniversityPoints, 98, Packet);
Writer.UInt32(C.UniversityPoints, 104, Packet);
Writer.UInt16(C.Equipment.Steed.Plus, 109, Packet);
Writer.UInt32(C.Equipment.Steed.TalismanProgress, 115, Packet);
Writer.Byte(1, 136, Packet);
Writer.Byte(Convert.ToByte(C.Name.Length + C.Client.AuthInfo.Status.Length), 156, Packet);
Writer.String(C.Name + C.Client.AuthInfo.Status, 157, Packet);
return Packet;
}
Spawn Viewed
Code:
public static COPacket SpawnViewed(Character C, byte Type)
{
byte[] Packet = new byte[8 + 160 + (C.Name + C.Client.AuthInfo.Status).Length + 4];
COPacket P = new COPacket(Packet);
P.WriteInt16((ushort)(Packet.Length - 8));
P.WriteInt16((ushort)10014);
P.WriteInt32(C.Mesh);
P.WriteInt32(C.EntityID);
if (C.Guild != null)
{
P.WriteInt16(C.Guild.ID);
P.Move(1);
P.WriteByte((byte)C.GuildRank);
}
else
P.Move(4);
P.WriteInt64((ulong)C.StatEff.Value);
if (C.Alive)
{
P.WriteInt32(C.Equipment.HeadGear.ID);
P.WriteInt32(C.Equipment.Garment.ID);
P.WriteInt32(C.Equipment.Armor.ID);
P.WriteInt32(C.Equipment.LeftHand.ID);
P.WriteInt32(C.Equipment.RightHand.ID);
P.WriteInt32(C.Equipment.Steed.ID);
}
else P.Move(24);
P.WriteInt32(12);
P.WriteInt16(0);
P.WriteInt16(0);
if (C.Alive)
P.WriteInt16(C.Hair);
else P.Move(2);
P.WriteInt16(C.Loc.X);
P.WriteInt16(C.Loc.Y);
P.WriteByte(C.Direction);
P.WriteByte(C.Action);
P.Move(4);
P.WriteByte(C.Reborns);
P.WriteInt16(C.Level);
P.WriteByte(Type);//type 0 = screen / 1 = window
P.Move(16);
P.WriteInt32((byte)C.Nobility.Rank);
P.WriteInt16((ushort)C.Equipment.Armor.Color);
P.WriteInt16((ushort)C.Equipment.LeftHand.Color);
P.WriteInt16((ushort)C.Equipment.HeadGear.Color);
P.WriteInt32(C.UniversityPoints);
P.WriteInt16(C.Equipment.Steed.Plus);
P.WriteInt32(0);
P.WriteInt32(C.Equipment.Steed.TalismanProgress);
P.Move(24);
P.WriteByte(1);
P.WriteByte((byte)(C.Name + C.Client.AuthInfo.Status).Length);
P.WriteString((C.Name + C.Client.AuthInfo.Status));
return P;
}
Hero Information.cs
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MayaConquer_v2.GameSystem;
namespace MayaConquer_v2.Packets
{
public class CharacterInfo : Writer, Interfaces.IPacket
{
GameClient client;
public CharacterInfo(GameClient _client)
{
client = _client;
}
public void Deserialize(byte[] buffer)
{
throw new NotImplementedException();
}
public byte[] ToArray()
{
byte[] Packet = new byte[160 + (client.Char.Spouse.Length) + (client.Char.Name + client.Char.Client.AuthInfo.Status).Length + 4];
UInt16((ushort)(Packet.Length - 8), 0, Packet);
UInt16(0x3ee, 2, Packet);
UInt32(client.Char.EntityID, 4, Packet);
UInt32(client.Char.Mesh, 8, Packet);
UInt16(client.Char.Hair, 12, Packet);
UInt32(client.Char.Silvers, 14, Packet);
UInt32(client.Char.CPs, 18, Packet);
UInt64(client.Char.Experience, 22, Packet);
UInt16(client.Char.Str, 50, Packet);
UInt16(client.Char.Agi, 52, Packet);
UInt16(client.Char.Vit, 54, Packet);
UInt16(client.Char.Spi, 56, Packet);
UInt16(client.Char.StatPoints, 58, Packet);
UInt16((ushort)client.Char.CurHP, 60, Packet);
UInt16(client.Char.CurMP, 62, Packet);
UInt16(client.Char.PKPoints, 64, Packet);
Packet[66] = client.Char.Level;
Packet[67] = client.Char.Job;
Packet[69] = client.Char.Reborns;
Packet[70] = 1;
UInt32(client.Char.UniversityPoints, 71, Packet);
Packet[81] = 1;
Packet[89] = 2;
WriteStringWithLength(client.Char.Name, 90, Packet);
WriteStringWithLength(client.Char.Spouse, 91 + Packet[90], Packet);
return Packet;
}
public void Send(GameClient client)
{
client.Send(ToArray());
}
}
}
I have only just started learning about packets and offsets so even if you point me in the right direction would be alot of help.
anymore info you need just ask :)
Thanks in advance
|