コード例 #1
0
        void UserWebLogOn()
        {
            while (true)
            {
                bool authd = SteamWeb.Authenticate(MyUniqueId, SteamClient, MyUserNonce);

                if (authd)
                {
                    log.Success("User Authenticated!");

                    tradeManager = new TradeManager(ApiKey, SteamWeb);
                    tradeManager.SetTradeTimeLimits(MaximumTradeTime, MaximiumActionGap, TradePollingInterval);
                    tradeManager.OnTimeout += OnTradeTimeout;

                    tradeOfferManager = new TradeOfferManager(ApiKey, SteamWeb);
                    SubscribeTradeOffer(tradeOfferManager);

                    CookiesAreInvalid = false;

                    // Success, check trade offers which we have received while we were offline
                    tradeOfferManager.GetOffers();

                    break;
                }
                else
                {
                    log.Warn("Authentication failed, retrying in 2s...");
                    Thread.Sleep(2000);
                }
            }
        }
コード例 #2
0
        public void SetUp(TradeManager tradeManager)
        {
            manager = tradeManager;

            RefreshOtherUserName();

            listAreaController.SetUp(this);

            selectedPokemonDetails.SetUp(this);
            otherUserOfferedPokemonDetails.SetUp(this);

            if (offerPokemonButton.GetComponent <MenuSelectableController>() == null)
            {
                Debug.LogError("No MenuSelectableController on offer pokemon button");
            }

            offerPokemonButton.onClick.RemoveAllListeners();
            offerPokemonButton.onClick.AddListener(OnOfferPokemonClicked);

            if (closeTradeButton.GetComponent <MenuSelectableController>() == null)
            {
                Debug.LogError("No MenuSelectableController on close trade button");
            }

            closeTradeButton.onClick.RemoveAllListeners();
            closeTradeButton.onClick.AddListener(OnCloseTradeClicked);

            RefreshOfferButtonInteractivity();

            TrySetDefaultSelectedGameObject();
        }
コード例 #3
0
        public async Task <bool> Simulation(string coinToBuy, string strategy, string fromDate, string toDate)
        {
            var candleProvider = new DatabaseCandleProvider();
            var globalFullApi  = await Global.ExchangeApi.GetFullApi();

            await candleProvider.CacheAllData(globalFullApi, Global.Configuration.ExchangeOptions.FirstOrDefault().Exchange);

            var currentExchangeOption = Global.Configuration.ExchangeOptions.FirstOrDefault();

            var simulationStartingDate = TimeZoneInfo.ConvertTimeToUtc(DateTime.ParseExact(fromDate, "yyyy-MM-ddTHH:mm:ss", System.Globalization.CultureInfo.InvariantCulture));
            var simulationEndingDate   = TimeZoneInfo.ConvertTimeToUtc(DateTime.ParseExact(toDate, "yyyy-MM-ddTHH:mm:ss", System.Globalization.CultureInfo.InvariantCulture));

            var tradeManager = new TradeManager();

            currentExchangeOption.SimulationCurrentDate = simulationStartingDate;

            while (currentExchangeOption.SimulationCurrentDate <= simulationEndingDate)
            {
                Global.Logger.Information($"------ SimulationCurrentDate start: {currentExchangeOption.SimulationCurrentDate}");
                var watch1 = System.Diagnostics.Stopwatch.StartNew();

                await tradeManager.LookForNewTrades(strategy);

                await tradeManager.UpdateExistingTrades();

                currentExchangeOption.SimulationCurrentDate = currentExchangeOption.SimulationCurrentDate.AddMinutes(5);

                watch1.Stop();
                Global.Logger.Information($"------SimulationCurrentDate end: {currentExchangeOption.SimulationCurrentDate} in #{watch1.Elapsed.TotalSeconds} seconds");
            }

            return(true);
        }
コード例 #4
0
 private void InitTradeLib()
 {
     counterId    = 0;
     tradeManager = new TradeManager(this, this,
                                     quotesStorage, GetAccountGroup);
     profitCalculator = ProfitCalculator.Instance;
 }
コード例 #5
0
        private void importShopAndTrade()
        {
            XMLHelper xh = new XMLHelper(Server.MapPath("/ShopAndTrade.xml"));

            XmlNodeList xnl = xh.GetXmlNode("shops").ChildNodes;

            using (DbTransaction trans = DbHelper.BeginTransaction())
            {
                try
                {
                    foreach (XmlNode xn in xnl)
                    {
                        Shop shop = new Shop();

                        shop.Shopname = xn.Attributes["Shopname"].InnerText;
                        shop.Phone    = xn.Attributes["Phone"].InnerText;

                        shop.Id = ShopManager.AddShop(shop, trans);

                        if (shop.Id <= 0)
                        {
                            trans.Rollback();
                            Response.Write("<br />事务出错执行回滚.<br />");
                            return;
                        }

                        foreach (XmlNode tradeXN in xn.ChildNodes)
                        {
                            Trade trade = new Trade();

                            trade.Shopid = shop.Id;

                            trade.Tradename  = tradeXN.Attributes["Tradename"].InnerText;
                            trade.Tradevalue = Convert.ToDouble(tradeXN.Attributes["Tradevalue"].InnerText);

                            trade.Id = TradeManager.AddTrade(trade, trans);

                            if (trade.Id <= 0)
                            {
                                trans.Rollback();
                                Response.Write("<br />事务出错执行回滚.<br />");
                                return;
                            }
                        }

                        //Response.Write(xn.Attributes["Shopname"].InnerText + "<br />");
                    }



                    trans.Commit();
                    Response.Write("<br />店铺和菜单导入.<br />");
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    Response.Write("<br />事务出错执行回滚.<br />");
                }
            }
        }
コード例 #6
0
        public void handler(IResponder responder)
        {
            Trade trade = new Trade();

            trade.Shopid     = SJSRequest.GetInt("Shopid", 0);
            trade.Tradename  = SJSRequest.GetString("Tradename");
            trade.Tradevalue = SJSRequest.GetFloat("Tradevalue", 0);

            if (trade.Shopid <= 0)
            {
                responder.WriteErroredMsg("请求参数错误!");
                return;
            }

            if (string.IsNullOrEmpty(trade.Tradename))
            {
                responder.WriteErroredMsg("菜单名称不能为空!");
                return;
            }

            int rlt = TradeManager.AddTrade(trade);

            if (rlt <= 0)
            {
                responder.WriteErroredMsg("新增菜单失败,数据库写入不成功!");
                return;
            }

            responder.WriteSuccessedMsg("新增菜单成功!");
        }
コード例 #7
0
        public void InitTest()
        {
            // забить котировки
            QuoteMaker.FillQuoteStorageWithDefaultValues();

            // словари
            TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock);
            DalSpot.Instantiate(TradeSharpDictionary.Instance.proxy);

            tradeManager = new TradeManager(
                null,
                null,
                QuoteStorage.Instance, accountId =>
            {
                // ReSharper disable ConvertToLambdaExpression
                return(LinqToEntity.DecorateAccountGroup(conn.ACCOUNT.First(a => a.ID == accountId).ACCOUNT_GROUP));
                // ReSharper restore ConvertToLambdaExpression
            });
            ManagerTrade.MakeTestInstance();

            // временно удалить файл начального наполнения (открытые ордера)
            TradeSharpConnectionPersistent.RestoreCsvFilesInMoqDbFolder();
            TradeSharpConnectionPersistent.RenameCsvFilesContainingAccountDataInMoqDbFolder();
            conn = TradeSharpConnectionPersistent.InitializeTradeSharpConnection();
            MakeTestContents();
        }
