コード例 #1
0
        public override bool HasEnoughBagSpaceForAwardGoods(GameClient client, int _params)
        {
            JieriPlatChargeKingEveryDay.ChargeItem ci = null;
            bool result;

            if (!this.IdVsChargeItemDict.TryGetValue(_params, out ci))
            {
                result = false;
            }
            else
            {
                AwardItem           allItem  = ci.allAwardGoodsOne;
                AwardItem           occItem  = ci.occAwardGoodsTwo;
                AwardEffectTimeItem timeItem = ci.timeAwardGoodsThr;
                int awardCnt = 0;
                if (allItem != null && allItem.GoodsDataList != null)
                {
                    awardCnt += allItem.GoodsDataList.Count;
                }
                if (occItem != null && occItem.GoodsDataList != null)
                {
                    awardCnt += occItem.GoodsDataList.Count((GoodsData goods) => Global.IsRoleOccupationMatchGoods(client, goods.GoodsID));
                }
                if (timeItem != null)
                {
                    awardCnt += timeItem.GoodsCnt();
                }
                result = Global.CanAddGoodsNum(client, awardCnt);
            }
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// 背包中是否有足够的位置
        /// </summary>
        /// <returns></returns>
        public override bool HasEnoughBagSpaceForAwardGoods(GameClient client, Int32 id)
        {
            AwardItem           allItem = null, occItem = null;
            AwardEffectTimeItem timeItem = null;

            allAwardDict.TryGetValue(id, out allItem);
            occAwardDict.TryGetValue(id, out allItem);
            timeAwardDict.TryGetValue(id, out timeItem);

            int awardCnt = 0;

            if (allItem != null && allItem.GoodsDataList != null)
            {
                awardCnt += allItem.GoodsDataList.Count;
            }
            if (occItem != null && occItem.GoodsDataList != null)
            {
                awardCnt += occItem.GoodsDataList.Count(((goods) => { return(Global.IsRoleOccupationMatchGoods(client, goods.GoodsID)); }));
            }
            if (timeItem != null)
            {
                awardCnt += timeItem.GoodsCnt();
            }

            return(Global.CanAddGoodsNum(client, awardCnt));
        }
コード例 #3
0
        public string ProcRoleGetAward(GameClient client, int awardid)
        {
            JieriGiveErrorCode ec = JieriGiveErrorCode.Success;

            if (!this.InAwardTime())
            {
                ec = JieriGiveErrorCode.NotAwardTime;
            }
            else if (!this.HasEnoughBagSpaceForAwardGoods(client, awardid))
            {
                ec = JieriGiveErrorCode.NoBagSpace;
            }
            else
            {
                AwardItem           allItem  = null;
                AwardItem           occItem  = null;
                AwardEffectTimeItem timeItem = null;
                if (!this.allAwardDict.TryGetValue(awardid, out allItem) || !this.occAwardDict.TryGetValue(awardid, out occItem) || !this.timeAwardDict.TryGetValue(awardid, out timeItem))
                {
                    ec = JieriGiveErrorCode.ConfigError;
                }
                else
                {
                    lock (this._allMemberMutex)
                    {
                        JieriGiveKingItemData myData = this.GetClientGiveKingInfo(client);
                        if (myData == null || myData.TotalGive < allItem.MinAwardCondionValue || myData.GetAwardTimes > 0 || myData.Rank != awardid)
                        {
                            ec = JieriGiveErrorCode.NotMeetAwardCond;
                            goto IL_1CB;
                        }
                        string   dbReq = string.Format("{0}:{1}:{2}", client.ClientData.RoleID, this.FromDate.Replace(':', '$'), this.ToDate.Replace(':', '$'));
                        string[] dbRsp = Global.ExecuteDBCmd(13205, dbReq, client.ServerId);
                        if (dbRsp == null || dbRsp.Length != 1 || Convert.ToInt32(dbRsp[0]) <= 0)
                        {
                            ec = JieriGiveErrorCode.DBFailed;
                            goto IL_1CB;
                        }
                        myData.GetAwardTimes = 1;
                    }
                    if (!base.GiveAward(client, allItem) || !base.GiveAward(client, occItem) || !base.GiveEffectiveTimeAward(client, timeItem.ToAwardItem()))
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("发送节日赠送王奖励的时候,发送失败,但是设置领奖成功,roleid={0}, rolename={1}, awardid={3}", client.ClientData.RoleID, client.ClientData.RoleName, awardid), null, true);
                    }
                    ec = JieriGiveErrorCode.Success;
                }
            }
