Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Threading;
- using System.IO;
- using CSharpTradeOffers.Configuration;
- using CSharpTradeOffers.Trading;
- using CSharpTradeOffers.Web;
- using Newtonsoft.Json;
- using SteamAuth;
- using System.Data.SqlClient;
- using System.Data;
- using System.Xml;
- using System.Linq;
- namespace TradeBot
- {
- class Program
- {
- static SqlConnection connection;
- static string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\FirewareStudios\Development\TradeBots\Database\Database.mdf;Integrated Security=True; MultipleActiveResultSets=True; pooling=true;";
- static Account account;
- static DefaultConfig config = new DefaultConfig();
- static readonly XmlConfigHandler configHandler = new XmlConfigHandler("configuration.xml");
- static readonly Web Web = new Web(new SteamWebRequestHandler());
- static readonly MarketHandler MarketHandler = new MarketHandler();
- static Web web = new Web(new SteamWebRequestHandler());
- static List<InventoryID> botItems = new List<InventoryID>();
- static List<InventoryID> userItems = new List<InventoryID>();
- static void Main()
- {
- Console.OutputEncoding = System.Text.Encoding.UTF8;
- Console.Title = "Trade Bot 2.0";
- var sgAccount = JsonConvert.DeserializeObject<SteamGuardAccount>(File.ReadAllText("account.maFile"));
- string sgCode = sgAccount.GenerateSteamGuardCode();
- Login(sgCode);
- var marketHandler = new MarketHandler();
- marketHandler.EligibilityCheck(account.SteamId, account.AuthContainer);
- sgAccount.Session.SteamLogin = account.FindCookieByName("steamlogin").Value;
- sgAccount.Session.SteamLoginSecure = account.FindCookieByName("steamloginsecure").Value;
- connection = new SqlConnection(connectionString);
- while (true)
- {
- if (connection.State == ConnectionState.Open)
- {
- connection.Close();
- }
- connection.Open();
- /*try
- {*/
- Console.WriteLine(sgAccount.GenerateSteamGuardCode());
- UpdateTradeLogs();
- /*Thread SendThread = new Thread(SendOffers);
- Thread ReceiveThread = new Thread(ReceiveOffers);
- SendThread.Start();
- ReceiveThread.Start();*/
- SendOffers();
- ReceiveOffers();
- AcceptConfirmations(sgAccount);
- /*while (SendThread.IsAlive == true || ReceiveThread.IsAlive == true)
- {
- Thread.Sleep(500);
- }*/
- UpdateTradeLogs();
- if (connection.State == ConnectionState.Open)
- {
- connection.Close();
- }
- Thread.Sleep(60000);
- /* }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- }*/
- }
- }
- static void Login(string sgCode)
- {
- config = configHandler.Reload();
- if (string.IsNullOrEmpty(config.Username) || string.IsNullOrEmpty(config.Password)) {
- Console.Write("Username: ");
- config.Username = Console.ReadLine();
- Console.Write("Password: ");
- config.Password = Console.ReadLine();
- configHandler.WriteChanges(config);
- }
- if (string.IsNullOrEmpty(config.ApiKey)) {
- Console.Write("APIKey: ");
- config.ApiKey = Console.ReadLine();
- configHandler.WriteChanges(config);
- }
- Console.WriteLine("Logging to Steam...");
- account = Web.RetryDoLogin(TimeSpan.FromSeconds(10), 10, config.Username, config.Password, sgCode, config.SteamMachineAuth);
- if (string.IsNullOrEmpty(config.SteamMachineAuth)) {
- config.SteamMachineAuth = account.SteamMachineAuth;
- configHandler.WriteChanges(config);
- }
- Console.WriteLine("Login Successful!");
- }
- static void SendOffers()
- {
- var offerHandler = new EconServiceHandler(config.ApiKey);
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.Load("http://steamcommunity.com/groups/trade_botz/memberslistxml/list.xml?xml=1");
- string query1 = "UPDATE Users SET Member = '0'";
- SqlCommand command1 = new SqlCommand(query1, connection);
- command1.ExecuteNonQuery();
- foreach (XmlNode xmlNode in xmlDoc.DocumentElement.ChildNodes[6].ChildNodes)
- {
- string query2 = "SELECT * FROM Users WHERE SteamID64 = '" + xmlNode.InnerText + "'";
- SqlDataAdapter adapter2 = new SqlDataAdapter(query2, connection);
- DataTable dataTable2 = new DataTable();
- adapter2.Fill(dataTable2);
- if (dataTable2.Rows.Count == 0)
- {
- string query3 = "INSERT INTO Users (SteamID64) VALUES ('" + xmlNode.InnerText + "')";
- SqlCommand command3 = new SqlCommand(query3, connection);
- command3.ExecuteNonQuery();
- }
- string query4 = "UPDATE Users SET Member = '1' WHERE SteamID64 = '" + xmlNode.InnerText + "'";
- SqlCommand command4 = new SqlCommand(query4, connection);
- command4.ExecuteNonQuery();
- }
- string query5 = "SELECT TOP 1 * FROM Users WHERE SendOffers='1' AND Member='1' ORDER BY OffersLastDay ASC";
- SqlDataAdapter adapter5 = new SqlDataAdapter(query5, connection);
- DataTable dataTable5 = new DataTable();
- adapter5.Fill(dataTable5);
- foreach (DataRow dataRow5 in dataTable5.Rows)
- {
- Inventory botInventory = new Inventory(account.SteamId, 730);
- Inventory userInventory = new Inventory((ulong)Convert.ToInt64(dataRow5["SteamID64"]), 730);
- List<int> botIDs = new List<int>();
- List<int> userIDs = new List<int>();
- List<ItemSet> userItemSetList = new List<ItemSet>();
- List<ItemSet> botItemSetList = new List<ItemSet>();
- List<OfferSample> offerSampleList = new List<OfferSample>();
- string tradeOfferID;
- int botID = 0;
- int userID = 0;
- Console.WriteLine(dataRow5["SteamID64"]);
- foreach (Item item in botInventory.Items.Values)
- {
- if (item.Description.Tradable == true)
- {
- foreach (RgInventoryItem rgItem in item.Items)
- {
- InventoryID id = new InventoryID();
- CEconAsset asset = new CEconAsset();
- asset = rgItem.ToCEconAsset(730);
- asset.MarketHashName = item.Description.MarketHashName;
- id.Asset = asset;
- id.ID = botID;
- botItems.Add(id);
- botIDs.Add(botID);
- botID++;
- }
- Console.WriteLine(item.Description.MarketHashName);
- }
- }
- foreach (Item item in userInventory.Items.Values)
- {
- if (item.Description.Tradable == true)
- {
- foreach (RgInventoryItem rgItem in item.Items)
- {
- InventoryID id = new InventoryID();
- CEconAsset asset = new CEconAsset();
- asset = rgItem.ToCEconAsset(730);
- asset.MarketHashName = item.Description.MarketHashName;
- id.Asset = asset;
- id.ID = userID;
- userItems.Add(id);
- userIDs.Add(userID);
- userID++;
- }
- Console.WriteLine(item.Description.MarketHashName);
- }
- }
- int subsetsuser = 0;
- int subsetsbot = 0;
- foreach (Array array in CreateSubsets(botIDs.ToArray()))
- {
- ItemSet itemSet = new ItemSet();
- itemSet.Assets = ((int[])array).ToList();
- if (itemSet.Assets.Count <= 3)
- {
- List<CEconAsset> assets = new List<CEconAsset>();
- foreach (int a in itemSet.Assets)
- {
- assets.Add(IDToAssetBot(a));
- }
- itemSet.Price = GetAssetTotal(assets);
- itemSet.Volume = GetTotalVolume(assets);
- botItemSetList.Add(itemSet);
- subsetsbot++;
- }
- }
- foreach (Array array in CreateSubsets(UserItemsSorted(userIDs).ToArray()))
- {
- ItemSet itemSet = new ItemSet();
- itemSet.Assets = ((int[])array).ToList();
- if (itemSet.Assets.Count <= 3)
- {
- List<CEconAsset> assets = new List<CEconAsset>();
- foreach (int a in itemSet.Assets)
- {
- assets.Add(IDToAssetUser(a));
- }
- itemSet.Price = GetAssetTotal(assets);
- itemSet.Volume = GetTotalVolume(assets);
- userItemSetList.Add(itemSet);
- subsetsuser++;
- }
- }
- foreach (ItemSet botItemSet in botItemSetList)
- {
- foreach (ItemSet userItemSet in userItemSetList)
- {
- if ((userItemSet.Price > (botItemSet.Price * 1.05m)) && (userItemSet.Price < (botItemSet.Price * 1.15m)))
- {
- string setUserItem0 = null;
- string setUserItem1 = null;
- string setUserItem2 = null;
- string setUserItem3 = null;
- string setUserItem4 = null;
- string setBotItem0 = null;
- string setBotItem1 = null;
- string setBotItem2 = null;
- string setBotItem3 = null;
- string setBotItem4 = null;
- if (userItemSet.Assets.Count > 0) setUserItem0 = IDToAssetUser(userItemSet.Assets.ElementAt(0)).MarketHashName;
- if (userItemSet.Assets.Count > 1) setUserItem1 = IDToAssetUser(userItemSet.Assets.ElementAt(1)).MarketHashName;
- if (userItemSet.Assets.Count > 2) setUserItem2 = IDToAssetUser(userItemSet.Assets.ElementAt(2)).MarketHashName;
- if (userItemSet.Assets.Count > 3) setUserItem3 = IDToAssetUser(userItemSet.Assets.ElementAt(3)).MarketHashName;
- if (userItemSet.Assets.Count > 4) setUserItem4 = IDToAssetUser(userItemSet.Assets.ElementAt(4)).MarketHashName;
- if (botItemSet.Assets.Count > 0) setBotItem0 = IDToAssetBot(botItemSet.Assets.ElementAt(0)).MarketHashName;
- if (botItemSet.Assets.Count > 1) setBotItem1 = IDToAssetBot(botItemSet.Assets.ElementAt(1)).MarketHashName;
- if (botItemSet.Assets.Count > 2) setBotItem2 = IDToAssetBot(botItemSet.Assets.ElementAt(2)).MarketHashName;
- if (botItemSet.Assets.Count > 3) setBotItem3 = IDToAssetBot(botItemSet.Assets.ElementAt(3)).MarketHashName;
- if (botItemSet.Assets.Count > 4) setBotItem4 = IDToAssetBot(botItemSet.Assets.ElementAt(4)).MarketHashName;
- string query7 = "SELECT * FROM TradeLogs WHERE SteamID64 = '" + dataRow5["SteamID64"] + "' AND UserItem0 = '" + setUserItem0 + "' AND UserItem1 = '" + setUserItem1 + "' AND UserItem2 = '" + setUserItem2 + "' AND UserItem3 = '" + setUserItem3 + "' AND UserItem4 = '" + setUserItem4 + "' AND BotItem0 = '" + setBotItem0 + "' AND BotItem1 = '" + setBotItem1 + "' AND BotItem2 = '" + setBotItem2 + "' AND BotItem3 = '" + setBotItem3 + "' AND BotItem4 = '" + setBotItem4 + "'";
- SqlDataAdapter adapter7 = new SqlDataAdapter(query7, connection);
- DataTable dataTable7 = new DataTable();
- adapter7.Fill(dataTable7);
- if (dataTable7.Rows.Count == 0)
- {
- OfferSample offerSample = new OfferSample();
- offerSample.BotItems = botItemSet.Assets;
- offerSample.UserItems = userItemSet.Assets;
- double avgItemPrice = (double)userItemSet.Price / (double)userItemSet.Assets.Count;
- //TODO: REWORK
- double itemRank = avgItemPrice * avgItemPrice * avgItemPrice / ((double)userItemSet.Volume / (double)userItemSet.Assets.Count) / (double)botItemSet.Volume * (double)botItemSet.Assets.Count;
- offerSample.Rank = itemRank;
- offerSampleList.Add(offerSample);
- }
- }
- }
- }
- Console.WriteLine(offerSampleList.Count.ToString());
- if (offerSampleList.Count > 0)
- {
- OfferSample bestOfferSample = new OfferSample();
- double bestOfferRank = 0f;
- foreach (OfferSample offerSample in offerSampleList)
- {
- if (offerSample.Rank > bestOfferRank)
- {
- bestOfferSample = offerSample;
- bestOfferRank = offerSample.Rank;
- Console.WriteLine("New best rank is: " + bestOfferRank.ToString());
- }
- }
- TradeOffer offer = new TradeOffer();
- List<CEconAsset> userAssets = new List<CEconAsset>();
- List<CEconAsset> botAssets = new List<CEconAsset>();
- foreach (int b in bestOfferSample.UserItems)
- {
- userAssets.Add(IDToAssetUser(b));
- }
- foreach (int b in bestOfferSample.BotItems)
- {
- botAssets.Add(IDToAssetBot(b));
- }
- foreach (CEconAsset asset in userAssets)
- {
- offer.Them.Assets.Add(asset);
- }
- foreach (CEconAsset asset in botAssets)
- {
- offer.Me.Assets.Add(asset);
- }
- string userItem0 = null;
- string userItem1 = null;
- string userItem2 = null;
- string userItem3 = null;
- string userItem4 = null;
- string botItem0 = null;
- string botItem1 = null;
- string botItem2 = null;
- string botItem3 = null;
- string botItem4 = null;
- if (offer.Them.Assets.Count > 0) userItem0 = offer.Them.Assets.ElementAt(0).MarketHashName;
- if (offer.Them.Assets.Count > 1) userItem1 = offer.Them.Assets.ElementAt(1).MarketHashName;
- if (offer.Them.Assets.Count > 2) userItem2 = offer.Them.Assets.ElementAt(2).MarketHashName;
- if (offer.Them.Assets.Count > 3) userItem3 = offer.Them.Assets.ElementAt(3).MarketHashName;
- if (offer.Them.Assets.Count > 4) userItem4 = offer.Them.Assets.ElementAt(4).MarketHashName;
- if (offer.Me.Assets.Count > 0) botItem0 = offer.Me.Assets.ElementAt(0).MarketHashName;
- if (offer.Me.Assets.Count > 1) botItem1 = offer.Me.Assets.ElementAt(1).MarketHashName;
- if (offer.Me.Assets.Count > 2) botItem2 = offer.Me.Assets.ElementAt(2).MarketHashName;
- if (offer.Me.Assets.Count > 3) botItem3 = offer.Me.Assets.ElementAt(3).MarketHashName;
- if (offer.Me.Assets.Count > 4) botItem4 = offer.Me.Assets.ElementAt(4).MarketHashName;
- Console.WriteLine(offer.Me.Assets.Count.ToString() + " for " + offer.Them.Assets.Count.ToString());
- tradeOfferID = offerHandler.SendTradeOffer((ulong)Convert.ToInt64(dataRow5["SteamID64"]), offer.Me.Assets.Count.ToString() + " for " + offer.Them.Assets.Count.ToString(), "1", offer, account.AuthContainer).TradeOfferId;
- Console.WriteLine("offer sent!");
- string query6 = "INSERT INTO TradeLogs VALUES ('" + dataRow5["SteamID64"].ToString() + "', '" + UnixTime().ToString() + "', '" + tradeOfferID + "', '" + userItem0 + "', '" + userItem1 + "', '" + userItem2 + "', '" + userItem3 + "', '" + userItem4 + "', '" + botItem0 + "', '" + botItem1 + "', '" + botItem2 + "', '" + botItem3 + "', '" + botItem4 + "')";
- SqlCommand command6 = new SqlCommand(query6, connection);
- command6.ExecuteNonQuery();
- }
- else
- {
- Console.WriteLine("No offers for this user: " + dataRow5["SteamID64"].ToString());
- string query6 = "INSERT INTO TradeLogs (SteamID64, Time) VALUES ('" + dataRow5["SteamID64"].ToString() + "', '" + UnixTime().ToString() + "')";
- SqlCommand command6 = new SqlCommand(query6, connection);
- command6.ExecuteNonQuery();
- }
- botItemSetList.Clear();
- userItemSetList.Clear();
- botItems.Clear();
- userItems.Clear();
- }
- }
- static void ReceiveOffers()
- {
- var offerHandler = new EconServiceHandler(config.ApiKey);
- var recData = new Dictionary<string, string>
- {
- {"get_received_offers", "1"},
- {"active_only", "1"}
- };
- var offers = offerHandler.GetTradeOffers(recData).TradeOffersReceived;
- if (offers == null)
- {
- Console.WriteLine(DateTime.Now.ToString() + " - No new offers!");
- }
- else
- {
- Console.WriteLine(DateTime.Now.ToString() + " - " + offers.Count + " new offers. ");
- foreach (CEconTradeOffer cEconTradeOffer in offers)
- {
- foreach (CEconAsset asset in cEconTradeOffer.ItemsToGive)
- {
- asset.MarketHashName = asset.GetMarketHashName(config.ApiKey);
- }
- foreach (CEconAsset asset in cEconTradeOffer.ItemsToReceive)
- {
- asset.MarketHashName = asset.GetMarketHashName(config.ApiKey);
- }
- if (GetAssetTotal(cEconTradeOffer.ItemsToReceive) > GetAssetTotal(cEconTradeOffer.ItemsToGive))
- {
- offerHandler.AcceptTradeOffer(cEconTradeOffer.TradeOfferId, cEconTradeOffer.AccountIdOther, account.AuthContainer, "1");
- }
- else
- {
- offerHandler.DeclineTradeOffer(cEconTradeOffer.TradeOfferId);
- }
- }
- }
- }
- static void UpdateTradeLogs()
- {
- var offerHandler = new EconServiceHandler(config.ApiKey);
- var recData = new Dictionary<string, string>
- {
- {"get_sent_offers", "1"},
- {"historical_only", "1"}
- };
- var offers = offerHandler.GetTradeOffers(recData).TradeOffersSent;
- if (offers != null)
- {
- foreach (CEconTradeOffer cEconTradeOffer in offers)
- {
- if (cEconTradeOffer.TradeOfferState == 3 || cEconTradeOffer.TradeOfferState == 8)
- {
- string queryUT0 = "DELETE FROM TradeLogs WHERE TradeOfferID = '" + cEconTradeOffer.TradeOfferId + "'";
- SqlCommand commandUT0 = new SqlCommand(queryUT0, connection);
- commandUT0.ExecuteNonQuery();
- }
- }
- }
- string queryUT1 = "DELETE FROM TradeLogs WHERE Time + 2592000 < " + UnixTime().ToString();
- SqlCommand commandUT1 = new SqlCommand(queryUT1, connection);
- commandUT1.ExecuteNonQuery();
- string queryUT2 = "SELECT * FROM Users";
- SqlDataAdapter adapterUT2 = new SqlDataAdapter(queryUT2, connection);
- DataTable dataTableUT2 = new DataTable();
- adapterUT2.Fill(dataTableUT2);
- foreach (DataRow dataRowUT2 in dataTableUT2.Rows)
- {
- int offersLastDay = 0;
- string queryUT3 = "SELECT SteamID64,Time FROM TradeLogs WHERE SteamID64 = '" + dataRowUT2["SteamID64"].ToString() + "' AND Time + 86400 > " + UnixTime().ToString();
- SqlDataAdapter adapterUT3 = new SqlDataAdapter(queryUT3, connection);
- DataTable dataTableUT3 = new DataTable();
- adapterUT3.Fill(dataTableUT3);
- foreach (DataRow dataRowUT3 in dataTableUT3.Rows)
- {
- offersLastDay++;
- }
- string queryUT4 = "UPDATE Users SET OffersLastDay = '" + offersLastDay.ToString() + "' WHERE SteamID64 = '" + dataRowUT2["SteamID64"].ToString() + "'";
- SqlCommand commandUT4 = new SqlCommand(queryUT4, connection);
- commandUT4.ExecuteNonQuery();
- }
- }
- static void AcceptConfirmations(SteamGuardAccount sgAccount)
- {
- if (sgAccount.FetchConfirmations().Length == 0)
- {
- Console.WriteLine("Nothing to confirm.");
- }
- else
- {
- foreach (Confirmation confirmation in sgAccount.FetchConfirmations())
- {
- sgAccount.AcceptConfirmation(confirmation);
- Console.WriteLine("Confirmed " + confirmation.ID.ToString());
- }
- }
- }
- static decimal GetAssetTotal(List<CEconAsset> assets)
- {
- decimal t = decimal.Zero;
- foreach (CEconAsset asset in assets)
- {
- t = t + GetAssetPrice(asset);
- }
- return t;
- }
- static decimal GetAssetPrice(CEconAsset asset)
- {
- decimal t = decimal.Zero;
- if (asset.MarketHashName == "")
- {
- asset.MarketHashName = asset.GetMarketHashName(config.ApiKey);
- }
- string queryGAP = "SELECT TOP 1 * FROM ItemPrices WHERE MarketHashName = @item";
- SqlDataAdapter adapterGAP = new SqlDataAdapter(queryGAP, connection);
- adapterGAP.SelectCommand.Parameters.Add("@item", SqlDbType.NVarChar).Value = asset.MarketHashName;
- DataTable dataTableGAP = new DataTable();
- adapterGAP.Fill(dataTableGAP);
- if (dataTableGAP.Rows.Count == 0)
- {
- queryGAP = "INSERT INTO ItemPrices (MarketHashName) VALUES (@item)";
- SqlCommand commandGAP = new SqlCommand(queryGAP, connection);
- commandGAP.Parameters.Add("@item", SqlDbType.NVarChar).Value = asset.MarketHashName;
- commandGAP.ExecuteNonQuery();
- Thread.Sleep(1000);
- t = GetAssetPrice(asset);
- }
- else
- {
- foreach (DataRow dataRowGAP in dataTableGAP.Rows)
- {
- if (dataRowGAP["LastChecked"].ToString() == "0")
- {
- Thread.Sleep(1000);
- t = GetAssetPrice(asset);
- }
- else if (dataRowGAP["Price"].ToString() == "")
- {
- Console.WriteLine(dataRowGAP["MarketHashName"].ToString() + " - item not found");
- }
- else
- {
- t = Convert.ToDecimal(dataRowGAP["Price"].ToString());
- }
- }
- }
- return t;
- }
- static int GetTotalVolume(List<CEconAsset> assets)
- {
- int v = 0;
- foreach (CEconAsset asset in assets)
- {
- v = v + GetAssetVolume(asset);
- }
- return v;
- }
- static int GetAssetVolume(CEconAsset asset)
- {
- int v = 0;
- if (asset.MarketHashName == "")
- {
- asset.MarketHashName = asset.GetMarketHashName(config.ApiKey);
- }
- string queryGTV = "SELECT TOP 1 * FROM ItemPrices WHERE MarketHashName = @item";
- SqlDataAdapter adapterGTV = new SqlDataAdapter(queryGTV, connection);
- adapterGTV.SelectCommand.Parameters.Add("@item", SqlDbType.NVarChar).Value = asset.MarketHashName;
- DataTable dataTableGTV = new DataTable();
- adapterGTV.Fill(dataTableGTV);
- if (dataTableGTV.Rows.Count == 0)
- {
- Console.WriteLine(asset.MarketHashName);
- queryGTV = "INSERT INTO ItemPrices (MarketHashName) VALUES (@item)";
- SqlCommand commandGTV = new SqlCommand(queryGTV, connection);
- commandGTV.Parameters.Add("@item", SqlDbType.NVarChar).Value = asset.MarketHashName;
- commandGTV.ExecuteNonQuery();
- Thread.Sleep(1000);
- v = GetAssetVolume(asset);
- }
- else
- {
- foreach (DataRow dataRowGTV in dataTableGTV.Rows)
- {
- if (dataRowGTV["LastChecked"].ToString() == "0")
- {
- Thread.Sleep(1000);
- v = GetAssetVolume(asset);
- }
- else
- {
- v = Convert.ToInt32(dataRowGTV["Volume"].ToString());
- }
- }
- }
- return v;
- }
- static List<int> UserItemsSorted(List<int> ids)
- {
- List<int> progress = new List<int>();
- List<CEconAsset> assets = new List<CEconAsset>();
- foreach (int id in ids)
- {
- assets.Add(IDToAssetUser(id));
- }
- foreach (CEconAsset asset in assets)
- {
- if (CompatibleAsset(asset) == true)
- {
- progress.Add(AssetToIDUser(asset));
- }
- }
- return progress;
- }
- static bool CompatibleAsset (CEconAsset asset)
- {
- bool c = true;
- string queryC = "SELECT TOP 1 * FROM ItemPrices WHERE MarketHashName = @item";
- SqlDataAdapter adapterC = new SqlDataAdapter(queryC, connection);
- adapterC.SelectCommand.Parameters.Add("@item", SqlDbType.NVarChar).Value = asset.MarketHashName;
- DataTable dataTableC = new DataTable();
- adapterC.Fill(dataTableC);
- if (dataTableC.Rows.Count == 0)
- {
- string queryCa = "INSERT INTO ItemPrices (MarketHashName) VALUES (@item)";
- SqlCommand commandCa = new SqlCommand(queryCa, connection);
- commandCa.Parameters.Add("@item", SqlDbType.NVarChar).Value = asset.MarketHashName;
- commandCa.ExecuteNonQuery();
- Thread.Sleep(1000);
- c = CompatibleAsset(asset);
- }
- else
- {
- foreach (DataRow dataRowC in dataTableC.Rows)
- {
- if (dataRowC["MarketHashName"].ToString().EndsWith("Case")) c = false;
- if (dataRowC["MarketHashName"].ToString().StartsWith("Souvenir")) c = false;
- if (dataRowC["LastChecked"].ToString() == "0")
- {
- Thread.Sleep(1000);
- c = CompatibleAsset(asset);
- }
- else
- {
- if (dataRowC["Price"].ToString() == "")
- {
- c = false;
- }
- else if (Convert.ToDecimal(dataRowC["Price"].ToString()) < 0.03m)
- {
- c = false;
- }
- if (dataRowC["MarketHashName"].ToString().StartsWith("StatTrak") && Convert.ToDecimal(dataRowC["Price"].ToString()) < 200m)
- {
- c = false;
- }
- if (Convert.ToInt32(dataRowC["Volume"].ToString()) < 15)
- {
- c = false;
- }
- if (dataRowC["FirstSeen"].ToString() == "")
- {
- c = false;
- }
- else if (Convert.ToInt32(dataRowC["FirstSeen"].ToString()) + 1209600 > UnixTime())
- {
- c = false;
- }
- }
- }
- }
- return c;
- }
- static CEconAsset IDToAssetUser (int i)
- {
- CEconAsset asset = new CEconAsset();
- foreach (InventoryID invID in userItems)
- {
- if (i == invID.ID) asset = invID.Asset;
- }
- return asset;
- }
- static CEconAsset IDToAssetBot (int i)
- {
- CEconAsset asset = new CEconAsset();
- foreach (InventoryID invID in botItems)
- {
- if (i == invID.ID) asset = invID.Asset;
- }
- return asset;
- }
- static int AssetToIDUser (CEconAsset asset)
- {
- int id = 0;
- foreach (InventoryID invID in userItems)
- {
- if (asset == invID.Asset) id = invID.ID;
- }
- return id;
- }
- static int AssetToIDBot(CEconAsset asset)
- {
- int id = 0;
- foreach (InventoryID invID in botItems)
- {
- if (asset == invID.Asset) id = invID.ID;
- }
- return id;
- }
- static int UnixTime()
- {
- int unixTimestamp;
- unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
- return unixTimestamp;
- }
- static List<T[]> CreateSubsets<T>(T[] originalArray)
- {
- List<T[]> subsets = new List<T[]>();
- for (int i = 0; i < originalArray.Length; i++)
- {
- int subsetCount = subsets.Count;
- subsets.Add(new T[] { originalArray[i] });
- for (int j = 0; j < subsetCount; j++)
- {
- T[] newSubset = new T[subsets[j].Length + 1];
- subsets[j].CopyTo(newSubset, 0);
- newSubset[newSubset.Length - 1] = originalArray[i];
- subsets.Add(newSubset);
- }
- }
- return subsets;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement