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(); }
public void Logout() { Payday(); logger.Info("{0} is now offline", Name); IsOnline = false; CalloutManagerImpl.UnregisterCallouts(this); OnChanged(); PlayersManager.Instance.OnPlayerLogout(this); }
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); } }
public void StopRestocking() { logger.Info("{0}: Stop restocking {1} ", Shop.ShopName, ItemName); CalloutManagerImpl.UnregisterCallouts(this); }