Welcome
Welcome to <strong>SunUO</strong>.

You are currently viewing our boards as a guest, which gives you limited access to view most discussions and access our other features. By joining our free community, you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content, and access many other special features. Registration is fast, simple, and absolutely free, so please, <a href="/profile.php?mode=register">join our community today</a>!

World Save Gump for Runuo 2.0

Support for modifying scripts or writing your own

World Save Gump for Runuo 2.0

Postby prometheus562 on Tue Oct 21, 2008 10:35 am

The error i get



Code: Select all
SunUO Version 0.5.1 http://www.sunuo.org/
  on Microsoft Windows NT 5.1.2600 Service Pack 2, runtime 2.0.50727.1433

2008-10-21 05:32:45,414 INFO  Compiling library legacy, 2045 C# sources
2008-10-21 05:32:59,494 ERROR Compilation failed (1 errors, 3 warnings)
2008-10-21 05:32:59,494 ERROR d:\Documents and Settings\Malakai\Desktop\sunuo-0.
5.1\sunuo-0.5.1\Scripts\Custom\World Save Gump\AutoSave.cs: CS0138: (line 6, col
umn 7) A using namespace directive can only be applied to namespaces; 'Server.Co
mmands' is a type not a namespace
2008-10-21 05:32:59,494 WARN  d:\Documents and Settings\Malakai\Desktop\sunuo-0.
5.1\sunuo-0.5.1\Scripts\Gumps\Properties\PropsConfig.cs: CS0429: (line 17, colum
n 46) Unreachable expression code detected
2008-10-21 05:32:59,494 WARN  d:\Documents and Settings\Malakai\Desktop\sunuo-0.
5.1\sunuo-0.5.1\Scripts\Gumps\Properties\PropsConfig.cs: CS0429: (line 20, colum
n 46) Unreachable expression code detected
2008-10-21 05:32:59,494 WARN  d:\Documents and Settings\Malakai\Desktop\sunuo-0.
5.1\sunuo-0.5.1\Scripts\Gumps\Properties\PropsConfig.cs: CS0429: (line 23, colum
n 44) Unreachable expression code detected
SunUO Version 0.5.1 http://www.sunuo.org/
  on Microsoft Windows NT 5.1.2600 Service Pack 2, runtime 2.0.50727.1433




Autosave.cs

Code: Select all
using System;
using System.Reflection;
using System.Collections;
using System.IO;
using Server;
using Server.Commands;
using Server.Network;
using Server.Items;
using Server.Mobiles;
using Server.Misc;
using Server.Accounting;
using Server.Gumps;

namespace Server.Misc
{
   public class AutoSave : Timer
   {
      private static TimeSpan m_Delay = TimeSpan.FromMinutes( 30.0 );
      private static TimeSpan m_Warning = TimeSpan.Zero;
      //private static TimeSpan m_Warning = TimeSpan.FromSeconds( 15.0 );

      public static void Initialize()
      {
         new AutoSave().Start();
         CommandSystem.Register( "SetSaves", AccessLevel.Administrator, new CommandEventHandler( SetSaves_OnCommand ) );
      }

      private static bool m_SavesEnabled = true;

      public static bool SavesEnabled
      {
         get{ return m_SavesEnabled; }
         set{ m_SavesEnabled = value; }
      }

      [Usage( "SetSaves <true | false>" )]
      [Description( "Enables or disables automatic shard saving." )]
      public static void SetSaves_OnCommand( CommandEventArgs e )
      {
         if ( e.Length == 1 )
         {
            m_SavesEnabled = e.GetBoolean( 0 );
            e.Mobile.SendMessage( "Saves have been {0}.", m_SavesEnabled ? "enabled" : "disabled" );
         }
         else
         {
            e.Mobile.SendMessage( "Format: SetSaves <true | false>" );
         }
      }

      public AutoSave() : base( m_Delay - m_Warning, m_Delay )
      {
         Priority = TimerPriority.OneMinute;
      }

      protected override void OnTick()
      {
         if ( !m_SavesEnabled || AutoRestart.Restarting )
            return;

         if ( m_Warning == TimeSpan.Zero )
         {
            Save();
         }
         else
         {
            int s = (int)m_Warning.TotalSeconds;
            int m = s / 60;
            s %= 60;

            if ( m > 0 && s > 0 )
               World.Broadcast( 0x35, true, "The world will save in {0} minute{1} and {2} second{3}.", m, m != 1 ? "s" : "", s, s != 1 ? "s" : "" );
            else if ( m > 0 )
               World.Broadcast( 0x35, true, "The world will save in {0} minute{1}.", m, m != 1 ? "s" : "" );
            else
               World.Broadcast( 0x35, true, "The world will save in {0} second{1}.", s, s != 1 ? "s" : "" );

            Timer.DelayCall( m_Warning, new TimerCallback( Save ) );
         }
      }

