Example #1
0
        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);
            }
        }
Example #2
0
        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");
        }
Example #3
0
 private async Task sendDBCommand()
 {
     try
     {
         await this.Context.Message.Channel.SendFileAsync(FileLocations.xmlDatabase());
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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;
        }
Example #8
0
        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);
            }
        }
Example #9
0
        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);
            }
        }
Example #10
0
        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");
        }
Example #11
0
        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;
        }
Example #12
0
        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);
            }
        }
Example #13
0
        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);
            }
        }
Example #14
0
        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)}");
        }
Example #15
0
        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());
            }
        }
Example #16
0
        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);
        }
Example #17
0
 public DbBase()
 {
     xmlDatabase.Load(FileLocations.xmlDatabase());
     root = xmlDatabase.DocumentElement;
 }
Example #18
0
        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);
            }
        }