/// <summary>
        /// 
        /// </summary>
        internal UserInventoryDataAck( ROSEMobile character )
            : base( 0x716, 1126/*6 + 1120*/ )
        {
            WriterStream.Write( (ushort)1126/*6 + 1120*/ );    // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////

            // low Zulies
            WriterStream.Write( (uint)0x00 );
            // High Zulies
            WriterStream.Write( (uint)0x00 );

            for ( int iIndex = 0; iIndex < 140; iIndex++ )
            {
                WriterStream.Write( (uint)character.m_Items[iIndex].BuildItemHead() );
                WriterStream.Write( (uint)character.m_Items[iIndex].BuildItemData() );
            }
        }
        /// <summary>
        /// 
        /// </summary>
        internal UserQuestDataAck( ROSEMobile character )
            : base( 0x71B, 0 /*6 + ?*/ )
        {
            WriterStream.Write( (ushort)0 /*6 + ?*/ );          // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );        // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );                 // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            for ( int iIndex = 0; iIndex < 0x32; iIndex++ )
                WriterStream.Write( (byte)0x0 );

            int l_iActiveQuestCount = 0;
            //for ( int iIndex = 0; iIndex < thisclient->MyQuest.size( ); iIndex++ )
            //{
                //if ( myquest->active )
                //{
                    //    WriterStream.Write( (ushort)0x0 );  // # Quest ID

                    //    WriterStream.Write( (uint)0x0 );    // Time
                    //    WriterStream.Write( (uint)0x0 );

                    //    for ( int iIndex2 = 0; iIndex2 < 0x14; iIndex2++ )
                    //        WriterStream.Write( (byte)0x0 );

                    //    for ( int iIndex3 = 0; iIndex3 < 5; iIndex3++ )
                    //    {
                    //        //if ( myquest->thisquest->CItem[j] != 0 && myquest->items[j] != 0 )
                    //        //{
                    //        //    CItem item;
                    //        //    item.itemnum = myquest->thisquest->CItem[j];
                    //        //    item.itemtype = 13;
                    //        //    item.count = 1;
                    //        //    WriterStream.Write( (uint)BuildItemHead( item ) );
                    //        //    WriterStream.Write( (uint)myquest->items[j] );
                    //        //}
                    //        //else
                    //        {
                    //            WriterStream.Write( (uint)0x00000000 );
                    //            WriterStream.Write( (uint)0x00000000 );
                    //        }


                    //    }

                    //    WriterStream.Write( (uint)0x00000000 );
                    //    WriterStream.Write( (uint)0x00000000 );
                    //    l_iActiveQuestCount++;
                //}

            //    if ( l_iActiveQuestCount >= 10 )
            //        break;
            //}

            for ( int iIndex = l_iActiveQuestCount; iIndex < 10; iIndex++ )
                for ( int iIndex2 = 0; iIndex2 < 0x4E; iIndex2++ )
                    WriterStream.Write( (byte)0x00 );

            // Made Quest?
            for ( int iIndex = 0; iIndex < 84; iIndex++ )
                WriterStream.Write( (byte)0x00 );

            // Whish list Credits to Caali
            for ( int iIndex = 0; iIndex < 30; iIndex++ )
            {
                WriterStream.Write( (uint)0x00000000 );     //Item Head
                WriterStream.Write( (uint)0x00000000 );     //Item Data
            }

            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek( 0, SeekOrigin.Begin );
            WriterStream.Write( (ushort)WriterStream.Length );     // ×ֶδóС
        }
        /// <summary>
        /// 
        /// </summary>
        internal Unknown0x07D5Ack( ROSEMobile character )
            : base( 0x7D5, 26 /*6 + 20*/ )
        {
            WriterStream.Write( (ushort)26 /*6 + 20*/ );    // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write( (uint)character.m_iCharacterGuid );
            WriterStream.Write( (ushort)character.m_iClientID );
            WriterStream.Write( (ushort)character.m_iMaxHP );
            WriterStream.Write( (ushort)character.m_iCurrentHP );
            WriterStream.Write( (uint)0x01000000 );
            WriterStream.Write( (uint)0x0000000F );
            WriterStream.Write( (ushort)0x1388 );
        }
        /// <summary>
        /// 
        /// </summary>
        internal UserInformationAck( ROSEMobile character )
            : base( 0x715, 0 /*6 + ?*/ )
        {
            WriterStream.Write( (ushort)0 /*6 + ?*/ );      // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write( (byte)character.m_iSex );				                // GENDER 1=FEMALE 0=MALE
            WriterStream.Write( (ushort)character.m_posMapID );                         // MAP
            WriterStream.Write( (float)( character.X* 100 ) );                       // X POS
            WriterStream.Write( (float)( character.Y * 100 ) );                       // Y POS
            WriterStream.Write( (ushort)0x0000 );
            WriterStream.Write( (uint)character.m_iFace );			                    // FACE TYPE
            WriterStream.Write( (uint)character.m_iHairStyle );		                    // HAIR TYPE

            WriterStream.Write( (ushort)character.m_Items[2].m_iItemID );	            // CAP
            WriterStream.Write( (ushort)character.m_Items[2].BuildItemRefine() );	    // CAP REFINE
            WriterStream.Write( (ushort)character.m_Items[3].m_iItemID );	            // BODY
            WriterStream.Write( (ushort)character.m_Items[3].BuildItemRefine() );	    // BODY REFINE
            WriterStream.Write( (ushort)character.m_Items[5].m_iItemID );	            // GLOVES
            WriterStream.Write( (ushort)character.m_Items[5].BuildItemRefine() );	    // GLOVES REFINE
            WriterStream.Write( (ushort)character.m_Items[6].m_iItemID );	            // BOOTS
            WriterStream.Write( (ushort)character.m_Items[6].BuildItemRefine() );	    // BOOTS REFINE
            WriterStream.Write( (ushort)character.m_Items[1].m_iItemID );	            // FACE
            WriterStream.Write( (ushort)character.m_Items[1].BuildItemRefine() );	    // FACE REFINE
            WriterStream.Write( (ushort)character.m_Items[4].m_iItemID );	            // BACK
            WriterStream.Write( (ushort)character.m_Items[4].BuildItemRefine() );	    // BACK REFINE 
            WriterStream.Write( (ushort)character.m_Items[7].m_iItemID );	            // WEAPON
            WriterStream.Write( (ushort)character.m_Items[7].BuildItemRefine() );	    // WEAPON REFINE 
            WriterStream.Write( (ushort)character.m_Items[8].m_iItemID );	            // SUBWEAPON
            WriterStream.Write( (ushort)character.m_Items[8].BuildItemRefine() );	    // SUBWEAPON REFINE

            WriterStream.Write( (byte)0x0 );
            WriterStream.Write( (ushort)0x140F );
            WriterStream.Write( (ushort)character.m_iClassID );                         //JOB
            WriterStream.Write( (byte)0x0 );
            WriterStream.Write( (ushort)0x0 );
            WriterStream.Write( (ushort)character.m_iStrength );				        // STR
            WriterStream.Write( (ushort)character.m_iDexterity );				        // DEX
            WriterStream.Write( (ushort)character.m_iIntellect );				        // INT
            WriterStream.Write( (ushort)character.m_iConvergence );				        // CON
            WriterStream.Write( (ushort)character.m_iCharm );				            // CHA
            WriterStream.Write( (ushort)character.m_iSense );				            // SEN
            WriterStream.Write( (ushort)character.m_iCurrentHP );                       // HP
            WriterStream.Write( (ushort)character.m_iCurrentMP );                       // MP
            WriterStream.Write( (ushort)character.m_iExperience );                      // EXP
            WriterStream.Write( (ushort)0x0);
            WriterStream.Write( (ushort)character.m_iLevel );                           // LEVEL
            WriterStream.Write( (ushort)character.m_iStatusPoint );                     // STAT POINTS 
            WriterStream.Write( (ushort)character.m_iSkillPoint );                      // SKILL POINTS 
            WriterStream.Write( (ushort)0x6464 );

            for ( int iIndex = 0; iIndex < 37; iIndex++ )
                WriterStream.Write( (byte)0x0 );                                       // UNKNOWN

            WriterStream.Write( (ushort)character.m_iStamina );                         // STAMINA

            for ( int iIndex = 0; iIndex < 326; iIndex++ )
                WriterStream.Write( (byte)0x0 );                                       // UNKNOWN

            for ( int iIndex = 0; iIndex < 60; iIndex++ )
                WriterStream.Write( (ushort)0 );    // CLASS SKILLS
                //WriterStream.Write( (ushort)character.m_iClassSkills[iIndex].m_iClassSkillID + character.m_iClassSkills[iIndex].m_iLevel - 1 );    // CLASS SKILLS

            for ( int iIndex = 0; iIndex < 260; iIndex++ )
                WriterStream.Write( (ushort)0x0 );                                      // UNKNOWN

            for ( int iIndex = 0; iIndex < 42; iIndex++ )
                WriterStream.Write( (ushort)character.m_iBasicSkills[iIndex] );         // BASIC SKILLS

            for ( int iIndex = 0; iIndex < 48; iIndex++ )
                WriterStream.Write( (ushort)character.m_iQuickBar[iIndex] );            // QUICKBAR

            WriterStream.Write( (uint)character.m_iCharacterGuid );                     // CHARACTER GUID

            for ( int iIndex = 0; iIndex < 80; iIndex++ )
                WriterStream.Write( (byte)0x0 );                                       // UNKNOWN

            WriterStream.WriteAsciiNull( character.m_strCharacter );                    // CHARACTER NAME


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek( 0, SeekOrigin.Begin );
            WriterStream.Write( (ushort)WriterStream.Length );     // ×ֶδóС
      }
        /// <summary>
        /// 
        /// </summary>
        public UserDiedAck( ROSEMobile character )
            : base( 0x07A8, 58 /*6 + 52 */)
        {
            WriterStream.Write( (ushort)58 /*6 + 52*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô

            WriterStream.Write( (ushort)character.m_iClientID );
            WriterStream.Write( (ushort)character.m_posMapID );
            WriterStream.Write( (float)character.X * 100 );
            WriterStream.Write( (float)character.Y * 100 );

            if ( character.m_stance == 0x04 )
                WriterStream.Write( (ushort)0x0201 );
            else
                WriterStream.Write( (ushort)0x0001 );

            for ( int iIndex = 0; iIndex < 15; iIndex++ )
            {
                // Clean Buffs	   
            }
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="netState"></param>
 /// <param name="monsterMobile"></param>
 public static void pakSpawnMonster( NetState netState, ROSEMobile monsterMobile )
 {
 }
        /// <summary>
        /// 
        /// </summary>
        public ShoutAck( ROSEMobile character, string strMessage )
            : base( 0x0785, 0 /*6 + ?*/ )
        {
            WriterStream.Write( (ushort)0 /*6 + ?*/ );      // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.WriteAsciiNull( character.m_strCharacter );
            WriterStream.WriteAsciiNull( strMessage );


            //////////////////////////////////////////////////////////////////////////
            WriterStream.Seek( 0, SeekOrigin.Begin );
            WriterStream.Write( (ushort)WriterStream.Length );     // ×ֶδóС
        }
        /// <summary>
        /// 
        /// </summary>
        public SpawnNPCAck( ROSEMobile character )
            : base( 0x791, 51 /*6 + 45*/ )
        {
            WriterStream.Write( (ushort)51 /*6 + 45*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write( (ushort)character.m_iClientID );
            WriterStream.Write( (float)character.X * 100 );
            WriterStream.Write( (float)character.Y * 100 );
            WriterStream.Write( (float)character.X * 100 );
            WriterStream.Write( (float)character.Y * 100 );
            WriterStream.Write( (sbyte)0x00 );
            WriterStream.Write( (ushort)0x0000 );
            WriterStream.Write( (ushort)0x0000 );
            WriterStream.Write( (ushort)0x03E8 );
            WriterStream.Write( (ushort)0x0000 );
            WriterStream.Write( (ushort)0x0001 );
            WriterStream.Write( (ushort)0x0000 );
            WriterStream.Write( (ushort)0x0000 );
            WriterStream.Write( (ushort)0x0000 );
            WriterStream.Write( (ushort)character.npctype );

            if ( character.dialogid != 0)
                WriterStream.Write( (ushort)character.dialogid );
            else
                WriterStream.Write( (ushort)character.npctype - 900 );

            WriterStream.Write( (float)character.Direction );

            WriterStream.Write( (ushort)0x0000 );
        }
        /// <summary>
        /// 
        /// </summary>
        public ChangeStanceAck( ROSEMobile character )
            : base( 0x782, 9 /*6 + 3*/ )
        {
            WriterStream.Write( (ushort)9 /*6 + 3*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô

            WriterStream.Write( (ushort)character.m_iClientID );
            WriterStream.Write( (byte)character.m_stance );
            WriterStream.Write( (ushort)character.mspeed );
        }
        /// <summary>
        /// 
        /// </summary>
        public NormalChatAck( ROSEMobile character, string strMessage )
            : base( 0x783, 0 /*6 + ?*/ )
        {
            WriterStream.Write( (ushort)0 /*6 + ?*/ );      // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô

            WriterStream.Write( (ushort)character.m_iClientID );
            WriterStream.WriteAsciiNull( strMessage ); 
        }
        /// <summary>
        /// 
        /// </summary>
        public DoEmoteAck( ushort iUshort1, ushort iUshort2, ROSEMobile character )
            : base( 0x781, 12 /*6 + 6*/ )
        {
            WriterStream.Write( (ushort)12 /*6 + 6*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô

            WriterStream.Write( (ushort)iUshort1 );
            WriterStream.Write( (ushort)iUshort2 );
            WriterStream.Write( (ushort)character.m_iClientID );
        }
        /// <summary>
        /// 
        /// </summary>
        public StopCharAck( ROSEMobile character )
            : base( 0x0770, 18 /*6 + 12*/ )
        {
            WriterStream.Write( (ushort)18 /*6 + 12*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô

            WriterStream.Write( (ushort)character.m_iClientID );    // USER ID
            WriterStream.Write( (float)( character.X * 100 ) );	    // POSITION X
            WriterStream.Write( (float)( character.Y * 100 ) );	    // POSITION Y
            WriterStream.Write( (ushort)0x0000 );		            // POSITION Z (NOT USED)
        }
        /// <summary>
        /// 
        /// </summary>
        public WeightAck( ROSEMobile character, long iWeight )
            : base( 0x0762, 9 /*6 + 3 */)
        {
            WriterStream.Write( (ushort)9 /*6 + 3*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô

            WriterStream.Write( (ushort)character.m_iClientID );
            WriterStream.Write( (byte)iWeight );
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="character"></param>
        /// <returns></returns>
        public int BuildBuffs( ROSEMobile character )
        {
            byte buff1 = 0;
            byte buff2 = 0;
            byte buff3 = 0;
            byte buff4 = 0;

            // Build Debuffs and Buffs

            // Up
            if ( character.Attack_up != 0xff )      //A_ATTACK:
                buff2 += character.ATTACK_UP;
            if ( character.Defense_up != 0xff )     //A_DEFENSE:
                buff2 += character.DEFENSE_UP;
            if ( character.Accury_up != 0xff )      //A_ACCUR:
                buff3 += character.HITRATE_UP;
            if ( character.Dash_up != 0xff )        //A_DASH:   
                buff1 += character.DASH_UP;
            if ( character.Haste_up != 0xff )       //A_HASTE:
                buff2 += character.HASTE_UP;
            if ( character.HP_up != 0xff )          //A_HP:
                buff1 += character.HP_UP;
            if ( character.MP_up != 0xff )          //A_MP:
                buff1 += character.MP_UP;
            if ( character.Critical_up != 0xff )    //A_CRITICAL:
                buff1 += character.CRITICAL_UP;
            if ( character.Dodge_up != 0xff )       //A_DODGE:
                buff1 += character.DODGE_UP;

            // Down
            if ( character.Attack_down != 0xff )    // A_ATTACK:
                buff2 += character.ATTACK_DOWN;
            if ( character.Defense_down != 0xff )   //A_DEFENSE:
                buff2 += character.DEFENSE_DOWN;
            if ( character.Accury_down != 0xff )    //A_ACCUR:
                buff3 += character.HITRATE_DOWN;
            if ( character.Dash_down != 0xff )      //A_DASH:   
                buff1 += character.DASH_DOWN;
            if ( character.Haste_down != 0xff )     //A_HASTE:
                buff2 += character.HASTE_DOWN;
            if ( character.HP_down != 0xff )        //A_HP:
                buff1 += 0;
            if ( character.MP_down != 0xff )        //A_MP:
                buff1 += 0;
            if ( character.Critical_down != 0xff )  //A_CRITICAL:
                buff1 += character.CRITICAL_DOWN;
            if ( character.owner != 0 )
                buff3 += character.SUMMON;

            return ( buff1 * 0x01 ) + ( buff2 * 0x100 ) + ( buff3 * 0x10000 ) + ( buff4 * 0x1000000 );
        }
        /// <summary>
        /// 
        /// </summary>
        internal Unknown0x0753Ack( ROSEMobile character )
            : base( 0x753, 52 /*6 + 46*/ )
        {
            WriterStream.Write( (ushort)52 /*6 + 46*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write( (ushort)character.m_iClientID );			// USER ID
            WriterStream.Write( (ushort)character.m_iCurrentHP );		    // CURRENT HP
            WriterStream.Write( (ushort)character.m_iCurrentMP );		    // CURRENT MP
            WriterStream.Write( (uint)character.m_iExperience );            // CURRENT EXP
            WriterStream.Write( (uint)0x00000000 );			                // LVL EXP (UNSUSED)

            //[economy] 
            WriterStream.Write( (ushort)0x0063 );  // World Rate

            WriterStream.Write( (byte)0x70 );
            WriterStream.Write( (byte)0x69 );
            WriterStream.Write( (byte)0x68 );
            WriterStream.Write( (byte)0x67 );

            WriterStream.Write( (ushort)0x0062 );  // Town rate

            WriterStream.Write( (byte)0x61 ); // misc rate
            WriterStream.Write( (byte)0x32 ); // 1
            WriterStream.Write( (byte)0x32 ); // 2
            WriterStream.Write( (byte)0x32 ); // 3
            WriterStream.Write( (byte)0x32 ); // 4
            WriterStream.Write( (byte)0x32 ); // 5
            WriterStream.Write( (byte)0x32 ); // 6
            WriterStream.Write( (byte)0x32 ); // 7
            WriterStream.Write( (byte)0x32 ); // 8
            WriterStream.Write( (byte)0x32 ); // 9
            WriterStream.Write( (byte)0x32 ); // 10
            WriterStream.Write( (byte)0x32 ); // 11

            if (character.m_posMapData.pvp == true)
                WriterStream.Write( (ushort)0x0001 ); // player vs player map
            else
                WriterStream.Write( (ushort)0x0000 ); // non player vs player map

            WriterStream.Write( (ushort)0x0000 ); // ?

            // This 3 are to the world time (night/day...)
            WriterStream.Write( (byte)character.m_iCurrentWorldTime );
            WriterStream.Write( (byte)0xDE );
            WriterStream.Write( (ushort)0x0008 ); // this change something in the mapicon (time)

            if ( character.m_posMapData.pvp == true )
            {
                WriterStream.Write( (ushort)0x0000 ); // red icon (map)
                WriterStream.Write( (ushort)0x0005 ); // red icon (map)
            }
            else
            {
                WriterStream.Write( (ushort)0x0002 ); // white icon (map)
                WriterStream.Write( (ushort)0x0000 ); // white icon (map)
            }
      }
        /// <summary>
        /// 
        /// </summary>
        public SpawnMonsterAck( ROSEMobile character )
            : base( 0x792, 45 /*6 + 39*/ )
        {
            WriterStream.Write( (ushort)45 /*6 + 39*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write( (ushort)character.m_iClientID );
            WriterStream.Write( (float)character.X * 100 );
            WriterStream.Write( (float)character.Y * 100 );
            WriterStream.Write( (float)character.m_DestinePoint3D.X * 100 );
            WriterStream.Write( (float)character.m_DestinePoint3D.Y * 100 );

            if ( character.Hits <= 0 )
            {
                WriterStream.Write( (ushort)0x0003 );
                WriterStream.Write( (ushort)0x0000 );
            }
            else if ( character.targetid != 0 )
            {
                WriterStream.Write( (ushort)0x0002 );
                WriterStream.Write( (ushort)character.targetid );
            }
            else if ( character.X != character.m_DestinePoint3D.X || character.Y != character.m_DestinePoint3D.Y )
            {
                WriterStream.Write( (ushort)0x0001 );
                WriterStream.Write( (ushort)0x0000 );
            }
            else
            {
                WriterStream.Write( (ushort)0x0000 );
                WriterStream.Write( (ushort)0x0000 );
            }

            WriterStream.Write( (sbyte)0x00 );
            WriterStream.Write( (uint)character.Hits );

            if ( character.owner == 0 && character.m_posMapData.pvp )
                WriterStream.Write( (uint)0x00000064 ); // Hostil µÐ¶Ô
            else
                WriterStream.Write( (uint)0x00000000 ); // Friendly ÅóÓÑ

            WriterStream.Write( (uint)BuildBuffs( character ) );

            WriterStream.Write( (ushort)character.montype );
            WriterStream.Write( (ushort)0x0000 );

            if ( character.owner != 0 )
            {
                WriterStream.Write( (ushort)character.owner );
                WriterStream.Write( (ushort)0x0000 ); //id del skill (si es summon de skill)
            }
        }
        /// <summary>
        /// 
        /// </summary>
        internal Unknown0x0762Ack( ROSEMobile character )
            : base( 0x762, 9 /*6 + 3*/ )
        {
            WriterStream.Write( (ushort)9 /*6 + 3*/ );     // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write( (ushort)character.m_iClientID );       // USER ID
            WriterStream.Write( (sbyte)0x01 );			                 // SOMETHING TO DO WITH WEIGHT
        }
        /// <summary>
        /// 
        /// </summary>
        public MoveCharAck( ROSEMobile character )
            : base( 0x079A, 22 /*6 + 16*/)
        {
            WriterStream.Write( (ushort)22 /*6 + 16*/ );    // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write( (ushort)character.m_iClientID );    // USER ID
            WriterStream.Write( (ushort)character.targetid );		// TARGET
            WriterStream.Write( (ushort)character.mspeed );	        // MSPEED
            WriterStream.Write( (float)( character.X * 100 ) );	    // POSITION X
            WriterStream.Write( (float)( character.Y * 100 ) );	    // POSITION Y
            WriterStream.Write( (ushort)0x0000 );		            // POSITION Z (NOT USED)
        }
        /// <summary>
        /// 
        /// </summary>
        internal Unknown0x0782Ack( ROSEMobile character )
            : base( 0x782, 9 /*6 + 3*/ )
        {
            WriterStream.Write( (ushort)9 /*6 + 3*/ );      // ×ֶδóС
            WriterStream.Write( (ushort)base.PacketID );    // ×ֶαàºÅ
            WriterStream.Write( (ushort)0x00 );             // ×ֶα£Áô
            //////////////////////////////////////////////////////////////////////////


            WriterStream.Write( (ushort)character.m_iClientID );
            WriterStream.Write( (sbyte)character.m_iSense );
        }
Example #20
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="newNetState"></param>
        public static void NetState_InitializeNetState( NetState newNetState )
        {
            if ( newNetState.EncoderSeed == null && newNetState.ExtendData == null )
            {
                // 初始化客户端加密的数据种子
                newNetState.EncoderSeed = m_CryptTableBuffers.AcquireBuffer();
                Buffer.BlockCopy( ROSECrypt.Instance().CryptTableBuffer, 0, newNetState.EncoderSeed, 0, ROSECrypt.Instance().CryptTableBuffer.Length );

                ROSEMobile l_ROSEMobile = new ROSEMobile();
                newNetState.Mobile = l_ROSEMobile;

                l_ROSEMobile.Player = true;
                l_ROSEMobile.NetState = newNetState;

                WorldServerExtendData l_ExtendData = new WorldServerExtendData();
                l_ExtendData.ROSEMobile = l_ROSEMobile;

                newNetState.ExtendData = l_ExtendData;
            }
            else
                Debug.WriteLine( "ProcessNet.MessagePump_ProcessReceive(...) - newNetState.Seed != null error!" );
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="netState"></param>
 /// <param name="npcMobile"></param>
 public static void pakSpawnNPC( NetState netState, ROSEMobile npcMobile )
 {
 }