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();
}