internal override PacketWriter GetWriter() { PacketWriter writer = new PacketWriter((ushort)(1 + 103)); writer.Write(PacketID); writer.Write(pattern1); writer.Write(pattern2); writer.Write(pattern3); writer.WriteStringFixed(CharName, 30); writer.Write(unknown0); writer.Write((int)ClientFlags); writer.Write(unknown1); writer.Write(LoginCount); writer.Write((byte)Profession); writer.Skip(15); //unknown2[15]; writer.Write(RaceAndGender.ToByte()); writer.Write(Stats.Strength); writer.Write(Stats.Dexterity); writer.Write(Stats.Intelligence); writer.Write(StartSkills.Length > 0 ? (byte)StartSkills[0].Skill : (byte)0); writer.Write(StartSkills.Length > 0 ? (byte)StartSkills[0].Value : (byte)0); writer.Write(StartSkills.Length > 1 ? (byte)StartSkills[1].Skill : (byte)0); writer.Write(StartSkills.Length > 1 ? (byte)StartSkills[1].Value : (byte)0); writer.Write(StartSkills.Length > 2 ? (byte)StartSkills[2].Skill : (byte)0); writer.Write(StartSkills.Length > 2 ? (byte)StartSkills[2].Value : (byte)0); writer.Write((ushort)SkinColor); writer.Write((ushort)HairStyle); writer.Write((ushort)HairColor); writer.Write((ushort)FacialHairStyle); writer.Write((ushort)FacialHairColor); writer.Write(StartLocationIndex); writer.Write(unknown3); writer.Write(CharSlotNum); byte[] addressbytes = ClientIP.GetAddressBytes(); writer.Write(addressbytes[0]); writer.Write(addressbytes[1]); writer.Write(addressbytes[2]); writer.Write(addressbytes[3]); writer.Write((ushort)ShirtColor); writer.Write((ushort)PantsColor); return(writer); }
public void CreateCharacterGetBytesTest() { ClientVersion version = ClientVersion.vMAX; SkillValuePair[] skills = new SkillValuePair[] { new SkillValuePair() { Skill = (Skill)25, Value = 50 }, new SkillValuePair() { Skill = (Skill)26, Value = 50 }, new SkillValuePair() { Skill = (Skill)0, Value = 0 } }; CharStats stats = new CharStats() { Strength = 50, Dexterity = 24, Intelligence = 1 }; RaceAndGender raceandgender = new RaceAndGender(version, RaceAndGender.RaceType.Human, RaceAndGender.GenderType.Female); Hue pantscolor = (Hue)999; BeardStyle beardstyle = (BeardStyle)33; CreateCharacter target = new CreateCharacter(version, "David", ClientFlag.LBR, (Profession)1, raceandgender, stats, skills, 0, 0, 0, (BeardStyle)33, 0, 0, 0, IPAddress.None, 0, pantscolor); int expectedPacketLen = 104; PacketWriter packet = target.GetWriter(); Assert.AreEqual(expectedPacketLen, packet.Length); Assert.AreEqual(skills[2].Skill, target.StartSkills[2].Skill); Assert.AreEqual(pantscolor, target.PantsColor); Assert.AreEqual(beardstyle, target.FacialHairStyle); }
public CreateCharacter(ClientVersion version, string charname, ClientFlag clientflags, Profession profession, RaceAndGender raceandgender, CharStats stats, SkillValuePair[] startSkills, Hue skincolor, HairStyle hair, Hue haircolor, BeardStyle beard, Hue beardcolor, ushort locationindex, ushort charslotnum, IPAddress clientip, Hue shirtcolor, Hue pantscolor) : base(version) { CharName = charname; ClientFlags = clientflags; LoginCount = 0; // ? Profession = profession; RaceAndGender = raceandgender; Stats = stats; StartSkills = startSkills; SkinColor = skincolor; HairStyle = hair; HairColor = haircolor; FacialHairStyle = beard; FacialHairColor = beardcolor; StartLocationIndex = locationindex; CharSlotNum = charslotnum; ClientIP = clientip; ShirtColor = shirtcolor; PantsColor = pantscolor; }