Beispiel #1
0
        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));
        }
Beispiel #2
0
 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);
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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;
 }
Beispiel #5
0
        /// <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));
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        /// <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");
            }
        }