IL_1CB:
            if (ec == JieriGiveErrorCode.Success)
            {
                if (client._IconStateMgr.CheckJieriGiveKing(client))
                {
                    client._IconStateMgr.AddFlushIconState(14000, client._IconStateMgr.IsAnyJieRiTipActived());
                    client._IconStateMgr.SendIconStateToClient(client);
                }
            }
            return(string.Format("{0}:{1}", (int)ec, awardid));
        }
コード例 #4
0
        public override bool GiveAward(GameClient client, int _params)
        {
            DateTime startTime = DateTime.Parse(this.FromDate);
            DateTime endTime   = DateTime.Parse(this.ToDate);

            JieriPlatChargeKingEveryDay.ChargeItem ci = null;
            bool result;

            if (!this.IdVsChargeItemDict.TryGetValue(_params, out ci))
            {
                result = false;
            }
            else
            {
                string huoDongKeyStr = Global.GetHuoDongKeyString(this.FromDate, this.ToDate);
                int    ret           = KFCopyRpcClient.getInstance().UpdateHuodongAwardUserHist(77, huoDongKeyStr, client.strUserID, ci.Day);
                if (ret < 0)
                {
                    result = false;
                }
                else
                {
                    AwardItem           allItem  = ci.allAwardGoodsOne;
                    AwardItem           occItem  = ci.occAwardGoodsTwo;
                    AwardEffectTimeItem timeItem = ci.timeAwardGoodsThr;
                    if (!base.GiveAward(client, allItem) || !base.GiveAward(client, occItem) || !base.GiveEffectiveTimeAward(client, timeItem.ToAwardItem()))
                    {
                        string errLogMsg = string.Format("发送节日每日平台充值王奖励的时候,发送失败,但是已经设置为领取成功, roleid={0}, rolename={1}, id={3}", client.ClientData.RoleID, client.ClientData.RoleName, _params);
                        LogManager.WriteLog(LogTypes.Error, errLogMsg, null, true);
                        result = false;
                    }
                    else
                    {
                        if (client._IconStateMgr.CheckJieRiPCKingEveryDay(client))
                        {
                            client._IconStateMgr.SendIconStateToClient(client);
                        }
                        result = true;
                    }
                }
            }
            return(result);
        }
