public byte   IsPutOn;        //是否穿戴

    public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false)
    {
        ms.SetLength(0);
        if (!isChild)
        {
            ms.WriteUShort(ProtoCode);
        }

        ms.WriteInt(EnchantLevel);
        ms.WriteByte(BaseAttr1Type);
        ms.WriteInt(BaseAttr1Value);
        ms.WriteByte(BaseAttr2Type);
        ms.WriteInt(BaseAttr2Value);
        ms.WriteInt(HP);
        ms.WriteInt(MP);
        ms.WriteInt(Attack);
        ms.WriteInt(Defense);
        ms.WriteInt(Hit);
        ms.WriteInt(Dodge);
        ms.WriteInt(Cri);
        ms.WriteInt(Res);
        ms.WriteByte(IsPutOn);

        return(ms.ToArray());
    }
示例#2
0
    /// <summary>
    /// 封装数据包
    /// </summary>
    /// <param name="buffer"></param>
    private byte[] MakeDataPackage(byte[] buffer)
    {
        //1.压缩
        bool isCompress = buffer.Length > m_CompressLen;

        if (isCompress)
        {
            buffer = ZlibHelper.CompressBytes(buffer);
        }

        //2.异或
        buffer = SecurityUtil.Xor(buffer);

        //3.计算CRC
        ushort crc = Crc16.CalculateCrc16(buffer);

        byte[] retData;
        using (MMO_MemoryStream ms = new MMO_MemoryStream())
        {
            ms.WriteUShort((ushort)(buffer.Length + 3));
            ms.WriteBool(isCompress);
            ms.WriteUShort(crc);
            ms.Write(buffer, 0, buffer.Length);
            retData = ms.ToArray();
        }
        return(retData);
    }
    public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false)
    {
        ms.SetLength(0);
        if (!isChild)
        {
            ms.WriteUShort(ProtoCode);
        }

        ms.WriteInt(RoleCount);
        for (int i = 0; i < RoleCount; i++)
        {
            var item = ItemList[i];
            ms.WriteInt(item.RoleId);
            ms.WriteUTF8String(item.RoleNickName);
            ms.WriteInt(item.RoleLevel);
            ms.WriteInt(item.RoleMaxHP);
            ms.WriteInt(item.RoleCurrHP);
            ms.WriteInt(item.RoleMaxMP);
            ms.WriteInt(item.RoleCurrMP);
            ms.WriteInt(item.RoleJobId);
            ms.WriteFloat(item.RolePosX);
            ms.WriteFloat(item.RolePosY);
            ms.WriteFloat(item.RolePosZ);
            ms.WriteFloat(item.RoleYAngle);
        }

        return(ms.ToArray());
    }
    public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false)
    {
        ms.SetLength(0);
        if (!isChild)
        {
            ms.WriteUShort(ProtoCode);
        }

        ms.WriteInt(GameLevelId);
        ms.WriteByte(Grade);
        ms.WriteByte(Star);
        ms.WriteInt(Exp);
        ms.WriteInt(Gold);
        ms.WriteInt(KillTotalMonsterCount);
        for (int i = 0; i < KillTotalMonsterCount; i++)
        {
            var item = KillMonsterList[i];
            ms.WriteInt(item.MonsterId);
            ms.WriteInt(item.MonsterCount);
        }
        ms.WriteInt(GoodsTotalCount);
        for (int i = 0; i < GoodsTotalCount; i++)
        {
            var item = GetGoodsList[i];
            ms.WriteByte(item.GoodsType);
            ms.WriteInt(item.GoodsId);
            ms.WriteInt(item.GoodsCount);
        }

        return(ms.ToArray());
    }
示例#5
0
    public byte[] ToArray(bool isChild = false)
    {
        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
            ms.SetLength(0);
            ms.WriteUShort(ProtoCode);
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
            ms.SetLength(0);
        }

        ms.WriteInt(RoleCount);
        for (int i = 0; i < RoleCount; i++)
        {
            var item = RoleList[i];
            ms.WriteInt(item.RoleId);
            ms.WriteUTF8String(item.RoleNickName);
            ms.WriteByte(item.RoleJob);
            ms.WriteInt(item.RoleLevel);
        }

        byte[] retBuffer = ms.ToArray();
        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(retBuffer);
    }
