TeammemberResponse SetEquipment(TeammemberEntity teammember, ItemPackageFrame package, ItemInfoEntity item, int mod) { var newEquip = new EquipmentUsedEntity(item); var newEquipData = SerializationHelper.ToByte(newEquip); return(SaveSetEquipment(teammember, package, newEquipData, mod)); }
void WriteEquipmentUsed(BinaryWriter writer, EquipmentUsedEntity property) { ByteWriter.WriteTo(writer, property != null); if (property == null) { return; } ByteWriter.WriteTo(writer, property.ItemId); ByteWriter.WriteTo(writer, property.ItemCode); ByteWriter.WriteTo(writer, property.IsBinding); WriteEquipmentProperty(writer, property.Property); }
EquipmentUsedEntity ReadEquipmentUsed(byte[] buffer, ref int offset) { EquipmentUsedEntity property = null; var flag = ByteReader.ReadBoolean(buffer, ref offset); if (flag) { property = new EquipmentUsedEntity(); property.ItemId = new Guid(ByteReader.ReadString(buffer, ref offset)); property.ItemCode = ByteReader.ReadInt32(buffer, ref offset); property.IsBinding = ByteReader.ReadBoolean(buffer, ref offset); property.Property = ReadEquipmentProperty(buffer, ref offset); } return(property); }
public PlayerCardProperty(int strength, Guid teammemberId, EquipmentUsedEntity equipment, bool isTrain, int exp, int theActualKpi, int level = 1, bool isMain = false, List<Potential> potential = null, int theStar = 0, int theStarExp = 0, int mainType = 0) { this.Strength = strength; this.TeammemberId = teammemberId; this.Equipment = equipment; this.Level = level; this.IsMain = isMain; this.IsTrain = isTrain; this.Exp = exp; this.TheActualKpi = theActualKpi; this.Potential = potential; if (this.Potential == null) this.Potential = new List<Potential>(); this.TheStar = theStar; this.TheStarExp = theStarExp; this.MainType = mainType; }
/// <summary> /// 添加附件,已使用的物品,如拍卖行里的 /// </summary> /// <param name="attachmentType"></param> /// <param name="count"></param> /// <param name="itemInfoEntity"></param> public bool AddAttachmentUsedItem(EnumAttachmentType attachmentType, int count, ItemInfoEntity itemInfoEntity) { ItemUsedEntity usedEntity = null; switch (attachmentType) { case EnumAttachmentType.UsedPlayerCard: usedEntity = new PlayerCardUsedEntity(itemInfoEntity); break; case EnumAttachmentType.UsedEquipment: usedEntity = new EquipmentUsedEntity(itemInfoEntity); break; } if (usedEntity == null) { return(false); } return(AddAttachmentUsedItem(attachmentType, count, usedEntity)); }
static DTOBuffPlayer BuildPlayer(int level, int propertyPoint, int strength, int playerId, int equipId, string skill, int position, int buffScale, ref Dictionary <int, List <int> > suitDic, ref Dictionary <int, int> suitTypeDic) { DicPlayerEntity cfg = MatchDataUtil.GetDicPlayer(Guid.Empty, playerId); var rawProps = cfg.GetRawProps(); var obj = new DTOBuffPlayer(); obj.Pid = cfg.Idx; obj.Pos = position; obj.Clr = cfg.CardLevel; obj.Props = new DTOBuffProp[rawProps.Length]; for (int i = 0; i < rawProps.Length; ++i) { obj.Props[i] = new DTOBuffProp { Orig = rawProps[i] }; obj.Props[i].Percent = (buffScale - 100) / 100.00; } if (propertyPoint > 0) { switch (position) { case (int)EnumPosition.Forward: obj.Props[0].Point += propertyPoint; obj.Props[1].Point += propertyPoint; obj.Props[2].Point += propertyPoint; obj.Props[3].Point += propertyPoint; break; case (int)EnumPosition.Midfielder: obj.Props[10].Point += propertyPoint; obj.Props[11].Point += propertyPoint; obj.Props[12].Point += propertyPoint; obj.Props[3].Point += propertyPoint; break; case (int)EnumPosition.Fullback: obj.Props[7].Point += propertyPoint; obj.Props[8].Point += propertyPoint; obj.Props[9].Point += propertyPoint; break; case (int)EnumPosition.Goalkeeper: obj.Props[13].Point += propertyPoint; obj.Props[14].Point += propertyPoint; obj.Props[15].Point += propertyPoint; break; } } rawProps = null; obj.Level = level; obj.Strength = strength; obj.SBMList = new List <string>(); obj.ActionSkill = skill; //obj.StarSkill = CacheFactory.PlayersdicCache.GetStarSkill(obj.AsPid, obj.Strength); EquipmentUsedEntity equipment = null; if (equipId > 0) { equipment = new EquipmentUsedEntity(); equipment.Property = CacheFactory.EquipmentCache.RandomEquipmentPropertyForNpc(equipId); } //装备和副卡 //TeammemberDataHelper.FillEquipData(obj, equipment, null, null, ref suitDic, ref suitTypeDic); return(obj); }
/// <summary> /// Sets the teammember equip. /// </summary> /// <param name="managerId">The manager id.</param> /// <param name="teammemberId">The teammember id.</param> /// <param name="itemId">The item id.</param> /// <returns></returns> public TeammemberResponse SetEquip(Guid managerId, Guid teammemberId, Guid itemId) { #region Check //if (teammember == null // || teammember.ManagerId != managerId) // return ResponseHelper.InvalidParameter<TeammemberResponse>(); var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.TeammemberSetEquip); if (package == null) { return(ResponseHelper.InvalidParameter <TeammemberResponse>()); } var playerCardItem = package.GetPlayer(teammemberId); if (playerCardItem == null) { return(ResponseHelper.InvalidParameter <TeammemberResponse>()); } var cardProperty = playerCardItem.ItemProperty as PlayerCardProperty; if (cardProperty == null) { return(ResponseHelper.InvalidParameter <TeammemberResponse>()); } //在竞技场的阵型上 if (cardProperty.IsMain && cardProperty.MainType > 0) { return(ArenaTeammemberCore.Instance.SetEquip(managerId, teammemberId, itemId, package)); } var item = package.GetItem(itemId); if (item == null) { return(ResponseHelper.Create <TeammemberResponse>(MessageCode.ItemNotExists)); } #endregion int mod = ShareUtil.GetTableMod(managerId); var teammember = GetTeammember(managerId, teammemberId); try { //删除要穿上的装备 var code = package.Delete(item); if (code != MessageCode.Success) { return(ResponseHelper.Create <TeammemberResponse>(code)); } TeammemberResponse response = ResponseHelper.Create <TeammemberResponse>(MessageCode.Success); var itemDic = CacheFactory.ItemsdicCache.GetItem(item.ItemCode); //装备 if (itemDic.ItemType == (int)EnumItemType.Equipment) { if (teammember != null) { if (teammember.Equipment != null) { var result = package.AddUsedItem(teammember.Equipment); if (result != MessageCode.Success) { return(ResponseHelper.Create <TeammemberResponse>(result)); } } var newEquip = new EquipmentUsedEntity(item); cardProperty.Equipment = newEquip; code = package.Update(playerCardItem); if (code != MessageCode.Success) { return(ResponseHelper.Create <TeammemberResponse>(code)); } response = SetEquipment(teammember, package, item, mod); } else { if (cardProperty.Equipment != null) { var result = package.AddUsedItem(cardProperty.Equipment); if (result != MessageCode.Success) { return(ResponseHelper.Create <TeammemberResponse>(result)); } } var newEquip = new EquipmentUsedEntity(item); cardProperty.Equipment = newEquip; code = package.Update(playerCardItem); if (code != MessageCode.Success) { return(ResponseHelper.Create <TeammemberResponse>(code)); } response = ResponseHelper.Create <TeammemberResponse>(MessageCode.Success); } } if (response.Code == ShareUtil.SuccessCode) { if (teammember != null) { KpiHandler.Instance.RebuildKpi(managerId, true); package.Shadow.AddShadow(teammember, EnumOperationType.Update); package.Shadow.Save(); } else { if (package.Save()) { package.Shadow.Save(); } } if (response.Data == null) { response.Data = new TeammemberEntity(); } response.Data.TotalKpi = ManagerCore.Instance.GetKpi(managerId); response.Data.Package = ItemCore.Instance.BuildPackageData(package); } return(response); } catch (Exception ex) { SystemlogMgr.Error("SetEquip", ex); return(ResponseHelper.Create <TeammemberResponse>(MessageCode.Exception)); } }
public static void FillEquipData(DTOBuffPlayer buffPlayer, EquipmentUsedEntity equipment, ref Dictionary <int, List <int> > suitDic, ref Dictionary <int, int> suitTypeDic) { try { var strengthPlus = CacheFactory.TeammemberCache.GetStrengthPlus(buffPlayer.Strength); for (int i = 0; i < buffPlayer.Props.Length; ++i) { buffPlayer.Props[i].Percent += strengthPlus / 100.00; } if (equipment != null) { var equipmentProperty = equipment.Property; var itemDic = CacheFactory.ItemsdicCache.GetEquipmentByItemCode(equipment.ItemCode); if (buffPlayer.OnFlag && itemDic != null && itemDic.SuitId > 0) { var suitCode = itemDic.Idx % 1000; if (suitDic.ContainsKey(itemDic.SuitId)) { var list = suitDic[itemDic.SuitId]; if (list == null) { list = new List <int>(); } if (!list.Contains(suitCode)) { list.Add(suitCode); } suitDic[itemDic.SuitId] = list; } else { suitDic.Add(itemDic.SuitId, new List <int>() { suitCode }); suitTypeDic.Add(itemDic.SuitId, itemDic.SuitType); } } double equipPlus = 0; foreach (var plus in equipmentProperty.PropertyPluses) { equipPlus = plus.PlusValue * (1 + equipmentProperty.Level * 0.1); if (plus.PlusType == (int)EnumPlusType.Percent) { buffPlayer.Props[plus.PropertyId - 1].Percent += equipPlus / 100.00; } else { buffPlayer.Props[plus.PropertyId - 1].Point += equipPlus; } } if (equipmentProperty.EquipmentSlots != null) { foreach (var equipmentSlot in equipmentProperty.EquipmentSlots) { if (equipmentSlot.BallSoul != null) { //var sbm = CacheFactory.ManagerDataCache.GetSkillbuff(EnumSBMType.BallSoul, equipmentSlot.BallSoul.ItemCode); //buffPlayer.SBMList.AddRange(sbm); } } } } } catch (Exception ex) { LogHelper.Insert(ex, "TeammemberDataHelper:FillEquipData"); } }