少年修仙传客户端代码仓库
5530 【前端】【1.4】高级守护合成 ,合成后的守护剩余时间以服务端通知的时间为准。
8个文件已修改
288 ■■■■ 已修改文件
Lua/Gen/SnxxzUIItemUseModelWrap.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIKnapsackTimeCDMgrWrap.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIKnapsackTimeCDMgrWrap.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/XLuaGenAutoRegister.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/BetterItemGetBehaviour.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/KnapsackTimeCDMgr.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackModelInterface.cs 261 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PlayerPackModels.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIItemUseModelWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 623f0677ac1751b4a868485897ebfe08
timeCreated: 1545203730
timeCreated: 1546151304
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Lua/Gen/SnxxzUIKnapsackTimeCDMgrWrap.cs
@@ -104,14 +104,13 @@
                    
                    return 0;
                }
                if(gen_param_count == 5&& (LuaAPI.lua_isnil(L, 2) || LuaAPI.lua_type(L, 2) == LuaTypes.LUA_TSTRING)&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 3)&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 4)&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 5))
                if(gen_param_count == 4&& (LuaAPI.lua_isnil(L, 2) || LuaAPI.lua_type(L, 2) == LuaTypes.LUA_TSTRING)&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 3)&& LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 4))
                {
                    string _guid = LuaAPI.lua_tostring(L, 2);
                    int _itemId = LuaAPI.xlua_tointeger(L, 3);
                    double _cdTime = LuaAPI.lua_tonumber(L, 4);
                    int _serverSurplusTime = LuaAPI.xlua_tointeger(L, 5);
                    
                    gen_to_be_invoked.Register( _guid, _itemId, _cdTime, _serverSurplusTime );
                    gen_to_be_invoked.Register( _guid, _itemId, _cdTime );
                    
                    
                    
Lua/Gen/SnxxzUIKnapsackTimeCDMgrWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 642127ab104febd4193bdbc5ceea06fa
timeCreated: 1546147185
timeCreated: 1546151304
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Lua/Gen/XLuaGenAutoRegister.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 11479d6613f53454b9f092ed34c058f8
timeCreated: 1546147185
timeCreated: 1546151304
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/KnapSack/BetterItemGetBehaviour.cs
@@ -79,7 +79,7 @@
                    var coolData = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.currentEquipGuid);
                    if (model.CheckIsAutoEquip(betterEquip) && coolData == null)
                    {
                        KnapsackTimeCDMgr.Instance.Register(betterEquip.itemInfo.ItemGUID, betterEquip.itemId, model.autoEquipCoolTime,0);
                        KnapsackTimeCDMgr.Instance.Register(betterEquip.itemInfo.ItemGUID, betterEquip.itemId, model.autoEquipCoolTime);
                    }
                }
            }
System/KnapSack/KnapsackTimeCDMgr.cs
@@ -97,16 +97,16 @@
        }
        public void Register(string guid, int itemId,  double cdTime,int serverSurplusTime)
        public void Register(string guid, int itemId,  double cdTime)
        {
            int index;
            if (ContainsItemCD(guid, out index))
            {
                itemCDList[index].SetTime(serverSurplusTime>0? serverSurplusTime: cdTime);
                itemCDList[index].SetTime(cdTime);
            }
            else
            {
                ItemCDCool cool = new ItemCDCool(guid, itemId, serverSurplusTime > 0 ? serverSurplusTime : cdTime);
                ItemCDCool cool = new ItemCDCool(guid, itemId, cdTime);
                itemCDList.Add(cool);
            }
        }