コード例 #5
0
        public bool Init()
        {
            try
            {
                GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(CfgFile));
                XElement xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(CfgFile));
                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)
                        {
                            AwardItem           myAwardItem   = new AwardItem();
                            AwardItem           myAwardItem2  = new AwardItem();
                            AwardEffectTimeItem timeAwardItem = new AwardEffectTimeItem();

                            myAwardItem.MinAwardCondionValue = Global.GMax(0, (int)Global.GetSafeAttributeLong(xmlItem, "MinYuanBao"));
                            myAwardItem.AwardYuanBao         = 0;

                            string goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsOne");
                            if (string.IsNullOrEmpty(goodsIDs))
                            {
                                LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", CfgFile));
                            }
                            else
                            {
                                string[] fields = goodsIDs.Split('|');
                                if (fields.Length <= 0)
                                {
                                    LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", CfgFile));
                                }
                                else
                                {
                                    myAwardItem.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, "大型节日赠送王活动配置");
                                }
                            }

                            goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsTwo");
                            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("读取{0}配置文件中的物品配置项失败", CfgFile));
                                }
                                else
                                {
                                    //将物品字符串列表解析成物品数据列表
                                    myAwardItem2.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, "大型节日赠送王活动配置");
                                }
                            }

                            string timeGoods = Global.GetSafeAttributeStr(xmlItem, "GoodsThr");
                            string timeList  = Global.GetSafeAttributeStr(xmlItem, "EffectiveTime");
                            timeAwardItem.Init(timeGoods, timeList, "大型节日赠送王时效性物品活动配置");

                            string   rankings = Global.GetSafeAttributeStr(xmlItem, "Ranking");
                            string[] paiHangs = rankings.Split('-');

                            if (paiHangs.Length <= 0)
                            {
                                continue;
                            }

                            int min = Global.SafeConvertToInt32(paiHangs[0]);
                            int max = Global.SafeConvertToInt32(paiHangs[paiHangs.Length - 1]);

                            //设置排行奖励
                            for (int paiHang = min; paiHang <= max; paiHang++)
                            {
                                allAwardDict.Add(paiHang, myAwardItem);
                                occAwardDict.Add(paiHang, myAwardItem2);
                                timeAwardDict.Add(paiHang, timeAwardItem);
                            }
                        }
                    }
                }

                PredealDateTime();
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Fatal, string.Format("{0}解析出现异常, {1}", CfgFile, ex.Message));

                return(false);
            }
            return(true);
        }
コード例 #6
0
        // 客户端请求领取奖励 return `ec:awardid`
        public string ProcRoleGetAward(GameClient client, int awardid)
        {
            JieriGiveErrorCode ec = JieriGiveErrorCode.Success;

            do
            {
                if (!InAwardTime())
                {
                    ec = JieriGiveErrorCode.NotAwardTime;
                    break;
                }

                if (!HasEnoughBagSpaceForAwardGoods(client, awardid))
                {
                    ec = JieriGiveErrorCode.NoBagSpace;
                    break;
                }

                AwardItem           allItem = null, occItem = null;
                AwardEffectTimeItem timeItem = null;
                if (!allAwardDict.TryGetValue(awardid, out allItem) || !occAwardDict.TryGetValue(awardid, out occItem) ||
                    !timeAwardDict.TryGetValue(awardid, out timeItem))
                {
                    ec = JieriGiveErrorCode.ConfigError;
                    break;
                }

                lock (_allMemberMutex)
                {
                    JieriGiveKingItemData myData = GetClientGiveKingInfo(client);
                    if (myData == null || myData.TotalGive < allItem.MinAwardCondionValue || myData.GetAwardTimes > 0 || myData.Rank != awardid)
                    {
                        ec = JieriGiveErrorCode.NotMeetAwardCond;
                        break;
                    }
                    string   dbReq = string.Format("{0}:{1}:{2}", client.ClientData.RoleID, FromDate.Replace(':', '$'), ToDate.Replace(':', '$'));
                    string[] dbRsp = Global.ExecuteDBCmd((int)TCPGameServerCmds.CMD_DB_GET_JIERI_GIVE_KING_AWARD, dbReq, client.ServerId);
                    if (dbRsp == null || dbRsp.Length != 1 || Convert.ToInt32(dbRsp[0]) <= 0)
                    {
                        ec = JieriGiveErrorCode.DBFailed;
                        break;
                    }

                    myData.GetAwardTimes = 1;
                }

                if (!GiveAward(client, allItem) || !GiveAward(client, occItem) || !GiveEffectiveTimeAward(client, timeItem.ToAwardItem()))
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("发送节日赠送王奖励的时候,发送失败,但是设置领奖成功,roleid={0}, rolename={1}, awardid={3}", client.ClientData.RoleID, client.ClientData.RoleName, awardid));
                }
                ec = JieriGiveErrorCode.Success;
            } while (false);

            if (ec == JieriGiveErrorCode.Success)
            {
                if (client._IconStateMgr.CheckJieriGiveKing(client))
                {
                    client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, client._IconStateMgr.IsAnyJieRiTipActived());
                    client._IconStateMgr.SendIconStateToClient(client);
                }
            }

            return(string.Format("{0}:{1}", (int)ec, awardid));
        }
コード例 #7
0
 public bool Init()
 {
     try
     {
         GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(this.CfgFile));
         XElement xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(this.CfgFile));
         if (null == xml)
         {
             return(false);
         }
         XElement args = xml.Element("Activities");
         if (null != args)
         {
             this.FromDate       = Global.GetSafeAttributeStr(args, "FromDate");
             this.ToDate         = Global.GetSafeAttributeStr(args, "ToDate");
             this.ActivityType   = (int)Global.GetSafeAttributeLong(args, "ActivityType");
             this.AwardStartDate = Global.GetSafeAttributeStr(args, "AwardStartDate");
             this.AwardEndDate   = Global.GetSafeAttributeStr(args, "AwardEndDate");
         }
         args = xml.Element("GiftList");
         if (null != args)
         {
             IEnumerable <XElement> xmlItems = args.Elements();
             foreach (XElement xmlItem in xmlItems)
             {
                 if (null != xmlItem)
                 {
                     JieriPlatChargeKingEveryDay.ChargeItem ci = new JieriPlatChargeKingEveryDay.ChargeItem();
                     ci.Id           = (int)Global.GetSafeAttributeLong(xmlItem, "ID");
                     ci.Rank         = (int)Global.GetSafeAttributeLong(xmlItem, "Ranking");
                     ci.Day          = (int)Global.GetSafeAttributeLong(xmlItem, "Day");
                     ci.NeedChargeYB = (int)Global.GetSafeAttributeLong(xmlItem, "MinYuanBao");
                     AwardItem           myAwardItem   = new AwardItem();
                     AwardItem           myAwardItem2  = new AwardItem();
                     AwardEffectTimeItem timeAwardItem = new AwardEffectTimeItem();
                     string goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsOne");
                     if (string.IsNullOrEmpty(goodsIDs))
                     {
                         LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", this.CfgFile), null, true);
                     }
                     else
                     {
                         string[] fields = goodsIDs.Split(new char[]
                         {
                             '|'
                         });
                         if (fields.Length <= 0)
                         {
                             LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", this.CfgFile), null, true);
                         }
                         else
                         {
                             myAwardItem.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, "大型节日活动每日平台充值王配置");
                         }
                     }
                     goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsTwo");
                     if (!string.IsNullOrEmpty(goodsIDs))
                     {
                         string[] fields = goodsIDs.Split(new char[]
                         {
                             '|'
                         });
                         if (fields.Length <= 0)
                         {
                             LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", this.CfgFile), null, true);
                         }
                         else
                         {
                             myAwardItem2.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, "大型节日活动每日平台充值王配置2");
                         }
                     }
                     string timeGoods = Global.GetSafeAttributeStr(xmlItem, "GoodsThr");
                     string timeList  = Global.GetSafeAttributeStr(xmlItem, "EffectiveTime");
                     timeAwardItem.Init(timeGoods, timeList, "大型节日每日平台充值王时效性物品活动配置");
                     ci.allAwardGoodsOne            = myAwardItem;
                     ci.occAwardGoodsTwo            = myAwardItem2;
                     ci.timeAwardGoodsThr           = timeAwardItem;
                     this.IdVsChargeItemDict[ci.Id] = ci;
                     List <JieriPlatChargeKingEveryDay.ChargeItem> chargeItemList;
                     if (!this.DayVsChargeItemListDict.TryGetValue(ci.Day, out chargeItemList))
                     {
                         chargeItemList = new List <JieriPlatChargeKingEveryDay.ChargeItem>();
                         chargeItemList.Add(ci);
                         this.DayVsChargeItemListDict[ci.Day] = chargeItemList;
                     }
                     else
                     {
                         chargeItemList.Add(ci);
                     }
                     chargeItemList.Sort(delegate(JieriPlatChargeKingEveryDay.ChargeItem left, JieriPlatChargeKingEveryDay.ChargeItem right)
                     {
                         int result;
                         if (left.Rank < right.Rank)
                         {
                             result = -1;
                         }
                         else if (left.Rank > right.Rank)
                         {
                             result = 1;
                         }
                         else
                         {
                             result = 0;
                         }
                         return(result);
                     });
                 }
             }
         }
         base.PredealDateTime();
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Fatal, string.Format("{0}解析出现异常, {1}", this.CfgFile, ex.Message), null, true);
         return(false);
     }
     return(true);
 }
