示例#1
0
        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));
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }