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