コード例 #8
0
 public bool Init()
 {
     try
     {
         this.allAwardDict.Clear();
         this.occAwardDict.Clear();
         this.timeAwardDict.Clear();
         GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath("Config/JieRiGifts/JieRiHongBaoBang.xml"));
         XElement xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath("Config/JieRiGifts/JieRiHongBaoBang.xml"));
         if (null == xml)
         {
             return(false);
         }
         XElement args = xml.Element("Activities");
         if (null != args)
         {
             this.FromDate       = Global.GetSafeAttributeStr(args, "FromDate");
             this.ToDate         = Global.GetSafeAttributeStr(args, "ToDate");
             this.ActivityType   = (int)Global.GetSafeAttributeLong(args, "ActivityType");
             this.AwardStartDate = Global.GetSafeAttributeStr(args, "AwardStartDate");
             this.AwardEndDate   = Global.GetSafeAttributeStr(args, "AwardEndDate");
         }
         args = xml.Element("GiftList");
         if (null != args)
         {
             IEnumerable <XElement> xmlItems = args.Elements();
             foreach (XElement xmlItem in xmlItems)
             {
                 if (null != xmlItem)
                 {
                     AwardItem           myAwardItem   = new AwardItem();
                     AwardItem           myAwardItem2  = new AwardItem();
                     AwardEffectTimeItem timeAwardItem = new AwardEffectTimeItem();
                     myAwardItem.MinAwardCondionValue = Global.GMax(0, (int)Global.GetSafeAttributeLong(xmlItem, "Threshold"));
                     myAwardItem.AwardYuanBao         = 0;
                     string goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsOne");
                     if (string.IsNullOrEmpty(goodsIDs))
                     {
                         LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", "Config/JieRiGifts/JieRiHongBaoBang.xml"), null, true);
                     }
                     else
                     {
                         string[] fields = goodsIDs.Split(new char[]
                         {
                             '|'
                         });
                         if (fields.Length <= 0)
                         {
                             LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", "Config/JieRiGifts/JieRiHongBaoBang.xml"), null, true);
                         }
                         else
                         {
                             myAwardItem.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, "大型节日赠送王活动配置");
                         }
                     }
                     goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsTwo");
                     if (!string.IsNullOrEmpty(goodsIDs))
                     {
                         string[] fields = goodsIDs.Split(new char[]
                         {
                             '|'
                         });
                         if (fields.Length <= 0)
                         {
                             LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项失败", "Config/JieRiGifts/JieRiHongBaoBang.xml"), null, true);
                         }
                         else
                         {
                             myAwardItem2.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, "大型节日赠送王活动配置");
                         }
                     }
                     string timeGoods = Global.GetSafeAttributeStr(xmlItem, "GoodsThr");
                     string timeList  = Global.GetSafeAttributeStr(xmlItem, "EffectiveTime");
                     timeAwardItem.Init(timeGoods, timeList, "大型节日赠送王时效性物品活动配置");
                     string   rankings = Global.GetSafeAttributeStr(xmlItem, "Ranking");
                     string[] paiHangs = rankings.Split(new char[]
                     {
                         '-'
                     });
                     if (paiHangs.Length > 0)
                     {
                         int min = Global.SafeConvertToInt32(paiHangs[0]);
                         int max = Global.SafeConvertToInt32(paiHangs[paiHangs.Length - 1]);
                         for (int paiHang = min; paiHang <= max; paiHang++)
                         {
                             this.allAwardDict.Add(paiHang, myAwardItem);
                             this.occAwardDict.Add(paiHang, myAwardItem2);
                             this.timeAwardDict.Add(paiHang, timeAwardItem);
                         }
                     }
                 }
             }
         }
         base.PredealDateTime();
         this.ActivityKeyStr = string.Format("{0}_{1}", this.FromDate.Replace(':', '$'), this.ToDate.Replace(':', '$'));
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Fatal, string.Format("{0}解析出现异常, {1}", "Config/JieRiGifts/JieRiHongBaoBang.xml", ex.Message), null, true);
         return(false);
     }
     return(true);
 }
