Exemple #1
0
        /// <summary>
        /// 检查可以获得的下一个随机特效奖励
        /// </summary>
        /// <param name="client"></param>
        /// <param name="day"></param>
        /// <param name="awardType"></param>
        /// <param name="canGetMax"></param>
        /// <returns></returns>
        private bool GetNextCanEffectAward(GameClient client, int day, out EWishEffectAwardType awardType, out int canGetMax)
        {
            awardType = EWishEffectAwardType.None;
            canGetMax = 0;

            string szEffectAward = Global.GetRoleParamByName(client, RoleParamName.CoupleWishEffectAward);

            string[] awardFields = !string.IsNullOrEmpty(szEffectAward) ? szEffectAward.Split(',') : null;

            if (awardFields == null || awardFields.Length != 2 + (int)EWishEffectAwardType.Max)
            {
                // 奖励记录数据不正确,重新从第一个开始奖励
                awardType = EWishEffectAwardType.BangJin;
                canGetMax = WishEffectDayMaxAward[awardType];
                return(true);
            }

            if (Convert.ToInt32(awardFields[1]) != day)
            {
                // 上次奖励日期不是今天,从下一个开始奖励,已获得数值清空
                awardType = (EWishEffectAwardType)((Convert.ToInt32(awardFields[0]) + 1) % (int)EWishEffectAwardType.Max);
                canGetMax = WishEffectDayMaxAward[awardType];
                return(true);
            }

            // 循环找到下一个可奖励的项
            for (int i = 0; i < (int)EWishEffectAwardType.Max; i++)
            {
                int nextType   = (Convert.ToInt32(awardFields[0]) + i + 1) % (int)EWishEffectAwardType.Max;
                int nextHadGet = Convert.ToInt32(awardFields[2 + nextType]);

                if (WishEffectDayMaxAward[(EWishEffectAwardType)nextType] > nextHadGet)
                {
                    awardType = (EWishEffectAwardType)nextType;
                    canGetMax = WishEffectDayMaxAward[awardType] - nextHadGet;
                    return(true);
                }
            }

            return(false);
        }
Exemple #2
0
        /// <summary>
        /// 存储特效奖励
        /// </summary>
        /// <param name="client"></param>
        /// <param name="day"></param>
        /// <param name="awardType"></param>
        /// <param name="get"></param>
        private void SaveGetNextEffectAward(GameClient client, int day, EWishEffectAwardType awardType, int get)
        {
            string szEffectAward = Global.GetRoleParamByName(client, RoleParamName.CoupleWishEffectAward);

            string[] awardFields = !string.IsNullOrEmpty(szEffectAward) ? szEffectAward.Split(',') : null;

            int[] newFlag = new int[2 + (int)EWishEffectAwardType.Max];
            newFlag[0] = (int)awardType;
            newFlag[1] = day;
            if (awardFields != null && awardFields.Length == 2 + (int)EWishEffectAwardType.Max && Convert.ToInt32(awardFields[1]) == day)
            {
                for (int i = 0; i < (int)EWishEffectAwardType.Max; i++)
                {
                    newFlag[2 + i] = Convert.ToInt32(awardFields[2 + i]);
                }
            }

            newFlag[2 + (int)awardType] = (int)Math.Min((long)int.MaxValue, newFlag[2 + (int)awardType] + get);
            Global.SaveRoleParamsStringToDB(client, RoleParamName.CoupleWishEffectAward,
                                            string.Format("{0},{1},{2},{3},{4}", newFlag[0], newFlag[1], newFlag[2], newFlag[3], newFlag[4]), true);
        }