public override bool HasEnoughBagSpaceForAwardGoods(GameClient client, int id) { IPointsExchgData allItem = null; this.AwardItemDict.TryGetValue(id, out allItem); int awardCnt = 0; if (allItem != null && allItem.GoodsDataList != null) { awardCnt += allItem.GoodsDataList.Count; } return(Global.CanAddGoodsNum(client, awardCnt)); }
public int GetIPointsLeftMergeNum(GameClient client, int index) { JieriIPointsExchgActivity instance = HuodongCachingMgr.GetJieriIPointsExchgActivity(); int result; if (null == instance) { result = 0; } else { IPointsExchgData ExchgData = null; this.AwardItemDict.TryGetValue(index, out ExchgData); if (ExchgData == null) { result = 0; } else { DateTime startTime = DateTime.Parse(this.FromDate); int currday = Global.GetOffsetDay(startTime); int lastday = 0; int count = 0; string strFlag = "InputPointExchg" + index; string JieRiIPointExchgFlag = Global.GetRoleParamByName(client, strFlag); if (null != JieRiIPointExchgFlag) { string[] fields = JieRiIPointExchgFlag.Split(new char[] { ',' }); if (2 == fields.Length) { lastday = Convert.ToInt32(fields[0]); count = Convert.ToInt32(fields[1]); } } if (currday == lastday) { result = ExchgData.DayMaxTimes - count; } else { result = ExchgData.DayMaxTimes; } } } return(result); }
public bool CanGetAnyAward(GameClient client) { bool result; if (client == null) { result = false; } else if (!this.InAwardTime()) { result = false; } else { string[] dbFields = null; string strDbCmd = string.Format("{0}:{1}:{2}", client.ClientData.RoleID, this.FromDate.Replace(':', '$'), this.ToDate.Replace(':', '$')); TCPProcessCmdResults retcmd = Global.RequestToDBServer(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, 1500, strDbCmd, out dbFields, client.ServerId); if (null == dbFields) { result = false; } else if (dbFields == null || 2 != dbFields.Length) { result = false; } else { int InputPoints = Convert.ToInt32(dbFields[1]); if (InputPoints <= 0) { result = false; } else { foreach (KeyValuePair <int, IPointsExchgData> kvp in this.AwardItemDict) { int awardid = kvp.Key; IPointsExchgData item = kvp.Value; if (item.MinAwardCondionValue <= InputPoints && this.GetIPointsLeftMergeNum(client, kvp.Key) > 0) { return(true); } } result = false; } } } return(result); }
public bool CanGetAnyAward(GameClient client) { if (client == null) { return(false); } if (!InAwardTime()) { return(false); } string[] dbFields = null; // 向DB申请数据 string strDbCmd = string.Format("{0}:{1}:{2}", client.ClientData.RoleID, FromDate.Replace(':', '$'), ToDate.Replace(':', '$')); TCPProcessCmdResults retcmd = Global.RequestToDBServer(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, (int)TCPGameServerCmds.CMD_SPR_GETINPUT_POINTS_EXCHGINFO, strDbCmd, out dbFields, client.ServerId); if (null == dbFields) { return(false); } if (null == dbFields || 2 != dbFields.Length) { return(false); } int InputPoints = Convert.ToInt32(dbFields[1]); if (InputPoints <= 0) { return(false); } foreach (var kvp in AwardItemDict) { int awardid = kvp.Key; IPointsExchgData item = kvp.Value; if (item.MinAwardCondionValue <= InputPoints && GetIPointsLeftMergeNum(client, kvp.Key) > 0) { return(true); } } return(false); }
/// <summary> /// 获取角色活动期间充值点兑换的剩余 /// </summary> /// <param name="client"></param> /// <returns></returns> public int GetIPointsLeftMergeNum(GameClient client, int index) { JieriIPointsExchgActivity instance = HuodongCachingMgr.GetJieriIPointsExchgActivity(); if (null == instance) { return(0); } IPointsExchgData ExchgData = null; AwardItemDict.TryGetValue(index, out ExchgData); if (ExchgData == null) { return(0); } // 每次活动刷新一次 DateTime startTime = DateTime.Parse(FromDate); int currday = Global.GetOffsetDay(startTime); int lastday = 0; int count = 0; string strFlag = RoleParamName.InputPointExchargeFlag + index; String JieRiIPointExchgFlag = Global.GetRoleParamByName(client, strFlag); // day:count if (null != JieRiIPointExchgFlag) { string[] fields = JieRiIPointExchgFlag.Split(','); if (2 == fields.Length) { lastday = Convert.ToInt32(fields[0]); count = Convert.ToInt32(fields[1]); } } if (currday == lastday) { return(ExchgData.DayMaxTimes - count); } return(ExchgData.DayMaxTimes); }
public bool Init() { try { string fileName = "Config/JieRiGifts/ChongZhiDuiHuan.xml"; XElement xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(fileName)); if (null == xml) { return(false); } XElement args = xml.Element("Activities"); if (null != args) { FromDate = Global.GetSafeAttributeStr(args, "FromDate"); ToDate = Global.GetSafeAttributeStr(args, "ToDate"); ActivityType = (int)Global.GetSafeAttributeLong(args, "ActivityType"); AwardStartDate = Global.GetSafeAttributeStr(args, "AwardStartDate"); AwardEndDate = Global.GetSafeAttributeStr(args, "AwardEndDate"); } args = xml.Element("GiftList"); if (null != args) { IEnumerable <XElement> xmlItems = args.Elements(); foreach (var xmlItem in xmlItems) { if (null != xmlItem) { IPointsExchgData myAwardItem = new IPointsExchgData(); int id = (int)Global.GetSafeAttributeLong(xmlItem, "ID"); myAwardItem.MinAwardCondionValue = Global.GMax(0, (int)Global.GetSafeAttributeLong(xmlItem, "NeedChongZhiDianShu")); myAwardItem.AwardYuanBao = 0; // 最大兑换次数 myAwardItem.DayMaxTimes = (int)Global.GetSafeAttributeLong(xmlItem, "MaxNum"); string goodsIDs = Global.GetSafeAttributeStr(xmlItem, "NewGoodsID"); if (string.IsNullOrEmpty(goodsIDs)) { LogManager.WriteLog(LogTypes.Warning, string.Format("读取大型节日充值点兑换活动配置文件中的物品配置项1失败")); } else { string[] fields = goodsIDs.Split('|'); if (fields.Length <= 0) { LogManager.WriteLog(LogTypes.Warning, string.Format("解析大型节日充值点兑换活动配置文件中的物品配置项1失败")); } else { //将物品字符串列表解析成物品数据列表 myAwardItem.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, "大型节日节日充值点兑换配置1"); } } AwardItemDict[id] = myAwardItem; } } } PredealDateTime(); } catch (System.Exception ex) { LogManager.WriteLog(LogTypes.Fatal, string.Format("{0}解析出现异常, {1}", "Config/JieRiGifts/ChongZhiDuiHuan.xml", ex.Message)); return(false); } return(true); }