Beispiel #1
0
            public static void SetRankRule(string info)
            {
                var ruleList = info.Split(',');

                foreach (var rule in ruleList)
                {
                    var ru = rule.Split(':');
                    RankRule.Add(ru[0], Convert.ToDouble(ru[1]));
                }
            }
Beispiel #2
0
            private double GetGoodsPrice()
            {
                double ITalentPrice      = 0;
                double IAchievementPrice = 0;
                var    thisTalent        = Convert.ToDouble(this.ITalent);
                var    thisAchievement   = Convert.ToDouble(this.IAchievement);

                foreach (var talentRank in ITalentPriceHandle)
                {
                    if (thisTalent > talentRank.Key)
                    {
                        ITalentPrice = talentRank.Value;
                    }
                    else
                    {
                        break;
                    }
                }
                foreach (var achievementRank in IAchievementPriceHandle)
                {
                    if (thisAchievement > achievementRank.Key)
                    {
                        IAchievementPrice = achievementRank.Value;
                    }
                    else
                    {
                        break;
                    }
                }
                double IRankPrice;

                if (this.IFlyupFlag == "1")
                {
                    IRankPrice = Convert.ToDouble(RankRule.ContainsKey("飞升") ? RankRule["飞升"] : -40404);
                }
                else
                {
                    IRankPrice = Convert.ToDouble(RankRule.ContainsKey("其他") ? RankRule["其他"] : -40406);
                }
                var assert = Convert.ToDouble(ICash) + Convert.ToDouble(ISaving);

                assert /= 550000;                //设置为单位财产价值
                assert  = Math.Round(assert, 0);
                var 帮派成就价 = Math.Round(Convert.ToDouble(IChengjiu) / 2000, 0);
                var 家具回灵价 = Convert.ToDouble(iSingleEnergyRate) >= 500 ? 60 : 0;

                Program.setting.LogInfo(string.Format("人物估价: Max(等级({0}),{6}等级=> 天赋({1})+成就({2}))+财产({3})+帮派成就({4})+家具回灵({5})", IRankPrice, ITalentPrice, IAchievementPrice, assert, 帮派成就价, 家具回灵价, IFlyupFlag == "1" ? "飞升" : "3转"), server.ServerName);
                return(Math.Max(IRankPrice, this.IFlyupFlag == "1"?ITalentPrice + IAchievementPrice:0) + assert + 帮派成就价 + 家具回灵价);
            }
Beispiel #3
0
        private void CalculateRanking(UserGameType userGame, SqlTransaction t)
        {
            User item = new User(game.Cxt, userGame.UserID);

            //Calculate Ranking
            if (item == null || item.UserID <= 16)
            {
                return;
            }

            RankRule rankRule = RankRules.Instance.GetRankRule(userGame.EloRating, userGame.NoOfGames, item.LoginDays.Days, userGame.ChessTypeID);

            switch (userGame.ChessTypeIDE)
            {
            case ChessTypeE.None:
                break;

            case ChessTypeE.Human:
                #region GameType
                switch (game.GameTypeIDE)
                {
                case GameType.None:
                    break;

                case GameType.Bullet:
                    break;

                case GameType.Blitz:
                    item.HumanRankIDE = rankRule.RankIDE;
                    break;

                case GameType.Rapid:
                    break;

                case GameType.Long:
                    break;

                default:
                    break;
                }
                #endregion
                break;

            case ChessTypeE.Engine:
                #region GameType
                switch (game.GameTypeIDE)
                {
                case GameType.None:
                    break;

                case GameType.Bullet:
                    break;

                case GameType.Blitz:
                    break;

                case GameType.Rapid:
                    item.EngineRankIDE = rankRule.RankIDE;
                    break;

                case GameType.Long:
                    break;

                default:
                    break;
                }
                #endregion
                break;

            case ChessTypeE.Centaur:
                item.CentaurRankIDE = rankRule.RankIDE;
                break;

            case ChessTypeE.Correspondence:
                item.CorrespondenceRankIDE = rankRule.RankIDE;
                break;
            }

            //Save Ranking
            item.Save();
        }