示例#6
0
    /// <summary>
    /// 封装数据包
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    private byte[] MakeData(byte[] data)
    {
        byte[] retBuffer = null;
        //0.压缩标志 //数据包长度大于设定长度则压缩
        bool isCompress = data.Length > m_CompressLength ? true : false;

        if (isCompress)
        {
            data = ZlibHelper.CompressBytes(data);
        }

        //1.异或
        data = SecurityUtil.Xor(data);

        //2.CRC校验
        ushort crc = Crc16.CalculateCrc16(data);

        using (MMO_MemoryStream ms = new MMO_MemoryStream())
        {
            //3.写入包长度
            //往ms中写入数据(包长度),数据的长度+压缩标志(1byte)+CRC校验(UShort(2byte))
            ms.WriteUShort((ushort)(data.Length + 3));
            //往ms中写入数据(压缩标识)
            ms.WriteBool(isCompress);
            ms.WriteUShort(crc);
            ms.Write(data, 0, data.Length);

            retBuffer = ms.ToArray();
        }

        return(retBuffer);
    }
示例#7
0
    public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false)
    {
        ms.SetLength(0);
        if (!isChild)
        {
            ms.WriteUShort(ProtoCode);
        }

        ms.WriteInt(AttackRoleId);
        ms.WriteInt(SkillId);
        ms.WriteInt(SkillLevel);
        ms.WriteFloat(RolePosX);
        ms.WriteFloat(RolePosY);
        ms.WriteFloat(RolePosZ);
        ms.WriteFloat(RoleYAngle);
        ms.WriteInt(BeAttackCount);
        for (int i = 0; i < BeAttackCount; i++)
        {
            var item = ItemList[i];
            ms.WriteInt(item.BeAttackRoleId);
            ms.WriteInt(item.ReduceHp);
            ms.WriteByte(item.IsCri);
        }

        return(ms.ToArray());
    }
示例#8
0
    public int    SellCount;      //出售数量

    public byte[] ToArray(bool isChild = false)
    {
        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
            ms.SetLength(0);
            ms.WriteUShort(ProtoCode);
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
            ms.SetLength(0);
        }

        ms.WriteInt(roleBackpackId);
        ms.WriteByte(GoodsType);
        ms.WriteInt(GoodsId);
        ms.WriteInt(GoodsServerId);
        ms.WriteInt(SellCount);

        byte[] retBuffer = ms.ToArray();
        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(retBuffer);
    }
    public byte[] ToArray(bool isChild = false)
    {
        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
            ms.SetLength(0);
            ms.WriteUShort(ProtoCode);
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
            ms.SetLength(0);
        }

        ms.WriteInt(BackpackItemCount);
        for (int i = 0; i < BackpackItemCount; i++)
        {
            var item = ItemList[i];
            ms.WriteInt(item.BackpackItemId);
            ms.WriteByte(item.GoodsType);
            ms.WriteInt(item.GoodsId);
            ms.WriteInt(item.GoodsServerId);
            ms.WriteInt(item.GoodsOverlayCount);
        }

        byte[] retBuffer = ms.ToArray();
        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(retBuffer);
    }
示例#10
0
 public byte[] ToArray()
 {
     using (MMO_MemoryStream ms = new MMO_MemoryStream())
     {
         ms.WriteUShort(ProtoCode);
         ms.WriteBool(IsSucess);
         if (IsSucess)
         {
             ms.WriteUTF8String(RoleNickName);
             ms.WriteInt(Level);
             ms.WriteInt(RoleId);
             ms.WriteInt(JobId);
             ms.WriteInt(Money);
             ms.WriteInt(Gold);
             ms.WriteInt(Exp);
             ms.WriteInt(MaxHP);
             ms.WriteInt(CurrentHP);
             ms.WriteInt(MaxMP);
             ms.WriteInt(CurrentMP);
             ms.WriteInt(Attack);
             ms.WriteInt(Defense);
             ms.WriteInt(Hit);
             ms.WriteInt(Dodge);
             ms.WriteInt(Cri);
             ms.WriteInt(Fighting);
             ms.WriteInt(Res);
             ms.WriteInt(LastSceneId);
         }
         else
         {
             ms.WriteInt(MessageId);
         }
         return(ms.ToArray());
     }
 }
