예제 #1
0
        public void OnNewPlayer(GameClient client, JoinBNetGameMessage message)
        {           
            client.BnetClient = GameManager.AvailableGames[(ulong)message.GameId].Clients.FirstOrDefault();
            
            if (client.BnetClient == null)
            {
                Logger.Warn("Couldn't find bnet client for joined client/player!");
                return;
            }                

            client.BnetClient.InGameClient = client;
            
            var player = new Player(client, this.Universe, client.BnetClient.CurrentToon);
            client.Player = player;
            this.Players.Add(player);

            player.Greet(message);            
        }
예제 #2
0
        public void OnNewPlayer(GameClient client, JoinBNetGameMessage message)
        {
            client.BnetClient = GameManager.AvailableGames[(ulong)message.GameId].Clients.FirstOrDefault();

            if (client.BnetClient == null)
            {
                Logger.Warn("Couldn't find bnet client for joined client/player!");
                return;
            }

            client.BnetClient.InGameClient = client;

            var player = new Player(client, this.Universe, client.BnetClient.CurrentToon);

            client.Player = player;
            this.Players.Add(player);

            player.Greet(message);
        }
예제 #3
0
        public void OnNewPlayer(GameClient client, JoinBNetGameMessage message)
        {           
            // a hackish way to get client.BnetClient in context -- pretends games has only one client in. when we're done with implementing bnet completely, will get this sorted out. /raist
            client.BnetClient = GameManager.AvailableGames[(ulong)message.GameId].Clients.FirstOrDefault();
            
            if (client.BnetClient == null)
            {
                Logger.Warn("Couldn't find bnet client for joined client/player!");
                return;
            }                

            client.BnetClient.InGameClient = client;
            
            var player = new Player(client, this.Universe, client.BnetClient.CurrentToon);
            client.Player = player;
            this.Players.Add(player);

            player.Greet(message);            
        }
예제 #4
0
        private void OnJoinGame(GameClient client, JoinBNetGameMessage message)
        {
            var game = GameManager.GetGameById(message.GameId);

            if (game == null)
            {
                Logger.Warn("Client provided message.GameId doesnt exists, dropping him..");
                client.Connection.Disconnect();
                return;
            }
            lock (game)
            {
                var toon = ToonManager.GetToonByLowID((ulong)message.ToonEntityId.Low);

                client.Game = game;

                if (toon.GameAccount.LoggedInClient == null || toon.Dead)
                {
                    Logger.Warn("Client doesn't seem to be connected to moonet, dropping him..");
                    client.Connection.Disconnect();
                    return; // if moonet connection is lost, don't allow him to get in.
                }

                // Set references between MooNetClient and GameClient.
                client.BnetClient = toon.GameAccount.LoggedInClient;
                client.BnetClient.InGameClient = client;

                client.Player = new Player(game.StartingWorld, client, toon);
                Logger.Info("Player {0}[PlayerIndex: {1}] connected.", client.Player.Toon.Name, client.Player.PlayerIndex);

                client.SendMessage(new VersionsMessage(message.SNOPackHash));

                client.SendMessage(new ConnectionEstablishedMessage
                {
                    PlayerIndex = client.Player.PlayerIndex,
                    Field1      = 0x4BB91A16,
                    SNOPackHash = message.SNOPackHash,
                });

                client.SendMessage(new GameSetupMessage // should be the current tick for the game /raist.
                {
                    Field0 = game.TickCounter,
                });

                client.SendMessage(new SavePointInfoMessage
                {
                    snoLevelArea = -1,
                });

                client.SendMessage(new HearthPortalInfoMessage
                {
                    snoLevelArea = -1,
                    Field1       = -1,
                });

                // transition player to act so client can load act related data? /raist
                client.SendMessage(new ActTransitionMessage
                {
                    Field0 = 0x00000000,
                    Field1 = true,
                });

                toon.LoginTime = DateTimeExtensions.ToUnixTime(DateTime.UtcNow);
                Logger.Trace("Log in time:" + toon.LoginTime.ToString());

                game.Enter(client.Player);
            }
        }