コード例 #8
0
        public async Task TradingSellNow(string tradeId)
        {
            var activeTrade = await Global.DataStore.GetActiveTradesAsync();

            var trade = activeTrade.FirstOrDefault(x => x.TradeId == tradeId);

            if (trade == null)
            {
                return;
            }

            var orderId = Global.Configuration.TradeOptions.PaperTrade ? Guid.NewGuid().ToString().Replace("-", "") : await Global.ExchangeApi.Sell(trade.Market, trade.Quantity, trade.TickerLast.Bid);

            trade.CloseRate   = trade.TickerLast.Bid;
            trade.OpenOrderId = orderId;
            trade.SellOrderId = orderId;
            trade.SellType    = SellType.Manually;
            trade.IsSelling   = true;

            await Global.DataStore.SaveTradeAsync(trade);

            //Trigger Sell
            TradeManager tradeManager = new TradeManager();
            await tradeManager.UpdateOpenSellOrders(trade);

            await Runtime.GlobalHubTraders.Clients.All.SendAsync("Send", "Set " + tradeId + " to SellNow");
        }
コード例 #9
0
        public OutputDetailViewModel(InvestInfo investInfo)
        {
            InvestInfo    = investInfo;
            _tradeManager = new TradeManager();

            TradeRecordDeleteButton = new CommandBase(TradeRecordDeleteButtonExecute);
        }
コード例 #10
0
ファイル: TradeManager.cs プロジェクト: stv1024/Intruder
    private void Awake()
    {
        DontDestroyOnLoad(gameObject);
        Instance = this;
        //InvokeRepeating("CheckPulse", 30f, 30f);

        AlipayPlugin.AddListener(this);
    }
コード例 #11
0
 /// <summary>
 /// CALLED WHEN THE ROBOT FIRST STARTS, IT IS ONLY CALLED ONCE.
 /// </summary>
 protected override void OnStart()
 {
     // TRADE MANAGER DECLERATION
     tm = new TradeManager(this);
     // INDICATOR DECLERATIONS
     IndIchi = Indicators.IchimokuKinkoHyo(TenkanSen, KijunSen, SenkouSpanB);
     IndBoll = Indicators.BollingerBands(BollDS, BollPeriod, BollSD, BollMAT);
 }
コード例 #12
0
        internal void Unsubscribe()
        {
            foreach (var s in subscriptions)
                s.Dispose();
            subscriptions.Clear();

            Manager = null;
        }
コード例 #13
0
ファイル: TradeController.cs プロジェクト: jsal13/_archive
    private void HandlePlayerStartedTrading(bool value, GameObject target)
    {
        traderInventory = TradeManager.GetTradeData(target.GetComponent <CharacterInformation>().tradeType);

        currentlyTrading = true;
        tradingCanvas.SetActive(true);
        PopulateTradeDialog();
    }
コード例 #14
0
        internal void SubscribeFeeds(TradeManager tradeManager, IObservable<Ticker> ticker, IObservable<DepthTable.Entry> depth, IObservable<Trade> trades)
        {
            if (Manager != null)
                throw new InvalidOperationException("Cannot subscribe to two managers");
            Manager = tradeManager;

            subscriptions.UnionWith(Subscribe(tradeManager, ticker, depth, trades));
        }
コード例 #15
0
ファイル: DelShopHandler.cs プロジェクト: W8023Y2014/jsion
        public void handler(IResponder responder)
        {
            int id = SJSRequest.GetInt("Id", 0);

            if (id <= 0)
            {
                responder.WriteErroredMsg("请求参数错误!");
                return;
            }

            Shop shop = ShopManager.GetShop(id);

            if (shop == null)
            {
                responder.WriteErroredMsg("此店铺不存在,无法删除!");
                return;
            }

            int hasBookingCount = BookingshopManager.GetBookingshop(shop.Id, false, true);

            if (hasBookingCount > 0)
            {
                responder.WriteErroredMsg("此店铺正在接受预订,无法删除!");
                return;
            }

            using (DbTransaction trans = DbHelper.BeginTransaction())
            {
                bool writeError = false;
                try
                {
                    int rlt = ShopManager.DelShop(id, trans);

                    if (rlt <= 0)
                    {
                        writeError = true;
                        trans.Rollback();
                        responder.WriteErroredMsg("店铺删除失败,数据库更新不成功!");
                        return;
                    }

                    TradeManager.DelTrade(id, trans);

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    if (writeError == false)
                    {
                        responder.WriteErroredMsg("店铺删除失败,程序异常!");
                    }
                    return;
                }
            }

            responder.WriteSuccessedMsg("店铺删除成功!");
        }
