Пример #1
0
 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;
             }
         }
     }
 }
Пример #2
0
        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);
        }
Пример #3
0
        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:
            }
        }
Пример #4
0
        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;
            }
        }
Пример #5
0
        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;
                    }
                }
            }
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }