private async Task convertToNewDbCommand() { XmlDocument xmlDatabase = new XmlDocument(); XmlNode dbRoot; XmlNode usersNode; IEnumerator usersEnumerator; try { xmlDatabase.Load(FileLocations.xmlDatabase()); dbRoot = xmlDatabase.DocumentElement; usersNode = CoOpGlobal.XML.findOrCreateChild(xmlDatabase, dbRoot, "Users"); usersEnumerator = usersNode.GetEnumerator(); while (usersEnumerator.MoveNext()) { XmlElement curNode = usersEnumerator.Current as XmlElement; User user = new User(); user.userID = ulong.Parse(curNode.GetAttribute("id")); user.steamID = CoOpGlobal.XML.findOrCreateChild(xmlDatabase, curNode, "steamID").InnerText; // curNode.SelectSingleNode("descendant::steamID").InnerText; user.gwAPIKey = CoOpGlobal.XML.findOrCreateChild(xmlDatabase, curNode, "gwAPIKey").InnerText; //curNode.SelectSingleNode("descendant::gwAPIKey").InnerText; user.insert(); } await ReplyAsync("Done"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public GuildWarsModule() { xmlDatabase.Load(FileLocations.xmlDatabase()); root = xmlDatabase.DocumentElement; // GW specific settings guildWarsNode = CoOpGlobal.XML.findOrCreateChild(xmlDatabase, root, "GuildWars"); guildIDNode = guildWarsNode.SelectSingleNode("descendant::GuildId"); guildAccessTokenNode = guildWarsNode.SelectSingleNode("descendant::GuildAccessToken"); if (guildIDNode != null && guildAccessTokenNode != null) { guildId = guildIDNode.InnerText; guildAccessToken = guildAccessTokenNode.InnerText; } else { guildId = null; guildAccessToken = null; } // GW non tradeable items accountBoundItemsNode = CoOpGlobal.XML.findOrCreateChild(xmlDatabase, guildWarsNode, "AccountBoundItems"); }
private async Task sendDBCommand() { try { await this.Context.Message.Channel.SendFileAsync(FileLocations.xmlDatabase()); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private async Task BackupDBCommand() { XmlDocument xmlParameters = new XmlDocument(); try { xmlParameters.Load(FileLocations.xmlDatabase()); xmlParameters.Save(FileLocations.backupXMLDatabase()); await ReplyAsync($"GW item names file backed up to {FileLocations.backupXMLDatabase()}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private async Task RestoreDBCommand() { XmlDocument xmlParameters = new XmlDocument(); try { xmlParameters.Load(FileLocations.backupXMLDatabase()); xmlParameters.Save(FileLocations.xmlDatabase()); await ReplyAsync("XML database restored"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private async Task ResetCommand() { try { string output = ""; playersNode.RemoveAll(); xmlDatabase.Save(FileLocations.xmlDatabase()); output += "League data reset"; await ReplyAsync(output); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public virtual void delete() { try { XmlNode deleteNode = null; deleteNode = CoOpGlobal.XML.findNodeWithAttribute(xmlDatabase, this.DBRootNode(), "RecId", $"{this.recId}", "Record"); this.DBRootNode().RemoveChild(deleteNode); xmlDatabase.Save(FileLocations.xmlDatabase()); } catch (Exception ex) { Console.WriteLine(ex.Message); } return; }
private async Task SetSizeCommand(int teamCount) { try { string output = ""; tournamentSize = teamCount; tournamentSizeNode.InnerText = tournamentSize.ToString(); xmlDatabase.Save(FileLocations.xmlDatabase()); output += $"League size has been updated to {tournamentSize} teams"; await ReplyAsync(output); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private async Task RegisterCommand(params IUser[] users) { try { string output = ""; foreach (IUser curUser in users) { IEnumerator playersEnumerator = playersNode.GetEnumerator(); Boolean alreadyRegistered = false; while (playersEnumerator.MoveNext()) { XmlElement playerNode = playersEnumerator.Current as XmlElement; if (ulong.Parse(playerNode.GetAttribute("id")) == curUser.Id) { alreadyRegistered = true; } } if (!alreadyRegistered) { XmlElement newPlayerNode; newPlayerNode = xmlDatabase.CreateElement("Player"); newPlayerNode.SetAttribute("id", curUser.Id.ToString()); playersNode.AppendChild(newPlayerNode); xmlDatabase.Save(FileLocations.xmlDatabase()); } } output += "Users successfully added to the tournament"; await ReplyAsync(output); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private async Task RegisterGuildCommand(string gid, string gat) { IEnumerator gwEnumerator = guildWarsNode.GetEnumerator(); if (guildIDNode == null && guildAccessTokenNode == null) { guildIDNode = xmlDatabase.CreateElement("GuildId"); guildAccessTokenNode = xmlDatabase.CreateElement("GuildAccessToken"); guildWarsNode.AppendChild(guildIDNode); guildWarsNode.AppendChild(guildAccessTokenNode); } guildIDNode.InnerText = gid; guildAccessTokenNode.InnerText = gat; xmlDatabase.Save(FileLocations.xmlDatabase()); await ReplyAsync("Guild API key has been updated"); }
public virtual void insert() { if (recId == null) { recId = this.newRecId(); } if (this.validateWrite() && this.validateInsert()) { PropertyInfo[] properties = this.GetType().GetProperties(); XmlNode recordXML; //recId = this.newRecId(); recordXML = CoOpGlobal.XML.createNodeWithAttribute(xmlDatabase, this.DBRootNode(), "RecId", recId, "Record"); foreach (PropertyInfo property in properties) { XmlNode fieldNode = xmlDatabase.CreateElement(property.Name); fieldNode.InnerText = $"{property.GetValue(this, null)}"; recordXML.AppendChild(fieldNode); } xmlDatabase.Save(FileLocations.xmlDatabase()); } else { if (!this.validateWrite()) { Console.WriteLine($"{DBName()} write validation failed"); } if (!this.validateInsert()) { Console.WriteLine($"{DBName()} insert validation failed"); } } return; }
private async Task RegisterCommand() { try { string output = ""; IEnumerator playersEnumerator = playersNode.GetEnumerator(); Boolean alreadyRegistered = false; while (playersEnumerator.MoveNext()) { XmlElement playerNode = playersEnumerator.Current as XmlElement; if (ulong.Parse(playerNode.GetAttribute("id")) == Context.Message.Author.Id) { output = "You have already registered for the tournament!"; alreadyRegistered = true; } } if (!alreadyRegistered) { XmlElement newPlayerNode; newPlayerNode = xmlDatabase.CreateElement("Player"); newPlayerNode.SetAttribute("id", Context.Message.Author.Id.ToString()); playersNode.AppendChild(newPlayerNode); xmlDatabase.Save(FileLocations.xmlDatabase()); output = "You have successfully registered for the tournament"; } await ReplyAsync(output); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private async Task RestoreAllCommand() { XmlDocument xmlParameters = new XmlDocument(); XmlDocument gwItems = new XmlDocument(); XmlDocument xmlDB = new XmlDocument(); try { xmlParameters.Load(FileLocations.backupXMLParameters()); xmlParameters.Save(FileLocations.xmlParameters()); gwItems.Load(FileLocations.gwItemNamesBackup()); gwItems.Save(FileLocations.gwItemNames()); xmlDB.Load(FileLocations.backupXMLDatabase()); xmlDB.Save(FileLocations.xmlDatabase()); await ReplyAsync("XML parameters restored"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private async Task PriceCommand(params string[] query) { List <itemResult> itemSearchResults = new List <itemResult>(); string queryStr = ""; itemResult item; int itemValue; Hashtable buyInfo; string url; Dictionary <string, int> donationValueArray = new Dictionary <string, int>(); Dictionary <int, int> itemValueArray = new Dictionary <int, int>(); Array apiResponse; Hashtable itemPrices; foreach (string s in query) { queryStr += $"{s}"; } itemSearchResults = itemSearch(queryStr).OrderBy(o => o.similarity).ToList(); item = itemSearchResults[0]; itemValue = 0; if (isItemAccountBount(int.Parse(item.id))) { itemValue = 0; } else { url = $"{CoOpGlobal.API.guildWarsPrefix}/commerce/prices?id={item.id}"; try { apiResponse = getAPIResponse(url, true); itemPrices = apiResponse.GetValue(0) as Hashtable; buyInfo = itemPrices["buys"] as Hashtable; itemValue = int.Parse(buyInfo["unit_price"].ToString()); } catch { XmlElement newAccountBoundItemNode; Hashtable itemDetails; url = $"{CoOpGlobal.API.guildWarsPrefix}/items?id={item.id}"; apiResponse = getAPIResponse(url, true); itemDetails = apiResponse.GetValue(0) as Hashtable; newAccountBoundItemNode = xmlDatabase.CreateElement("Item"); newAccountBoundItemNode.SetAttribute("id", $"{item.id}"); newAccountBoundItemNode.InnerText = itemDetails["name"].ToString(); newAccountBoundItemNode = accountBoundItemsNode.AppendChild(newAccountBoundItemNode) as XmlElement; xmlDatabase.Save(FileLocations.xmlDatabase()); itemValue = 0; } } await ReplyAsync($"1 x {itemSearchResults[0].Name} = {num2currency(itemValue)}"); }
public BloodbowlModule() { xmlDatabase.Load(FileLocations.xmlDatabase()); root = xmlDatabase.DocumentElement; // Bloodbowl section of XML bloodbowlNode = CoOpGlobal.XML.findOrCreateChild(xmlDatabase, root, "Bloodbowl"); // List of all available races racesNode = bloodbowlNode.SelectSingleNode("descendant::Races"); if (racesNode == null) { XmlNode raceNode; racesNode = xmlDatabase.CreateElement("Races"); bloodbowlNode.AppendChild(racesNode); #region add all races raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Humans"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Orcs"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Dwarves"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Skaven"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "High Elves"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Dark Elves"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Brettonians"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Chaos"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Wood Elves"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Lizardmen"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Norse"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Undead"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Necromantic"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Nurgle"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Khemri"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Chaos Dwarves"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Ogres"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Halflings"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Vampires"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Amazons"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Kislev"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Pro Elves"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Underworld"; racesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Goblins"; racesNode.AppendChild(raceNode); #endregion xmlDatabase.Save(FileLocations.xmlDatabase()); } // Node that stores the total number of players in tournament tournamentSizeNode = CoOpGlobal.XML.findOrCreateChild(xmlDatabase, bloodbowlNode, "TournamentSize", "16"); tournamentSize = int.Parse(tournamentSizeNode.InnerText); // Players registered for the tournament playersNode = CoOpGlobal.XML.findOrCreateChild(xmlDatabase, bloodbowlNode, "Players"); // List of races being available for random distribution in the current tournament tournamentRacesNode = bloodbowlNode.SelectSingleNode("descendant::TournamentRacesNode"); if (tournamentRacesNode == null) { XmlNode raceNode; tournamentRacesNode = xmlDatabase.CreateElement("TournamentRacesNode"); bloodbowlNode.AppendChild(tournamentRacesNode); #region add all races raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Humans"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Orcs"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Dwarves"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Skaven"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "High Elves"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Dark Elves"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Brettonians"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Chaos"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Wood Elves"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Lizardmen"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Norse"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Undead"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Necromantic"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Nurgle"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Khemri"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Chaos Dwarves"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Ogres"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Halflings"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Vampires"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Amazons"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Kislev"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Pro Elves"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Underworld"; tournamentRacesNode.AppendChild(raceNode); raceNode = xmlDatabase.CreateElement("Race"); raceNode.InnerText = "Goblins"; tournamentRacesNode.AppendChild(raceNode); #endregion xmlDatabase.Save(FileLocations.xmlDatabase()); } }
private async Task DonationsCommand() { string url; Dictionary <string, int> donationValueArray = new Dictionary <string, int>(); Dictionary <int, int> itemValueArray = new Dictionary <int, int>(); string output; Array apiResponse; Hashtable curTransaction; Hashtable itemPrices; Dictionary <string, Dictionary <int, int> > userDonatedItems = new Dictionary <string, Dictionary <int, int> >(); int rank = 1; string upgradeListUrl = CoOpGlobal.API.guildWarsPrefix + "/guild/upgrades/"; ArrayList upgradeList = getAPIResponse(upgradeListUrl, true).GetValue(0) as ArrayList; output = ""; itemValueArray.Add(0, 1); if (guildId == null) { await ReplyAsync("Guild not found in config file"); } url = CoOpGlobal.API.guildWarsPrefix + "/guild/" + guildId + "/log?access_token=" + guildAccessToken; apiResponse = getAPIResponse(url); for (int i = 0; i < apiResponse.Length; i++) { curTransaction = apiResponse.GetValue(i) as Hashtable; if (curTransaction["type"].ToString() == "treasury") { if (!userDonatedItems.ContainsKey(curTransaction["user"].ToString())) { Dictionary <int, int> itemDictionaryElemet = new Dictionary <int, int>(); itemDictionaryElemet.Add(int.Parse(curTransaction["item_id"].ToString()), int.Parse(curTransaction["count"].ToString())); userDonatedItems.Add(curTransaction["user"].ToString(), itemDictionaryElemet); } else { Dictionary <int, int> itemDictionaryElemet = new Dictionary <int, int>(); itemDictionaryElemet = userDonatedItems[curTransaction["user"].ToString()]; if (!itemDictionaryElemet.ContainsKey(int.Parse(curTransaction["item_id"].ToString()))) { itemDictionaryElemet.Add(int.Parse(curTransaction["item_id"].ToString()), int.Parse(curTransaction["count"].ToString())); } else { itemDictionaryElemet[int.Parse(curTransaction["item_id"].ToString())] += int.Parse(curTransaction["count"].ToString()); } userDonatedItems[curTransaction["user"].ToString()] = itemDictionaryElemet; } } else if (curTransaction["type"].ToString() == "stash") { int directionMultiplier; directionMultiplier = curTransaction["operation"].ToString() == "deposit" ? 1 : -1; if (!userDonatedItems.ContainsKey(curTransaction["user"].ToString())) { Dictionary <int, int> itemDictionaryElemet = new Dictionary <int, int>(); if (int.Parse(curTransaction["item_id"].ToString()) == 0) { itemDictionaryElemet.Add(int.Parse(curTransaction["item_id"].ToString()), directionMultiplier * int.Parse(curTransaction["coins"].ToString())); } else { itemDictionaryElemet.Add(int.Parse(curTransaction["item_id"].ToString()), directionMultiplier * int.Parse(curTransaction["count"].ToString())); } userDonatedItems.Add(curTransaction["user"].ToString(), itemDictionaryElemet); } else { Dictionary <int, int> itemDictionaryElemet = new Dictionary <int, int>(); itemDictionaryElemet = userDonatedItems[curTransaction["user"].ToString()]; if (!itemDictionaryElemet.ContainsKey(int.Parse(curTransaction["item_id"].ToString()))) { if (int.Parse(curTransaction["item_id"].ToString()) == 0) { itemDictionaryElemet.Add(int.Parse(curTransaction["item_id"].ToString()), directionMultiplier * int.Parse(curTransaction["coins"].ToString())); } else { itemDictionaryElemet.Add(int.Parse(curTransaction["item_id"].ToString()), directionMultiplier * int.Parse(curTransaction["count"].ToString())); } } else { if (int.Parse(curTransaction["item_id"].ToString()) == 0) { itemDictionaryElemet[int.Parse(curTransaction["item_id"].ToString())] += (directionMultiplier * int.Parse(curTransaction["coins"].ToString())); } else { itemDictionaryElemet[int.Parse(curTransaction["item_id"].ToString())] += (directionMultiplier * int.Parse(curTransaction["count"].ToString())); } } userDonatedItems[curTransaction["user"].ToString()] = itemDictionaryElemet; } } else if (curTransaction["type"].ToString() == "upgrade" && curTransaction["action"].ToString() == "queued" && curTransaction.ContainsKey("user") && upgradeList.Contains(curTransaction["upgrade_id"])) { string upgradeId = curTransaction["upgrade_id"].ToString(); string upgradeUrl = CoOpGlobal.API.guildWarsPrefix + "/guild/upgrades/" + upgradeId; Array upgradeAPIResponse; upgradeAPIResponse = getAPIResponse(upgradeUrl, true); if (upgradeAPIResponse != null) { Hashtable upgradeInfo = upgradeAPIResponse.GetValue(0) as Hashtable; ArrayList upgradeCosts = upgradeInfo["costs"] as ArrayList; foreach (Hashtable costItem in upgradeCosts) { if (costItem["type"].ToString().ToLower() == "coins") { if (!userDonatedItems.ContainsKey(curTransaction["user"].ToString())) { Dictionary <int, int> itemDictionaryElemet = new Dictionary <int, int>(); itemDictionaryElemet.Add(0, int.Parse(costItem["count"].ToString())); userDonatedItems.Add(curTransaction["user"].ToString(), itemDictionaryElemet); } else { Dictionary <int, int> itemDictionaryElemet = new Dictionary <int, int>(); itemDictionaryElemet = userDonatedItems[curTransaction["user"].ToString()]; if (!itemDictionaryElemet.ContainsKey(0)) { itemDictionaryElemet.Add(0, int.Parse(costItem["count"].ToString())); } else { itemDictionaryElemet[0] += int.Parse(costItem["count"].ToString()); } userDonatedItems[curTransaction["user"].ToString()] = itemDictionaryElemet; } break; } } } } } /********************************************************** * * Add on gold cost for upgrades which aren't showing a user * **********************************************************/ Dictionary <int, int> additionItemDictionaryElemet = new Dictionary <int, int>(); int coinAmountToAdd; additionItemDictionaryElemet = userDonatedItems["Poppins.2053"]; coinAmountToAdd = 0; // 20 gold for Repair Anvil coinAmountToAdd += 200000; if (!additionItemDictionaryElemet.ContainsKey(0)) { additionItemDictionaryElemet.Add(0, coinAmountToAdd); } else { // 20 gold for Repair Anvil additionItemDictionaryElemet[0] += coinAmountToAdd; } userDonatedItems["Poppins.2053"] = additionItemDictionaryElemet; additionItemDictionaryElemet = userDonatedItems["Xutos.4632"]; coinAmountToAdd = 0; // 100 gold for Guild Hall access coinAmountToAdd += 1000000; if (!additionItemDictionaryElemet.ContainsKey(0)) { additionItemDictionaryElemet.Add(0, coinAmountToAdd); } else { // 20 gold for Repair Anvil additionItemDictionaryElemet[0] += coinAmountToAdd; } userDonatedItems["Xutos.4632"] = additionItemDictionaryElemet; /********************************************************** * * End * **********************************************************/ foreach (KeyValuePair <string, Dictionary <int, int> > entry in userDonatedItems) { Dictionary <int, int> memberDonationArray = new Dictionary <int, int>(); string curGuildMember; curGuildMember = entry.Key; memberDonationArray = entry.Value; foreach (KeyValuePair <int, int> donationItemEntry in memberDonationArray) { int curItem; int donationCount; int itemValue; Hashtable buyInfo; itemValue = 0; curItem = donationItemEntry.Key; donationCount = donationItemEntry.Value; if (itemValueArray.ContainsKey(curItem)) { itemValue = itemValueArray[curItem]; } else { if (isItemAccountBount(curItem)) { itemValue = 0; } else { url = CoOpGlobal.API.guildWarsPrefix + "/commerce/prices?id=" + curItem; try { apiResponse = getAPIResponse(url, true); itemPrices = apiResponse.GetValue(0) as Hashtable; buyInfo = itemPrices["buys"] as Hashtable; itemValue = int.Parse(buyInfo["unit_price"].ToString()); } catch { XmlElement newAccountBoundItemNode; Hashtable itemDetails; url = CoOpGlobal.API.guildWarsPrefix + "/items?id=" + curItem; apiResponse = getAPIResponse(url, true); itemDetails = apiResponse.GetValue(0) as Hashtable; newAccountBoundItemNode = xmlDatabase.CreateElement("Item"); newAccountBoundItemNode.SetAttribute("id", $"{curItem}"); newAccountBoundItemNode.InnerText = itemDetails["name"].ToString(); newAccountBoundItemNode = accountBoundItemsNode.AppendChild(newAccountBoundItemNode) as XmlElement; xmlDatabase.Save(FileLocations.xmlDatabase()); itemValue = 0; } } itemValueArray.Add(curItem, itemValue); } if (!donationValueArray.ContainsKey(curGuildMember)) { donationValueArray.Add(curGuildMember, (itemValue * donationCount)); } else { donationValueArray[curGuildMember] += (itemValue * donationCount); } } } var sortedDict = from entry in donationValueArray orderby entry.Value descending select entry; Dictionary <string, int> donationValueOrdered = sortedDict.ToDictionary(pair => pair.Key, pair => pair.Value); foreach (KeyValuePair <string, int> entry in donationValueOrdered) { int gold, silver, copper, rawAmount; rawAmount = entry.Value; copper = rawAmount % 100; rawAmount -= copper; silver = (rawAmount % 10000) / 100; rawAmount -= (silver * 100); gold = rawAmount / 10000; if (rank <= 3) { output += string.Format("**{0}. {1}: {2}g{3}s{4}c** \r\n", rank, entry.Key, gold, silver, copper); } else { if (gold + silver + copper < 0) { output += string.Format("*{0}. {1}: {2}g{3}s{4}c* \r\n", rank, entry.Key, gold, silver, copper); } else { output += string.Format("{0}. {1}: {2}g{3}s{4}c \r\n", rank, entry.Key, gold, silver, copper); } } rank++; } await ReplyAsync(output); }
public DbBase() { xmlDatabase.Load(FileLocations.xmlDatabase()); root = xmlDatabase.DocumentElement; }
private async Task AssignTeamsCommand(int maxTeamsPerRace = 1) { try { string output = ""; IEnumerator playersEnumerator = playersNode.GetEnumerator(); IEnumerator tournamentRacesEnumerator = tournamentRacesNode.GetEnumerator(); List <string> availableRaces = new List <string>(); int aiCount = tournamentSize; while (tournamentRacesEnumerator.MoveNext()) { XmlElement raceNode = tournamentRacesEnumerator.Current as XmlElement; for (int j = 1; j <= maxTeamsPerRace; j++) { availableRaces.Add(raceNode.InnerText); } } while (playersEnumerator.MoveNext()) { XmlElement playerNode = playersEnumerator.Current as XmlElement; string race; int randomPosition = CoOpGlobal.rng.Next(availableRaces.Count); // Don't add 1 to the exclusive Max becuase lists are 0 based IUser playerUser = await Context.Guild.GetUserAsync(ulong.Parse(playerNode.GetAttribute("id"))); race = availableRaces[randomPosition]; availableRaces.RemoveAt(randomPosition); playerNode.InnerText = race; output += $"{playerUser.Username} - {race} \r\n"; aiCount--; } for (int i = 1; i <= aiCount; i++) { XmlElement newAINode; string race; int randomPosition = CoOpGlobal.rng.Next(availableRaces.Count); // Don't add 1 to the exclusive Max becuase lists are 0 based race = availableRaces[randomPosition]; availableRaces.RemoveAt(randomPosition); newAINode = xmlDatabase.CreateElement("Player"); newAINode.SetAttribute("id", "0"); newAINode.SetAttribute("name", $"AI {i}"); newAINode.InnerText = race; playersNode.AppendChild(newAINode); output += $"{$"AI {i}"} - {race} \r\n"; } xmlDatabase.Save(FileLocations.xmlDatabase()); await ReplyAsync(output); } catch (Exception ex) { Console.WriteLine(ex.Message); } }