コード例 #16
0
        /// <summary>
        /// Called by the <see cref="IScheduler" /> when a
        /// <see cref="ITrigger" /> fires that is associated with
        /// the <see cref="IJob" />.
        /// </summary>

        public async Task Execute(IJobExecutionContext context)
        {
            var tradeManager = new TradeManager();

            Global.Logger.Information("Mynt service is updating trades.");
            await tradeManager.UpdateExistingTrades();

            await Task.FromResult(true);
        }
コード例 #17
0
ファイル: BuyTimer.cs プロジェクト: tiagofaria/MachinaTrader
        /// <summary>
        /// Called by the <see cref="IScheduler" /> when a
        /// <see cref="ITrigger" /> fires that is associated with
        /// the <see cref="IJob" />.
        /// </summary>
        public async Task Execute(IJobExecutionContext context)
        {
            var tradeManager = new TradeManager();

            Global.Logger.Information("Mynt service is looking for new trades.");
            await tradeManager.LookForNewTrades();

            await Task.FromResult(true);
        }
コード例 #18
0
        private static TradeManager CreateTradeManager(IMock <IRepository <Trade> > tradesRepository)
        {
            var mgr = new TradeManager(
                tradesRepository.Object,
                CreateItemRepository(),
                CreateUserStore(),
                CreateUserManager());

            return(mgr);
        }
コード例 #19
0
        public void handler(IResponder responder)
        {
            int shopid = SJSRequest.GetInt("Id", 0);

            IList <Trade> list = TradeManager.GetTrade(shopid, true);

            string json = PageUtils.TranformJSON(list);

            responder.WriteSuccessed(json);
        }
コード例 #20
0
 private void CreateInstance()
 {
     if (Instance != null && Instance != this)
     {
         Destroy(this.gameObject);
     }
     else
     {
         Instance = this;
     }
 }
コード例 #21
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }
コード例 #22
0
        public DataInputViewModel(InvestInfo investInfo)
        {
            InvestInfo = investInfo;

            Messenger.Instance.Register <TradeType>(this, OnTradeTypeChanged, Context.TRADETYPE_CHANGED);

            EnterCommand  = new CommandBase(EnterCommandExecute, EnterCommandCanExecute);
            _tradeManager = new TradeManager();

            ConnectWebAPIs();
        }
コード例 #23
0
        public void T0()
        {
            // Arrange
            var tradeManager = new TradeManager();

            // Act
            var actual = tradeManager.Trades;

            // Assert
            Assert.Empty(actual);
        }
コード例 #24
0
        public void T12()
        {
            // Arrange
            var tradeManager = new TradeManager();
            var catcher      = Catcher.For(tradeManager);

            // Act
            tradeManager.FilterTrades(TestFilters);

            // Assert
            catcher.CaughtPropertyChanged(tradeManager, nameof(tradeManager.Trades));
        }
コード例 #25
0
        public void T1()
        {
            // Arrange
            var tradeManager = new TradeManager();
            var catcher      = Catcher.For(tradeManager);

            // Act
            tradeManager.ClearAll();

            // Assert
            catcher.CaughtPropertyChanged(tradeManager, nameof(tradeManager.Trades));
        }
コード例 #26
0
        public void T0()
        {
            // Arrange
            var tradeManager = new TradeManager();
            var filters      = TestFilters;

            // Act
            tradeManager.FilterTrades(filters);

            // Assert
            Assert.Equal(filters, tradeManager.Filters);
        }
