All pastes #252450 Raw Edit

Anonymous

public text v1 · immutable
#252450 ·published 2006-11-19 15:36 UTC
rendered paste body
        public void UpdateStats(Mobile toUpdate, string outcome)
        {
            DataRow existingRow = duelstoneTable.Rows.Find(((int)toUpdate.Serial).ToString());

            string killed, killedBy, stonesUsed;
            string stringNumber = "";
            string updatePlayerString = "";

            int points = int.Parse(existingRow.ItemArray[2].ToString()), won = int.Parse(existingRow.ItemArray[3].ToString()), lost = int.Parse(existingRow.ItemArray[4].ToString());
            int joined = won + lost;
            int repeatedNumber = 0, moneyCost = 0;

            //Set MoneyEarned
            int moneyEarned = 0;
            int.TryParse(existingRow.ItemArray[5].ToString(), out moneyEarned);

            #region Set Stone Name
            stonesUsed = existingRow.ItemArray[8].ToString();
            string stoneName = "";

            if (stoneToUpdate.StoneType.ToString() == "Money1vs1")
                stoneName = "Money 1vs1";
            else if (stoneToUpdate.StoneType.ToString() == "Loot1vs1")
                stoneName = "Loot 1vs1";
            if (stoneToUpdate.StoneType.ToString() == "Money2vs2")
                stoneName = "Money 2vs2";
            else if (stoneToUpdate.StoneType.ToString() == "Loot2vs2")
                stoneName = "Loot 2vs2";

            if (stoneName.Contains("Money"))
            {
                stoneName += " (" + stoneToUpdate.DuelCost + ")";
                moneyCost = stoneToUpdate.DuelCost;

            }
            #endregion

            if (stonesUsed.Contains("*" + stoneName))
            {
                while ((stonesUsed.IndexOf("*" + stoneName) - 1) >= 0 && ';' != stonesUsed[(stonesUsed.IndexOf("*" + stoneName) - 1)])
                {
                    stringNumber = stringNumber.Insert(0, stonesUsed[(stonesUsed.IndexOf("*" + stoneName) - 1)].ToString());

                    if ((stonesUsed.IndexOf("*" + stoneName) - 1) >= 0)
                        stonesUsed = stonesUsed.Remove(stonesUsed.IndexOf("*" + stoneName) - 1, 1);

                }

                int.TryParse(stringNumber.ToString(), out repeatedNumber);

                repeatedNumber++;

                stonesUsed = stonesUsed.Insert(stonesUsed.IndexOf("*" + stoneName), repeatedNumber.ToString());

            }
            else
                stonesUsed += "1*" + stoneName + ";";


            if (outcome == "won")
            {
                killed = existingRow.ItemArray[6].ToString();
                stringNumber = "";

                //Update Kills
                if (killed.Contains("*" + ((int)this.personWhoLost.Serial).ToString()))
                {
                    while ((killed.IndexOf("*" + ((int)this.personWhoLost.Serial).ToString()) - 1) >= 0 && ';' != killed[(killed.IndexOf("*" + ((int)this.personWhoLost.Serial).ToString()) - 1)])
                    {
                        stringNumber = stringNumber.Insert(0, killed[(killed.IndexOf("*" + ((int)this.personWhoLost.Serial).ToString()) - 1)].ToString());

                        if ((killed.IndexOf("*" + ((int)this.personWhoLost.Serial).ToString()) - 1) >= 0)
                            killed = killed.Remove(killed.IndexOf("*" + ((int)this.personWhoLost.Serial).ToString()) - 1, 1);
                    }

                    int.TryParse(stringNumber.ToString(), out repeatedNumber);

                    repeatedNumber++;

                    killed = killed.Insert(killed.IndexOf("*" + ((int)this.personWhoLost.Serial).ToString()), repeatedNumber.ToString());
                }
                else
                    killed += "1*" + ((int)this.personWhoLost.Serial).ToString() + ";";

                bool updatePoints = false;
                if (usingPointSystem || joined <= 15)
                {
                    points++;
                    updatePoints = true;
                }

                //Update guildladder
                if (this.personWhoLost.Guild != null && this.personWhoLost.Guild != null && this.personWhoLost.Guild != this.personWhoLost.Guild)
                    Server.Misc.Guilds.GuildLadderUpdate.UpdateLadder(this.personWhoWon, this.personWhoLost, updatePoints);


                won++;
                moneyEarned += moneyCost;

                updatePlayerString = "UPDATE " + tableName + " SET " +
                "Name = '" + toUpdate.Name.ToString() + "', " +
                "Points = " + points + ", " +
                "Won = " + won + ", " +
                "MoneyEarned  = " + moneyEarned + ", " +
                "Killed = '" + killed + "', "+
                "StonesUsed = '" + stonesUsed +"' " + 
                "WHERE Mobile = " + ((int)toUpdate.Serial).ToString();

            }
            else if (outcome == "lost")
            {               
                killedBy = existingRow.ItemArray[7].ToString();
                stringNumber = "";

                //Update Killers
                if (killedBy.Contains("*" + ((int)this.personWhoWon.Serial).ToString()))
                {
                    while ((killedBy.IndexOf("*" + ((int)this.personWhoWon.Serial).ToString()) - 1) >= 0 && ';' != killedBy[(killedBy.IndexOf("*" + ((int)this.personWhoWon.Serial).ToString()) - 1)])
                    {
                        stringNumber = stringNumber.Insert(0, killedBy[(killedBy.IndexOf("*" + ((int)this.personWhoWon.Serial).ToString()) - 1)].ToString());

                        if ((killedBy.IndexOf("*" + ((int)this.personWhoWon.Serial).ToString()) - 1) >= 0)
                            killedBy = killedBy.Remove(killedBy.IndexOf("*" + ((int)this.personWhoWon.Serial).ToString()) - 1, 1);
                    }

                    int.TryParse(stringNumber.ToString(), out repeatedNumber);

                    repeatedNumber++;

                    killedBy = killedBy.Insert(killedBy.IndexOf("*" + ((int)this.personWhoWon.Serial).ToString()), repeatedNumber.ToString());

                }
                else
                    killedBy += "1*" + ((int)this.personWhoWon.Serial).ToString() + ";";

                //Set Points:
                loserPoints = points;

                if (usingPointSystem)
                    points--;

                lost++;
                moneyEarned -= moneyCost;

                updatePlayerString = "UPDATE " + tableName + " SET " +
                "Name = '" + toUpdate.Name.ToString() + "', " +
                "Points = " + points + ", " +
                "Lost = " + lost + ", " +
                "MoneyEarned  = " + moneyEarned + ", " +
                "KilledBy = '" + killedBy + "', " +
                "StonesUsed = '" + stonesUsed +"' "+
                "WHERE Mobile = " + ((int)toUpdate.Serial).ToString();
            }

            OdbcCommand updateCommand = stoneDbConnecton.CreateCommand();
            updateCommand.CommandText = updatePlayerString;

            updateCommand.ExecuteNonQuery();
        }