コード例 #9
0
        public new void GetAward(GameClient client, int awardid)
        {
            int result = 0;

            if (!this.InAwardTime())
            {
                result = -2001;
            }
            else if (!this.HasEnoughBagSpaceForAwardGoods(client, awardid))
            {
                result = -100;
            }
            else
            {
                AwardItem           allItem  = null;
                AwardItem           occItem  = null;
                AwardEffectTimeItem timeItem = null;
                if (!this.allAwardDict.TryGetValue(awardid, out allItem) || !this.occAwardDict.TryGetValue(awardid, out occItem) || !this.timeAwardDict.TryGetValue(awardid, out timeItem))
                {
                    result = -3;
                }
                else
                {
                    lock (this.Mutex)
                    {
                        JieriHongBaoKingItemData item;
                        if (!this.recvDict.TryGetValue(client.ClientData.RoleID, out item))
                        {
                            result = -20;
                            goto IL_21F;
                        }
                        if (item.GetAwardTimes > 0)
                        {
                            result = -200;
                            goto IL_21F;
                        }
                        JieriHongBaoKingItemData myData = this.GetRoleRecvKingInfo(client, 0, 0, client.ServerId);
                        if (myData == null || myData.TotalRecv < allItem.MinAwardCondionValue || myData.GetAwardTimes > 0 || myData.Rank != awardid)
                        {
                            result = -20;
                            goto IL_21F;
                        }
                        List <string> dbReq = new List <string>
                        {
                            this.ActivityKeyStr,
                            client.ClientData.RoleID.ToString(),
                            "1"
                        };
                        int ret = Global.sendToDB <int, List <string> >(1428, dbReq, client.ServerId);
                        if (ret < 0)
                        {
                            result = -15;
                            goto IL_21F;
                        }
                        myData.GetAwardTimes = 1;
                    }
                    if (!base.GiveAward(client, allItem) || !base.GiveAward(client, occItem) || !base.GiveEffectiveTimeAward(client, timeItem.ToAwardItem()))
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("发送节日红包榜奖励的时候,发送失败,但是已经设置为领取成功, roleid={0}, rolename={1}, awardid={3}", client.ClientData.RoleID, client.ClientData.RoleName, awardid), null, true);
                    }
                    client._IconStateMgr.CheckJieRiHongBaoBang(client);
                }
            }
IL_21F:
            client.sendCmd <int>(1428, result, false);
        }
