예제 #1
0
        public static List <Spawner> GetSpawnersByRegion(Region region)
        {
            if (region == null)
            {
                return(null);
            }
            List <Spawner> spawners = new List <Spawner>();

            //time this search, log if it takes longer than .30 seconds
            Utility.TimeCheck tc = new Utility.TimeCheck();
            tc.Start();
            foreach (Spawner s in m_Spawners)
            {
                if (Region.Find(s.Location, s.Map) == region)
                {
                    spawners.Add(s);
                }
            }
            tc.End();
            if (tc.Elapsed() > 30)
            {
                LogHelper logger = new LogHelper("SpawnerCache");
                logger.Log("Warning:  Spawner search by region for " + region.Name + " took " + tc.Elapsed().ToString() + "ms");
            }
            return(spawners);
        }
예제 #2
0
        }         // CronProcess()

        private static void CronProcess(CronEventEntry cee)
        {
            if (cee == null)
            {
                return;
            }

            try
            {
                // run the user code
                if (cee.Running == false)
                {
                    Console.WriteLine("Skipping queued Job {0} because it was killed", cee.Name);
                }
                else
                {
                    // okay, run the scheduled task.
                    Utility.TimeCheck tc = new Utility.TimeCheck();
                    Console.Write("{0}: ", cee.Name);
                    tc.Start();                                                 // track the toal time for [lag forensics
                    cee.Handler();                                              // execute the next task in the queue
                    tc.End();
                    AuditTask(cee, tc);                                         // maintain our list of 5 most recent tasks
                }
            }
            catch (Exception ex)
            {
                LogHelper.LogException(ex);
                Console.WriteLine("Exception caught in scheduled task: {0}", ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
        }
예제 #3
0
        // called from baseguard to manage trash pick-up in the area of the guard.
        public static void DoGroundskeeper(Mobile m)
        {
            GroundskeeperStatus al;

            if (m_managers.Contains(m))                                                 // if we have it already
            {
                al = m_managers[m] as GroundskeeperStatus;                              // get the GroundskeeperStatus for this manager
            }
            else
            {
                m_managers[m] = new GroundskeeperStatus();                              // start a new list of clients at this IP address
                DoGroundskeeper(m);
                return;
            }

            // now we have a GroundskeeperStatus for this manager

            // if we've spawned a groundskeeper recently, no need to continue
            // if we've scanned recently, no need to continue
            if (DateTime.Now > al.LastSpawn + al.SpawnFreq && DateTime.Now > al.LastScan + al.ScanFreq)
            {
                ArrayList list = new ArrayList();
                if (DoScan(m, al, list))
                {
                    System.Console.WriteLine("Groundskeeper spawn started ... ");
                    Utility.TimeCheck tc = new Utility.TimeCheck();
                    tc.Start();
                    DoSpawn(al, list);
                    tc.End();
                    System.Console.WriteLine("checked {0} items in {1}", list.Count, tc.TimeTaken);
                }
            }
        }
예제 #4
0
        public override void OnDoubleClick(Mobile from)
        {
            Utility.TimeCheck tc = new Utility.TimeCheck();
            tc.Start();
            Place(from, new Point3D(from.Location.X, from.Location.Y, from.Location.Z), true);
            tc.End();
            LogHelper Logger = new LogHelper("TownshipPlacementTime.log", false);

            //from.SendMessage(String.Format("Stone placement took {0}", tc.TimeTaken));
            Logger.Log(LogType.Text, String.Format("Stone placement check at {0} took {1}", from.Location, tc.TimeTaken));
            Logger.Finish();
        }
예제 #5
0
        private static void AuditTask(CronEventEntry cee, Utility.TimeCheck tc)
        {
            // here we maintain our list of 5 most recent tasks
            if (m_RecentTasks.Count == 5)
            {
                m_RecentTasks.RemoveAt(0);                  //remove first (oldest) task
            }
            else if (m_RecentTasks.Count > 5)
            {
                m_RecentTasks.Clear();                      // this shouldn't be possible
            }
            // but stranger things have happened!

            // add new task and elapsed time as a LagStats struct at bottom of the list
            m_RecentTasks.Add(new LagStats(cee.Name, tc.TimeTaken));
        }
예제 #6
0
 public override void OnResponse(NetState state, RelayInfo info)
 {
     if (info.ButtonID == 1)
     {
         try
         {
             Utility.TimeCheck tc = new Utility.TimeCheck();
             tc.Start();
             m_TSDeed.Place(m_From, m_Location, false);
             tc.End();
             LogHelper Logger = new LogHelper("TownshipPlacementTime.log", false);
             //from.SendMessage(String.Format("Stone placement took {0}", tc.TimeTaken));
             Logger.Log(LogType.Text, String.Format("Stone placement ACTUAL at {0} took {1}", m_Location, tc.TimeTaken));
             Logger.Finish();
         }
         catch (Exception ex)
         {
             EventSink.InvokeLogException(new LogExceptionEventArgs(ex));
         }
     }
 }
예제 #7
0
        public static void PackMemory_OnCommand(CommandEventArgs e)
        {
            if (e.Arguments.Length == 0 || ((e.Arguments[0] != "true" && e.Arguments[0] != "false")))
            {
                e.Mobile.SendMessage("Usage: PackMemory <true|false>");
                e.Mobile.SendMessage("Where: true means to WaitForPendingFinalizers.");
                return;
            }

            Utility.TimeCheck tc = new Utility.TimeCheck();
            e.Mobile.SendMessage("Packing memory...");
            tc.Start();
            System.GC.Collect();
            if (e.Arguments[0] == "true")
            {
                System.GC.WaitForPendingFinalizers();
            }
            tc.End();
            e.Mobile.SendMessage("{0} bytes in allocated memory", System.GC.GetTotalMemory(false));
            e.Mobile.SendMessage("PackMemory took {0}", tc.TimeTaken);
        }
예제 #8
0
        public static void WipeOverlandMobs_OnCommand(CommandEventArgs e)
        {
            Mobile from = e.Mobile;

            try
            {
                from.SendMessage("Deleting all overland mobiles ... ");
                Utility.TimeCheck tc = new Utility.TimeCheck();
                tc.Start();
                int count = WipeOverlandMobs();
                tc.End();
                from.SendMessage("{0} mobiles deleted in:{1}", count, tc.TimeTaken);
            }
            catch (Exception ex)
            {
                LogHelper.LogException(ex);
                System.Console.WriteLine("Exception Caught in WipeOverlandMobs: " + ex.Message);
                System.Console.WriteLine(ex.StackTrace);
            }

            return;
        }
예제 #9
0
        public static Spawner GetRandomSpawner(SpawnerType type)
        {
            // if still empty, fail
            if (m_Spawners.Count == 0)
            {
                return(null);
            }

            Spawner spawner = null;

            Utility.TimeCheck tc = new Utility.TimeCheck();
            tc.Start();
            //try to find an appropriate spawner
            for (int count = 0; count < m_Spawners.Count * 2; ++count)
            {
                // pick one at random..
                Spawner random = m_Spawners[Utility.Random(m_Spawners.Count)] as Spawner;
                Region  region = Server.Region.Find(random.Location, Map.Felucca);

                // test if this spawner satisfies type required
                switch (type)
                {
                case SpawnerType.Overland:
                {
                    // Must be running
                    if (!random.Running)
                    {
                        continue;
                    }

                    if (region != null)
                    {                                           // No Towns
                        if (IsTown(region.Name))
                        {
                            continue;
                        }

                        // no green acres, inside houses, etc..
                        if (IsValidRegion(random.Location, region) == false)
                        {
                            continue;
                        }
                    }

                    break;
                }

                default:
                {
                    if (region != null)
                    {
                        // no green acres, inside houses, etc..
                        if (IsValidRegion(random.Location, region) == false)
                        {
                            continue;
                        }
                    }

                    break;
                }
                }

                //this is a good candidate!
                spawner = random;
                break;
            }
            tc.End();
            if (tc.Elapsed() > 30)
            {
                LogHelper logger = new LogHelper("SpawnerCache");
                logger.Log("Warning:  Spawner overland search took " + tc.Elapsed().ToString() + "ms");
            }

            return(spawner);
        }
예제 #10
0
		public void PlayerNPCCleanup()
		{
			System.Console.Write("Player NPC cleanup started ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int ItemsExpired = 0;
			int ItemsChecked = PlayerNPCCleanupWorker(out ItemsExpired);
			tc.End();
			System.Console.WriteLine("checked {0} in {1} - {2} expired", ItemsChecked, tc.TimeTaken, ItemsExpired);
		}
예제 #11
0
		public void TownCrier()
		{
			System.Console.Write("Processing global Town Crier messages ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int CrierMessages = 0;
			int CriersChecked = TownCrierWorker(out CrierMessages);
			tc.End();
			System.Console.WriteLine("checked {0} in {1} - {2} messages", CriersChecked, tc.TimeTaken, CrierMessages);
		}
예제 #12
0
		public void AccountCleanup()
		{
			System.Console.Write("Account Cleanup started ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int AcctsDeleted = 0;
			int AcctsChecked = AccountCleanupWorker(out AcctsDeleted);
			tc.End();
			System.Console.WriteLine("checked {0} in {1} - {2} Accounts Deleted", AcctsChecked, tc.TimeTaken, AcctsDeleted);
		}
예제 #13
0
		public void WinterChamp()			// turn on winter champ / turn off autumn champ()
		{
			System.Console.Write("Processing seasonal champ....");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			WinterChampWorker();
			tc.End();
			System.Console.WriteLine("Seasonal champ processing complete : {0}.", tc.TimeTaken);
		}
예제 #14
0
		public void PlayerQuestCleanup()
		{
			System.Console.Write("Checking decay of PlayerQuest items...");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int PlayerQuestsDeleted;
			int PlayerQuestsChecked = PlayerQuestCleanupWorker(out PlayerQuestsDeleted);
			tc.End();
			System.Console.WriteLine("checked {0} quests in {1}, {2} deleted.",
					PlayerQuestsChecked, tc.TimeTaken, PlayerQuestsDeleted);
		}
예제 #15
0
		public void GuildFealty()
		{
			System.Console.Write("Counting fealty votes for guildmasters...");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int guildschecked = GuildFealtyWorker();
			tc.End();
			System.Console.WriteLine("checked " + guildschecked + " guilds in: " + tc.TimeTaken);
		}
예제 #16
0
		public void AccountStatistics()
		{
			System.Console.Write("Account Statistics running... ");

			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			AccountStatisticsWorker();
			tc.End();
			System.Console.WriteLine("Done in " + tc.TimeTaken);
		}
예제 #17
0
		public void CrazyMapDayAES()
		{	// 5th Sunday of the month. However, we schedule it 24 hours prior!!
			System.Console.Write("AES Crazy Map Day initiated ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			CrazyMapDayAES CrazyMapDay = new CrazyMapDayAES();
			tc.End();
			System.Console.WriteLine("AES Crazy Map Day scheduled.");
		}
예제 #18
0
		public void KinRansomAES()
		{	// 4nd Sunday of the month. However, we schedule it 24 hours prior!!
			System.Console.Write("AES Kin Ransom Quest initiated ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			KinRansomAES KinRansom = new KinRansomAES();
			int Reminders = 0;
			if (TestCenter.Enabled == false && KinRansom != null)
				RansomQuestReminders(KinRansom, out Reminders);
			tc.End();
			System.Console.WriteLine("AES Kin Ransom Quest scheduled with {0} reminders sent.", Reminders);
		}
예제 #19
0
		public void TownInvasionAES()
		{	// 3nd Sunday of the month. However, we schedule it 24 hours prior!!
			System.Console.Write("AES Town Invasion initiated ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			TownInvasionAES TownInvasion = new TownInvasionAES();
			tc.End();
			System.Console.WriteLine("AES Town Invasion scheduled.");
		}
예제 #20
0
		public void ServerWarsAES()
		{	// 1st Sunday of the month. However, we schedule it 24 hours prior!!
			System.Console.Write("AES Server Wars initiated ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			ServerWarsAES ServerWars = new ServerWarsAES();
			int Reminders = 0;
			if (TestCenter.Enabled == false && ServerWars != null)
				ServerWarsReminders(ServerWars, out Reminders);
			tc.End();
			System.Console.WriteLine("AES Server Wars scheduled.");
		}
예제 #21
0
		public void MurderCountDecay()
		{
			System.Console.Write("Murder Count Decay started ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int mobileschecked = MurderCountDecayWorker();
			tc.End();
			System.Console.WriteLine("checked " + mobileschecked + " characters in: " + tc.TimeTaken);
		}
예제 #22
0
		public void WeaponDistribution()
		{
			if (TestCenter.Enabled == false)
			{
				System.Console.Write("Emailing a report of weapon distribution among players ... ");
				Utility.TimeCheck tc = new Utility.TimeCheck();
				tc.Start();
				int mobileschecked = WeaponDistributionWorker();
				tc.End();
				System.Console.WriteLine("checked " + mobileschecked + " characters in: " + tc.TimeTaken);
			}
		}
예제 #23
0
		public void PlayerQuestAnnounce()
		{
			System.Console.Write("Checking for PlayerQuest announcements...");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int PlayerQuestsAnnounced;
			int PlayerQuestsChecked = PlayerQuestAnnounceWorker(out PlayerQuestsAnnounced);
			tc.End();
			System.Console.WriteLine("checked {0} quests in {1}, {2} announced.",
					PlayerQuestsChecked, tc.TimeTaken, PlayerQuestsAnnounced);
		}
예제 #24
0
		public void ItemDecay()
		{
			System.Console.WriteLine("Item decay started ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int ItemsDeleted = 0;
			int ItemsChecked = ItemDecayWorker(out ItemsDeleted);
			tc.End();
			System.Console.WriteLine("checked {0} in {1} - {2} Items Deleted", ItemsChecked, tc.TimeTaken, ItemsDeleted);
		}
예제 #25
0
		public void LogRotation()
		{
			System.Console.Write("Rotating player command logs...");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			bool ok = LogRotationWorker();
			tc.End();
			System.Console.WriteLine("rotation {0} in {1}.",
					ok ? "completed" : "failed", tc.TimeTaken);
		}
예제 #26
0
		public void NPCWork()
		{
			System.Console.Write("Npc work started ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int npcsworked = 0;
			int mobileschecked = NPCWorkWorker(out npcsworked);
			tc.End();
			System.Console.WriteLine("checked {0} in {1} - {2} Npcs Worked", mobileschecked, tc.TimeTaken, npcsworked);
		}
예제 #27
0
		public void TownshipCharges()
		{
			System.Console.Write("Performing Township Charges...");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int townshipcount = TownshipStone.AllTownshipStones.Count;
			int townshipsremoved = TownshipStone.DoAllTownshipCharges();
			tc.End();
			System.Console.WriteLine("removed {0} of {1} townships in: {2}.", townshipsremoved, townshipcount, tc.TimeTaken);
		}
예제 #28
0
		public void IntMapMobileCleanup()
		{
			System.Console.Write("Internal MOB cleanup started ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int mobilesexpired = 0;
			int mobileschecked = IntMapMobileCleanupWorker(out mobilesexpired);
			tc.End();
			System.Console.WriteLine("checked {0} in {1} - {2} expired", mobileschecked, tc.TimeTaken, mobilesexpired);
		}
예제 #29
0
		public void FreezeDryInit()
		{
			System.Console.Write("Freeze Dry starup init...");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int scheduled = FreezeDryInitWorker();
			tc.End();
			System.Console.WriteLine("{0} containers scheduled for freeze drying in: {1}.", scheduled, tc.TimeTaken);
		}
예제 #30
0
		} // CronProcess()

		private static void CronProcess(CronEventEntry cee)
		{
			if (cee == null) return;

			try
			{
				// run the user code                               
				if (cee.Running == false)
					Console.WriteLine("Skipping queued Job {0} because it was killed", cee.Name);
				else
				{
					// okay, run the scheduled task.
					Utility.TimeCheck tc = new Utility.TimeCheck();
					Console.Write("{0}: ", cee.Name);
					tc.Start();					// track the toal time for [lag forensics
					cee.Handler();				// execute the next task in the queue
					tc.End();
					AuditTask(cee,tc);			// maintain our list of 5 most recent tasks
				}
			}
			catch (Exception ex)
			{
				LogHelper.LogException(ex);
				Console.WriteLine("Exception caught in scheduled task: {0}", ex.Message);
				Console.WriteLine(ex.StackTrace);
			}
		}
예제 #31
0
		public void WealthTracker()
		{
			System.Console.Write("Collecting WealthTracker information...");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			WealthTrackerWorker();
			tc.End();
			System.Console.WriteLine("WealthTracker complete : {0}.", tc.TimeTaken);
		}
예제 #32
0
		public void OverlandSystem()
		{
			System.Console.Write("Overland Merchant spawn ... ");
			if (Utility.RandomChance(10))
			{
				Utility.TimeCheck tc = new Utility.TimeCheck();
				tc.Start();
				Point3D location;
				bool result = OverlandSystem(out location);
				tc.End();
				if (result == false)
					System.Console.WriteLine("Failed to spawn an Overland Mobile");
				else
					System.Console.WriteLine("Spawned an Overland Mobile at {0} in:{1}", location, tc.TimeTaken);
			}
			else
				System.Console.WriteLine("None at this time");
		}
예제 #33
0
		public void HouseDecay()
		{
			System.Console.Write("House Decay started ... ");
			System.Console.Write("\n");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int houseschecked = HouseDecayWorker();
			tc.End();
			System.Console.WriteLine("checked " + houseschecked + " houses in: " + tc.TimeTaken);
		}
예제 #34
0
		public void KinFactions()
		{
			System.Console.Write("Processing faction kin sigils....");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			KinCityManager.ProcessSigils();
			tc.End();
			System.Console.WriteLine("Kin faction sigil processing complete : {0}.", tc.TimeTaken);
		}
예제 #35
0
		public void KinFactionsLogging()
		{
			System.Console.Write("Processing faction logs....");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			KinCityManager.ProcessAndOutputLogs();
			tc.End();
			System.Console.WriteLine("Kin faction logs complete : {0}.", tc.TimeTaken);
		}
예제 #36
0
		public void PlantGrowth()
		{
			System.Console.Write("Plant Growth started ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int plantschecked = PlantGrowthWorker();
			tc.End();
			System.Console.WriteLine("checked " + plantschecked + " plants in: " + tc.TimeTaken);
		}
예제 #37
0
		public void VendorRestock()
		{
			System.Console.WriteLine("Vendor restock check started ... ");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			int vendorsChecked = VendorRestockWorker();
			tc.End();
			System.Console.WriteLine("checked {0} vendors in {1}", vendorsChecked, tc.TimeTaken);
		}
예제 #38
0
		public void ConsumerPriceIndex()
		{
			System.Console.Write("Collecting ConsumerPriceIndex information...");
			Utility.TimeCheck tc = new Utility.TimeCheck();
			tc.Start();
			ConsumerPriceIndexWorker();
			tc.End();
			System.Console.WriteLine("ConsumerPriceIndex complete : {0}.", tc.TimeTaken);
		}
예제 #39
0
		public void EmailDonationReminder()
		{
			if (TestCenter.Enabled == false)
			{
				System.Console.Write("Building list of donation reminders ... ");
				Utility.TimeCheck tc = new Utility.TimeCheck();
				tc.Start();
				int Reminders = 0;
				int AcctsChecked = EmailDonationReminderWorker(out Reminders);
				tc.End();
				System.Console.WriteLine("checked {0} in {1} - {2} Accounts reminders", AcctsChecked, tc.TimeTaken, Reminders);
			}
		}