コード例 #27
0
    public bool VerifiqueCompra()
    {
        if (itensPossiveisDeVender.Length > 0)
        {
            DadosDoJogador d = GameController.g.Manager.Dados;

            if (d.Dinheiro >= itensPossiveisDeVender[OpcaoEscolhida].valorDeVenda)
            {
                EventAgregator.Publish(new StandardSendGameEvent(EventKey.getCoin, -itensPossiveisDeVender[OpcaoEscolhida].valorDeVenda));
                new MyInvokeMethod().InvokeNoTempoReal(() =>
                {
                    EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.Shop));
                }, .5f);
                TradeManager.OnBuy(itensPossiveisDeVender[OpcaoEscolhida].nome);

                // itens possivel de vender vs itens para vender


                itensPossiveisDeVender[OpcaoEscolhida].quantidadeDisponivel--;


                KeyVar myKeys = GameController.g.MyKeys;
                int    val    = itensPossiveisDeVender[OpcaoEscolhida].quantidadeDisponivel;
                int    index  = (new List <ItensAVenda>(itensParaVender)).IndexOf(itensPossiveisDeVender[OpcaoEscolhida]);

                myKeys.MudaAutoCont("quantidade disponivel, loja " + ID + " item " + index, val);

                if (val == 0)
                {
                    myKeys.MudaAutoShift("concluido, loja " + ID + " item " + index, true);
                }

                FinalizarHud();
                IniciarHud();


                return(true);
            }
            else
            {
                return(false);
            }
        }
        else
        {
            new MyInvokeMethod().InvokeAoFimDoQuadro(() =>
            {
                EventAgregator.Publish(EventKey.compraConcluida);
            });
            return(true);
        }
    }
コード例 #28
0
        public void T0()
        {
            // Arrange
            var tradeManager = new TradeManager {
                Filters = TestFilters
            };

            // Act
            tradeManager.AddNewTrade(TestTradeDetailsViewModel);

            // Assert
            Assert.NotEmpty(tradeManager.Trades);
        }
コード例 #29
0
        public void T0()
        {
            // Arrange
            var tradeManager = new TradeManager {
                Filters = TestFilters
            };

            // Act
            var(startDate, endDate) = tradeManager.GetDateRange();

            // Assert
            Assert.Equal(DateTime.MaxValue, startDate);
            Assert.Equal(DateTime.MinValue, endDate);
        }
コード例 #30
0
        public ActionResult League(int id)
        {
            LeagueManager leagueManager = new LeagueManager(_context);
            PlayerManager playerManager = new PlayerManager(_context);
            TradeManager  tradeManager  = new TradeManager(_context);

            League league = leagueManager.Get(id);

            //try get players from session
            List <Player> players = (List <Player>)Session["Players"];

            //try get players from json file
            if (players == null)
            {
                players = JsonConvert.DeserializeObject <List <Player> >(System.IO.File.ReadAllText(@"C:\Users\Collin\Source\Repos\fftoolkit\fftoolkit.Logic\Json Data\players.json"));
            }

            //scrape players
            if (players == null)
            {
                players            = playerManager.Get(league);
                players            = tradeManager.GetTradeValues(players, league);
                Session["Players"] = players;
            }

            //build teams with players

            //try get teams from session
            List <Team> teams = (List <Team>)Session["TeamsWithPlayers"];

            //try get teams from json file
            if (teams == null)
            {
                teams = JsonConvert.DeserializeObject <List <Team> >(System.IO.File.ReadAllText(@"C:\Users\Collin\Source\Repos\fftoolkit\fftoolkit.Logic\Json Data\teams.json"));
            }

            //scrape teams
            if (teams == null)
            {
                teams = tradeManager.GetTeamsWithPlayers(players, league);
                Session["TeamsWithPlayers"] = teams;
            }

            TradesViewModel model = new TradesViewModel(teams)
            {
                League = league
            };

            return(View(model));
        }