コード例 #10
0
ファイル: JieriGiveRecv_Base.cs プロジェクト: chenchungit/ky
        // 返回 ec:totalgive:totalrecv:awardflag
        public string ProcRoleGetAward(GameClient client, int awardid)
        {
            JieriGiveErrorCode ec = JieriGiveErrorCode.Success;

            do
            {
                if (!InAwardTime())
                {
                    ec = JieriGiveErrorCode.NotAwardTime;
                    break;
                }

                if (!HasEnoughBagSpaceForAwardGoods(client, awardid))
                {
                    ec = JieriGiveErrorCode.NoBagSpace;
                    break;
                }

                AwardItem           allItem = null, occItem = null;
                AwardEffectTimeItem timeItem = null;
                if (!allAwardDict.TryGetValue(awardid, out allItem) || !occAwardDict.TryGetValue(awardid, out occItem) ||
                    !timeAwardDict.TryGetValue(awardid, out timeItem))
                {
                    ec = JieriGiveErrorCode.ConfigError;
                    break;
                }

                RoleGiveRecvInfo info = GetRoleGiveRecvInfo(client.ClientData.RoleID);
                // 注意,这里可以不用所info,因为TotalGive和AwardFlag只能由玩家自己操作
                if (!IsReachConition(info, allItem.MinAwardCondionValue) || (info.AwardFlag & (1 << awardid)) != 0)
                {
                    ec = JieriGiveErrorCode.NotMeetAwardCond;
                    break;
                }

                int newAwardFlag = info.AwardFlag | (1 << awardid);
                // 天数信息直接取info中保存的,防止查询的和领取时恰好跨天
                string   dbReq = string.Format("{0}:{1}:{2}:{3}:{4}:{5}", client.ClientData.RoleID, info.TodayStart.Replace(':', '$'), info.TodayEnd.Replace(':', '$'), ActivityType, info.TodayIdxInActPeriod, newAwardFlag);
                string[] dbRsp = Global.ExecuteDBCmd((int)TCPGameServerCmds.CMD_DB_SPR_GET_JIERI_GIVE_AWARD, dbReq, client.ServerId);
                if (dbRsp == null || dbRsp.Length < 1 || Convert.ToInt32(dbRsp[0]) <= 0)
                {
                    ec = JieriGiveErrorCode.DBFailed;
                    break;
                }

                info.AwardFlag = newAwardFlag;
                if (!GiveAward(client, allItem) || !GiveAward(client, occItem) || !GiveEffectiveTimeAward(client, timeItem.ToAwardItem()))
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("节日赠送活动奖品发送失败,但是已经设置为已发放,roleid={0}, rolename={1}, awardid={3}", client.ClientData.RoleID, client.ClientData.RoleName, awardid));
                }

                ec = JieriGiveErrorCode.Success;
            } while (false);

            // 检查更新图标
            if (ec == JieriGiveErrorCode.Success)
            {
                FlushIcon(client);
            }

            return(string.Format("{0}:{1}", (int)ec, awardid));
        }
コード例 #11
0
ファイル: JieriGiveRecv_Base.cs プロジェクト: chenchungit/ky
        // 初始化活动,读取配置文件
        public bool Init()
        {
            string CfgFile = GetConfigFile();

            try
            {
                GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath(CfgFile));
                XElement xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath(CfgFile));
                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)
                        {
                            AwardItem           myAwardItem   = new AwardItem();
                            AwardItem           myAwardItem2  = new AwardItem();
                            AwardEffectTimeItem timeAwardItem = new AwardEffectTimeItem();

                            myAwardItem.MinAwardCondionValue  = Global.GMax(0, (int)Global.GetSafeAttributeLong(xmlItem, "Num"));
                            myAwardItem.MinAwardCondionValue2 = Global.GMax(0, (int)Global.GetSafeAttributeLong(xmlItem, "Goods"));
                            myAwardItem.AwardYuanBao          = 0;

                            string goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsOne");
                            if (string.IsNullOrEmpty(goodsIDs))
                            {
                                LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项1失败", CfgFile));
                            }
                            else
                            {
                                string[] fields = goodsIDs.Split('|');
                                if (fields.Length <= 0)
                                {
                                    LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}活动配置文件中的物品配置项失败", CfgFile));
                                }
                                else
                                {
                                    myAwardItem.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, CfgFile);
                                }
                            }

                            goodsIDs = Global.GetSafeAttributeStr(xmlItem, "GoodsTwo");
                            if (string.IsNullOrEmpty(goodsIDs))
                            {
                                //LogManager.WriteLog(LogTypes.Warning, string.Format("读取{0}配置文件中的物品配置项2失败", CfgFile));
                            }
                            else
                            {
                                string[] fields = goodsIDs.Split('|');
                                if (fields.Length <= 0)
                                {
                                    LogManager.WriteLog(LogTypes.Warning, CfgFile);
                                }
                                else
                                {
                                    myAwardItem2.GoodsDataList = HuodongCachingMgr.ParseGoodsDataList(fields, CfgFile);
                                }
                            }

                            string timeGoods = Global.GetSafeAttributeStr(xmlItem, "GoodsThr");
                            string timeList  = Global.GetSafeAttributeStr(xmlItem, "EffectiveTime");
                            timeAwardItem.Init(timeGoods, timeList, CfgFile + " 时效性物品");

                            string strID = Global.GetSafeAttributeStr(xmlItem, "ID");
                            int    id    = Convert.ToInt32(strID);
                            allAwardDict.Add(id, myAwardItem);
                            occAwardDict.Add(id, myAwardItem2);
                            timeAwardDict.Add(id, timeAwardItem);
                        }
                    }
                }

                PredealDateTime();
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Fatal, string.Format("{0}解析出现异常, {1}", CfgFile, ex.Message));
                return(false);
            }

            return(true);
        }
