Beispiel #1
0
        void pollTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            pollTimer.Interval = Program.Config.PollInterval;

            // Check if someone is online and near a tracked area (e.g. shop )
            if (PlayersManager.Instance.OnlinePlayers > 0)
            {
                if (PositionManager.Instance.SomeoneNearTrackable())
                {
                    pollTimer.Interval = Program.Config.PositionInterval;
                    logger.Trace("Someone near trackable Area new Poll Intervall {0}", Program.Config.PositionInterval);
                }
            }

            if (CalloutManagerImpl.NextCallout <= DateTime.Now)
            {
                CalloutManagerImpl.UpdateCallouts();
            }

            // Check for Short callouts
            double nextCalloutIntervall = (CalloutManagerImpl.NextCallout - DateTime.Now).TotalMilliseconds;

            if ((nextCalloutIntervall > 0) && (nextCalloutIntervall < pollTimer.Interval))
            {
                logger.Info("short callout. new interval {0}", nextCalloutIntervall);
                pollTimer.Interval = nextCalloutIntervall;
            }

            TimeSpan span = DateTime.Now - lastPayday;

            if (span.Minutes > Program.Config.PaydayInterval)
            {
                if (PlayersManager.Instance.OnlinePlayers > 0)
                {
                    logger.Info("Payday!");
                    PlayersManager.Instance.Payday();
                }
                lastPayday = DateTime.Now;
            }

            if ((serverConnection.ConnectionState == ConnectionStatus.Connected) && (PlayersManager.Instance.OnlinePlayers > 0))
            {
                span = DateTime.Now - lastLP;
                if (span.TotalMilliseconds > Program.Config.PositionInterval)
                {
                    try
                    {
                        serverConnection.WriteLine("lp");
                    }
                    catch
                    {
                        logger.Info("Server Disconnected... Trying to reconnect");
                        PlayersManager.Instance.Save();
                    }
                    lastLP = DateTime.Now;
                }
            }
            Program.Config.Save();
        }
Beispiel #2
0
 public void Logout()
 {
     Payday();
     logger.Info("{0} is now offline", Name);
     IsOnline = false;
     CalloutManagerImpl.UnregisterCallouts(this);
     OnChanged();
     PlayersManager.Instance.OnPlayerLogout(this);
 }
Beispiel #3
0
 public void Login()
 {
     if (!IsOnline)
     {
         PingTracker.Clear();
         logger.Info("{0} is now online (ZK {1}) Coins: {2}", Name, ZombieKills, zCoins);
         LastLogin = DateTime.Now;
         LastPayday = DateTime.Now;
         IsOnline = true;
         LastDeaths = Deaths;
         LastPlayerKills = PlayerKills;
         LastZombieKills = ZombieKills;
         CurrentPosition = Position.InvalidPosition;
         SessionAge = 0;
         if (!String.IsNullOrEmpty(Program.Config.MOTD))
             CalloutManagerImpl.RegisterCallout(new MessageCallout(this, CalloutType.Error, Program.Config.MOTD));
         CalloutManagerImpl.RegisterCallout(new MessageCallout(this, new TimeSpan(0, 0, 90), CalloutType.Error, Program.HELLO));
         OnChanged();
         PlayersManager.Instance.OnPlayerLogin(this);
         if (Mailbox.Mails.Count > 0)
             Confirm("R:Mail.Inbox", Mailbox.Mails.Count);
     }
 }
Beispiel #4
0
 public void StopRestocking()
 {
     logger.Info("{0}: Stop restocking {1} ", Shop.ShopName, ItemName);
     CalloutManagerImpl.UnregisterCallouts(this);
 }