private static void AddMissingItemsToMarket(MarketStruct market, List <MarketItemStruct> defaultPrices) { // Add missing items that are covered by Default items, with 0 quantity. foreach (var defaultItem in defaultPrices) { var item = market.MarketItems.FirstOrDefault(e => e.TypeId.Equals(defaultItem.TypeId) && e.SubtypeName.Equals(defaultItem.SubtypeName)); if (item == null) { market.MarketItems.Add(new MarketItemStruct { TypeId = defaultItem.TypeId, SubtypeName = defaultItem.SubtypeName, BuyPrice = defaultItem.BuyPrice, SellPrice = defaultItem.SellPrice, IsBlacklisted = defaultItem.IsBlacklisted, Quantity = market.MarketId == EconomyConsts.NpcMerchantId ? defaultItem.Quantity : 0 }); EconomyScript.Instance.ServerLogger.WriteVerbose("MarketItem Adding Default item: {0} {1}.", defaultItem.TypeId, defaultItem.SubtypeName); } else { // Disable any blackmarket items. if (defaultItem.IsBlacklisted) { item.IsBlacklisted = true; } } } }
private static void CheckDefaultMarket(EconDataStruct data, List <MarketItemStruct> defaultPrices) { EconomyScript.Instance.ServerLogger.WriteInfo("Checking Default Market Data."); var market = data.Markets.FirstOrDefault(m => m.MarketId == EconomyConsts.NpcMerchantId); if (market == null) { market = new MarketStruct { Open = true, MarketId = EconomyConsts.NpcMerchantId, MarketZoneType = MarketZoneType.FixedSphere, DisplayName = EconomyConsts.NpcMarketName, MarketZoneSphere = new BoundingSphereD(Vector3D.Zero, EconomyScript.Instance.ServerConfig.DefaultTradeRange), // Center of the game world. MarketItems = new List <MarketItemStruct>() }; data.Markets.Add(market); } if (string.IsNullOrEmpty(market.DisplayName)) { market.DisplayName = EconomyConsts.NpcMarketName; } AddMissingItemsToMarket(market, defaultPrices); }
public void LoadPrices(MarketStruct market) { ThisMarket = market; dataGridView1.DataSource = market.MarketItems; foreach (MarketItemStruct item in market.MarketItems) { //DataGridViewRow row = new DataGridViewRow(); //dataGridView1.Rows.Add(row); // TODO: } }
public static void SetMarketShape(MarketStruct market, decimal x, decimal y, decimal z, decimal size, MarketZoneType shape) { market.MarketZoneType = shape; switch (shape) { case MarketZoneType.FixedSphere: market.MarketZoneSphere = new BoundingSphereD(new Vector3D((double)x, (double)y, (double)z), (double)size); break; case MarketZoneType.FixedBox: var sz = (double)(size / 2); market.MarketZoneBox = new BoundingBoxD(new Vector3D((double)x - sz, (double)y - sz, (double)z - sz), new Vector3D((double)x + sz, (double)y + sz, (double)z + sz)); break; } }
private static void CheckDefaultMarket(EconDataStruct data, List <MarketItemStruct> defaultPrices) { EconomyScript.Instance.ServerLogger.WriteInfo("Checking Default Market Data."); var market = data.Markets.FirstOrDefault(m => m.MarketId == EconomyConsts.NpcMerchantId); if (market == null) { market = new MarketStruct { MarketId = EconomyConsts.NpcMerchantId, MarketZoneType = MarketZoneType.FixedSphere, DisplayName = EconomyConsts.NpcMarketName, MarketZoneSphere = new BoundingSphereD(Vector3D.Zero, EconomyScript.Instance.Config.DefaultTradeRange), // Center of the game world. MarketItems = new List <MarketItemStruct>() }; data.Markets.Add(market); } if (string.IsNullOrEmpty(market.DisplayName)) { market.DisplayName = EconomyConsts.NpcMarketName; } // Add missing items that are covered by Default items. foreach (var defaultItem in defaultPrices) { var item = market.MarketItems.FirstOrDefault(e => e.TypeId.Equals(defaultItem.TypeId) && e.SubtypeName.Equals(defaultItem.SubtypeName)); if (item == null) { market.MarketItems.Add(new MarketItemStruct { TypeId = defaultItem.TypeId, SubtypeName = defaultItem.SubtypeName, BuyPrice = defaultItem.BuyPrice, SellPrice = defaultItem.SellPrice, IsBlacklisted = defaultItem.IsBlacklisted, Quantity = defaultItem.Quantity }); EconomyScript.Instance.ServerLogger.WriteVerbose("MarketItem Adding Default item: {0} {1}.", defaultItem.TypeId, defaultItem.SubtypeName); } else { // Disable any blackmarket items. if (!defaultItem.IsBlacklisted) { item.IsBlacklisted = false; } } } }
public static void CreateNpcMarket(string marketName, decimal x, decimal y, decimal z, decimal size, MarketZoneType shape) { EconomyScript.Instance.ServerLogger.WriteInfo("Creating Npc Market."); var market = new MarketStruct { MarketId = EconomyConsts.NpcMerchantId, Open = true, DisplayName = marketName, MarketItems = new List <MarketItemStruct>(), }; SetMarketShape(market, x, y, z, size, shape); AddMissingItemsToMarket(market, EconomyScript.Instance.ServerConfig.DefaultPrices); EconomyScript.Instance.Data.Markets.Add(market); }
public static void CreatePlayerMarket(ulong accountId, long entityId, double size, string blockCustomName) { EconomyScript.Instance.ServerLogger.WriteInfo("Creating Player Market."); var market = new MarketStruct { MarketId = accountId, Open = false, EntityId = entityId, DisplayName = blockCustomName, MarketItems = new List <MarketItemStruct>(), MarketZoneType = MarketZoneType.EntitySphere, MarketZoneSphere = new BoundingSphereD(Vector3D.Zero, size) }; AddMissingItemsToMarket(market, EconomyScript.Instance.ServerConfig.DefaultPrices); EconomyScript.Instance.Data.Markets.Add(market); }
public static void CreateNpcMarket(string marketName, long entityId, decimal size) { EconomyScript.Instance.ServerLogger.WriteInfo("Creating Npc Market."); var market = new MarketStruct { MarketId = EconomyConsts.NpcMerchantId, Open = true, DisplayName = marketName, MarketItems = new List <MarketItemStruct>(), MarketZoneType = MarketZoneType.EntitySphere, MarketZoneSphere = new BoundingSphereD(Vector3D.Zero, decimal.ToDouble(size)), EntityId = entityId }; AddMissingItemsToMarket(market, EconomyScript.Instance.ServerConfig.DefaultPrices); EconomyScript.Instance.Data.Markets.Add(market); }
private static decimal SumComponents(MarketStruct market, Dictionary <MyDefinitionId, decimal> accumulatedComponents) { decimal total = 0; foreach (var kvp in accumulatedComponents) { //EconomyScript.Instance.ServerLogger.Write("Component Count '{0}' '{1}' x {2}.", kvp.Key.TypeId, kvp.Key.SubtypeName, kvp.Value); var item = market.MarketItems.FirstOrDefault(e => e.TypeId == kvp.Key.TypeId.ToString() && e.SubtypeName == kvp.Key.SubtypeName); if (item == null) { EconomyScript.Instance.ServerLogger.WriteWarning("Component Item could not be found in Market for Worth '{0}' '{1}'.", kvp.Key.TypeId, kvp.Key.SubtypeName); // can ignore for worth. } else { total += kvp.Value * item.SellPrice; // TODO: check if we use the sell or buy price. } } return(total); }
public static void CreatePlayerMarket(ulong accountId, long entityId, double size, string blockCustomName) { EconomyScript.Instance.ServerLogger.WriteInfo("Creating Player Market."); var market = new MarketStruct { MarketId = accountId, Open = false, EntityId = entityId, DisplayName = blockCustomName, MarketItems = new List <MarketItemStruct>(), MarketZoneType = MarketZoneType.EntitySphere, MarketZoneSphere = new BoundingSphereD(Vector3D.Zero, size) }; // Add missing items that are covered by Default items, with 0 quantity. foreach (var defaultItem in EconomyScript.Instance.ServerConfig.DefaultPrices) { var item = market.MarketItems.FirstOrDefault(e => e.TypeId.Equals(defaultItem.TypeId) && e.SubtypeName.Equals(defaultItem.SubtypeName)); if (item == null) { market.MarketItems.Add(new MarketItemStruct { TypeId = defaultItem.TypeId, SubtypeName = defaultItem.SubtypeName, BuyPrice = defaultItem.BuyPrice, SellPrice = defaultItem.SellPrice, IsBlacklisted = defaultItem.IsBlacklisted, Quantity = 0 }); EconomyScript.Instance.ServerLogger.WriteVerbose("MarketItem Adding Default item: {0} {1}.", defaultItem.TypeId, defaultItem.SubtypeName); } else { // Disable any blackmarket items. if (defaultItem.IsBlacklisted) { item.IsBlacklisted = true; } } } EconomyScript.Instance.Data.Markets.Add(market); }
public static void CreateNpcMarket(string marketName, decimal x, decimal y, decimal z, decimal size, MarketZoneType shape) { EconomyScript.Instance.ServerLogger.WriteInfo("Creating Npc Market."); var market = new MarketStruct { MarketId = EconomyConsts.NpcMerchantId, Open = true, DisplayName = marketName, MarketItems = new List <MarketItemStruct>(), }; SetMarketShape(market, x, y, z, size, shape); // Add missing items that are covered by Default items. foreach (var defaultItem in EconomyScript.Instance.ServerConfig.DefaultPrices) { var item = market.MarketItems.FirstOrDefault(e => e.TypeId.Equals(defaultItem.TypeId) && e.SubtypeName.Equals(defaultItem.SubtypeName)); if (item == null) { market.MarketItems.Add(new MarketItemStruct { TypeId = defaultItem.TypeId, SubtypeName = defaultItem.SubtypeName, BuyPrice = defaultItem.BuyPrice, SellPrice = defaultItem.SellPrice, IsBlacklisted = defaultItem.IsBlacklisted, Quantity = defaultItem.Quantity }); EconomyScript.Instance.ServerLogger.WriteVerbose("MarketItem Adding Default item: {0} {1}.", defaultItem.TypeId, defaultItem.SubtypeName); } else { // Disable any blackmarket items. if (defaultItem.IsBlacklisted) { item.IsBlacklisted = true; } } } EconomyScript.Instance.Data.Markets.Add(market); }