예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
 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;
 }