示例#11
0
    public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false)
    {
        ms.SetLength(0);
        if (!isChild)
        {
            ms.WriteUShort(ProtoCode);
        }

        ms.WriteInt(RoleType);

        byte[] buff_CurrRole = CurrRole.ToArray(new MMO_MemoryStream(), true);
        ms.WriteInt(buff_CurrRole.Length);
        ms.Write(buff_CurrRole, 0, buff_CurrRole.Length);

        if (RoleList != null)
        {
            int len_RoleList = RoleList.Count;
            ms.WriteInt(len_RoleList);
            for (int i = 0; i < len_RoleList; i++)
            {
                Role_DataProto _Role_DataProto = RoleList[i];
                byte[]         _buff_Curr      = _Role_DataProto.ToArray(new MMO_MemoryStream(), true);
                ms.WriteInt(_buff_Curr.Length);
                ms.Write(_buff_Curr, 0, _buff_Curr.Length);
            }
        }
        else
        {
            ms.WriteInt(0);
        }

        return(ms.ToArray());
    }
示例#12
0
    public byte[] ToArray(bool isChild = false)
    {
        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
            ms.SetLength(0);
            ms.WriteUShort(ProtoCode);
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
            ms.SetLength(0);
        }

        ms.WriteInt(TaskCount);
        for (int i = 0; i < TaskCount; i++)
        {
            var item = CurrTaskItemList[i];
            ms.WriteInt(item.Id);
            ms.WriteUTF8String(item.Name);
            ms.WriteInt(item.Status);
            ms.WriteUTF8String(item.Content);
        }

        byte[] retBuffer = ms.ToArray();
        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(retBuffer);
    }
示例#13
0
    public List <int> ItemNameList; //道具名称



    public byte[] ToArray()
    {
        using (MMO_MemoryStream ms = new MMO_MemoryStream())
        {
            ms.WriteUShort(ProtoCode);
            ms.WriteInt(Count);
            ms.WriteBool(IsSuccess);
            if (IsSuccess)
            {
                ms.WriteUTF8String(SuccMsg);
                ms.WriteUTF8String(SuccCode);
            }
            else
            {
                ms.WriteInt(ErrorCode);
            }
            ms.WriteInt(ItemCount);
            for (int i = 0; i < ItemCount; i++)
            {
                ms.WriteInt(ItemIdList[i]);
                ms.WriteInt(ItemNameList[i]);
            }
            return(ms.ToArray());
        }
    }
 public byte[] ToArray()
 {
     using (MMO_MemoryStream ms = new MMO_MemoryStream())
     {
         ms.WriteUShort(ProtoCode);
         ms.WriteInt(GameLevelId);
         ms.WriteByte(Grade);
         ms.WriteByte(Star);
         ms.WriteInt(Exp);
         ms.WriteInt(Gold);
         ms.WriteInt(KillTotalMonsterCount);
         for (int i = 0; i < KillTotalMonsterCount; i++)
         {
             ms.WriteInt(KillMonsterList[i].MonsterId);
             ms.WriteInt(KillMonsterList[i].MonsterCount);
         }
         ms.WriteInt(GoodsTotalCount);
         for (int i = 0; i < GoodsTotalCount; i++)
         {
             ms.WriteByte(GetGoodsList[i].GoodsType);
             ms.WriteInt(GetGoodsList[i].GoodsId);
             ms.WriteInt(GetGoodsList[i].GoodsCount);
         }
         return(ms.ToArray());
     }
 }
示例#15
0
        public void Recharge(Socket socket)
        {
            int len = socket.Receive(m_ReceiveBuffer);

            using (MMO_MemoryStream stream = new MMO_MemoryStream())
            {
                stream.Write(m_ReceiveBuffer, 0, len);

                byte[] buff = stream.ToArray();

                string str = System.Text.UTF8Encoding.UTF8.GetString(buff);

                Console.WriteLine("游戏服收到 {0}", str);
                //处理充值的逻辑

                string[] arr = str.Split('_');

                short channelId         = arr[0].ToShort();
                int   roleId            = arr[1].ToInt();
                int   rechargeProductId = arr[2].ToInt();

                Role role = RoleMgr.Instance.GetRole(roleId);
                if (role != null)
                {
                    role.Recharge(channelId, rechargeProductId); //游戏服 告诉这个这个角色 我要给你充值 充值的产品id=rechargeProductId
                }

                buff = null;
                socket.Disconnect(false);
                socket.Dispose();
            }
        }