コード例 #31
0
        public void T1()
        {
            // Arrange
            var tradeManager = new TradeManager();

            tradeManager.SelectedTrade = TestOpenTrade;
            var catcher = Catcher.For(tradeManager);

            // Act
            tradeManager.RemoveTrade();

            // Assert
            catcher.CaughtPropertyChanged(tradeManager, nameof(tradeManager.Trades));
        }
コード例 #32
0
ファイル: TradeManager.cs プロジェクト: 1cekrim/flower
 private void Awake()
 {
     if (!_instance)
     {
         _instance = this;
     }
     else if (_instance != this)
     {
         Destroy(gameObject);
     }
     DontDestroyOnLoad(gameObject);
     categories    = new Dictionary <PurchaseCategoryEnum, PurchaseCategory>();
     purchaseAbles = new List <IPurchaseAble>();
     CreateAllCategory();
 }
コード例 #33
0
        private static void Connected(IObservable<string> data)
        {
            ISubject<Trade> fakeTrades = new Subject<Trade>();
            ISubject<DepthTable.Entry> fakeDepth = new Subject<DepthTable.Entry>();
            ISubject<Ticker> fakeTicker = new Subject<Ticker>();

            FakeExchange exchange = new FakeExchange(10, 0);
            exchange.Subscribe(a => Console.Title = a.ToString());

            IObservable<Ticker> ticker =
                //fakeTicker;
                data.AsJson().AsMtgoxTicker();
            IObservable<DepthTable.Entry> depth =
                //fakeDepth;
                data.AsJson().AsMtgoxDepth();
            IObservable<Trade> trade =
                //fakeTrades;
                data.AsJson().AsMtgoxTrades();

            TradeManager manager = new TradeManager(exchange, ticker, depth, trade, new Stupid(5));

            var tradelog = new StreamWriter(File.Open("trades.t", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read));
            manager.Trades.Subscribe(a => tradelog.WriteLine(String.Format("tr {0} {1} {2}", a.Volume, a.Price, a.Date)));

            manager.Trades.Subscribe(a => Console.WriteLine(String.Format("Mtgox Traded {0} BTC for {1} USD", a.Volume, a.Price)));

            //while (true)
            //{
            //    Console.WriteLine("Enter a line to inject fake data");
            //    Console.WriteLine("tr {volume} {price}");

            //    var line = Console.ReadLine();
            //    line = trFile.ReadLine();

            //    var tokens = line.Split(' ').Select(a => a.ToLower()).ToArray();
            //    if (tokens[0] == "tr" && tokens.Length == 3)
            //    {
            //        fakeTrades.OnNext(new Trade(decimal.Parse(tokens[1]), decimal.Parse(tokens[2]), DateTime.Now.ToUniversalTime().Ticks));
            //    }
            //}

            Console.WriteLine("Press any key to exit");
            Console.Read();

            //tradelog.Flush();
            //tradelog.Close();
        }
コード例 #34
0
        protected override IEnumerable<IDisposable> Subscribe(TradeManager tradeManager, IObservable<Ticker> ticker, IObservable<DepthTable.Entry> depth, IObservable<Trade> trades)
        {
            wallet[0] = tradeManager.Exchange.GetBalance().Btc;

            IObservable<decimal> slidingVolumeWeightedAveragePrice = trades
                .SlidingWindow(WindowSize)
                .Select(a => a.Sum(t => t.Price * t.Volume) / a.Sum(t => t.Volume));

            bool up = false;
            bool down = false;
            decimal vwap = 0;
            yield return slidingVolumeWeightedAveragePrice.Subscribe(a =>
            {
                up = a > vwap;
                down = a < vwap;
                vwap = a;
            });

            yield return trades.Subscribe(OnTrade(slidingVolumeWeightedAveragePrice, () => up, () => down));
        }