System/KnapSack/Logic/PackModelInterface.cs
@@ -7,8 +7,8 @@
namespace Snxxz.UI
{
   [XLua.LuaCallCSharp]
     public class PackModelInterface : Model, IBeforePlayerDataInitialize,IPlayerLoginOk
    [XLua.LuaCallCSharp]
    public class PackModelInterface : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    {
        private ItemConfig tagChinModel;
        private FuncConfigConfig _equipGSFormula;
@@ -17,20 +17,17 @@
        private FuncConfigConfig _oneKeySellFunc;
        public int[] preciousItemType { get; private set; }
        private int[] drugIDs;
        public Dictionary<int,List<int>> betterEquipExceptDungeonDict { get; private set; }
        public Dictionary<int, List<int>> betterEquipExceptDungeonDict { get; private set; }
        private int[] onekeySellTypes;
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack
        {
        PlayerPackModel playerPack {
            get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
        }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
        ItemTipsModel itemTipsModel {
            get {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
@@ -46,21 +43,21 @@
        private int[] pushItemIds;
        public int[] pushBuffTypeIds;
        private List<int> equipBaseAttrlist = new List<int>();
        public Dictionary<int, int> promptUseLimitDict { get; private set;}
        public Dictionary<int, int> promptUseLimitDict { get; private set; }
        public override void Init()
        {
            _equipGSFormula = Config.Instance.Get<FuncConfigConfig>("EquipGSFormula");
            equipBaseAttrlist.Clear();
            JsonData baseAttr = JsonMapper.ToObject(_equipGSFormula.Numerical2);
            if(baseAttr.IsArray)
            if (baseAttr.IsArray)
            {
                for (int i = 0;i < baseAttr.Count; i++)
                for (int i = 0; i < baseAttr.Count; i++)
                {
                    equipBaseAttrlist.Add(int.Parse(baseAttr[i].ToString()));
                }
            }
            _itemPush = Config.Instance.Get<FuncConfigConfig>("ItemPush");
            preciousItemType = ConfigParse.GetMultipleStr<int>(_itemPush.Numerical1);
@@ -77,11 +74,11 @@
            FuncConfigConfig betterEquipExcConfig = Config.Instance.Get<FuncConfigConfig>("GoodItemDungeon");
            betterEquipExceptDungeonDict = new Dictionary<int, List<int>>();
            JsonData excEquipData = JsonMapper.ToObject(betterEquipExcConfig.Numerical1);
            foreach(var dungeonId in excEquipData.Keys)
            foreach (var dungeonId in excEquipData.Keys)
            {
                List<int> idlist = new List<int>();
                betterEquipExceptDungeonDict.Add(int.Parse(dungeonId),idlist);
                for(int i = 0; i < excEquipData[dungeonId].Count; i++)
                betterEquipExceptDungeonDict.Add(int.Parse(dungeonId), idlist);
                for (int i = 0; i < excEquipData[dungeonId].Count; i++)
                {
                    int itemId = int.Parse(excEquipData[dungeonId][i].ToString());
                    idlist.Add(itemId);
@@ -99,13 +96,13 @@
        public void OnPlayerLoginOk()
        {
        }
        public override void UnInit()
        {
        }
        #region 计算装备评分
@@ -113,7 +110,7 @@
        /// 得到特殊属性的字典
        /// </summary>
        private Dictionary<AttrEnum, int> specAttrDic = new Dictionary<AttrEnum, int>();
        public int SetEquipScore(PackType type,int itemId,Dictionary<int, List<int>> useDataDic = null,bool isPreview = false)
        public int SetEquipScore(PackType type, int itemId, Dictionary<int, List<int>> useDataDic = null, bool isPreview = false)
        {
            specAttrDic.Clear();
            int id = itemId;
@@ -133,7 +130,7 @@
                    switch (itemConfig.EquipPlace)
                    {
                        case 11:
                            CalculateWingsLegendAttr(itemConfig,out legendIdlist, out legendValuelist);
                            CalculateWingsLegendAttr(itemConfig, out legendIdlist, out legendValuelist);
                            break;
                        case 1:
                        case 2:
@@ -146,7 +143,7 @@
                        case 9:
                        case 10:
                        case 12:
                            CalculateEquipLegendAttr(itemConfig,out legendIdlist,out legendValuelist);
                            CalculateEquipLegendAttr(itemConfig, out legendIdlist, out legendValuelist);
                            break;
                    }
@@ -172,11 +169,11 @@
                    }
                }
            }
          return GetEquipScore(type,id,specAttrDic);
            return GetEquipScore(type, id, specAttrDic);
        }
        private void CalculateEquipLegendAttr(ItemConfig itemConfig,out List<int> legendIdlist, out List<int> legendValuelist)
        private void CalculateEquipLegendAttr(ItemConfig itemConfig, out List<int> legendIdlist, out List<int> legendValuelist)
        {
            legendIdlist = new List<int>();
            legendValuelist = new List<int>();
@@ -195,9 +192,9 @@
                    {
                        attrCnt = attrCntDict[attrCntKey][attrType];
                    }
                    for(int i = 0; i < attrIds.Count; i++)
                    for (int i = 0; i < attrIds.Count; i++)
                    {
                        if(attrCnt > i)
                        if (attrCnt > i)
                        {
                            legendIdlist.Add(attrIds[i]);
                        }
@@ -223,7 +220,7 @@
            }
        }
        private void CalculateWingsLegendAttr(ItemConfig itemConfig,out List<int> legendIdlist, out List<int> legendValuelist)
        private void CalculateWingsLegendAttr(ItemConfig itemConfig, out List<int> legendIdlist, out List<int> legendValuelist)
        {
            legendIdlist = new List<int>();
            legendValuelist = new List<int>();
@@ -236,10 +233,10 @@
            }
            if (attrValueDict.ContainsKey(itemConfig.LV))
            {
                var  attrIdDict = attrValueDict[itemConfig.LV];
                var attrIdDict = attrValueDict[itemConfig.LV];
                foreach (var attrId in attrIdDict.Keys)
                {
                    if(legendIdlist.Count < attrCnt)
                    if (legendIdlist.Count < attrCnt)
                    {
                        legendIdlist.Add(attrId);
                        legendValuelist.Add(attrIdDict[attrId][0]);
@@ -353,13 +350,13 @@
        private Dictionary<AttrEnum, int> _tagGsProValueDict;
        private Dictionary<string, string> _equipGSFormulaDict = new Dictionary<string, string>(); //key 公式参数 value 参数数值
        private float curProValue = 0;
        private int GetEquipScore(PackType type,int itemId, Dictionary<AttrEnum, int> specAttrDict)
        private int GetEquipScore(PackType type, int itemId, Dictionary<AttrEnum, int> specAttrDict)
        {
            tagChinModel = Config.Instance.Get<ItemConfig>(itemId);
            if (tagChinModel == null ||  !GeneralDefine.CompareEquipPlaces.Contains(tagChinModel.EquipPlace)) return 0;
            if (tagChinModel == null || !GeneralDefine.CompareEquipPlaces.Contains(tagChinModel.EquipPlace)) return 0;
            Equation.Instance.Clear();
            _tagGsProValueDict = EquipGSParamConfig.GetTagGsProValueDict(tagChinModel.LV, tagChinModel.ItemColor,tagChinModel.StarLevel);
            _tagGsProValueDict = EquipGSParamConfig.GetTagGsProValueDict(tagChinModel.LV, tagChinModel.ItemColor, tagChinModel.StarLevel);
            curEquipAttrDict.Clear();
            itemEffectDict.Clear();
            _equipGSFormulaDict.Clear();
@@ -398,7 +395,7 @@
            foreach (var key in itemEffectDict.Keys)
            {
               if(equipBaseAttrlist.Contains(key))
                if (equipBaseAttrlist.Contains(key))
                {
                    switch ((AttrEnum)key)
                    {
@@ -423,7 +420,7 @@
            }
            foreach (AttrEnum attrType in specAttrDict.Keys)
            {
            {
                switch (attrType)
                {
                    case AttrEnum.ATKSPEED:
@@ -432,7 +429,7 @@
                        curEquipAttrDict.Add(attrType, specAttrDict[attrType]);
                        break;
                    default:
                        if(_tagGsProValueDict != null && _tagGsProValueDict.ContainsKey(attrType))
                        if (_tagGsProValueDict != null && _tagGsProValueDict.ContainsKey(attrType))
                        {
                            curProValue = specAttrDict[attrType] * _tagGsProValueDict[attrType];
                            curEquipAttrDict.Add(attrType, curProValue);
@@ -447,26 +444,26 @@
            if (_equipGSFormula != null)
            {
                foreach(var key in curEquipAttrDict.Keys)
                foreach (var key in curEquipAttrDict.Keys)
                {
                    PlayerPropertyConfig propertyConfig = Config.Instance.Get<PlayerPropertyConfig>((int)key);
                    if(propertyConfig != null)
                    if (propertyConfig != null)
                    {
                        Equation.Instance.AddKeyValue(propertyConfig.Parameter, curEquipAttrDict[key]);
                    }
                }
                EquipGSParamConfig gSParamModel = EquipGSParamConfig.GetTagGSModel(tagChinModel.LV, tagChinModel.ItemColor,tagChinModel.StarLevel);
                EquipGSParamConfig gSParamModel = EquipGSParamConfig.GetTagGSModel(tagChinModel.LV, tagChinModel.ItemColor, tagChinModel.StarLevel);
                if (gSParamModel != null)
                {
                    Equation.Instance.AddKeyValue("AtkSpeedC", gSParamModel.AtkSpeedC);
                }
                else
                {
                    Equation.Instance.AddKeyValue("AtkSpeedC",0);
                    Equation.Instance.AddKeyValue("AtkSpeedC", 0);
                }
                DebugEx.Log("评分:" + Equation.Instance.Eval<double>(_equipGSFormula.Numerical1));
                if(type == PackType.rptDogzEquip || type == PackType.rptDogzItem)
                if (type == PackType.rptDogzEquip || type == PackType.rptDogzItem)
                {
                    return Equation.Instance.Eval<int>(_equipGSFormula.Numerical3);
                }
@@ -478,14 +475,14 @@
            return 0;
        }
        private void ConvertAttrId(int attrId,int attrValue,Dictionary<int,int> keyValues)
        private void ConvertAttrId(int attrId, int attrValue, Dictionary<int, int> keyValues)
        {
            switch((AttrEnum)attrId)
            switch ((AttrEnum)attrId)
            {
                case AttrEnum.ATK:
                    if(!keyValues.ContainsKey((int)AttrEnum.MinAtk))
                    if (!keyValues.ContainsKey((int)AttrEnum.MinAtk))
                    {
                        keyValues.Add(((int)AttrEnum.MinAtk),attrValue);
                        keyValues.Add(((int)AttrEnum.MinAtk), attrValue);
                    }
                    else
                    {
@@ -516,7 +513,7 @@
        #endregion
        #region 主界面物品弹框展示
        public event Action<PackType,string> GetPreciousItemEvent; //得到珍品  value 物品的实例ID
        public event Action<PackType, string> GetPreciousItemEvent; //得到珍品  value 物品的实例ID
        public void GetPreciousItem(ItemModel itemModel)
        {
@@ -536,10 +533,10 @@
                for (i = 0; i < preciousItemType.Length; i++)
                {
                    if (itemModel.chinItemModel.Type == preciousItemType[i] && CheckPreciousCondition(itemModel))
                    {
                    {
                        if (GetPreciousItemEvent != null)
                        {
                            GetPreciousItemEvent(itemModel.packType,itemModel.itemInfo.ItemGUID);
                            GetPreciousItemEvent(itemModel.packType, itemModel.itemInfo.ItemGUID);
                        }
                    }
                }
@@ -550,7 +547,7 @@
        {
            bool isReach = true;
            WindowSearchConfig windowSearch = Config.Instance.Get<WindowSearchConfig>((int)itemModel.chinItemModel.Jump);
            if(windowSearch != null)
            if (windowSearch != null)
            {
                if (!FuncOpen.Instance.IsFuncOpen(windowSearch.Lv) && windowSearch.Lv != 0)
                {
@@ -558,7 +555,7 @@
                    return isReach;
                }
            }
            if(pushItemIds.Contains(itemModel.itemId))
            if (pushItemIds.Contains(itemModel.itemId))
            {
                int itemCnt = playerPack.GetItemCountByID(PackType.rptItem, itemModel.itemId) - itemModel.itemInfo.ItemCount;
                if (itemCnt > 0)
@@ -577,10 +574,10 @@
            }
            if(promptUseLimitDict.ContainsKey(itemModel.itemId))
            if (promptUseLimitDict.ContainsKey(itemModel.itemId))
            {
                int playerLv = PlayerDatas.Instance.baseData.LV;
                if(playerLv < promptUseLimitDict[itemModel.itemId])
                if (playerLv < promptUseLimitDict[itemModel.itemId])
                {
                    isReach = false;
                    return isReach;
@@ -588,35 +585,35 @@
            }
            ulong canUseCnt = 0;
            if(playerPack.IsReachUseLimit(itemModel.itemInfo.ItemGUID,out canUseCnt))
            if (playerPack.IsReachUseLimit(itemModel.itemInfo.ItemGUID, out canUseCnt))
            {
                isReach = false;
                return isReach;
            }
            bool isBox = false;
            bool isCanOpen = ModelCenter.Instance.GetModel<BoxGetItemModel>().CheckOpenBoxCondition(itemModel.itemId,out isBox);
            if(isBox)
            bool isCanOpen = ModelCenter.Instance.GetModel<BoxGetItemModel>().CheckOpenBoxCondition(itemModel.itemId, out isBox);
            if (isBox)
            {
                if(!isCanOpen)
                if (!isCanOpen)
                {
                    isReach = false;
                    return isReach;
                }
            }
            if(trialModel.trialTokens.Contains(itemModel.itemId))
            if (trialModel.trialTokens.Contains(itemModel.itemId))
            {
                if(!trialModel.IsAnySatisfyExchangeBetter(itemModel.itemId))
                if (!trialModel.IsAnySatisfyExchangeBetter(itemModel.itemId))
                {
                    isReach = false;
                    return isReach;
                }
            }
            if(playerPack.CheckIsDrugById(itemModel.itemId))
            if (playerPack.CheckIsDrugById(itemModel.itemId))
            {
                if(itemModel.chinItemModel.RealmLimit > PlayerDatas.Instance.baseData.realmLevel)
                if (itemModel.chinItemModel.RealmLimit > PlayerDatas.Instance.baseData.realmLevel)
                {
                    isReach = false;
                    return isReach;
@@ -626,14 +623,14 @@
            switch (itemModel.chinItemModel.Type)
            {
                case 8:
                    if(buffDatas.BastBuff(itemModel.itemId))
                    if (buffDatas.BastBuff(itemModel.itemId))
                    {
                        isReach = false;
                        return isReach;
                    }
                    break;
                case 20:
                    if(magicianModel.IsGodWeaponMaxLevelByItem(itemModel.itemId))
                    if (magicianModel.IsGodWeaponMaxLevelByItem(itemModel.itemId))
                    {
                        isReach = false;
                        return isReach;
@@ -689,7 +686,7 @@
                    }
                    break;
                case 39:
                    if(!CheckIsBetterWings(itemModel))
                    if (!CheckIsBetterWings(itemModel))
                    {
                        isReach = false;
                        return isReach;
@@ -706,10 +703,10 @@
                    break;
            }
            switch(itemModel.itemId)
            switch (itemModel.itemId)
            {
                case 951:
                    if(!CheckIsExtendGrid(itemModel.itemId))
                    if (!CheckIsExtendGrid(itemModel.itemId))
                    {
                        isReach = false;
                        return isReach;
@@ -733,23 +730,23 @@
        {
            if (itemModel == null) return false;
            ItemModel putModel = playerPack.GetItemModelByIndex(PackType.rptEquip,(int)RoleEquipType.retWing);
            ItemModel putModel = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWing);
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
            List<ItemModel> itemModels = null;
            if(singlePack != null)
            if (singlePack != null)
            {
                singlePack.GetItemCountByType((int)ItemType.Wings, out itemModels);
            }
            int[] composeTypes = itemModel.chinItemModel.JumpComposeCondi;
            bool isOpenCompose = false;
            if(composeTypes != null && composeTypes.Length >= 3)
            if (composeTypes != null && composeTypes.Length >= 3)
            {
                int first = composeTypes[0];
                int second = composeTypes[1];
                int third = composeTypes[2];
                ComposeWinModel.ComposeThirdTypeData thirdTypeData = null;
                composeModel.TryGetThirdTypeData(first,second,third,out thirdTypeData);
                if(thirdTypeData != null)
                composeModel.TryGetThirdTypeData(first, second, third, out thirdTypeData);
                if (thirdTypeData != null)
                {
                    var itemCompound = thirdTypeData.itemCompound;
                    if (itemCompound.levelNeed <= PlayerDatas.Instance.baseData.LV)
@@ -759,7 +756,7 @@
                }
            }
            if(!isOpenCompose)
            if (!isOpenCompose)
            {
                return false;
            }
@@ -771,11 +768,11 @@
            if (itemModels != null)
            {
                for(int i = 0; i < itemModels.Count; i++)
                for (int i = 0; i < itemModels.Count; i++)
                {
                    if(itemModels[i].chinItemModel.JobLimit/100 == PlayerDatas.Instance.baseData.Job)
                    if (itemModels[i].chinItemModel.JobLimit / 100 == PlayerDatas.Instance.baseData.Job)
                    {
                        if(itemModels[i].chinItemModel.LV >= itemModel.chinItemModel.LV)
                        if (itemModels[i].chinItemModel.LV >= itemModel.chinItemModel.LV)
                        {
                            return false;
                        }
@@ -793,7 +790,7 @@
            int startLockIndex = singlePack.openGridCount - playerPack.InitBagGridCnt;
            FuncConfigConfig _tagFuncModel = Config.Instance.Get<FuncConfigConfig>("OpenBagItem");
            int haveCount = playerPack.GetItemCountByID(PackType.rptItem,itemId);
            int haveCount = playerPack.GetItemCountByID(PackType.rptItem, itemId);
            Equation.Instance.Clear();
            Equation.Instance.AddKeyValue("index", startLockIndex + 1);
            int needTool = Equation.Instance.Eval<int>(_tagFuncModel.Numerical2);
@@ -811,19 +808,19 @@
        public void OnGetEquip(ItemModel model)
        {
            if (model.packType != PackType.rptItem
                || (model.chinItemModel.EquipPlace <= 0|| model.chinItemModel.EquipPlace > 12)
            if (model.packType != PackType.rptItem
                || (model.chinItemModel.EquipPlace <= 0 || model.chinItemModel.EquipPlace > 12)
                || (model.chinItemModel.JobLimit / 100 != PlayerDatas.Instance.baseData.Job
                    && model.chinItemModel.Type != (int)ItemType.Necklaces
                    && model.chinItemModel.Type != (int)ItemType.Necklaces
                    && model.chinItemModel.Type != (int)ItemType.FairyEquip
                    && model.chinItemModel.Type != (int)ItemType.SpiritAnimal))
            {
                return;
            }
            if(betterEquipExceptDungeonDict.ContainsKey(PlayerDatas.Instance.baseData.MapID))
            if (betterEquipExceptDungeonDict.ContainsKey(PlayerDatas.Instance.baseData.MapID))
            {
                if(betterEquipExceptDungeonDict[PlayerDatas.Instance.baseData.MapID].Contains(model.itemInfo.ItemID))
                if (betterEquipExceptDungeonDict[PlayerDatas.Instance.baseData.MapID].Contains(model.itemInfo.ItemID))
                {
                    return;
                }
@@ -845,7 +842,7 @@
                    {
                        remainTime = cool.GetRemainTime();
                    }
                    if (remainTime >= 0 && remainTime < 120 && model.chinItemModel.ExpireTime > 0)
                    {
                        return;
@@ -913,15 +910,15 @@
            }
        }
        private bool CheckIsBetterEquip(int curScore,int putOnScore = 0)
        private bool CheckIsBetterEquip(int curScore, int putOnScore = 0)
        {
            if(putOnScore <= 0)
            if (putOnScore <= 0)
            {
                return true;
            }
            if(curScore > putOnScore)
            if (curScore > putOnScore)
            {
                return true;
            }
@@ -933,13 +930,13 @@
        public event Action<PackType, string> RefreshPickItemEvent; //捡起的物品
        public void RefreshPickItem(PackType type,string guid)
        public void RefreshPickItem(PackType type, string guid)
        {
            if (type != PackType.rptItem) return;
            if (RefreshPickItemEvent != null)
            {
                RefreshPickItemEvent(type,guid);
                RefreshPickItemEvent(type, guid);
            }
        }
@@ -951,22 +948,22 @@
            if (singlePack == null) return RealmBetterDict;
            int realmLv = PlayerDatas.Instance.baseData.realmLevel;
            Dictionary<int,ItemModel> pairs = singlePack.GetPackModelIndexDict();
            foreach(var model in pairs.Values)
            Dictionary<int, ItemModel> pairs = singlePack.GetPackModelIndexDict();
            foreach (var model in pairs.Values)
            {
                if(model.chinItemModel.EquipPlace > 0
                if (model.chinItemModel.EquipPlace > 0
                    && model.chinItemModel.EquipPlace != (int)RoleEquipType.retSpiritAnimal
                    && model.chinItemModel.RealmLimit <= realmLv
                    && !IsOverdue(model.itemInfo.ItemGUID,model.itemId,model.useDataDict)
                    && IsFightUp(model.itemId,model.equipScore) == 1)
                    && !IsOverdue(model.itemInfo.ItemGUID, model.itemId, model.useDataDict)
                    && IsFightUp(model.itemId, model.equipScore) == 1)
                {
                    if(!RealmBetterDict.ContainsKey(model.EquipPlace))
                    if (!RealmBetterDict.ContainsKey(model.EquipPlace))
                    {
                        RealmBetterDict.Add(model.EquipPlace,model);
                        RealmBetterDict.Add(model.EquipPlace, model);
                    }
                    else
                    {
                        if(model.equipScore > RealmBetterDict[model.EquipPlace].equipScore)
                        if (model.equipScore > RealmBetterDict[model.EquipPlace].equipScore)
                        {
                            RealmBetterDict[model.EquipPlace] = model;
                        }
@@ -987,7 +984,7 @@
            Dictionary<int, ItemModel> pairs = singlePack.GetPackModelIndexDict();
            foreach (var model in pairs.Values)
            {
                if(playerPack.CheckIsDrugById(model.itemId))
                if (playerPack.CheckIsDrugById(model.itemId))
                {
                    AttrFruitConfig fruitConfig = Config.Instance.Get<AttrFruitConfig>(model.itemId);
                    if (!playerPack.IsReachMaxUseDrug(fruitConfig)
@@ -1008,7 +1005,7 @@
            SinglePackModel singlePack = playerPack.GetSinglePackModel(type);
            int openCount = chooseGridCount - singlePack.openGridCount;
            int index = 0;
            switch(type)
            switch (type)
            {
                case PackType.rptItem:
                    index = chooseGridCount - playerPack.InitBagGridCnt;
@@ -1017,7 +1014,7 @@
                    index = chooseGridCount - playerPack.InitDepotGridCnt;
                    break;
            }
            itemTipsModel.SetExtendGirdModel(openCount,index, type);
            itemTipsModel.SetExtendGirdModel(openCount, index, type);
            WindowCenter.Instance.Open<ExtendWin>();
        }
@@ -1030,7 +1027,7 @@
        /// <summary>
        /// 物品使用时间限制
        /// </summary>
        public void SetItemEffectCDTime(string guid, int itemID, int getTime,int serverSurplusTime)
        public void SetItemEffectCDTime(string guid, int itemID, int getTime, int serverSurplusTime)
        {
            double time = GetTimeOffest(TimeUtility.GetTime((uint)getTime));
            if (time < 0)
@@ -1044,8 +1041,8 @@
                KnapsackTimeCDMgr.Instance.UnRegister(guid);
                return;
            }
            double remainTime = itemConfig.ExpireTime - time;
            KnapsackTimeCDMgr.Instance.Register(guid,itemID,remainTime, serverSurplusTime);
            double remainTime = (serverSurplusTime > 0 ? serverSurplusTime : itemConfig.ExpireTime) - time;
            KnapsackTimeCDMgr.Instance.Register(guid, itemID, remainTime);
        }
        public double GetTimeOffest(DateTime getTime)
@@ -1109,7 +1106,7 @@
        public void GetOneKeySellModel()
        {
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
            if ( singlePack == null)
            if (singlePack == null)
                return;
            _sellItemlist.Clear();
@@ -1124,11 +1121,11 @@
                ItemModel itemModel = _packModelDict[key];
                if (drugIDs.Contains(itemModel.itemInfo.ItemID))
                {
                    if(!_lifePotionDict.ContainsKey(itemModel.chinItemModel.LV))
                    if (!_lifePotionDict.ContainsKey(itemModel.chinItemModel.LV))
                    {
                        List<ItemModel> modellist = new List<ItemModel>();
                        modellist.Add(itemModel);
                        _lifePotionDict.Add(itemModel.chinItemModel.LV,modellist);
                        _lifePotionDict.Add(itemModel.chinItemModel.LV, modellist);
                    }
                    else
                    {
@@ -1150,7 +1147,7 @@
                    {
                        SinglePackModel equipPack = playerPack.GetSinglePackModel(PackType.rptEquip);
                        ItemModel model = null;
                        if(equipPack != null)
                        if (equipPack != null)
                        {
                            model = equipPack.GetItemModelByIndex(key);
                        }
@@ -1217,9 +1214,9 @@
            List<int> drugLvlist = new List<int>();
            drugLvlist.AddRange(_lifePotionDict.Keys.ToList());
            drugLvlist.Sort();
            for(int i = drugLvlist.Count - 1; i > -1; i--)
            for (int i = drugLvlist.Count - 1; i > -1; i--)
            {
                if(drugLvlist[i] > playerLv)
                if (drugLvlist[i] > playerLv)
                {
                    _lifePotionDict.Remove(drugLvlist[i]);
                }
@@ -1230,13 +1227,13 @@
                }
            }
            foreach(var list in _lifePotionDict.Values)
            foreach (var list in _lifePotionDict.Values)
            {
                for(int i = 0; i < list.Count; i++)
                for (int i = 0; i < list.Count; i++)
                {
                    _sellItemlist.Add(list[i]);
                }
            }
        }
@@ -1244,7 +1241,7 @@
        //得到满足出售条件的装备列表
        public void GetCanSellEquipList(ItemModel model)
        {
            if (model.chinItemModel.EquipPlace == 0 || !onekeySellTypes.Contains(model.chinItemModel.Type))
                return;
@@ -1310,17 +1307,17 @@
        /// 整理包裹物品
        /// </summary>
        /// <param name="type"></param>
        public bool isPackResetOk { get; set;}
        public bool isPackResetOk { get; set; }
        public void SendPackResetQuest(PackType type)
        {
            if (lookLineIndex > -1)
            {
               SetLookIndex(null);
                SetLookIndex(null);
            }
            if (KnapSackWin.titleType == KnapsackFuncTitle.bag)
            {
               playerPack.isPlayBetterEquipEffect = true;
                playerPack.isPlayBetterEquipEffect = true;
            }
            SinglePackModel singlePack = playerPack.GetSinglePackModel(type);
@@ -1331,7 +1328,7 @@
                packReset.ItemBeginIndex = 0;
                packReset.ItemEndIndex = (ushort)(singlePack.openGridCount - 1);
                GameNetSystem.Instance.SendInfo(packReset); //整理物品
                if(type == PackType.rptItem)
                if (type == PackType.rptItem)
                {
                    isPackResetOk = false;
                }
@@ -1377,7 +1374,7 @@
        public bool CheckBetterEquip(RoleEquipType ignoreType)
        {
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptEquip);
            if(singlePack != null)
            if (singlePack != null)
            {
                Dictionary<int, ItemModel> putOnDic = singlePack.GetPackModelIndexDict();
                foreach (var key in putOnDic.Keys)
@@ -1408,7 +1405,7 @@
                for (i = 1; i < 13; i++)
                {
                    List<ItemModel> itemlist = GetSameEquipPlacelist(i);
                    if(itemlist.Count > 0)
                    if (itemlist.Count > 0)
                    {
                        return true;
                    }
@@ -1449,17 +1446,17 @@
        {
            var itemPackage = playerPack.GetSinglePackModel(PackType.rptItem);
            var allItems = itemPackage.GetPackModelIndexDict();
            ItemModel putModel = playerPack.GetItemModelByIndex(PackType.rptEquip,equipPlace);
            equipPlace = (equipPlace == 9 || equipPlace == 10) ?  9 : equipPlace;
            ItemModel putModel = playerPack.GetItemModelByIndex(PackType.rptEquip, equipPlace);
            equipPlace = (equipPlace == 9 || equipPlace == 10) ? 9 : equipPlace;
            var guid = string.Empty;
            var equips = new List<string>();
            var score = putModel == null ? 0 : putModel.equipScore;
            var job = PlayerDatas.Instance.baseData.Job;
            foreach (var item in allItems.Values)
            {
                if(item.chinItemModel.EquipPlace == equipPlace)
                if (item.chinItemModel.EquipPlace == equipPlace)
                {
                    if (!IsOverdue(item.itemInfo.ItemGUID, item.itemId,item.useDataDict)
                    if (!IsOverdue(item.itemInfo.ItemGUID, item.itemId, item.useDataDict)
                       && (item.chinItemModel.JobLimit == 0 || (item.chinItemModel.JobLimit / 100) == job) && item.equipScore > score)
                    {
                        guid = item.itemInfo.ItemGUID;
@@ -1484,7 +1481,7 @@
            if (!itemModelDict.ContainsKey(equipPlace))
            {
                Dictionary<int, ItemModel> dict = new Dictionary<int, ItemModel>();
                if (IsFightUp(itemModel.itemId,itemModel.equipScore) == 1)
                if (IsFightUp(itemModel.itemId, itemModel.equipScore) == 1)
                {
                    dict.Add(itemModel.itemInfo.ItemPlace, itemModel);
                    itemModelDict.Add(equipPlace, dict);
@@ -1549,11 +1546,11 @@
        {
            wingsQualitys = null;
            wingsRefineExps = null;
            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(itemId);
            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(itemId);
            wingRefineQualityDict = WingRefineAttrConfig.GetWingsQualityModel(itemConfig.LV);
            if(useDataDic != null)
            if (useDataDic != null)
            {
                if(useDataDic.ContainsKey(42) && wingRefineQualityDict != null)
                if (useDataDic.ContainsKey(42) && wingRefineQualityDict != null)
                {
                    wingsQualitys = wingRefineQualityDict.Keys.ToArray();
                    wingsRefineExps = wingRefineQualityDict.Values.ToArray();
@@ -1571,7 +1568,7 @@
        }
        #endregion
        //设置玩家货币显示
        public string OnChangeCoinsUnit(ulong value)
        {
@@ -1611,10 +1608,10 @@
            if (chinItemModel != null)
            {
                if (chinItemModel.EquipPlace < 1 || chinItemModel.EquipPlace > 12) return 0;
                ItemModel model = playerPack.GetItemModelByIndex(PackType.rptEquip,chinItemModel.EquipPlace);
                ItemModel model = playerPack.GetItemModelByIndex(PackType.rptEquip, chinItemModel.EquipPlace);
                if (chinItemModel.EquipPlace == (int)RoleEquipType.retFairyCan)
                {
                    ItemModel fairyModel2 = playerPack.GetItemModelByIndex(PackType.rptEquip,(int)RoleEquipType.retFairyCan2);
                    ItemModel fairyModel2 = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retFairyCan2);
                    if (fairyModel2 != null)
                    {
                        if (model != null)
@@ -1656,7 +1653,7 @@
        }
        #region 物品是否过期
        public bool IsOverdue(string guid,int itemId,Dictionary<int, List<int>> useDataDict = null)
        public bool IsOverdue(string guid, int itemId, Dictionary<int, List<int>> useDataDict = null)
        {
            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(itemId);
            if (itemConfig == null) return false;
@@ -1672,15 +1669,15 @@
                            List<int> itemEffectTime = null;
                            if (useDataDict != null)
                            {
                                if(useDataDict.ContainsKey((int)ItemUseDataKey.Def_IudetCreateTime))
                                if (useDataDict.ContainsKey((int)ItemUseDataKey.Def_IudetCreateTime))
                                {
                                   itemEffectTime = useDataDict[(int)ItemUseDataKey.Def_IudetCreateTime];
                                    itemEffectTime = useDataDict[(int)ItemUseDataKey.Def_IudetCreateTime];
                                }
                            }
                            if (itemEffectTime != null && itemEffectTime[0] != 0)
                            {
                                if (cool== null || cool.GetRemainTime()<= 0)
                                if (cool == null || cool.GetRemainTime() <= 0)
                                {
                                    return true;
                                }
System/KnapSack/Logic/PlayerPackModels.cs
@@ -435,13 +435,7 @@
                        || modellist[i].itemId == 903
                        || modellist[i].itemId == 904)
                    {
                        var realCdTime = 0;
                        if (modellist[i].useDataDict != null && modellist[i].useDataDict.ContainsKey(48) && modellist[i].useDataDict[48].Count > 0)
                        {
                            realCdTime = modellist[i].useDataDict[48][0];
                        }
                        KnapsackTimeCDMgr.Instance.Register(modellist[i].itemInfo.ItemGUID, modellist[i].itemInfo.ItemID, configCdTime, realCdTime);
                        KnapsackTimeCDMgr.Instance.Register(modellist[i].itemInfo.ItemGUID, modellist[i].itemInfo.ItemID, configCdTime);
                        break;
                    }
                }