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);
    }
예제 #2
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);
    }
예제 #3
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);
    }
예제 #4
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);
    }
예제 #5
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);
    }
예제 #6
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);
    }
예제 #7
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);
    }
예제 #8
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);
    }
    public static Goods_SearchEquipDetailProto GetProto(byte[] buffer, bool isChild = false)
    {
        Goods_SearchEquipDetailProto proto = new Goods_SearchEquipDetailProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.GoodsServerId = ms.ReadInt();

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
예제 #10
0
    public static WorldMap_PosProto GetProto(byte[] buffer, bool isChild = false)
    {
        WorldMap_PosProto proto = new WorldMap_PosProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.x      = ms.ReadFloat();
        proto.y      = ms.ReadFloat();
        proto.z      = ms.ReadFloat();
        proto.yAngle = ms.ReadFloat();

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
예제 #11
0
    public static Task_SearchTaskProto GetProto(byte[] buffer, bool isChild = false)
    {
        Task_SearchTaskProto proto = new Task_SearchTaskProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;


        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
    public static Backpack_GoodsChangeReturnProto GetProto(byte[] buffer)
    {
        Backpack_GoodsChangeReturnProto proto = new Backpack_GoodsChangeReturnProto();
        MMO_MemoryStream ms = GameEntry.Socket.SocketReceiveMS;

        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.BackpackItemChangeCount = ms.ReadInt();
        proto.ItemList = new List <ChangeItem>();
        for (int i = 0; i < proto.BackpackItemChangeCount; i++)
        {
            ChangeItem _Item = new ChangeItem();
            _Item.BackpackId    = ms.ReadInt();
            _Item.ChangeType    = (byte)ms.ReadByte();
            _Item.GoodsType     = (byte)ms.ReadByte();
            _Item.GoodsId       = ms.ReadInt();
            _Item.GoodsCount    = ms.ReadInt();
            _Item.GoodsServerId = ms.ReadInt();
            proto.ItemList.Add(_Item);
        }

        return(proto);
    }
    public static WorldMap_CurrRoleUseSkillProto GetProto(MMO_MemoryStream ms, byte[] buffer)
    {
        WorldMap_CurrRoleUseSkillProto proto = new WorldMap_CurrRoleUseSkillProto();

        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.SkillId       = ms.ReadInt();
        proto.SkillLevel    = ms.ReadInt();
        proto.RolePosX      = ms.ReadFloat();
        proto.RolePosY      = ms.ReadFloat();
        proto.RolePosZ      = ms.ReadFloat();
        proto.RoleYAngle    = ms.ReadFloat();
        proto.BeAttackCount = ms.ReadInt();
        proto.ItemList      = new List <BeAttackItem>();
        for (int i = 0; i < proto.BeAttackCount; i++)
        {
            BeAttackItem _Item = new BeAttackItem();
            _Item.BeAttackRoleId = ms.ReadInt();
            proto.ItemList.Add(_Item);
        }

        return(proto);
    }
예제 #14
0
    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());
    }
예제 #15
0
    public static System_HeartbeatReturnProto GetProto(byte[] buffer, bool isChild = false)
    {
        System_HeartbeatReturnProto proto = new System_HeartbeatReturnProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.LocalTime  = ms.ReadFloat();
        proto.ServerTime = ms.ReadLong();

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
예제 #16
0
    public static WorldMap_InitRoleProto GetProto(MMO_MemoryStream ms, byte[] buffer)
    {
        WorldMap_InitRoleProto proto = new WorldMap_InitRoleProto();

        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.RoleCount = ms.ReadInt();
        proto.ItemList  = new List <RoleItem>();
        for (int i = 0; i < proto.RoleCount; i++)
        {
            RoleItem _Item = new RoleItem();
            _Item.RoleId       = ms.ReadInt();
            _Item.RoleNickName = ms.ReadUTF8String();
            _Item.RoleLevel    = ms.ReadInt();
            _Item.RoleMaxHP    = ms.ReadInt();
            _Item.RoleCurrHP   = ms.ReadInt();
            _Item.RoleMaxMP    = ms.ReadInt();
            _Item.RoleCurrMP   = ms.ReadInt();
            _Item.RoleJobId    = ms.ReadInt();
            _Item.RolePosX     = ms.ReadFloat();
            _Item.RolePosY     = ms.ReadFloat();
            _Item.RolePosZ     = ms.ReadFloat();
            _Item.RoleYAngle   = ms.ReadFloat();
            proto.ItemList.Add(_Item);
        }

        return(proto);
    }
예제 #17
0
    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 static WorldMap_OtherRoleUpdateInfoProto GetProto(byte[] buffer, bool isChild = false)
    {
        WorldMap_OtherRoleUpdateInfoProto proto = new WorldMap_OtherRoleUpdateInfoProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.RoldId       = ms.ReadInt();
        proto.RoleNickName = ms.ReadUTF8String();

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
예제 #19
0
    public static System_GameServerConfigReturnProto GetProto(byte[] buffer, bool isChild = false)
    {
        System_GameServerConfigReturnProto proto = new System_GameServerConfigReturnProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.ConfigCount      = ms.ReadInt();
        proto.ServerConfigList = new List <ConfigItem>();
        for (int i = 0; i < proto.ConfigCount; i++)
        {
            ConfigItem _ServerConfig = new ConfigItem();
            _ServerConfig.ConfigCode = ms.ReadUTF8String();
            _ServerConfig.IsOpen     = ms.ReadBool();
            _ServerConfig.Param      = ms.ReadUTF8String();
            proto.ServerConfigList.Add(_ServerConfig);
        }

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
예제 #20
0
    public static GameLevel_VictoryProto GetProto(MMO_MemoryStream ms, byte[] buffer)
    {
        GameLevel_VictoryProto proto = new GameLevel_VictoryProto();

        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.GameLevelId           = ms.ReadInt();
        proto.Grade                 = (byte)ms.ReadByte();
        proto.Star                  = (byte)ms.ReadByte();
        proto.Exp                   = ms.ReadInt();
        proto.Gold                  = ms.ReadInt();
        proto.KillTotalMonsterCount = ms.ReadInt();
        proto.KillMonsterList       = new List <MonsterItem>();
        for (int i = 0; i < proto.KillTotalMonsterCount; i++)
        {
            MonsterItem _KillMonster = new MonsterItem();
            _KillMonster.MonsterId    = ms.ReadInt();
            _KillMonster.MonsterCount = ms.ReadInt();
            proto.KillMonsterList.Add(_KillMonster);
        }
        proto.GoodsTotalCount = ms.ReadInt();
        proto.GetGoodsList    = new List <GoodsItem>();
        for (int i = 0; i < proto.GoodsTotalCount; i++)
        {
            GoodsItem _GetGoods = new GoodsItem();
            _GetGoods.GoodsType  = (byte)ms.ReadByte();
            _GetGoods.GoodsId    = ms.ReadInt();
            _GetGoods.GoodsCount = ms.ReadInt();
            proto.GetGoodsList.Add(_GetGoods);
        }

        return(proto);
    }
예제 #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);

            MMO_MemoryStream ms = 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);
        }
    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());
    }