示例#16
0
    /// <summary>
    /// 沾包,加密数据包
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    public byte[] MakeData(byte[] data)
    {
        byte[] retBuffer = null;
        //1、是否压缩
        bool IsComPressLen = data.Length > mComPressLen ? true : false;

        if (IsComPressLen)
        {
            //压缩
            data = ZlibHelper.CompressBytes(data);
        }
        //2、异或
        data = SecurityUtil.Xor(data);
        //3、crc校验
        ushort crc = CRC16.CalculateCrc16(data);

        using (MMO_MemoryStream ms = new MMO_MemoryStream())
        {
            //1、包头(+3==Crc(2字节)+IsComPressLen(2字节))
            ms.WriteUShort((ushort)(data.Length + 3));
            ms.WriteBool(IsComPressLen);
            ms.WriteUShort(crc);
            ms.Write(data, 0, data.Length);
            retBuffer = ms.ToArray();
        }
        return(retBuffer);
    }
示例#17
0
    public int    GoodsId;   //物品编号

    public byte[] ToArray(bool isChild = false)
    {
        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
            ms.SetLength(0);
            ms.WriteUShort(ProtoCode);
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
            ms.SetLength(0);
        }

        ms.WriteBool(IsSuccess);
        if (IsSuccess)
        {
            ms.WriteInt(GoodsId);
        }
        else
        {
            ms.WriteInt(MsgCode);
        }

        byte[] retBuffer = ms.ToArray();
        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(retBuffer);
    }
示例#18
0
    public int    NeedTime;   //客户端移动所需时间

    public byte[] ToArray(bool isChild = false)
    {
        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
            ms.SetLength(0);
            ms.WriteUShort(ProtoCode);
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
            ms.SetLength(0);
        }

        ms.WriteInt(RoleId);
        ms.WriteFloat(TargetPosX);
        ms.WriteFloat(TargetPosY);
        ms.WriteFloat(TargetPosZ);
        ms.WriteLong(ServerTime);
        ms.WriteInt(NeedTime);

        byte[] retBuffer = ms.ToArray();
        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(retBuffer);
    }
示例#19
0
        /// <summary>
        /// 封装数据包
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private byte[] MakeData(byte[] data)
        {
            byte[] retBuffer = null;

            //1.长度压缩判断
            bool isCompress = data.Length > m_CompressLen ? true : false;

            if (isCompress)
            {
                //2.进行压缩
                data = ZlibHelper.CompressBytes(data);
            }

            //3.异或
            data = SecurityUtil.Xor(data);
            //4.异或因子 Crc 校验码
            ushort crc = Crc16.CalculateCrc16(data);

            Console.WriteLine("crc=" + crc);

            //写入
            using (MMO_MemoryStream ms = new MMO_MemoryStream())
            {
                ms.WriteUShort((ushort)(data.Length + 3)); //数据长度
                ms.WriteBool(isCompress);                  //压缩判断
                ms.WriteUShort(crc);                       //异或
                ms.Write(data, 0, data.Length);            //数据写入
                retBuffer = ms.ToArray();
            }
            return(retBuffer);
        }
示例#20
0
    /// <summary>
    /// 封装数据包
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    private byte[] MakeData(byte[] data)
    {
        byte[] retBuffer = null;

        //1.如果数据包的长度 大于了m_CompressLen 则进行压缩
        bool isCompress = data.Length > m_CompressLen ? true : false;

        if (isCompress)
        {
            data = ZlibHelper.CompressBytes(data);
        }

        //2.异或
        data = SecurityUtil.Xor(data);

        //3.Crc校验 压缩后的
        ushort crc = Crc16.CalculateCrc16(data);

        using (MMO_MemoryStream ms = new MMO_MemoryStream())
        {
            ms.WriteUShort((ushort)(data.Length + 3));
            ms.WriteBool(isCompress);
            ms.WriteUShort(crc);
            ms.Write(data, 0, data.Length);

            retBuffer = ms.ToArray();
        }
        return(retBuffer);
    }
