Esempio n. 1
0
        public void RefreshSkinState(MountManager _this)
        {
            List <int> removeList = new List <int>();

            foreach (var special in _this.mDbData.Special)
            {
                if (special.Key == 99)//过滤掉战马试用
                {
                    continue;
                }
                if (special.Value == -1)//过滤掉永久坐骑
                {
                    continue;
                }
                var tb = Table.GetMount(special.Key);
                if (tb != null)
                {
                    if (tb.IsPermanent == 1)
                    {
                        continue;
                    }
                }
                var nowTime     = DataTimeExtension.GetTimeStampSeconds(DateTime.Now);
                var invalidTime = special.Value;
                if (nowTime >= invalidTime)
                {
                    removeList.Add(special.Key);
                }
            }
            foreach (var item in removeList)
            {
                RemoveSkin(_this, item);
            }
        }
Esempio n. 2
0
        public ErrorCodes AddSkin(MountManager _this, int id)
        {
            RefreshSkinState(_this);
            var tb = Table.GetMount(id);

            if (tb == null)
            {
                return(ErrorCodes.Unknow);
            }

            var alreadyHave = false;

            if (tb.Special > 0)
            {
                if (_this.mDbData.Special.ContainsKey(id))
                {
                    alreadyHave = true;
                    if (tb.IsPermanent == 1)//重复永久坐骑 发礼包
                    {
                        var tbItem = Table.GetItemBase(tb.ItemId);
                        if (tbItem != null)
                        {
                            var value = tbItem.Exdata[1];
                            if (!_this.mCharacter.CheckBagCanIn(value))
                            {
                                return(ErrorCodes.Error_ItemNoInBag_All);
                            }
                            var error = _this.mCharacter.Gift(eActivationRewardType.TableGift, tbItem.Exdata[0]);
                            if (error != ErrorCodes.OK)
                            {
                                return(error);
                            }
                        }
                    }
                    else
                    {
                        _this.mDbData.Special[id] += (int)tb.ValidityData;//应策划需求,限时坐骑时间叠加
                    }
                }
                else
                {
                    var invalidTime = -1;
                    if (tb.IsPermanent == 0) //限时坐骑
                    {
                        invalidTime = DataTimeExtension.GetTimeStampSeconds(DateTime.Now.AddSeconds(tb.ValidityData));
                    }
                    _this.mDbData.Special.Add(id, invalidTime);
                    _this.mCharacter.Mount(id);
                    _this.mDbData.Ride = id;
                    RefreshAttr(_this);
                    _this.mCharacter.BooksChange();
                    _this.mCharacter.SetRankFlag(RankType.Mount);
                }

                var item = Table.GetItemBase(tb.ItemId);
                if (null != item && id != 99 && !alreadyHave)//过滤掉战马试用的公告
                {
                    var args = new List <string>
                    {
                        Utils.AddCharacter(_this.mCharacter.mGuid, _this.mCharacter.GetName()),
                        string.Format("[{0}]{1}[-]", Utils.GetTableColorString(item.Quality), item.Name),
                    };
                    var exExdata = new List <int>();
                    _this.mCharacter.SendSystemNoticeInfo(291011, args, exExdata); //恭喜玩家{0}拥有了上古稀有坐骑{1},从此帅出新高度!
                }

                _this.MarkDbDirty();
            }
            return(ErrorCodes.OK);
        }
Esempio n. 3
0
        private void RefreshLimitFashions()
        {
            //Debug.LogWarning(Game.Instance.ServerTime.ToString("yyyy/MM/dd HH:mm:ss"));
            var isNeedRefresh = false;
            var bags          = PlayerDataManager.Instance.PlayerDataModel.Bags.Bags;

            for (int i = (int)eBagType.EquipShiZhuangBag; i < (int)eBagType.WeaponShiZhuangBag; i++)
            {
                var bag = bags[i];
                if (null != bag)
                {
                    foreach (var item in bag.Items)
                    {
                        if (item.ItemId == -1)
                        {
                            continue;
                        }
                        var limitTime = item.Exdata[32];
                        if (limitTime == -1)
                        {
                            continue;
                        }
                        if (!limitFashions.ContainsKey(item.ItemId))
                        {
                            limitFashions.Add(item.ItemId, item);
                        }
                    }
                }
            }

            var equipList = PlayerDataManager.Instance.PlayerDataModel.EquipList;

            for (int i = 10; i < 13; i++)
            {
                var equip = equipList[i];
                if (equip.ItemId == -1)
                {
                    continue;
                }
                var limitTime = equip.Exdata[32];
                if (limitTime == -1)
                {
                    continue;
                }
                if (!limitFashions.ContainsKey(equip.ItemId))
                {
                    limitFashions.Add(equip.ItemId, equip);
                }
            }

            foreach (var limitFashion in limitFashions)
            {
                var nowDate   = DataTimeExtension.GetTimeStampSeconds(Game.Instance.ServerTime);
                var limitDate = limitFashion.Value.Exdata[32];
                if (nowDate >= limitDate)
                {
                    if (null != _refreshTimer)
                    {
                        TimeManager.Instance.DeleteTrigger(_refreshTimer);
                        _refreshTimer = null;
                    }
                    //Debug.LogError("通知服务器删除到期时装: " + limitFashion.Key);
                    NetManager.Instance.StartCoroutine(RefreshFashionInfoCoroutine());
                    break;
                }
            }
        }