예제 #5
0
파일: Player.cs 프로젝트: BoyC/d3sharp
        /// <summary>
        /// Greets the player and sends the client initial data it needs to get-ingame.
        /// </summary>
        /// <param name="message"></param>
        public void Greet(JoinBNetGameMessage message)
        {
            Logger.Debug("Greeting player with toon-name: {0} and positioning him to {1}", this.Hero.Properties.Name,
                         Hero.Position);

            // send versions message
            Client.SendMessageNow(new VersionsMessage(message.SNOPackHash));

            // send connection established message.
            Client.SendMessage(new ConnectionEstablishedMessage()
                                   {
                                       Field0 = 0x00000000,
                                       Field1 = 0x4BB91A16,
                                       SNOPackHash = message.SNOPackHash,
                                   });

            // game setup message.
            Client.SendMessage(new GameSetupMessage()
                                   {
                                       Field0 = 0x00000077,
                                   });

            Client.SendMessage(new SavePointInfoMessage()
                                   {
                                       snoLevelArea = -1,
                                   });

            Client.SendMessage(new HearthPortalInfoMessage()
                                   {
                                       snoLevelArea = -1,
                                       Field1 = -1,
                                   });

            // transition player to act so client can load act related data? /raist
            Client.SendMessage(new ActTransitionMessage()
                                   {
                                       Field0 = 0x00000000,
                                       Field1 = true,
                                   });

            //reveal world to the toon
            if (Hero.CurrentWorld != null)
                Hero.CurrentWorld.Reveal(this.Hero);

            // send newplayermessage.
            Client.SendMessage(new NewPlayerMessage()
                                   {
                                       Id = 0x0031,
                                       Field0 = 0x00000000, //Party frame (0x00000000 hide, 0x00000001 show)
                                       Field1 = "", //Owner name?
                                       ToonName = this.Hero.Properties.Name,
                                       Field3 = 0x00000002, //party frame class 
                                       Field4 = 0x00000004, //party frame level
                                       snoActorPortrait = this.Hero.ClassSNO, //party frame portrait
                                       Field6 = 0x00000001,
                                       Field7 = this.Hero.GetStateData(),
                                       Field8 = false, //announce party join
                                       Field9 = 0x00000001,
                                       Field10 = 0x789E00E2,
                                   });            

            Hero.Reveal(this.Hero);

            Client.SendMessage(new ACDCollFlagsMessage()
                                   {
                                       Id = 0x00A6,
                                       Field0 = 0x789E00E2,
                                       Field1 = 0x00000000,
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x01F8],
                                                                   // SkillKit 
                                                                   Int = Client.Player.Hero.SkillKit,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00033C40,
                                                                   Attribute = GameAttribute.Attributes[0x01CC],
                                                                   // Buff_Active 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00007545,
                                                                   Attribute = GameAttribute.Attributes[0x0041],
                                                                   // Skill 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00007545,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000226,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 0.5f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000226,
                                                                   Attribute = GameAttribute.Attributes[0x003C],
                                                                   // Resistance 
                                                                   Int = 0x00000000,
                                                                   Float = 0.5f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00D7],
                                                                   // Immobolize 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00D6],
                                                                   // Untargetable 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000076B7,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000076B7,
                                                                   Attribute = GameAttribute.Attributes[0x0041],
                                                                   // Skill 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000006DF,
                                                                   Attribute = GameAttribute.Attributes[0x0041],
                                                                   // Skill 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x0000CE11,
                                                                   Attribute = GameAttribute.Attributes[0x01CC],
                                                                   // Buff_Active 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x01D2],
                                                                   // CantStartDisplayedPowers 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000216FA,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000176C4,
                                                                   Attribute = GameAttribute.Attributes[0x0041],
                                                                   // Skill 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000216FA,
                                                                   Attribute = GameAttribute.Attributes[0x0041],
                                                                   // Skill 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000176C4,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000006DF,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000000DE,
                                                                   Attribute = GameAttribute.Attributes[0x003C],
                                                                   // Resistance 
                                                                   Int = 0x00000000,
                                                                   Float = 0.5f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000000DE,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 0.5f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00C8],
                                                                   // Get_Hit_Recovery 
                                                                   Int = 0x00000000,
                                                                   Float = 6f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00C7],
                                                                   // Get_Hit_Recovery_Per_Level 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00C6],
                                                                   // Get_Hit_Recovery_Base 
                                                                   Int = 0x00000000,
                                                                   Float = 5f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00007780,
                                                                   Attribute = GameAttribute.Attributes[0x0041],
                                                                   // Skill 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00C5],
                                                                   // Get_Hit_Max 
                                                                   Int = 0x00000000,
                                                                   Float = 60f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00007780,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00C4],
                                                                   // Get_Hit_Max_Per_Level 
                                                                   Int = 0x00000000,
                                                                   Float = 10f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00C3],
                                                                   // Get_Hit_Max_Base 
                                                                   Int = 0x00000000,
                                                                   Float = 50f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000001,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000002,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000003,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000004,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000005,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000006,
                                                                   Attribute = GameAttribute.Attributes[0x003E],
                                                                   // Resistance_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00BE],
                                                                   // Dodge_Rating_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x02BA],
                                                                   // IsTrialActor 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000FFFFF,
                                                                   Attribute = GameAttribute.Attributes[0x01B9],
                                                                   // Buff_Visual_Effect 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x00A8],
                                                                   // Crit_Percent_Cap 
                                                                   Int = 0x3F400000,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = Client.Player.Hero.ResourceID,
                                                                   Attribute = GameAttribute.Attributes[0x005E],
                                                                   // Resource_Cur 
                                                                   Int = 0x43480000,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = Client.Player.Hero.ResourceID,
                                                                   Attribute = GameAttribute.Attributes[0x005F],
                                                                   // Resource_Max 
                                                                   Int = 0x00000000,
                                                                   Float = 200f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = Client.Player.Hero.ResourceID,
                                                                   Attribute = GameAttribute.Attributes[0x0061],
                                                                   // Resource_Max_Total 
                                                                   Int = 0x43480000,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x009D],
                                                                   // Damage_Weapon_Min_Total_All 
                                                                   Int = 0x00000000,
                                                                   Float = 2f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0099],
                                                                   // Damage_Weapon_Delta_Total_All 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = Client.Player.Hero.ResourceID,
                                                                   Attribute = GameAttribute.Attributes[0x0068],
                                                                   // Resource_Regen_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = Client.Player.Hero.ResourceID,
                                                                   Attribute = GameAttribute.Attributes[0x006B],
                                                                   // Resource_Effective_Max 
                                                                   Int = 0x00000000,
                                                                   Float = 200f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000FFFFF,
                                                                   Attribute = GameAttribute.Attributes[0x0092],
                                                                   // Damage_Min_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000FFFFF,
                                                                   Attribute = GameAttribute.Attributes[0x0091],
                                                                   // Damage_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000FFFFF,
                                                                   Attribute = GameAttribute.Attributes[0x0190],
                                                                   // Damage_Weapon_Min_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x018F],
                                                                   // Attacks_Per_Second_Item_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 1.199219f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0189],
                                                                   // Attacks_Per_Second_Item_Total_MainHand 
                                                                   Int = 0x00000000,
                                                                   Float = 1.199219f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0089],
                                                                   // Attacks_Per_Second_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 1.199219f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0087],
                                                                   // Attacks_Per_Second 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0187],
                                                                   // Attacks_Per_Second_Item_MainHand 
                                                                   Int = 0x00000000,
                                                                   Float = 1.199219f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0086],
                                                                   // Attacks_Per_Second_Item_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 1.199219f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00033C40,
                                                                   Attribute = GameAttribute.Attributes[0x01BE],
                                                                   // Buff_Icon_End_Tick0 
                                                                   Int = 0x000003FB,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0084],
                                                                   // Attacks_Per_Second_Item_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0082],
                                                                   // Attacks_Per_Second_Item 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00033C40,
                                                                   Attribute = GameAttribute.Attributes[0x01BA],
                                                                   // Buff_Icon_Start_Tick0 
                                                                   Int = 0x00000077,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0081],
                                                                   // Hit_Chance 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x007F],
                                                                   // Casting_Speed_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x007D],
                                                                   // Casting_Speed 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x007B],
                                                                   // Movement_Scalar_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x0002EC66,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0079],
                                                                   // Movement_Scalar_Capped_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0078],
                                                                   // Movement_Scalar_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0076],
                                                                   // Strafing_Rate_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0075],
                                                                   // Sprinting_Rate_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0074],
                                                                   // Running_Rate_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 0.3598633f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x018B],
                                                                   // Damage_Weapon_Min_Total_MainHand 
                                                                   Int = 0x00000000,
                                                                   Float = 2f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0073],
                                                                   // Walking_Rate_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 0.2797852f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x018D],
                                                                   // Damage_Weapon_Delta_Total_MainHand 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000001,
                                                                   Attribute = GameAttribute.Attributes[0x008E],
                                                                   // Damage_Delta_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000002,
                                                                   Attribute = GameAttribute.Attributes[0x008E],
                                                                   // Damage_Delta_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000003,
                                                                   Attribute = GameAttribute.Attributes[0x008E],
                                                                   // Damage_Delta_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000004,
                                                                   Attribute = GameAttribute.Attributes[0x008E],
                                                                   // Damage_Delta_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000005,
                                                                   Attribute = GameAttribute.Attributes[0x008E],
                                                                   // Damage_Delta_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000006,
                                                                   Attribute = GameAttribute.Attributes[0x008E],
                                                                   // Damage_Delta_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x008E],
                                                                   // Damage_Delta_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0070],
                                                                   // Running_Rate 
                                                                   Int = 0x00000000,
                                                                   Float = 0.3598633f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000001,
                                                                   Attribute = GameAttribute.Attributes[0x0190],
                                                                   // Damage_Weapon_Min_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000002,
                                                                   Attribute = GameAttribute.Attributes[0x0190],
                                                                   // Damage_Weapon_Min_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000003,
                                                                   Attribute = GameAttribute.Attributes[0x0190],
                                                                   // Damage_Weapon_Min_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000004,
                                                                   Attribute = GameAttribute.Attributes[0x0190],
                                                                   // Damage_Weapon_Min_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000005,
                                                                   Attribute = GameAttribute.Attributes[0x0190],
                                                                   // Damage_Weapon_Min_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000006,
                                                                   Attribute = GameAttribute.Attributes[0x0190],
                                                                   // Damage_Weapon_Min_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0190],
                                                                   // Damage_Weapon_Min_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 2f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x006F],
                                                                   // Walking_Rate 
                                                                   Int = 0x00000000,
                                                                   Float = 0.2797852f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000001,
                                                                   Attribute = GameAttribute.Attributes[0x0091],
                                                                   // Damage_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000002,
                                                                   Attribute = GameAttribute.Attributes[0x0091],
                                                                   // Damage_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000003,
                                                                   Attribute = GameAttribute.Attributes[0x0091],
                                                                   // Damage_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000004,
                                                                   Attribute = GameAttribute.Attributes[0x0091],
                                                                   // Damage_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000005,
                                                                   Attribute = GameAttribute.Attributes[0x0091],
                                                                   // Damage_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000006,
                                                                   Attribute = GameAttribute.Attributes[0x0091],
                                                                   // Damage_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000001,
                                                                   Attribute = GameAttribute.Attributes[0x0191],
                                                                   // Damage_Weapon_Delta_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000002,
                                                                   Attribute = GameAttribute.Attributes[0x0191],
                                                                   // Damage_Weapon_Delta_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000003,
                                                                   Attribute = GameAttribute.Attributes[0x0191],
                                                                   // Damage_Weapon_Delta_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000004,
                                                                   Attribute = GameAttribute.Attributes[0x0191],
                                                                   // Damage_Weapon_Delta_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000005,
                                                                   Attribute = GameAttribute.Attributes[0x0191],
                                                                   // Damage_Weapon_Delta_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000006,
                                                                   Attribute = GameAttribute.Attributes[0x0191],
                                                                   // Damage_Weapon_Delta_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0091],
                                                                   // Damage_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 2f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0191],
                                                                   // Damage_Weapon_Delta_Total_CurrentHand 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x006E],
                                                                   // Movement_Scalar 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000001,
                                                                   Attribute = GameAttribute.Attributes[0x0092],
                                                                   // Damage_Min_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000002,
                                                                   Attribute = GameAttribute.Attributes[0x0092],
                                                                   // Damage_Min_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000003,
                                                                   Attribute = GameAttribute.Attributes[0x0092],
                                                                   // Damage_Min_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000004,
                                                                   Attribute = GameAttribute.Attributes[0x0092],
                                                                   // Damage_Min_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000005,
                                                                   Attribute = GameAttribute.Attributes[0x0092],
                                                                   // Damage_Min_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000006,
                                                                   Attribute = GameAttribute.Attributes[0x0092],
                                                                   // Damage_Min_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0092],
                                                                   // Damage_Min_Subtotal 
                                                                   Int = 0x00000000,
                                                                   Float = 2f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0094],
                                                                   // Damage_Weapon_Delta 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0095],
                                                                   // Damage_Weapon_Delta_SubTotal 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0096],
                                                                   // Damage_Weapon_Max 
                                                                   Int = 0x00000000,
                                                                   Float = 3f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0097],
                                                                   // Damage_Weapon_Max_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 3f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x0098],
                                                                   // Damage_Weapon_Delta_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 1f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x0000CE11,
                                                                   Attribute = GameAttribute.Attributes[0x027B],
                                                                   // Trait 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x009B],
                                                                   // Damage_Weapon_Min 
                                                                   Int = 0x00000000,
                                                                   Float = 2f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00000000,
                                                                   Attribute = GameAttribute.Attributes[0x009C],
                                                                   // Damage_Weapon_Min_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 2f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x0000CE11,
                                                                   Attribute = GameAttribute.Attributes[0x0041],
                                                                   // Skill 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x0000CE11,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[15]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x005C],
                                                                   // Resource_Type_Primary 
                                                                   Int = Client.Player.Hero.ResourceID,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0056],
                                                                   // Hitpoints_Max_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 76f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0054],
                                                                   // Hitpoints_Max 
                                                                   Int = 0x00000000,
                                                                   Float = 40f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0051],
                                                                   // Hitpoints_Total_From_Level 
                                                                   Int = 0x00000000,
                                                                   Float = 3.051758E-05f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0050],
                                                                   // Hitpoints_Total_From_Vitality 
                                                                   Int = 0x00000000,
                                                                   Float = 36f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x004F],
                                                                   // Hitpoints_Factor_Vitality 
                                                                   Int = 0x00000000,
                                                                   Float = 4f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x004E],
                                                                   // Hitpoints_Factor_Level 
                                                                   Int = 0x00000000,
                                                                   Float = 4f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x004D],
                                                                   // Hitpoints_Cur 
                                                                   Int = 0x00000000,
                                                                   Float = 76f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x024C],
                                                                   // Disabled 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0046],
                                                                   // Loading 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0045],
                                                                   // Invulnerable 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0043],
                                                                   // TeamID 
                                                                   Int = 0x00000002,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000FFFFF,
                                                                   Attribute = GameAttribute.Attributes[0x0042],
                                                                   // Skill_Total 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x000FFFFF,
                                                                   Attribute = GameAttribute.Attributes[0x0041],
                                                                   // Skill 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x0000CE11,
                                                                   Attribute = GameAttribute.Attributes[0x0230],
                                                                   // Buff_Icon_Count0 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new AttributesSetValuesMessage()
                                   {
                                       Id = 0x004D,
                                       Field0 = 0x789E00E2,
                                       atKeyVals = new NetAttributeKeyValue[14]
                                                       {
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x012C],
                                                                   // Hidden 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0027],
                                                                   // Level_Cap 
                                                                   Int = 0x0000000D,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0026],
                                                                   // Level 
                                                                   Int = Client.Player.Hero.Properties.Level,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0022],
                                                                   // Experience_Next 
                                                                   Int = 0x000004B0,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0021],
                                                                   // Experience_Granted 
                                                                   Int = 0x000003E8,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0020],
                                                                   // Armor_Total 
                                                                   Int = 0x00000000,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x000C],
                                                                   // Defense 
                                                                   Int = 0x00000000,
                                                                   Float = 10f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Field0 = 0x00033C40,
                                                                   Attribute = GameAttribute.Attributes[0x0230],
                                                                   // Buff_Icon_Count0 
                                                                   Int = 0x00000001,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x000B],
                                                                   // Vitality 
                                                                   Int = 0x00000000,
                                                                   Float = 9f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x000A],
                                                                   // Precision 
                                                                   Int = 0x00000000,
                                                                   Float = 11f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0009],
                                                                   // Attack 
                                                                   Int = 0x00000000,
                                                                   Float = 10f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0008],
                                                                   // Shared_Stash_Slots 
                                                                   Int = 0x0000000E,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0007],
                                                                   // Backpack_Slots 
                                                                   Int = 0x0000003C,
                                                                   Float = 0f,
                                                               },
                                                           new NetAttributeKeyValue()
                                                               {
                                                                   Attribute = GameAttribute.Attributes[0x0103],
                                                                   // General_Cooldown 
                                                                   Int = 0x00000000,
                                                                   Float = 0f,
                                                               },
                                                       },
                                   });

            Client.SendMessage(new ACDGroupMessage()
                                   {
                                       Id = 0x00B8,
                                       Field0 = 0x789E00E2,
                                       Field1 = -1,
                                       Field2 = -1,
                                   });

            Client.SendMessage(new ANNDataMessage()
                                   {
                                       Id = 0x003E,
                                       Field0 = 0x789E00E2,
                                   });

            Client.SendMessage(new ACDTranslateFacingMessage()
                                   {
                                       Id = 0x0070,
                                       Field0 = 0x789E00E2,
                                       Field1 = 3.022712f,
                                       Field2 = false,
                                   });

            Client.SendMessage(new PlayerEnterKnownMessage()
                                   {
                                       Id = 0x003D,
                                       Field0 = 0x00000000,
                                       Field1 = 0x789E00E2,
                                   });

            Client.SendMessage(new VisualInventoryMessage()
                                   {
                                       Id = 0x004E,
                                       Field0 = 0x789E00E2,
                                       Field1 = new VisualEquipment()
                                                    {
                                                        Field0 = new VisualItem[8]
                                                                     {
                                                                         new VisualItem() //Head
                                                                             {
                                                                                 Field0 =
                                                                                     Client.Player.Hero.Properties.
                                                                                     Equipment.VisualItemList[0].Gbid,
                                                                                 Field1 = 0x00000000,
                                                                                 Field2 = 0x00000000,
                                                                                 Field3 = -1,
                                                                             },
                                                                         new VisualItem() //Chest
                                                                             {
                                                                                 Field0 =
                                                                                     Client.Player.Hero.Properties.
                                                                                     Equipment.VisualItemList[1].Gbid,
                                                                                 Field1 = 0x00000000,
                                                                                 Field2 = 0x00000000,
                                                                                 Field3 = -1,
                                                                             },
                                                                         new VisualItem() //Feet
                                                                             {
                                                                                 Field0 =
                                                                                     Client.Player.Hero.Properties.
                                                                                     Equipment.VisualItemList[2].Gbid,
                                                                                 Field1 = 0x00000000,
                                                                                 Field2 = 0x00000000,
                                                                                 Field3 = -1,
                                                                             },
                                                                         new VisualItem() //Hands
                                                                             {
                                                                                 Field0 =
                                                                                     Client.Player.Hero.Properties.
                                                                                     Equipment.VisualItemList[3].Gbid,
                                                                                 Field1 = 0x00000000,
                                                                                 Field2 = 0x00000000,
                                                                                 Field3 = -1,
                                                                             },
                                                                         new VisualItem() //Main hand
                                                                             {
                                                                                 Field0 =
                                                                                     Client.Player.Hero.Properties.
                                                                                     Equipment.VisualItemList[4].Gbid,
                                                                                 Field1 = 0x00000000,
                                                                                 Field2 = 0x00000000,
                                                                                 Field3 = -1,
                                                                             },
                                                                         new VisualItem() //Offhand
                                                                             {
                                                                                 Field0 =
                                                                                     Client.Player.Hero.Properties.
                                                                                     Equipment.VisualItemList[5].Gbid,
                                                                                 Field1 = 0x00000000,
                                                                                 Field2 = 0x00000000,
                                                                                 Field3 = -1,
                                                                             },
                                                                         new VisualItem() //Shoulders
                                                                             {
                                                                                 Field0 =
                                                                                     Client.Player.Hero.Properties.
                                                                                     Equipment.VisualItemList[6].Gbid,
                                                                                 Field1 = 0x00000000,
                                                                                 Field2 = 0x00000000,
                                                                                 Field3 = -1,
                                                                             },
                                                                         new VisualItem() //Legs
                                                                             {
                                                                                 Field0 =
                                                                                     Client.Player.Hero.Properties.
                                                                                     Equipment.VisualItemList[7].Gbid,
                                                                                 Field1 = 0x00000000,
                                                                                 Field2 = 0x00000000,
                                                                                 Field3 = -1,
                                                                             },
                                                                     },
                                                    },
                                   });

            Client.SendMessage(new PlayerActorSetInitialMessage()
                                   {
                                       Id = 0x0039,
                                       Field0 = 0x789E00E2,
                                       Field1 = 0x00000000,
                                   });
            Client.SendMessage(new SNONameDataMessage()
                                   {
                                       Id = 0x00D3,
                                       Field0 = new SNOName()
                                                    {
                                                        Field0 = 0x00000001,
                                                        Field1 = Client.Player.Hero.ClassSNO,
                                                    },
                                   });

            Client.FlushOutgoingBuffer();

            Client.SendMessage(new DWordDataMessage() // TICK
                                   {
                                       Id = 0x0089,
                                       Field0 = 0x00000077,
                                   });

            Client.FlushOutgoingBuffer();

            Client.SendMessage(new AttributeSetValueMessage()
                                   {
                                       Id = 0x004C,
                                       Field0 = 0x789E00E2,
                                       Field1 = new NetAttributeKeyValue()
                                                    {
                                                        Attribute = GameAttribute.Attributes[0x005B], // Hitpoints_Healed_Target
                                                        Int = 0x00000000,
                                                        Float = 76f,
                                                    },
                                   });

            Client.SendMessage(new DWordDataMessage() // TICK
                                   {
                                       Id = 0x0089,
                                       Field0 = 0x0000007D,
                                   });

            Client.FlushOutgoingBuffer();
        }