      public static void Save()
      {
         ArrayList mobs = new ArrayList( World.Mobiles.Values );

         if ( AutoRestart.Restarting )
            return;

         try{ Backup(); }
         catch{}

         foreach ( Mobile m in mobs )
         {
            m.SendGump ( new SaveGump() );
         }
         World.Save(false);
         foreach ( Mobile m in mobs )
         {
            m.CloseGump( typeof(SaveGump) );
         }

      }

      private static string[] m_Backups = new string[]
         {
            "Third Backup",
            "Second Backup",
            "Most Recent"
         };

      private static void Backup()
      {
         if ( m_Backups.Length == 0 )
            return;

         string root = Path.Combine( Core.BaseDirectory, "Backups\\Automatic" );

         if ( !Directory.Exists( root ) )
            Directory.CreateDirectory( root );

         string[] existing = Directory.GetDirectories( root );

         for ( int i = 0; i < m_Backups.Length; ++i )
         {
            DirectoryInfo dir = Match( existing, m_Backups[i] );

            if ( dir == null )
               continue;

            if ( i > 0 )
            {
               string timeStamp = FindTimeStamp( dir.Name );

               if ( timeStamp != null )
               {
                  try{ dir.MoveTo( FormatDirectory( root, m_Backups[i - 1], timeStamp ) ); }
                  catch{}
               }
            }
            else
            {
               try{ dir.Delete( true ); }
               catch{}
            }
         }

         string saves = Path.Combine( Core.BaseDirectory, "Saves" );

         if ( Directory.Exists( saves ) )
            Directory.Move( saves, FormatDirectory( root, m_Backups[m_Backups.Length - 1], GetTimeStamp() ) );
      }

      private static DirectoryInfo Match( string[] paths, string match )
      {
         for ( int i = 0; i < paths.Length; ++i )
         {
            DirectoryInfo info = new DirectoryInfo( paths[i] );

            if ( info.Name.StartsWith( match ) )
               return info;
         }

         return null;
      }

      private static string FormatDirectory( string root, string name, string timeStamp )
      {
         return Path.Combine( root, String.Format( "{0} ({1})", name, timeStamp ) );
      }

      private static string FindTimeStamp( string input )
      {
         int start = input.IndexOf( '(' );

         if ( start >= 0 )
         {
            int end = input.IndexOf( ')', ++start );

            if ( end >= start )
               return input.Substring( start, end-start );
         }

         return null;
      }

      private static string GetTimeStamp()
      {
         DateTime now = DateTime.Now;

         return String.Format( "{0}-{1}-{2} {3}-{4:D2}-{5:D2}",
               now.Day,
               now.Month,
               now.Year,
               now.Hour,
               now.Minute,
               now.Second
            );
      }
   }
}



savegump.cs

Code: Select all
using System;
using Server;
using Server.Gumps;

namespace Server.Gumps
{
   public class SaveGump : Gump
   {
      public SaveGump()
         : base( 200, 200 )
      {
         this.Closable=true;
         this.Disposable=true;
         this.Dragable=true;
         this.Resizable=false;
         this.AddPage(0);
         this.AddBackground(0, 0, 353, 118, 9270);
         this.AddItem(297, 38, 4168);
         this.AddLabel(118, 15, 1149, @"World Saving");
         this.AddLabel(48, 71, 255, @"take up to a minute. Please be patient");
         this.AddLabel(48, 55, 255, @"Due to the large world data base, this can");
         this.AddLabel(48, 39, 255, @"Please wait while the world saves");
         this.AddItem(12, 38, 4171);

      }
      

   }
}
prometheus562
 
Posts: 2
Joined: Tue Oct 21, 2008 10:04 am

Postby BlueAngel on Fri Oct 31, 2008 10:46 am

I don't develop with C# since a lot so I'm not sure but the error say that Server.Commands is not a valid namespace.
What happend if you remove that import?

Try to delete line 6 and tell us what you get.
And by the way: welcome to the forum.
"A spell, once casted, can be undone. But a secret, once revealed, can never again be kept."
BlueAngel
 
Posts: 62
Joined: Wed Sep 12, 2007 2:47 pm
Location: Italy


Return to Script Support

Who is online

Users browsing this forum: No registered users and 0 guests

cron