예제 #1
0
 internal static List <PC> GetScoresWithoutSP(Character.ClassType classType, int amount, bool devRequest, string playerName, bool pvp)
 {
     using (var conn = DataAccess.GetSQLConnection())
     {
         var scoresList = new List <PC>();
         var score      = new PC();
         int rank       = 1;
         try
         {
             var selectScores      = new SqlCommand();
             var selectByClassType = classType != Character.ClassType.None && classType != Character.ClassType.All ? "WHERE classType = '" + classType.ToString() + "'" : "";
             var selectDevRequest  = devRequest ? "1" : "0";
             selectScores.Connection   = conn;
             selectScores.CommandText  = "SELECT [playerID], land, [name], classType, classFullName, [level], [exp], numKills, roundsPlayed, lastOnline, pvpKills, pvpDeaths, currentKarma, impLevel";
             selectScores.CommandText += " FROM Player " + selectByClassType;
             if (!devRequest)
             {
                 if (selectByClassType.Length > 0)
                 {
                     selectScores.CommandText += " AND impLevel = '0'";
                 }
                 else
                 {
                     selectScores.CommandText += "WHERE impLevel = '0'";
                 }
             }
             selectScores.CommandText  = selectScores.CommandText.TrimEnd();
             selectScores.CommandText += " ORDER BY [exp] DESC";
             DataTable dtScores = new DataTable();
             selectScores.Connection.Open();
             dtScores.Load(selectScores.ExecuteReader());
             selectScores.Connection.Close();
             foreach (DataRow dr in dtScores.Rows)
             {
                 if (playerName != "")
                 {
                     if (dr["name"].ToString().ToLower() == playerName.ToString().ToLower())
                     {
                         score             = new PC();
                         score.UniqueID    = Convert.ToInt32(dr["playerID"]);
                         score.IsAnonymous = (bool)PC.GetField(score.UniqueID, "anonymous", score.IsAnonymous, null);
                         if (score.IsAnonymous)
                         {
                             if (devRequest)
                             {
                                 score.TemporaryStorage = rank;
                                 score = ConvertRowToScore(score, dr, devRequest);
                                 scoresList.Add(score);
                             }
                             return(scoresList);
                         }
                         else
                         {
                             score.TemporaryStorage = rank;
                             score = ConvertRowToScore(score, dr, devRequest);
                             scoresList.Add(score);
                             return(scoresList);
                         }
                     }
                     if (Convert.ToInt32(dr["impLevel"]) == 0 || score.Name.ToLower() == playerName.ToLower())
                     {
                         rank++;
                     }
                 }
                 else
                 {
                     if (amount == 0)
                     {
                         break;
                     }
                     score             = new PC();
                     score.UniqueID    = Convert.ToInt32(dr["playerID"]);
                     score.IsAnonymous = (bool)PC.GetField(score.UniqueID, "anonymous", score.IsAnonymous, null);
                     if (devRequest)                    // devs get to see a list of everyone
                     {
                         score.TemporaryStorage = rank; // player ID is used to store the player's rank
                         score = ConvertRowToScore(score, dr, devRequest);
                         scoresList.Add(score);
                         if (!score.IsAnonymous && score.ImpLevel == Globals.eImpLevel.USER)
                         {
                             amount--;
                         }
                     }
                     else // only add the score to the list if they are not anonymous
                     {
                         score.TemporaryStorage = rank;
                         score = ConvertRowToScore(score, dr, devRequest);
                         scoresList.Add(score);
                         amount--;
                     }
                     rank++;
                 }
             }
             return(scoresList);
         }
         catch (Exception e)
         {
             Utils.LogException(e);
         }
     }
     return(null);
 }
예제 #2
0
        internal static List <PC> GetScores(Character.ClassType classType, int amount, bool devRequest, string playerName, bool pvp)
        {
            var scoresList = new List <PC>();
            var score      = new PC();
            int rank       = 1;

            using (var conn = DataAccess.GetSQLConnection())
            {
                try
                {
                    SqlStoredProcedure sp = new SqlStoredProcedure("prApp_Scores_Select", conn);
                    sp.AddParameter("@devRequest", SqlDbType.Bit, 1, ParameterDirection.Input, devRequest);
                    sp.AddParameter("@classType", SqlDbType.VarChar, 50, ParameterDirection.Input, classType.ToString());
                    DataTable dtScores = sp.ExecuteDataTable();
                    foreach (DataRow dr in dtScores.Rows)
                    {
                        if (playerName != "")
                        {
                            if (dr["name"].ToString().ToLower() == playerName.ToString().ToLower())
                            {
                                score             = new PC();
                                score.UniqueID    = Convert.ToInt32(dr["playerID"]);
                                score.IsAnonymous = (bool)PC.GetField(score.UniqueID, "anonymous", score.IsAnonymous, null);
                                if (score.IsAnonymous)
                                {
                                    if (devRequest)
                                    {
                                        score.TemporaryStorage = rank;
                                        score = ConvertRowToScore(score, dr, devRequest);
                                        scoresList.Add(score);
                                    }
                                    return(scoresList);
                                }
                                else
                                {
                                    score.TemporaryStorage = rank;
                                    score = ConvertRowToScore(score, dr, devRequest);
                                    scoresList.Add(score);
                                    return(scoresList);
                                }
                            }
                            if (Convert.ToInt32(dr["impLevel"]) == 0 || score.Name.ToLower() == playerName.ToLower())
                            {
                                rank++;
                            }
                        }
                        else
                        {
                            if (amount == 0)
                            {
                                break;
                            }
                            score             = new PC();
                            score.UniqueID    = Convert.ToInt32(dr["playerID"]);
                            score.IsAnonymous = (bool)PC.GetField(score.UniqueID, "anonymous", score.IsAnonymous, null);
                            if (devRequest)                    // devs get to see a list of everyone
                            {
                                score.TemporaryStorage = rank; // player ID is used to store the player's rank
                                score = ConvertRowToScore(score, dr, devRequest);
                                scoresList.Add(score);
                                if (!score.IsAnonymous && score.ImpLevel == Globals.eImpLevel.USER)
                                {
                                    amount--;
                                }
                            }
                            else // only add the score to the list if they are not anonymous
                            {
                                score.TemporaryStorage = rank;
                                score = ConvertRowToScore(score, dr, devRequest);
                                scoresList.Add(score);
                                amount--;
                            }
                            rank++;
                        }
                    }
                    return(scoresList);
                }
                catch (Exception e)
                {
                    Utils.LogException(e);
                    return(null);
                }
            }
        }