예제 #6
0
        public void OnNewPlayer(GameClient client, JoinBNetGameMessage message)
        {
            this.Clients.Add(client);

            if (message.Id != 0x000A)
                throw new NotImplementedException();

            // a hackish way to get client.BnetClient in context -- pretends games has only one client in. when we're done with implementing bnet completely, will get this sorted out. /raist
            client.BnetClient = Core.Games.GameManager.AvailableGames[(ulong)message.Field2].Clients.FirstOrDefault();
            if (client.BnetClient != null)
            {
                client.Toon = client.BnetClient.CurrentToon;
                client.BnetClient.InGameClient = client;
            }

            client.SendMessageNow(new VersionsMessage()
            {
                Id = 0x000D,
                SNOPackHash = message.SNOPackHash,
                ProtocolHash = GameMessage.ImplementedProtocolHash,
                Version = "0.3.0.7333",
            });

            client.SendMessage(new ConnectionEstablishedMessage()
            {
                Id = 0x002E,
                Field0 = 0x00000000,
                Field1 = 0x4BB91A16,
                Field2 = message.SNOPackHash,
            });

            client.SendMessage(new GameSetupMessage()
            {
                Id = 0x002F,
                Field0 = 0x00000077,
            });

            client.SendMessage(new SavePointInfoMessage()
            {
                Id = 0x0045,
                snoLevelArea = -1,
            });

            client.SendMessage(new HearthPortalInfoMessage()
            {
                Id = 0x0046,
                snoLevelArea = -1,
                Field1 = -1,
            });

            client.SendMessage(new ActTransitionMessage()
            {
                Id = 0x00A8,
                Field0 = 0x00000000,
                Field1 = true,
            });

            var currentToon = client.Toon;

            //initialize world entry point for player to the new character entry area for now
            currentToon.CurrentWorldID = 0x772E0000;
            currentToon.CurrentWorldSNO = 0x115EE;
            currentToon.PosX = 3143.75f;
            currentToon.PosY = 2828.75f;
            currentToon.PosZ = 59.075588f;

            //reveal world to the toon
            World world = this.Universe.GetWorld(currentToon.CurrentWorldID);
            if (world != null)
            {
                world.RevealWorld(currentToon);
            }

            //handle world entry for player here, hardcoded version for now

            #region NewPlayer
            client.SendMessage(new NewPlayerMessage()
            {
                Id = 0x0031,
                Field0 = 0x00000000, //Party frame (0x00000000 hide, 0x00000001 show)
                Field1 = "", //Owner name?
                ToonName = currentToon.Name,
                Field3 = 0x00000002, //party frame class 
                Field4 = 0x00000004, //party frame level
                snoActorPortrait = currentToon.ClassSNO, //party frame portrait
                Field6 = 0x00000001,
                #region HeroStateData
                Field7 = new HeroStateData()
                {
                    Field0 = 0x00000000,
                    Field1 = 0x00000000,
                    Field2 = 0x00000000,
                    Field3 = currentToon.Gender,
                    Field4 = new PlayerSavedData()
                    {
                        #region HotBarButtonData
                        Field0 = new HotbarButtonData[9]
            {
                 new HotbarButtonData()
                 {
                    m_snoPower = 0x000176C4,
                    m_gbidItem = -1,
                 },
                 new HotbarButtonData()
                 {
                    m_snoPower = 0x00007780,
                    m_gbidItem = -1,
                 },
                 new HotbarButtonData()
                 {
                    m_snoPower = -1,
                    m_gbidItem = -1,
                 },
                 new HotbarButtonData()
                 {
                    m_snoPower = 0x00007780,
                    m_gbidItem = -1,
                 },
                 new HotbarButtonData()
                 {
                    m_snoPower = 0x000216FA,
                    m_gbidItem = -1,
                 },
                 new HotbarButtonData()
                 {
                    m_snoPower = -1,
                    m_gbidItem = -1,
                 },
                 new HotbarButtonData()
                 {
                    m_snoPower = -1,
                    m_gbidItem = -1,
                 },
                 new HotbarButtonData()
                 {
                    m_snoPower = -1,
                    m_gbidItem = -1,
                 },
                 new HotbarButtonData()
                 {
                    m_snoPower = -1,
                    m_gbidItem = 0x622256D4,
                 },
            },
                        #endregion
                        #region SkillKeyMapping
                        Field1 = new SkillKeyMapping[15]
            {
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
                 new SkillKeyMapping()
                 {
                    Power = -1,
                    Field1 = -1,
                    Field2 = 0x00000000,
                 },
            },
                        #endregion
                        Field2 = 0x00000000,
                        Field3 = 0x00000001,
                        #region HirelingSavedData
                        Field4 = new HirelingSavedData()
                        {
                            Field0 = new HirelingInfo[4]
                {
                     new HirelingInfo()
                     {
                        Field0 = 0x00000000,
                        Field1 = -1,
                        Field2 = 0x00000000,
                        Field3 = 0x00000000,
                        Field4 = false,
                        Field5 = -1,
                        Field6 = -1,
                        Field7 = -1,
                        Field8 = -1,
                     },
                     new HirelingInfo()
                     {
                        Field0 = 0x00000000,
                        Field1 = -1,
                        Field2 = 0x00000000,
                        Field3 = 0x00000000,
                        Field4 = false,
                        Field5 = -1,
                        Field6 = -1,
                        Field7 = -1,
                        Field8 = -1,
                     },
                     new HirelingInfo()
                     {
                        Field0 = 0x00000000,
                        Field1 = -1,
                        Field2 = 0x00000000,
                        Field3 = 0x00000000,
                        Field4 = false,
                        Field5 = -1,
                        Field6 = -1,
                        Field7 = -1,
                        Field8 = -1,
                     },
                     new HirelingInfo()
                     {
                        Field0 = 0x00000000,
                        Field1 = -1,
                        Field2 = 0x00000000,
                        Field3 = 0x00000000,
                        Field4 = false,
                        Field5 = -1,
                        Field6 = -1,
                        Field7 = -1,
                        Field8 = -1,
                     },
                },
                            Field1 = 0x00000000,
                            Field2 = 0x00000000,
                        },
                        #endregion
                        Field5 = 0x00000000,
                        #region LearnedLore
                        Field6 = new LearnedLore()
                        {
                            Field0 = 0x00000000,
                            m_snoLoreLearned = new int[256]
                {
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
                },
                        },
                        #endregion
                        #region snoActiveSkills
                        snoActiveSkills = new int[6]
            {
                0x000176C4, 0x000216FA, -1, -1, -1, -1, 
            },
                        #endregion
                        #region snoTraits
                        snoTraits = new int[3]
            {
                -1, -1, -1, 
            },
                        #endregion
                        #region SavePointData
                        Field9 = new SavePointData()
                        {
                            snoWorld = -1,
                            Field1 = -1,
                        },
                        #endregion
                        #region SeenTutorials
                        m_SeenTutorials = new int[64]
            {
                -1, -1, -1, -1, -1, -1, -1, -1, 
                -1, -1, -1, -1, -1, -1, -1, -1, 
                -1, -1, -1, -1, -1, -1, -1, -1, 
                -1, -1, -1, -1, -1, -1, -1, -1, 
                -1, -1, -1, -1, -1, -1, -1, -1, 
                -1, -1, -1, -1, -1, -1, -1, -1, 
                -1, -1, -1, -1, -1, -1, -1, -1, 
                -1, -1, -1, -1, -1, -1, -1, -1, 
            },
                        #endregion
                    },
                    Field5 = 0x00000000,
                    #region PlayerQuestRewardHistoryEntry
                    tQuestRewardHistory = new PlayerQuestRewardHistoryEntry[0]
        {
        },
                    #endregion
                },
                #endregion
                Field8 = false, //announce party join
                Field9 = 0x00000001,
                Field10 = 0x789E00E2,
            });
            #endregion

            Console.WriteLine("Positioning character at " + currentToon.PosX + " " + currentToon.PosY + " " + currentToon.PosZ);

            #region ACDEnterKnown 0x789E00E2 PlayerId??
            client.SendMessage(new ACDEnterKnownMessage()
            {
                Id = 0x003B,
                Field0 = 0x789E00E2,
                Field1 = currentToon.ClassSNO, //Player model?
                Field2 = 0x00000009,
                Field3 = 0x00000000,
                Field4 = new WorldLocationMessageData()
                {
                    Field0 = currentToon.ModelScale,
                    Field1 = new PRTransform()
                    {
                        Field0 = new Quaternion()
                        {
                            Field0 = 0.05940768f,
                            Field1 = new Vector3D()
                            {
                                Field0 = 0f,
                                Field1 = 0f,
                                Field2 = 0.9982339f,
                            },
                        },
                        Field1 = new Vector3D()
                        {
                            Field0 = currentToon.PosX,
                            Field1 = currentToon.PosY,
                            Field2 = currentToon.PosZ,
                        },
                    },
                    Field2 = currentToon.CurrentWorldID,
                },
                Field5 = null,
                Field6 = new GBHandle()
                {
                    Field0 = 0x00000007,
                    Field1 = currentToon.ClassID,
                },
                Field7 = -1,
                Field8 = -1,
                Field9 = 0x00000000,
                Field10 = 0x00,
            });

            client.SendMessage(new ACDCollFlagsMessage()
            {
                Id = 0x00A6,
                Field0 = 0x789E00E2,
                Field1 = 0x00000000,
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x01F8], // SkillKit 
            Int = currentToon.SkillKit,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00033C40,
            Attribute = GameAttribute.Attributes[0x01CC], // Buff_Active 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00007545,
            Attribute = GameAttribute.Attributes[0x0041], // Skill 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00007545,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000226,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 0.5f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000226,
            Attribute = GameAttribute.Attributes[0x003C], // Resistance 
            Int = 0x00000000,
            Float = 0.5f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00D7], // Immobolize 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00D6], // Untargetable 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000076B7,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000076B7,
            Attribute = GameAttribute.Attributes[0x0041], // Skill 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000006DF,
            Attribute = GameAttribute.Attributes[0x0041], // Skill 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x0000CE11,
            Attribute = GameAttribute.Attributes[0x01CC], // Buff_Active 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x01D2], // CantStartDisplayedPowers 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000216FA,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000176C4,
            Attribute = GameAttribute.Attributes[0x0041], // Skill 
            Int = 0x00000001,
            Float = 0f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Field0 = 0x000216FA,
            Attribute = GameAttribute.Attributes[0x0041], // Skill 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000176C4,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000006DF,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000000DE,
            Attribute = GameAttribute.Attributes[0x003C], // Resistance 
            Int = 0x00000000,
            Float = 0.5f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000000DE,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 0.5f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00C8], // Get_Hit_Recovery 
            Int = 0x00000000,
            Float = 6f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00C7], // Get_Hit_Recovery_Per_Level 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00C6], // Get_Hit_Recovery_Base 
            Int = 0x00000000,
            Float = 5f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00007780,
            Attribute = GameAttribute.Attributes[0x0041], // Skill 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00C5], // Get_Hit_Max 
            Int = 0x00000000,
            Float = 60f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00007780,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00C4], // Get_Hit_Max_Per_Level 
            Int = 0x00000000,
            Float = 10f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00C3], // Get_Hit_Max_Base 
            Int = 0x00000000,
            Float = 50f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000001,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000002,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000003,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000004,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000005,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000006,
            Attribute = GameAttribute.Attributes[0x003E], // Resistance_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00BE], // Dodge_Rating_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x02BA], // IsTrialActor 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000FFFFF,
            Attribute = GameAttribute.Attributes[0x01B9], // Buff_Visual_Effect 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x00A8], // Crit_Percent_Cap 
            Int = 0x3F400000,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = currentToon.ResourceID,
            Attribute = GameAttribute.Attributes[0x005E], // Resource_Cur 
            Int = 0x43480000,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = currentToon.ResourceID,
            Attribute = GameAttribute.Attributes[0x005F], // Resource_Max 
            Int = 0x00000000,
            Float = 200f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = currentToon.ResourceID,
            Attribute = GameAttribute.Attributes[0x0061], // Resource_Max_Total 
            Int = 0x43480000,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x009D], // Damage_Weapon_Min_Total_All 
            Int = 0x00000000,
            Float = 2f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0099], // Damage_Weapon_Delta_Total_All 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = currentToon.ResourceID,
            Attribute = GameAttribute.Attributes[0x0068], // Resource_Regen_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Field0 = currentToon.ResourceID,
            Attribute = GameAttribute.Attributes[0x006B], // Resource_Effective_Max 
            Int = 0x00000000,
            Float = 200f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000FFFFF,
            Attribute = GameAttribute.Attributes[0x0092], // Damage_Min_Subtotal 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000FFFFF,
            Attribute = GameAttribute.Attributes[0x0091], // Damage_Min_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000FFFFF,
            Attribute = GameAttribute.Attributes[0x0190], // Damage_Weapon_Min_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x018F], // Attacks_Per_Second_Item_CurrentHand 
            Int = 0x00000000,
            Float = 1.199219f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0189], // Attacks_Per_Second_Item_Total_MainHand 
            Int = 0x00000000,
            Float = 1.199219f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0089], // Attacks_Per_Second_Total 
            Int = 0x00000000,
            Float = 1.199219f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0087], // Attacks_Per_Second 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0187], // Attacks_Per_Second_Item_MainHand 
            Int = 0x00000000,
            Float = 1.199219f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0086], // Attacks_Per_Second_Item_Total 
            Int = 0x00000000,
            Float = 1.199219f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00033C40,
            Attribute = GameAttribute.Attributes[0x01BE], // Buff_Icon_End_Tick0 
            Int = 0x000003FB,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0084], // Attacks_Per_Second_Item_Subtotal 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0082], // Attacks_Per_Second_Item 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00033C40,
            Attribute = GameAttribute.Attributes[0x01BA], // Buff_Icon_Start_Tick0 
            Int = 0x00000077,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0081], // Hit_Chance 
            Int = 0x00000000,
            Float = 1f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x007F], // Casting_Speed_Total 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x007D], // Casting_Speed 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x007B], // Movement_Scalar_Total 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x0002EC66,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000000,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0079], // Movement_Scalar_Capped_Total 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0078], // Movement_Scalar_Subtotal 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0076], // Strafing_Rate_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0075], // Sprinting_Rate_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0074], // Running_Rate_Total 
            Int = 0x00000000,
            Float = 0.3598633f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x018B], // Damage_Weapon_Min_Total_MainHand 
            Int = 0x00000000,
            Float = 2f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0073], // Walking_Rate_Total 
            Int = 0x00000000,
            Float = 0.2797852f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x018D], // Damage_Weapon_Delta_Total_MainHand 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000001,
            Attribute = GameAttribute.Attributes[0x008E], // Damage_Delta_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000002,
            Attribute = GameAttribute.Attributes[0x008E], // Damage_Delta_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000003,
            Attribute = GameAttribute.Attributes[0x008E], // Damage_Delta_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000004,
            Attribute = GameAttribute.Attributes[0x008E], // Damage_Delta_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000005,
            Attribute = GameAttribute.Attributes[0x008E], // Damage_Delta_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000006,
            Attribute = GameAttribute.Attributes[0x008E], // Damage_Delta_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x008E], // Damage_Delta_Total 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0070], // Running_Rate 
            Int = 0x00000000,
            Float = 0.3598633f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000001,
            Attribute = GameAttribute.Attributes[0x0190], // Damage_Weapon_Min_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000002,
            Attribute = GameAttribute.Attributes[0x0190], // Damage_Weapon_Min_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000003,
            Attribute = GameAttribute.Attributes[0x0190], // Damage_Weapon_Min_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000004,
            Attribute = GameAttribute.Attributes[0x0190], // Damage_Weapon_Min_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000005,
            Attribute = GameAttribute.Attributes[0x0190], // Damage_Weapon_Min_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000006,
            Attribute = GameAttribute.Attributes[0x0190], // Damage_Weapon_Min_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0190], // Damage_Weapon_Min_Total_CurrentHand 
            Int = 0x00000000,
            Float = 2f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x006F], // Walking_Rate 
            Int = 0x00000000,
            Float = 0.2797852f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000001,
            Attribute = GameAttribute.Attributes[0x0091], // Damage_Min_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000002,
            Attribute = GameAttribute.Attributes[0x0091], // Damage_Min_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000003,
            Attribute = GameAttribute.Attributes[0x0091], // Damage_Min_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000004,
            Attribute = GameAttribute.Attributes[0x0091], // Damage_Min_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000005,
            Attribute = GameAttribute.Attributes[0x0091], // Damage_Min_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000006,
            Attribute = GameAttribute.Attributes[0x0091], // Damage_Min_Total 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000001,
            Attribute = GameAttribute.Attributes[0x0191], // Damage_Weapon_Delta_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000002,
            Attribute = GameAttribute.Attributes[0x0191], // Damage_Weapon_Delta_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000003,
            Attribute = GameAttribute.Attributes[0x0191], // Damage_Weapon_Delta_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000004,
            Attribute = GameAttribute.Attributes[0x0191], // Damage_Weapon_Delta_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000005,
            Attribute = GameAttribute.Attributes[0x0191], // Damage_Weapon_Delta_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000006,
            Attribute = GameAttribute.Attributes[0x0191], // Damage_Weapon_Delta_Total_CurrentHand 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0091], // Damage_Min_Total 
            Int = 0x00000000,
            Float = 2f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0191], // Damage_Weapon_Delta_Total_CurrentHand 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x006E], // Movement_Scalar 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000001,
            Attribute = GameAttribute.Attributes[0x0092], // Damage_Min_Subtotal 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000002,
            Attribute = GameAttribute.Attributes[0x0092], // Damage_Min_Subtotal 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000003,
            Attribute = GameAttribute.Attributes[0x0092], // Damage_Min_Subtotal 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000004,
            Attribute = GameAttribute.Attributes[0x0092], // Damage_Min_Subtotal 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000005,
            Attribute = GameAttribute.Attributes[0x0092], // Damage_Min_Subtotal 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000006,
            Attribute = GameAttribute.Attributes[0x0092], // Damage_Min_Subtotal 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0092], // Damage_Min_Subtotal 
            Int = 0x00000000,
            Float = 2f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0094], // Damage_Weapon_Delta 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0095], // Damage_Weapon_Delta_SubTotal 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0096], // Damage_Weapon_Max 
            Int = 0x00000000,
            Float = 3f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0097], // Damage_Weapon_Max_Total 
            Int = 0x00000000,
            Float = 3f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x0098], // Damage_Weapon_Delta_Total 
            Int = 0x00000000,
            Float = 1f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x0000CE11,
            Attribute = GameAttribute.Attributes[0x027B], // Trait 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x009B], // Damage_Weapon_Min 
            Int = 0x00000000,
            Float = 2f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00000000,
            Attribute = GameAttribute.Attributes[0x009C], // Damage_Weapon_Min_Total 
            Int = 0x00000000,
            Float = 2f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x0000CE11,
            Attribute = GameAttribute.Attributes[0x0041], // Skill 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x0000CE11,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000001,
            Float = 0f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[15]
    {
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x005C], // Resource_Type_Primary 
            Int = currentToon.ResourceID,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0056], // Hitpoints_Max_Total 
            Int = 0x00000000,
            Float = 76f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0054], // Hitpoints_Max 
            Int = 0x00000000,
            Float = 40f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0051], // Hitpoints_Total_From_Level 
            Int = 0x00000000,
            Float = 3.051758E-05f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0050], // Hitpoints_Total_From_Vitality 
            Int = 0x00000000,
            Float = 36f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x004F], // Hitpoints_Factor_Vitality 
            Int = 0x00000000,
            Float = 4f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x004E], // Hitpoints_Factor_Level 
            Int = 0x00000000,
            Float = 4f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x004D], // Hitpoints_Cur 
            Int = 0x00000000,
            Float = 76f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x024C], // Disabled 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0046], // Loading 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0045], // Invulnerable 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0043], // TeamID 
            Int = 0x00000002,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000FFFFF,
            Attribute = GameAttribute.Attributes[0x0042], // Skill_Total 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x000FFFFF,
            Attribute = GameAttribute.Attributes[0x0041], // Skill 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x0000CE11,
            Attribute = GameAttribute.Attributes[0x0230], // Buff_Icon_Count0 
            Int = 0x00000001,
            Float = 0f,
         },
    },
            });

            client.SendMessage(new AttributesSetValuesMessage()
            {
                Id = 0x004D,
                Field0 = 0x789E00E2,
                atKeyVals = new NetAttributeKeyValue[14]
    {
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x012C], // Hidden 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0027], // Level_Cap 
            Int = 0x0000000D,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0026], // Level 
            Int = currentToon.Level,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0022], // Experience_Next 
            Int = 0x000004B0,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0021], // Experience_Granted 
            Int = 0x000003E8,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0020], // Armor_Total 
            Int = 0x00000000,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x000C], // Defense 
            Int = 0x00000000,
            Float = 10f,
         },
         new NetAttributeKeyValue()
         {
            Field0 = 0x00033C40,
            Attribute = GameAttribute.Attributes[0x0230], // Buff_Icon_Count0 
            Int = 0x00000001,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x000B], // Vitality 
            Int = 0x00000000,
            Float = 9f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x000A], // Precision 
            Int = 0x00000000,
            Float = 11f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0009], // Attack 
            Int = 0x00000000,
            Float = 10f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0008], // Shared_Stash_Slots 
            Int = 0x0000000E,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0007], // Backpack_Slots 
            Int = 0x0000003C,
            Float = 0f,
         },
         new NetAttributeKeyValue()
         {
            Attribute = GameAttribute.Attributes[0x0103], // General_Cooldown 
            Int = 0x00000000,
            Float = 0f,
         },
    },
            });

            client.SendMessage(new ACDGroupMessage()
            {
                Id = 0x00B8,
                Field0 = 0x789E00E2,
                Field1 = -1,
                Field2 = -1,
            });

            client.SendMessage(new ANNDataMessage()
            {
                Id = 0x003E,
                Field0 = 0x789E00E2,
            });

            client.SendMessage(new ACDTranslateFacingMessage()
            {
                Id = 0x0070,
                Field0 = 0x789E00E2,
                Field1 = 3.022712f,
                Field2 = false,
            });

            client.SendMessage(new PlayerEnterKnownMessage()
            {
                Id = 0x003D,
                Field0 = 0x00000000,
                Field1 = 0x789E00E2,
            });

            client.SendMessage(new VisualInventoryMessage()
            {
                Id = 0x004E,
                Field0 = 0x789E00E2,
                Field1 = new VisualEquipment()
                {
                    Field0 = new VisualItem[8]
        {
             new VisualItem() //Head
             {
                Field0 = currentToon.Equipment.VisualItemList[0].Gbid,
                Field1 = 0x00000000,
                Field2 = 0x00000000,
                Field3 = -1,
             },
             new VisualItem() //Chest
             {
                Field0 = currentToon.Equipment.VisualItemList[1].Gbid,
                Field1 = 0x00000000,
                Field2 = 0x00000000,
                Field3 = -1,
             },
             new VisualItem() //Feet
             {
                Field0 = currentToon.Equipment.VisualItemList[2].Gbid,
                Field1 = 0x00000000,
                Field2 = 0x00000000,
                Field3 = -1,
             },
             new VisualItem() //Hands
             {
                Field0 = currentToon.Equipment.VisualItemList[3].Gbid,
                Field1 = 0x00000000,
                Field2 = 0x00000000,
                Field3 = -1,
             },
             new VisualItem() //Main hand
             {
                Field0 = currentToon.Equipment.VisualItemList[4].Gbid,
                Field1 = 0x00000000,
                Field2 = 0x00000000,
                Field3 = -1,
             },
             new VisualItem() //Offhand
             {
                Field0 = currentToon.Equipment.VisualItemList[5].Gbid,
                Field1 = 0x00000000,
                Field2 = 0x00000000,
                Field3 = -1,
             },
             new VisualItem() //Shoulders
             {
                Field0 = currentToon.Equipment.VisualItemList[6].Gbid,
                Field1 = 0x00000000,
                Field2 = 0x00000000,
                Field3 = -1,
             },
             new VisualItem() //Legs
             {
                Field0 = currentToon.Equipment.VisualItemList[7].Gbid,
                Field1 = 0x00000000,
                Field2 = 0x00000000,
                Field3 = -1,
             },
        },
                },
            });

            client.SendMessage(new PlayerActorSetInitialMessage()
            {
                Id = 0x0039,
                Field0 = 0x789E00E2,
                Field1 = 0x00000000,
            });
            client.SendMessage(new SNONameDataMessage()
            {
                Id = 0x00D3,
                Field0 = new SNOName()
                {
                    Field0 = 0x00000001,
                    Field1 = currentToon.ClassSNO,
                },
            });
            #endregion

            currentToon.Owner.LoggedInBNetClient.InGameClient.FlushOutgoingBuffer();

            client.SendMessage(new DWordDataMessage() // TICK
            {
                Id = 0x0089,
                Field0 = 0x00000077,
            });

            currentToon.Owner.LoggedInBNetClient.InGameClient.FlushOutgoingBuffer();

            client.SendMessage(new AttributeSetValueMessage()
            {
                Id = 0x004C,
                Field0 = 0x789E00E2,
                Field1 = new NetAttributeKeyValue()
                {
                    Attribute = GameAttribute.Attributes[0x005B], // Hitpoints_Healed_Target
                    Int = 0x00000000,
                    Float = 76f,
                },
            });

            client.SendMessage(new DWordDataMessage() // TICK
            {
                Id = 0x0089,
                Field0 = 0x0000007D,
            });

            client.FlushOutgoingBuffer();
        }