コード例 #12
0
        public string ProcRoleGetAward(GameClient client, int awardid)
        {
            JieriGiveErrorCode ec;

            if (!this.InAwardTime())
            {
                ec = JieriGiveErrorCode.NotAwardTime;
            }
            else if (!this.HasEnoughBagSpaceForAwardGoods(client, awardid))
            {
                ec = JieriGiveErrorCode.NoBagSpace;
            }
            else
            {
                AwardItem           allItem  = null;
                AwardItem           occItem  = null;
                AwardEffectTimeItem timeItem = null;
                if (!this.allAwardDict.TryGetValue(awardid, out allItem) || !this.occAwardDict.TryGetValue(awardid, out occItem) || !this.timeAwardDict.TryGetValue(awardid, out timeItem))
                {
                    ec = JieriGiveErrorCode.ConfigError;
                }
                else
                {
                    RoleGiveRecvInfo info = this.GetRoleGiveRecvInfo(client.ClientData.RoleID);
                    if (!this.IsReachConition(info, allItem.MinAwardCondionValue) || (info.AwardFlag & 1 << awardid) != 0)
                    {
                        ec = JieriGiveErrorCode.NotMeetAwardCond;
                    }
                    else
                    {
                        int    newAwardFlag = info.AwardFlag | 1 << awardid;
                        string dbReq        = string.Format("{0}:{1}:{2}:{3}:{4}:{5}", new object[]
                        {
                            client.ClientData.RoleID,
                            info.TodayStart.Replace(':', '$'),
                            info.TodayEnd.Replace(':', '$'),
                            this.ActivityType,
                            info.TodayIdxInActPeriod,
                            newAwardFlag
                        });
                        string[] dbRsp = Global.ExecuteDBCmd(13201, dbReq, client.ServerId);
                        if (dbRsp == null || dbRsp.Length < 1 || Convert.ToInt32(dbRsp[0]) <= 0)
                        {
                            ec = JieriGiveErrorCode.DBFailed;
                        }
                        else
                        {
                            info.AwardFlag = newAwardFlag;
                            if (!base.GiveAward(client, allItem) || !base.GiveAward(client, occItem) || !base.GiveEffectiveTimeAward(client, timeItem.ToAwardItem()))
                            {
                                LogManager.WriteLog(LogTypes.Error, string.Format("节日赠送活动奖品发送失败,但是已经设置为已发放,roleid={0}, rolename={1}, awardid={3}", client.ClientData.RoleID, client.ClientData.RoleName, awardid), null, true);
                            }
                            ec = JieriGiveErrorCode.Success;
                        }
                    }
                }
            }
            if (ec == JieriGiveErrorCode.Success)
            {
                this.FlushIcon(client);
            }
            return(string.Format("{0}:{1}", (int)ec, awardid));
        }