Пример #1
0
    public static WorldMap_OtherRoleUseSkillProto GetProto(byte[] buffer)
    {
        WorldMap_OtherRoleUseSkillProto proto = new WorldMap_OtherRoleUseSkillProto();

        using (MMO_MemoryStream ms = new MMO_MemoryStream(buffer))
        {
            proto.AttackRoleId  = ms.ReadInt();
            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();
                _Item.ReduceHp       = ms.ReadInt();
                _Item.IsCri          = (byte)ms.ReadByte();
                proto.ItemList.Add(_Item);
            }
        }
        return(proto);
    }
Пример #2
0
        /// <summary>
        /// 服务器广播 其他角色使用技能消息
        /// </summary>
        /// <param name="role"></param>
        private void SendOtherRoleUseSkill(Role role,
                                           int attackRoleId, int skillId, int skillLevel, float rolePosX, float rolePosY, float rolePosZ, float roleYAngle,
                                           List <WorldMap_OtherRoleUseSkillProto.BeAttackItem> lst)
        {
            WorldMap_OtherRoleUseSkillProto proto = new WorldMap_OtherRoleUseSkillProto();

            proto.AttackRoleId = attackRoleId;
            proto.SkillId      = skillId;
            proto.SkillLevel   = skillLevel;
            proto.RolePosX     = rolePosX;
            proto.RolePosY     = rolePosY;
            proto.RolePosZ     = rolePosZ;
            proto.RoleYAngle   = roleYAngle;

            proto.BeAttackCount = lst.Count;
            proto.ItemList      = lst;

            role.Client_Socket.SendMsg(proto.ToArray(role.SocketSendMS));
        }
    public static WorldMap_OtherRoleUseSkillProto GetProto(byte[] buffer, bool isChild = false)
    {
        WorldMap_OtherRoleUseSkillProto proto = new WorldMap_OtherRoleUseSkillProto();

        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.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();
            _Item.ReduceHp       = ms.ReadInt();
            _Item.IsCri          = (byte)ms.ReadByte();
            proto.ItemList.Add(_Item);
        }

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