コード例 #35
0
ファイル: GameEngine.cs プロジェクト: Gabino3/socAI
    void Start()
    {
        board = new Board (); // instantiates and draws
        gamestate = new GameState (4, board, firstPlayerAI);
        tradeManager = new TradeManager (gamestate, this);
        humanCardCounts = new GameObject[5];
        tradeThisText = new GameObject[5];
        forThisText = new GameObject[5];
        tradeThis = new GameObject[5];
        forThis = new GameObject[5];
        turnInfoText = new GameObject[gamestate.numPlayers];

        BuildPlayerTurnWindow ();
        BuildSelectionPanel ();
        BuildHumanPlayerHandDisplay ();
        BuildEndTurnButton ();
        BuildDiceRoller ();
        BuildTradePanel ();

        lastAIActionTime = EPOCH;

        curState = gamestate.IncrementState (); // initial increment
    }
コード例 #36
0
 public void TradeCanceled()
 {
     TradeHandler = null;
 }
コード例 #37
0
        public void RequestTrade(RealmTime time, RequestTradePacket pkt)
        {
            var target = Owner.GetPlayerByName(pkt.Name);

            if (target == null)
            {
                SendInfo("{\"key\":\"server.player_not_found\",\"tokens\":{\"player\":\"" + pkt.Name + "\"}}");
                return;
            }
            if (!NameChosen || !target.NameChosen)
            {
                SendInfo("{\"key\":\"server.trade_needs_their_name\"}");
                return;
            }
            if (Client.Player == target)
            {
                SendInfo("{\"key\":\"server.self_trade\"}");
                return;
            }

            if (TradeManager.TradingPlayers.Count(_ => _.AccountId == target.AccountId) > 0)
            {
                SendInfo("{\"key\":\"server.they_already_trading\",\"tokens\":{\"player\":\"" + target.Name + "\"}}");
                return;
            }
            if (TradeManager.CurrentRequests.Count(_ => _.Value.AccountId == AccountId && _.Key.AccountId == target.AccountId) > 0)
            {
                var myItems = new TradeItem[12];
                var yourItems = new TradeItem[12];

                for (var i = 0; i < myItems.Length; i++)
                {
                    myItems[i] = new TradeItem
                    {
                        Item = Inventory[i] == null ? -1 : Inventory[i].ObjectType,
                        SlotType = SlotTypes[i],
                        Tradeable = (Inventory[i] != null && i >= 4) && (!Inventory[i].Soulbound),
                        Included = false
                    };
                }

                for (var i = 0; i < yourItems.Length; i++)
                {
                    yourItems[i] = new TradeItem
                    {
                        Item = target.Inventory[i] == null ? -1 : target.Inventory[i].ObjectType,
                        SlotType = SlotTypes[i],
                        Tradeable = (target.Inventory[i] != null && i >= 4) && (!target.Inventory[i].Soulbound),
                        Included = false
                    };
                }

                Client.SendPacket(new TradeStartPacket
                {
                    MyItems = myItems,
                    YourItems = yourItems,
                    YourName = target.Name
                });

                target.Client.SendPacket(new TradeStartPacket
                {
                    MyItems = yourItems,
                    YourItems = myItems,
                    YourName = Name
                });

                var t = new TradeManager(this, target);
                target.TradeHandler = t;
                TradeHandler = t;
            }
            else
            {
                SendInfo("{\"key\":\"server.trade_requested\",\"tokens\":{\"player\":\"" + target.Name + "\"}}");
                if (target.Ignored.Contains(Client.Account.AccountId)) return;
                target.Client.SendPacket(new TradeRequestedPacket
                {
                    Name = Name
                });
                var format = new KeyValuePair<Player, Player>(this, target);
                TradeManager.CurrentRequests.Add(format);

                Owner.Timers.Add(new WorldTimer(60 * 1000, (w, t) =>
                {
                    if (!TradeManager.CurrentRequests.Contains(format)) return;
                    TradeManager.CurrentRequests.Remove(format);
                    SendInfo("{\"key\":\"server.trade_timeout\"}");
                }));
            }
        }
コード例 #38
0
 protected abstract IEnumerable<IDisposable> Subscribe(TradeManager tradeManager, IObservable<Ticker> ticker, IObservable<DepthTable.Entry> depth, IObservable<Trade> trades);