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); }
/// <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); }