示例#21
0
        /// <summary>
        /// 封装数据包
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private byte[] MakeData(byte[] data)
        {
            byte[] retBuffer = null;

            //1.如果数据包的长度 大于了m_CompressLen 则进行压缩
            bool isCompress = data.Length > m_CompressLen ? true : false;

            if (isCompress)
            {
                data = ZlibHelper.CompressBytes(data);
            }

            //2.异或
            data = SecurityUtil.Xor(data);

            //3.Crc校验 压缩后的
            ushort crc = Crc16.CalculateCrc16(data);

            Console.WriteLine("crc=" + crc);
            MMO_MemoryStream ms = this.m_SocketSendMS;

            ms.SetLength(0);

            ms.WriteUShort((ushort)(data.Length + 3));
            ms.WriteBool(isCompress);
            ms.WriteUShort(crc);
            ms.Write(data, 0, data.Length);

            retBuffer = ms.ToArray();
            return(retBuffer);
        }
示例#22
0
        /// <summary>
        /// 创建包数据:包头+包体
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        private byte[] MakeData(byte[] buffer)
        {
            //1.压缩
            bool isCompress = buffer.Length > m_CompressLen ? true : false;

            if (isCompress)
            {
                buffer = ZlibHelper.CompressBytes(buffer);
            }
            //2.CRC1校验
            ushort crc = Crc16.CalculateCrc16(buffer);

            Console.WriteLine(crc);
            //3.异或
            buffer = SecurityUtil.Xor(buffer);

            using (MMO_MemoryStream ms = new MMO_MemoryStream())
            {
                //包头长度 压缩标识1+CRC16校验+buffer的长度
                ms.WriteUShort((ushort)(buffer.Length + 3));
                ms.WriteBool(isCompress);
                ms.WriteUShort(crc);
                ms.Write(buffer, 0, buffer.Length);
                return(ms.ToArray());
            }
        }
示例#23
0
        // 封装数据包
        byte[] MakeData(byte[] data)
        {
            byte[] retBuffer = null;
            // 1.1 压缩
            bool isCompress = data.Length > m_CompressLen;

            if (isCompress)
            {
                data = ZlibHelper.CompressBytes(data);
            }
            // 2 异或加密
            data = SecurityUtil.Xor(data);
            // 3 加验证
            ushort crc = Crc16.CalculateCrc16(data);

            using (MMO_MemoryStream ms = new MMO_MemoryStream())
            {
                ms.WriteUShort((ushort)(data.Length + 3));
                ms.WriteBool(isCompress);
                ms.WriteUShort(crc);
                ms.Write(data, 0, data.Length);

                retBuffer = ms.ToArray();
            }

            return(retBuffer);
        }
示例#24
0
    public byte[] ToArray(bool isChild = false)
    {
        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
            ms.SetLength(0);
            ms.WriteUShort(ProtoCode);
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
            ms.SetLength(0);
        }

        ms.WriteInt(ConfigCount);
        for (int i = 0; i < ConfigCount; i++)
        {
            var item = ServerConfigList[i];
            ms.WriteUTF8String(item.ConfigCode);
            ms.WriteBool(item.IsOpen);
            ms.WriteUTF8String(item.Param);
        }

        byte[] retBuffer = ms.ToArray();
        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(retBuffer);
    }
示例#25
0
    public float  yAngle; //y轴旋转

    public byte[] ToArray(bool isChild = false)
    {
        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
            ms.SetLength(0);
            ms.WriteUShort(ProtoCode);
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
            ms.SetLength(0);
        }

        ms.WriteFloat(x);
        ms.WriteFloat(y);
        ms.WriteFloat(z);
        ms.WriteFloat(yAngle);

        byte[] retBuffer = ms.ToArray();
        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(retBuffer);
    }