예제 #23
0
    public static Goods_SearchEquipDetailReturnProto GetProto(byte[] buffer)
    {
        Goods_SearchEquipDetailReturnProto proto = new Goods_SearchEquipDetailReturnProto();
        MMO_MemoryStream ms = GameEntry.Socket.SocketReceiveMS;

        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.EnchantLevel   = ms.ReadInt();
        proto.BaseAttr1Type  = (byte)ms.ReadByte();
        proto.BaseAttr1Value = ms.ReadInt();
        proto.BaseAttr2Type  = (byte)ms.ReadByte();
        proto.BaseAttr2Value = ms.ReadInt();
        proto.HP             = ms.ReadInt();
        proto.MP             = ms.ReadInt();
        proto.Attack         = ms.ReadInt();
        proto.Defense        = ms.ReadInt();
        proto.Hit            = ms.ReadInt();
        proto.Dodge          = ms.ReadInt();
        proto.Cri            = ms.ReadInt();
        proto.Res            = ms.ReadInt();
        proto.IsPutOn        = (byte)ms.ReadByte();

        return(proto);
    }
예제 #24
0
    public static RoleOperation_CreateRoleProto GetProto(byte[] buffer, bool isChild = false)
    {
        RoleOperation_CreateRoleProto proto = new RoleOperation_CreateRoleProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.JobId        = (byte)ms.ReadByte();
        proto.RoleNickName = ms.ReadUTF8String();

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
예제 #25
0
    public static WorldMap_OtherRoleMoveProto GetProto(byte[] buffer, bool isChild = false)
    {
        WorldMap_OtherRoleMoveProto proto = new WorldMap_OtherRoleMoveProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.RoleId     = ms.ReadInt();
        proto.TargetPosX = ms.ReadFloat();
        proto.TargetPosY = ms.ReadFloat();
        proto.TargetPosZ = ms.ReadFloat();
        proto.ServerTime = ms.ReadLong();
        proto.NeedTime   = ms.ReadInt();

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
예제 #26
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());
    }
예제 #27
0
    public static RoleOperation_SelectRoleInfoProto GetProto(byte[] buffer, bool isChild = false)
    {
        RoleOperation_SelectRoleInfoProto proto = new RoleOperation_SelectRoleInfoProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.RoldId = ms.ReadInt();

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
예제 #28
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());
    }
예제 #29
0
    public static Goods_UseItemReturnProto GetProto(byte[] buffer, bool isChild = false)
    {
        Goods_UseItemReturnProto proto = new Goods_UseItemReturnProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.IsSuccess = ms.ReadBool();
        if (proto.IsSuccess)
        {
            proto.GoodsId = ms.ReadInt();
        }
        else
        {
            proto.MsgCode = ms.ReadInt();
        }

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }
    public static WorldMap_OtherRoleDieProto GetProto(byte[] buffer, bool isChild = false)
    {
        WorldMap_OtherRoleDieProto proto = new WorldMap_OtherRoleDieProto();

        MMO_MemoryStream ms = null;

        if (!isChild)
        {
            ms = GameEntry.Socket.SocketSendMS;
        }
        else
        {
            ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>();
        }
        ms.SetLength(0);
        ms.Write(buffer, 0, buffer.Length);
        ms.Position = 0;

        proto.AttackRoleId = ms.ReadInt();
        proto.DieCount     = ms.ReadInt();
        proto.RoleIdList   = new List <int>();
        for (int i = 0; i < proto.DieCount; i++)
        {
            int _RoleId = ms.ReadInt();  //角色编号
            proto.RoleIdList.Add(_RoleId);
        }

        if (isChild)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        return(proto);
    }