示例#26
0
    public int    MagicDefense;          //魔法防御力

    public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false)
    {
        ms.SetLength(0);
        if (!isChild)
        {
            ms.WriteUShort(ProtoCode);
        }

        ms.WriteBool(IsSuccess);
        if (IsSuccess)
        {
            ms.WriteInt(RoldId);
            ms.WriteUTF8String(RoleNickName);
            ms.WriteByte(JobId);
            ms.WriteInt(Level);
            ms.WriteInt(TotalRechargeMoney);
            ms.WriteInt(Money);
            ms.WriteInt(Gold);
            ms.WriteInt(Exp);
            ms.WriteInt(MaxHP);
            ms.WriteInt(MaxMP);
            ms.WriteInt(CurrHP);
            ms.WriteInt(CurrMP);
            ms.WriteInt(ToSpeed);
            ms.WriteInt(WeaponDamageMin);
            ms.WriteInt(WeaponDamageMax);
            ms.WriteInt(AttackNumber);
            ms.WriteInt(StrikePower);
            ms.WriteInt(PiercingPower);
            ms.WriteInt(MagicPower);
            ms.WriteInt(LastInWorldMapId);
            ms.WriteUTF8String(LastInWorldMapPos);
            ms.WriteInt(Equip_Weapon);
            ms.WriteInt(Equip_Pants);
            ms.WriteInt(Equip_Clothes);
            ms.WriteInt(Equip_Belt);
            ms.WriteInt(Equip_Cuff);
            ms.WriteInt(Equip_Necklace);
            ms.WriteInt(Equip_Shoe);
            ms.WriteInt(Equip_Ring);
            ms.WriteInt(Equip_WeaponTableId);
            ms.WriteInt(Equip_PantsTableId);
            ms.WriteInt(Equip_ClothesTableId);
            ms.WriteInt(Equip_BeltTableId);
            ms.WriteInt(Equip_CuffTableId);
            ms.WriteInt(Equip_NecklaceTableId);
            ms.WriteInt(Equip_ShoeTableId);
            ms.WriteInt(Equip_RingTableId);
            ms.WriteInt(ChoppingDefense);
            ms.WriteInt(PuncturDefense);
            ms.WriteInt(MagicDefense);
        }
        else
        {
            ms.WriteInt(MsgCode);
        }

        return(ms.ToArray());
    }
示例#27
0
 public byte[] ToArray()
 {
     using (MMO_MemoryStream ms = new MMO_MemoryStream())
     {
         ms.WriteUShort(ProtoCode);
         return(ms.ToArray());
     }
 }
示例#28
0
 public byte[] Creadata(string str)
 {
     using (MMO_MemoryStream ms = new MMO_MemoryStream())
     {
         ms.WriteUTF8String(str);
         return(ms.ToArray());
     }
 }
示例#29
0
    /*
     * private void GetCallBack(NetWorkHttp.CallBackArgs obj)
     * {
     *
     * if (obj.HasError)//如果返回为空
     * {
     * Debug.Log(obj.ErrorMsg);
     * }
     * else
     * {
     * //AccountEntity entity = LitJson.JsonMapper.ToObject<AccountEntity>(obj.Json);
     * Debug.Log(obj.Json);
     * }
     *
     *
     * }
     *
     * private void PostCallBack(NetWorkHttp.CallBackArgs obj)
     * {
     *
     * if (obj.HasError)//如果返回为空
     * {
     * Debug.Log(obj.ErrorMsg);
     * }
     * else
     * {
     * Debug.Log(obj.Json);
     * }
     *
     *
     * }
     */

    private void Send(string msg)
    {
        //2.发消息
        using (MMO_MemoryStream ms = new MMO_MemoryStream())
        {
            ms.WriteUTF8String(msg);
            NetWorkSocket.Instance.SendMsg(ms.ToArray());
        }
    }
示例#30
0
        /// <summary>
        /// 检查发送队列
        /// </summary>
        private void CheckSendQueue()
        {
            if (m_SendCount >= GameEntry.Socket.MaxSendCount)
            {
                //等待下一帧发送
                m_SendCount = 0;
                return;
            }

            lock (m_SendQueue)
            {
                if (m_SendQueue.Count > 0 || m_IsHasUnDealBytes)
                {
                    //int smallCount = 0;

                    MMO_MemoryStream ms = m_SocketSendMS;
                    ms.SetLength(0);

                    //先处理未处理的包
                    if (m_IsHasUnDealBytes)
                    {
                        m_IsHasUnDealBytes = false;
                        ms.Write(m_UnDealBytes, 0, m_UnDealBytes.Length);
                        //smallCount++;
                    }

                    while (true)
                    {
                        if (m_SendQueue.Count == 0)
                        {
                            break;
                        }

                        //取出一个字节数组
                        byte[] buffer = m_SendQueue.Dequeue();

                        if ((buffer.Length + ms.Length) <= GameEntry.Socket.MaxSendByteCount)
                        {
                            //smallCount++;
                            ms.Write(buffer, 0, buffer.Length);
                        }
                        else
                        {
                            //已经取出了一个要发送的字节数组
                            m_UnDealBytes      = buffer;
                            m_IsHasUnDealBytes = true;
                            break; //非常重要
                        }
                    }

                    m_SendCount++;
                    //Debug.LogError("拼凑了小包数量=" + smallCount);
                    Send(ms.ToArray());
                }
            }
        }