Beispiel #1
0
        public static void Serialize(FileInfo file, Action <GenericWriter> serializer)
        {
            file.Refresh();

            if (file.Directory != null && !file.Directory.Exists)
            {
                file.Directory.Create();
            }

            if (!file.Exists)
            {
                file.Create().Close();
            }

            file.Refresh();

            using (var fs = file.OpenWrite())
            {
                var writer = new BinaryFileWriter(fs, true);

                try
                {
                    serializer(writer);
                }
                finally
                {
                    writer.Flush();
                    writer.Close();
                }
            }
        }
Beispiel #2
0
		public static void Serialize(FileInfo file, Action<GenericWriter> serializer)
		{
			file.Refresh();

			if (file.Directory != null && !file.Directory.Exists)
			{
				file.Directory.Create();
			}

			if (!file.Exists)
			{
				file.Create().Close();
			}
				
			file.Refresh();

			using (var fs = file.OpenWrite())
			{
				var writer = new BinaryFileWriter(fs, true);

				try
				{
					serializer(writer);
				}
				finally
				{
					writer.Flush();
					writer.Close();
				}
			}
		}
Beispiel #3
0
        private static void event_worldSave(WorldSaveEventArgs args)
        {
            if (!Directory.Exists(PersistencePath))
            {
                Directory.CreateDirectory(PersistencePath);
            }

            BinaryFileWriter writer = new BinaryFileWriter(PersistenceFile, true);

            writer.Write(OptionsTable.Count);

            if (OptionsTable.Count > 0)
            {
                foreach (KeyValuePair <Mobile, GrabOptions> kvp in OptionsTable)
                {
                    if (kvp.Key == null || kvp.Key.Deleted || kvp.Value == null)
                    {
                        writer.Write((int)-1);
                    }
                    else
                    {
                        writer.Write((int)kvp.Key.Serial);
                        kvp.Value.Serialize(writer);
                    }
                }
            }

            writer.Close();
        }
Beispiel #4
0
        public static void Serialize(FileInfo file, Action <IGenericWriter> serializer)
        {
            file.Refresh();

            if (file.Directory?.Exists == false)
            {
                file.Directory.Create();
            }

            if (!file.Exists)
            {
                file.Create().Close();
            }

            file.Refresh();

            using FileStream fs = file.OpenWrite();
            BinaryFileWriter writer = new BinaryFileWriter(fs, true);

            try
            {
                serializer(writer);
            }
            finally
            {
                writer.Flush();
                writer.Close();
            }
        }
Beispiel #5
0
        public static void SerializeBlock(GenericWriter writer, Action <GenericWriter> serializer)
        {
            byte[] data = Array.Empty <byte>();

            if (serializer != null)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    BinaryFileWriter w = new BinaryFileWriter(ms, true);

                    try
                    {
                        serializer(w);

                        w.Flush();

                        data = ms.ToArray();
                    }
                    finally
                    {
                        w.Close();
                    }
                }
            }

            writer.Write(0x0C0FFEE0);
            writer.Write(data.Length);

            for (int i = 0; i < data.Length; i++)
            {
                writer.Write(data[i]);
            }
        }
        public static void CustomSeperateSave(SeperateSaveData data)
        {
            GenericWriter writer = new BinaryFileWriter(Path.Combine(data.SaveLocation, data.SaveName + ".bin"), true);
            DirectoryCheck(data.SaveLocation);

            data.SaveMethod(writer);
            writer.Write(writer.Position);
            writer.Close();
        }
Beispiel #7
0
        protected void SaveItemsSQL()
        {
            Stopwatch watch = Stopwatch.StartNew();
            Dictionary <Serial, Item> items     = World.Items;
            List <Database.Item>      itemlist  = new List <Database.Item>();
            List <Database.ItemIndex> itemindex = new List <Database.ItemIndex>();

            int itemCount = items.Count;


            foreach (Item item in World.BuffItems)
            {
                MemoryStream  strim = new MemoryStream();
                GenericWriter bin   = new BinaryFileWriter(strim, true);
                if (item.Decays && item.Parent == null && item.Map != Map.Internal && (item.LastMoved + item.DecayTime) <= DateTime.UtcNow)
                {
                    this._decayQueue.Enqueue(item);
                }

                Database.Item t = new Database.Item();

                t.TypeID = item.m_TypeRef;
                t.Serial = item.Serial.Value;
                t.Id     = item.Serial.Value;

                t = item.Serialize(t);
                item.Serialize(bin);
                bin.Close();
                t.strim = Convert.ToBase64String(strim.ToArray());
                strim.Close();
                itemlist.Add(t);
                item.FreeCache();
            }

            for (int i = 0; i < World.m_ItemTypes.Count; ++i)
            {
                Database.ItemIndex a = new Database.ItemIndex();

                a.ItemTypes = (World.m_ItemTypes[i].FullName);
                a.Id        = i;

                itemindex.Add(a);
            }

            using (Database.UODataContext writedb = new Database.UODataContext(Core.SQLConnect))
            {
                Database.LinqExtension.Truncate(writedb.ItemIndexes); //drop items table
                Database.LinqExtension.Truncate(writedb.Items);       //drop items table
                writedb.BulkInsertAll(itemindex);                     //bulk insert itemindex
                writedb.BulkInsertAll(itemlist);                      //bulk insert items
            }

            watch.Stop();
            Console.WriteLine("SQL Item data created: " + watch.Elapsed.TotalSeconds);
        }
Beispiel #8
0
        private void SaveTypeDatabase(string path, List <Type> types)
        {
            var bfw = new BinaryFileWriter(path, false);

            bfw.Write(types.Count);

            foreach (Type type in types)
            {
                bfw.Write(type.FullName);
            }

            bfw.Flush();
            bfw.Close();
        }
Beispiel #9
0
        private static void SaveTypeDatabase(string path, IReadOnlyCollection <Type> types)
        {
            BinaryFileWriter bfw = new BinaryFileWriter(path, false);

            bfw.Write(types.Count);

            foreach (Type type in types)
            {
                bfw.Write(type.FullName);
            }

            bfw.Flush();

            bfw.Close();
        }
Beispiel #10
0
		private static void OnSave( WorldSaveEventArgs e )
		{try{

			if ( !Directory.Exists( "Saves/Gumps/" ) )
				Directory.CreateDirectory( "Saves/Gumps/" );

			GenericWriter writer = new BinaryFileWriter( Path.Combine( "Saves/Gumps/", "Gumps.bin" ), true );

			writer.Write( 0 ); // version

			ArrayList list = new ArrayList();

			GumpInfo gumpi;
			foreach( object obj in new ArrayList( s_Infos.Values ) )
			{
				if ( !(obj is Hashtable) )
					continue;

				foreach( object obje in new ArrayList( ((Hashtable)obj).Values ) )
				{
					if ( !(obje is GumpInfo ) )
						continue;

					gumpi = (GumpInfo)obje;

					if ( gumpi.Mobile != null
					&& gumpi.Mobile.Player
					&& !gumpi.Mobile.Deleted
					&& gumpi.Mobile.Account != null
					&& ((Account)gumpi.Mobile.Account).LastLogin > DateTime.Now - TimeSpan.FromDays( 30 ) )
						list.Add( obje );
				}
			}

			writer.Write( list.Count );

			foreach( GumpInfo info in list )
				info.Save( writer );

			writer.Close();

		}catch{ Errors.Report( "GumpInfo-> OnSave" ); } }
Beispiel #11
0
        protected void SaveData()
        {
            Dictionary <CustomSerial, SaveData> data = World.Data;

            GenericWriter indexWriter;
            GenericWriter typeWriter;
            GenericWriter dataWriter;

            indexWriter = new BinaryFileWriter(World.DataIndexPath, false);
            typeWriter  = new BinaryFileWriter(World.DataTypesPath, false);
            dataWriter  = new BinaryFileWriter(World.DataBinaryPath, true);


            indexWriter.Write(data.Count);

            foreach (SaveData saveData in data.Values)
            {
                long start = dataWriter.Position;

                indexWriter.Write(saveData._TypeID);
                indexWriter.Write((int)saveData.Serial);
                indexWriter.Write(start);

                saveData.Serialize(dataWriter);



                indexWriter.Write((int)(dataWriter.Position - start));
            }

            typeWriter.Write(World._DataTypes.Count);

            for (int i = 0; i < World._DataTypes.Count; ++i)
            {
                typeWriter.Write(World._DataTypes[i].FullName);
            }

            indexWriter.Close();
            typeWriter.Close();
            dataWriter.Close();
        }
Beispiel #12
0
        protected void SaveDataSQL()
        {
            Dictionary <CustomSerial, SaveData> data = World.Data;
            List <Database.SaveData>            s    = new List <Database.SaveData>();
            List <Database.SaveDataIndex>       si   = new List <Database.SaveDataIndex>();

            foreach (SaveData saveData in World.BuffSaveData)
            {
                MemoryStream  stream = new MemoryStream();
                GenericWriter bin    = new BinaryFileWriter(stream, true);

                Database.SaveData sd = new Database.SaveData();
                sd.TypeID = saveData._TypeID;
                sd.Serial = (int)saveData.Serial;
                sd.Id     = (int)saveData.Serial;
                saveData.Serialize(sd);
                saveData.Serialize(bin);
                bin.Close();
                sd.Serialized = Convert.ToBase64String(stream.ToArray());
                s.Add(sd);
                stream.Close();
            }

            for (int i = 0; i < World._DataTypes.Count; ++i)
            {
                Database.SaveDataIndex sdi = new Database.SaveDataIndex();
                sdi.DataTypes = World._DataTypes[i].FullName;
                sdi.Id        = i;
                si.Add(sdi);
            }

            using (Database.UODataContext writedb = new Database.UODataContext(Core.SQLConnect))
            {
                Database.LinqExtension.Truncate(writedb.SaveDataIndexes); //drop items table
                Database.LinqExtension.Truncate(writedb.SaveDatas);       //drop items table
                writedb.BulkInsertAll(si);                                //bulk insert items
                writedb.BulkInsertAll(s);                                 //bulk insert items
            }
        }
        private static void CustomSave()
        {
            DirectoryCheck(m_FilePath);

            GenericWriter idx = new BinaryFileWriter(m_FullPath + ".idx", true);
            GenericWriter bin = new BinaryFileWriter(m_FullPath + ".bin", true);

            idx.Write(m_DataDictionary.Count);
            foreach (KeyValuePair<string, SaveData> kv in m_DataDictionary)
            {
                idx.Write(kv.Key);
                idx.Write(bin.Position);
                kv.Value.SaveMethod(bin);
                idx.Write(bin.Position);
            }

            idx.Close();
            bin.Close();
        }
		private static void OnSave( WorldSaveEventArgs args )
		{
			if ( !Directory.Exists( SavePath ) )
			{
				Directory.CreateDirectory( SavePath );
			}

			GenericWriter writer = new BinaryFileWriter( Path.Combine( SavePath, SaveFile ), true );

			writer.Write( m_LastResetTime );

			writer.Write( MobileRateInfo.Entries.Count );

			foreach ( KeyValuePair<Mobile, MobileRateInfo> kvp in MobileRateInfo.Entries )
			{
				writer.Write( (Mobile)kvp.Key );

				MobileRateInfo info = (MobileRateInfo)kvp.Value;

				info.Serialize( writer );
			}

			writer.Close();
		}
        public static void OnSave( WorldSaveEventArgs e )
        {
            if( !Directory.Exists( SAVE_PATH ) )
            {
                Directory.CreateDirectory( SAVE_PATH );
            }

            GenericWriter writer = new BinaryFileWriter( Path.Combine( SAVE_PATH, FILENAME ), true );

            writer.Write( 0 );

            writer.Write( GameData.Count );

            foreach( BoardGameData data in GameData )
            {
                data.Serialize( writer );
            }

            writer.Close();
        }
		public static void SaveSpawners_OnCommand(CommandEventArgs e)
		{

			if (e.Arguments.Length == 5)
			{
				int count = 0;
				int x1, y1, x2, y2;
				string FileName = e.Arguments[0].ToString();
				try
				{
					x1 = Int32.Parse(e.Arguments[1]);
					y1 = Int32.Parse(e.Arguments[2]);
					x2 = Int32.Parse(e.Arguments[3]);
					y2 = Int32.Parse(e.Arguments[4]);
				}
				catch
				{
					Usage(e.Mobile);
					return;
				}
				//adjust rect				
				if (x1 > x2)
				{
					int x3 = x1;
					x1 = x2;
					x2 = x3;
				}
				if (y1 > y2)
				{
					int y3 = y1;
					y1 = y2;
					y2 = y3;
				}
				string itemIdxPath = Path.Combine("Saves/Spawners/", FileName + ".idx");
				string itemBinPath = Path.Combine("Saves/Spawners/", FileName + ".bin");

				try
				{
					ArrayList list = new ArrayList();
					foreach (Item item in Server.World.Items.Values)
					{
						if (item is Spawner)
						{
							if (item.X >= x1 && item.Y >= y1 && item.X < x2 && item.Y < y2 && item.Map == e.Mobile.Map)
								list.Add(item);
						}
					}

					if (list.Count > 0)
					{
						try
						{
							string folder = Path.GetDirectoryName(itemIdxPath);

							if (!Directory.Exists(folder))
							{
								Directory.CreateDirectory(folder);
							}

						}
						catch
						{
							e.Mobile.SendMessage("An error occured while trying to create Spawner folder.");
						}

						count = list.Count;
						GenericWriter idx;
						GenericWriter bin;

						idx = new BinaryFileWriter(itemIdxPath, false);
						bin = new BinaryFileWriter(itemBinPath, true);

						idx.Write((int)list.Count);

						for (int i = 0; i < list.Count; ++i)
						{
							long start = bin.Position;
							Spawner temp = new Spawner();
							CopyProperties(temp, (Spawner)list[i]);

							idx.Write((long)start);
							//dont save template data as we cant load it back properly
							temp.TemplateItem = null;
							temp.TemplateMobile = null;
							temp.CreaturesName = ((Spawner)list[i]).CreaturesName;
							temp.Serialize(bin);

							idx.Write((int)(bin.Position - start));
							temp.Delete();
						}
						idx.Close();
						bin.Close();
					}
				}
				catch (Exception ex)
				{
					LogHelper.LogException(ex);
					System.Console.WriteLine("Exception Caught in SaveSpawner code: " + ex.Message);
					System.Console.WriteLine(ex.StackTrace);
				}

				e.Mobile.SendMessage("{0} Spawners Saved.", count);
			}
			else
			{
				Usage(e.Mobile);
			}
		}
Beispiel #17
0
        public static void Save()
        {
            try
            {
                if (!Directory.Exists(General.SavePath))
                    Directory.CreateDirectory(General.SavePath);

                GenericWriter writer = new BinaryFileWriter(Path.Combine(General.SavePath, "Channels.bin"), true);

                writer.Write(0); // version

                writer.Write(s_Channels.Count);
                foreach (Channel c in s_Channels)
                {
                    writer.Write(c.GetType().ToString());
                    c.Save(writer);
                }

                writer.Close();
            }
            catch (Exception e)
            {
                Errors.Report(General.Local(187));
                Console.WriteLine(e.Message);
                Console.WriteLine(e.Source);
                Console.WriteLine(e.StackTrace);
            }
        }
Beispiel #18
0
        public static void Serialize(BinaryFileWriter writer)
        {
            writer.Write((int)0); //Version

            writer.Write((int)AllianceLimit);
            writer.Write((bool)useXML);
            writer.Write((int)Alliances.Count);

            foreach (BaseAlliance a in Alliances)
            {
                a.Serialize(writer);
            }

            writer.Close();
        }
Beispiel #19
0
        public static void Save(WorldSaveEventArgs e)
        {
            if (XmlAttach.MobileAttachments == null && XmlAttach.ItemAttachments == null) return;

            CleanUp();

            if (!Directory.Exists("Saves/Attachments"))
                Directory.CreateDirectory("Saves/Attachments");

            string filePath = Path.Combine("Saves/Attachments", "Attachments.bin");        // the attachment serializations
            string imaPath = Path.Combine("Saves/Attachments", "Attachments.ima");         // the item/mob attachment tables
            string fpiPath = Path.Combine("Saves/Attachments", "Attachments.fpi");        // the file position indices

            BinaryFileWriter writer = null;
            BinaryFileWriter imawriter = null;
            BinaryFileWriter fpiwriter = null;

            try
            {
                writer = new BinaryFileWriter(filePath, true);
                imawriter = new BinaryFileWriter(imaPath, true);
                fpiwriter = new BinaryFileWriter(fpiPath, true);

            }
            catch (Exception err)
            {
                ErrorReporter.GenerateErrorReport(err.ToString());
                return;
            }

            if (writer != null && imawriter != null && fpiwriter != null)
            {
                // save the current global attachment serial state
                ASerial.GlobalSerialize(writer);

                // remove all deleted attachments
                XmlAttach.FullDefrag();

                // save the attachments themselves
                if (XmlAttach.AllAttachments != null)
                {
                    writer.Write(XmlAttach.AllAttachments.Count);

                    object[] valuearray = new object[XmlAttach.AllAttachments.Count];
                    XmlAttach.AllAttachments.Values.CopyTo(valuearray, 0);

                    object[] keyarray = new object[XmlAttach.AllAttachments.Count];
                    XmlAttach.AllAttachments.Keys.CopyTo(keyarray, 0);

                    for (int i = 0; i < keyarray.Length; i++)
                    {
                        // write the key
                        writer.Write((int)keyarray[i]);

                        XmlAttachment a = valuearray[i] as XmlAttachment;

                        // write the value type
                        writer.Write((string)a.GetType().ToString());

                        // serialize the attachment itself
                        a.Serialize(writer);

                        // save the fileposition index
                        fpiwriter.Write((long)writer.Position);
                    }
                }
                else
                {
                    writer.Write((int)0);
                }

                writer.Close();

                // save the hash table info for items and mobiles
                // mobile attachments
                if (XmlAttach.MobileAttachments != null)
                {
                    imawriter.Write(XmlAttach.MobileAttachments.Count);

                    object[] valuearray = new object[XmlAttach.MobileAttachments.Count];
                    XmlAttach.MobileAttachments.Values.CopyTo(valuearray, 0);

                    object[] keyarray = new object[XmlAttach.MobileAttachments.Count];
                    XmlAttach.MobileAttachments.Keys.CopyTo(keyarray, 0);

                    for (int i = 0; i < keyarray.Length; i++)
                    {
                        // write the key
                        imawriter.Write((Mobile)keyarray[i]);

                        // write out the attachments
                        ArrayList alist = (ArrayList)valuearray[i];

                        imawriter.Write((int)alist.Count);
                        foreach (XmlAttachment a in alist)
                        {
                            // write the attachment serial
                            imawriter.Write((int)a.Serial.Value);

                            // write the value type
                            imawriter.Write((string)a.GetType().ToString());

                            // save the fileposition index
                            fpiwriter.Write((long)imawriter.Position);
                        }
                    }
                }
                else
                {
                    // no mobile attachments
                    imawriter.Write((int)0);
                }

                // item attachments
                if (XmlAttach.ItemAttachments != null)
                {
                    imawriter.Write(XmlAttach.ItemAttachments.Count);

                    object[] valuearray = new object[XmlAttach.ItemAttachments.Count];
                    XmlAttach.ItemAttachments.Values.CopyTo(valuearray, 0);

                    object[] keyarray = new object[XmlAttach.ItemAttachments.Count];
                    XmlAttach.ItemAttachments.Keys.CopyTo(keyarray, 0);

                    for (int i = 0; i < keyarray.Length; i++)
                    {
                        // write the key
                        imawriter.Write((Item)keyarray[i]);

                        // write out the attachments			             
                        ArrayList alist = (ArrayList)valuearray[i];

                        imawriter.Write((int)alist.Count);
                        foreach (XmlAttachment a in alist)
                        {
                            // write the attachment serial
                            imawriter.Write((int)a.Serial.Value);

                            // write the value type
                            imawriter.Write((string)a.GetType().ToString());

                            // save the fileposition index
                            fpiwriter.Write((long)imawriter.Position);
                        }
                    }
                }
                else
                {
                    // no item attachments
                    imawriter.Write((int)0);
                }

                imawriter.Close();
                fpiwriter.Close();
            }
        }
Beispiel #20
0
		public void Serialize()
		{
			//Console.WriteLine("[Vote System]: Saving Config...");

			FileInfo info = new FileInfo("Data\\VoteSystem.cfg");

			if (!info.Exists)
				info.Create().Close();

			using(FileStream fs = info.Open(FileMode.Truncate, FileAccess.Write))
			{
				BinaryFileWriter bin = new BinaryFileWriter(fs, true);
				
				bin.Write((int)0);

				bin.Write((string)_DefaultName);
				bin.Write((string)_DefaultURL);
				bin.Write((TimeSpan)_DefaultCoolDown);

				bin.Close();
			}

			//Console.WriteLine("[Vote System]: Done.");
		}
Beispiel #21
0
			protected override void OnTarget(Mobile from, object targeted)
			{
				if (!(targeted is Container))
				{
					from.SendMessage("Only containers can be dumped.");
					return;
				}

				Container cont = (Container)targeted;

				try
				{
					using (FileStream idxfs = new FileStream(m_Filename + ".idx", FileMode.Create, FileAccess.Write, FileShare.None))
					{
						using (FileStream binfs = new FileStream(m_Filename + ".bin", FileMode.Create, FileAccess.Write, FileShare.None))
						{
							GenericWriter idx = new BinaryFileWriter(idxfs, true);
							GenericWriter bin = new BinaryFileWriter(binfs, true);

							ArrayList items = new ArrayList();
							items.Add(cont);
							items.AddRange(cont.GetDeepItems());

							idx.Write((int)items.Count);
							foreach (Item item in items)
							{
								long start = bin.Position;

								idx.Write(item.GetType().FullName); // <--- DIFFERENT FROM WORLD SAVE FORMAT!
								idx.Write((int)item.Serial);
								idx.Write((long)start);

								item.Serialize(bin);

								idx.Write((int)(bin.Position - start));
							}


							idx.Close();
							bin.Close();
						}
					}

					from.SendMessage("Container successfully dumped to {0}.", m_Filename);
				}
				catch (Exception e)
				{
					LogHelper.LogException(e);
					Console.WriteLine(e.ToString());
					from.SendMessage("Exception: {0}", e.Message);
				}
			}
Beispiel #22
0
		public static void Save(bool message)
		{
			if (m_Saving || AsyncWriter.ThreadCount > 0)
				return;

			// we make certain we cannot save when we are in ServerWars
			if (World.SaveType == World.SaveOption.NoSaves)
			{
				Console.WriteLine("Error: Save aborted: World.SaveType == World.SaveOption.NoSaves");
				return;
			}

			NetState.FlushAll();

			m_Saving = true;

			if (message)
				Broadcast(0x35, true, "The world is saving, please wait.");

			Console.WriteLine("World: Saving...");

			DateTime startTime = DateTime.Now;

			// Adam: see comments in the function
			PackMemory(true);

			if (!Directory.Exists("Saves/Mobiles/"))
				Directory.CreateDirectory("Saves/Mobiles/");
			if (!Directory.Exists("Saves/Items/"))
				Directory.CreateDirectory("Saves/Items/");
			if (!Directory.Exists("Saves/Guilds/"))
				Directory.CreateDirectory("Saves/Guilds/");
			if (!Directory.Exists("Saves/Regions/"))
				Directory.CreateDirectory("Saves/Regions/");

			if (m_MultiProcessor)
			{
				Thread saveThread = new Thread(new ThreadStart(SaveItems));

				saveThread.Name = "Item Save Subset";
				saveThread.Start();

				SaveMobiles();
				SaveGuilds();
				SaveRegions();

				saveThread.Join();
			}
			else
			{
				SaveMobiles();
				SaveItems();
				SaveGuilds();
				SaveRegions();
			}

			//Accounts.Save();

			try
			{
				EventSink.InvokeWorldSave(new WorldSaveEventArgs(message));
			}
			catch (Exception e)
			{
				throw new Exception("World Save event threw an exception.  Save failed!", e);
			}

			/* Adam, not currently used
			DateTime copy = DateTime.Now;
			if (Directory.Exists("Saves/Temp"))
				Directory.Delete("Saves/Temp", true);
			if (Directory.Exists("Temp"))
				CopyDirectory("Temp", "Saves/Temp");
			Console.WriteLine("Copying Temp/ took {0}ms", (DateTime.Now - copy).TotalMilliseconds);
			 */

			// take care of some World class-specific stuff
			try
			{
				BinaryFileWriter w = new BinaryFileWriter("Saves/World.dat", true);
				w.Write((int)1); // version

				// version 1
				w.Write(m_ReservedSerials.Keys.Count);
				foreach (int i in m_ReservedSerials.Keys)
					w.Write(i);

				// version 0
				w.Write((bool)m_FreezeDryEnabled);

				w.Close();
			}
			catch (Exception e)
			{
				Console.WriteLine("Error writing World.dat:");
				Console.WriteLine(e.ToString());
			}

			// Adam: final cleanup
			PackMemory(false);

			DateTime endTime = DateTime.Now;
			Console.WriteLine("done in {0:F1} seconds.", (endTime - startTime).TotalSeconds);

			if (message)
				Broadcast(0x35, true, "World save complete. The entire process took {0:F1} seconds.", (endTime - startTime).TotalSeconds);

			m_Saving = false;
		}
		//generates or updates .plg files
		public static void SavePluginSettings(TMPluginSave plugin)
		{

			if (pluginExists(plugin.getName()))
			{
				if (!Directory.Exists(loc))
					Directory.CreateDirectory(loc);
				string FileName = plugin.getName() + ".plg";
				string path = loc + FileName;
				Console.Write(" - Saving Settings for TMPlugin " + plugin.getName() + "...");

				try
				{
					using (FileStream m_FileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
					{
						BinaryFileWriter writer = new BinaryFileWriter(m_FileStream, true);
						plugin.SavePlugin(writer);

						writer.Close();
						m_FileStream.Close();
					}
					Console.WriteLine("done.");
				}
				catch (Exception e)
				{ SkillSettings.DoTell(" TMPlugin " + plugin + " could not be saved. Error: " + e); }
			}
			else
				SkillSettings.DoTell(" TMPlugin " + plugin + " not registered to system. Save cannot continue.");
		}
Beispiel #24
0
        protected void SaveMobiles()
        {
            Stopwatch watch = Stopwatch.StartNew();
            Dictionary <Serial, Mobile> mobiles = World.Mobiles;
            List <Database.Mobile>      mobs    = new List <Database.Mobile>();
            List <Database.Skill>       vsk     = new List <Database.Skill>();
            List <Database.MobIndex>    mindex  = new List <Database.MobIndex>();
            int skillid = 0;

            foreach (Mobile m in World.BuffMobiles)
            {
                var typename = m.GetType();

                Database.Mobile v = new Database.Mobile();

                for (int i = 0; i < m.Skills.Length; i++)
                {
                    if (m.Skills[i] != null && m.Skills[i].Base != 0)
                    {
                        Database.Skill vskill = new Database.Skill();
                        skillid++;
                        vskill.Id     = skillid;
                        vskill.Base   = ((double)m.Skills[i].Base) * 10;
                        vskill.Cap    = (int)m.Skills[i].Cap;
                        vskill.Lock   = (byte)m.Skills[i].Lock;
                        vskill.Name   = m.Skills[i].Name;
                        vskill.Parent = m.Serial.Value;
                        vsk.Add(vskill);
                    }
                }


                foreach (Item mitem in m.Items)
                {
                    v.m_Items += mitem.Serial.Value + ";";
                }

                v.mType = typename.FullName;

                v.mTypeRef         = m.m_TypeRef;
                v.Id               = m.Serial.Value;
                v.Serial           = m.Serial.Value;
                v.m_IgnoreMobiles  = m.IgnoreMobiles;
                v.m_AccessLevel    = (byte)m.AccessLevel;
                v.m_AutoPageNotify = m.AutoPageNotify;
                v.m_BaseSoundID    = m.BaseSoundID;
                v.m_Blessed        = m.Blessed;
                v.m_Body           = m.Body;
                v.m_CanSwim        = m.CanSwim;
                v.m_CantWalk       = m.CantWalk;
                if (m.Corpse != null)
                {
                    v.m_Corpse = m.Corpse.Serial.Value;
                }
                v.m_CreationTime = m.CreationTime;
                v.m_Criminal     = m.Criminal;
                v.m_Dex          = m.Dex;
                v.m_Direction    = (byte)m.Direction;
                v.m_DisarmReady  = m.DisarmReady;
                v.m_EmoteHue     = m.EmoteHue;
                v.m_Fame         = m.Fame;
                v.m_Hidden       = m.Hidden;
                v.m_Hits         = m.Hits;
                if (m.Holding != null)
                {
                    v.m_Holding = m.Holding.Serial.Value;
                }
                v.m_Hue = m.Hue;
                v.m_Int = m.Int;

                v.m_Karma             = m.Karma;
                v.m_Language          = m.Language;
                v.m_Locationx         = m.Location.X;
                v.m_Locationy         = m.Location.Y;
                v.m_Locationz         = m.Location.Z;
                v.m_MagicDamageAbsorb = m.MagicDamageAbsorb;
                v.m_Mana = m.Mana;
                if (m.Map != null)
                {
                    v.m_Map = (byte)m.Map.MapIndex;
                }
                v.m_Name         = m.Name;
                v.m_NameHue      = m.NameHue;
                v.m_Player       = m.Player;
                v.m_SpeechHue    = m.SpeechHue;
                v.m_Squelched    = m.Squelched;
                v.m_Stam         = m.Stam;
                v.m_StatCap      = m.StatCap;
                v.m_Str          = m.Str;
                v.m_StunReady    = m.StunReady;
                v.m_VirtualArmor = m.VirtualArmor;
                v.m_Warmode      = m.Warmode;
                v.m_WhisperHue   = m.WhisperHue;
                v.m_YellHue      = m.YellHue;
                // v.Poison = (byte)m.Poison;

                //-------------------------
                if (m.Player)
                {
                    v.Account = m.Account.Username;
                }
                else
                {
                    v.Account = "NPC";
                }
                v.m_BAC         = m.BAC;
                v.m_BaseSoundID = m.BaseSoundID;
                v.m_Blessed     = m.Blessed;
                if (m.LastDexGain < DateTime.UtcNow)
                {
                    v.m_LastDexGain = DateTime.UtcNow;
                }
                else
                {
                    v.m_LastDexGain = m.LastDexGain;
                }
                if (m.LastStrGain < DateTime.UtcNow)
                {
                    v.m_LastStrGain = DateTime.UtcNow;
                }
                else
                {
                    v.m_LastStrGain = m.LastDexGain;
                }
                if (m.LastIntGain < DateTime.UtcNow)
                {
                    v.m_LastIntGain = DateTime.UtcNow;
                }
                else
                {
                    v.m_LastIntGain = m.LastDexGain;
                }
                v.m_Hair             = (byte)m.HairItemID;
                v.m_FacialHair       = (byte)m.FacialHairItemID;
                v.m_Race             = (byte)m.Race.RaceIndex;
                v.m_ShortTermMurders = m.ShortTermMurders;
                v.m_FollowersMax     = m.FollowersMax;
                if (m.GuildFealty != null)
                {
                    v.m_GuildFealty = m.GuildFealty.Serial.Value;
                }
                if (m.Guild != null)
                {
                    v.m_Guild = m.Guild.Id;
                }

                v.m_DisplayGuildTitle = m.DisplayGuildTitle;
                v.m_Hunger            = m.Hunger;
                v.m_Kills             = m.Kills;
                v.m_GuildTitle        = m.GuildTitle;
                v.m_Female            = m.Female;
                v.m_Player            = m.Player;
                v.m_Title             = m.Title;
                v.m_Profile           = m.Profile;
                v.m_ProfileLocked     = m.ProfileLocked;
                v.m_LogoutLocationx   = m.LogoutLocation.X;
                v.m_LogoutLocationy   = m.LogoutLocation.Y;
                v.m_LogoutLocationz   = m.LogoutLocation.Z;
                if (m.LogoutMap != null)
                {
                    v.m_LogoutMap = (byte)m.LogoutMap.MapIndex;
                }
                else
                {
                    v.m_LogoutMap = (byte)(0xFF);
                }
                v.m_StrLock = (byte)m.StrLock;
                v.m_DexLock = (byte)m.DexLock;
                v.m_IntLock = (byte)m.IntLock;
                v.m_Hidden  = m.Hidden;

                MemoryStream  strim = new MemoryStream();
                GenericWriter bin   = new BinaryFileWriter(strim, true);
                m.Serialize(bin);
                bin.Close();
                v.Data = Convert.ToBase64String(strim.ToArray());
                strim.Close();
                mobs.Add(v);
                m.FreeCache();
            }

            for (int i = 0; i < World.m_MobileTypes.Count; ++i)
            {
                Database.MobIndex a = new Database.MobIndex();

                a.MobTypes = (World.m_MobileTypes[i].FullName);
                a.Id       = i;
                mindex.Add(a);
            }

            using (Database.UODataContext writedb = new Database.UODataContext(Core.SQLConnect))
            {
                Database.LinqExtension.Truncate(writedb.Mobiles);    //drop mobiles table
                Database.LinqExtension.Truncate(writedb.Skills);     //drop skills table
                Database.LinqExtension.Truncate(writedb.MobIndexes); //drop mobile index table
                writedb.BulkInsertAll(mobs);                         //bulk insert mobs
                writedb.BulkInsertAll(vsk);                          //bulk insert skillz
                writedb.BulkInsertAll(mindex);
            }
            watch.Stop();
            Console.WriteLine("SQL mobile data created: " + watch.Elapsed.TotalSeconds);
        }
        private static void HandleError(Exception error, string name, object[] loadinfo)
        {
            bool sep = loadinfo == null;
            bool nerr = error == null;
            string type = sep ? "seperate savefile" : "save module";
            string placename = sep ? "the file can be found at" : "this module was indexed under the name";

            Console.WriteLine();
            if (nerr)
            {
                Console.WriteLine("The loading and saving methods of a {0} are inconsistent, {1} \"{2}\".", type, placename, name);
                if (!sep && (bool)loadinfo[3])
                    Console.WriteLine("More data was read than written.");
                else
                    Console.WriteLine("More data was written than read.");
            }
            else
            {
                Console.WriteLine("During the loading of a {0} an exception was caught, {1} \"{2}\".", type, placename, name);
                Console.WriteLine("The following error was caught:");
                Console.WriteLine(error.ToString());
            }

            Console.WriteLine("Please Review your Save/Load methods for this {0}", sep ? "file" : "module");

            if (!m_IgnoreErrors)
            {
                string str = sep ? "Do you wish to continue loading with faulty data(Y), or stop the program(N)?" : "Do you wish to remove this module and restart(Y), or continue loading with faulty data(N)?";
                Console.WriteLine(str);

                if (Console.ReadKey(true).Key == ConsoleKey.Y)
                {
                    if (!sep)
                    {
                        int oldcount = (int)loadinfo[0];
                        int location = (int)loadinfo[1];
                        BinaryFileReader idxreader = (BinaryFileReader)loadinfo[2];

                        int newcount = oldcount - 1;
                        string[] indexarray = new string[newcount];
                        long[] binposarray = new long[newcount];
                        long[] finposarray = new long[newcount];

                        idxreader.Seek(0, SeekOrigin.Begin);
                        idxreader.ReadInt();
                        int loc = 0;
                        for (int j = 0; j < oldcount; j++)
                        {
                            if (j != location)
                            {
                                indexarray[loc] = idxreader.ReadString();
                                binposarray[loc] = idxreader.ReadLong();
                                finposarray[loc] = idxreader.ReadLong();
                                loc++;
                            }
                            else
                            {
                                idxreader.ReadString();
                                idxreader.ReadLong();
                                idxreader.ReadLong();
                            }
                        }
                        idxreader.Close();
                        GenericWriter idxwriter = new BinaryFileWriter(m_FullPath + ".idx", true);

                        idxwriter.Write(newcount);
                        for (int j = 0; j < newcount; j++)
                        {
                            idxwriter.Write(indexarray[j]);
                            idxwriter.Write(binposarray[j]);
                            idxwriter.Write(finposarray[j]);
                        }
                        idxwriter.Close();

                        Process.Start(Core.ExePath, Core.Arguments);
                        Core.Process.Kill();
                    }
                }

                else if (sep)
                    Core.Process.Kill();
            }
        }
Beispiel #26
0
		private static void event_worldSave( WorldSaveEventArgs args )
		{
			if( !Directory.Exists( PersistencePath ) )
				Directory.CreateDirectory( PersistencePath );

			BinaryFileWriter writer = new BinaryFileWriter( PersistenceFile, true );

			writer.Write( OptionsTable.Count );

			if( OptionsTable.Count > 0 )
			{
				foreach( KeyValuePair<Mobile, GrabOptions> kvp in OptionsTable )
				{
					if( kvp.Key == null || kvp.Key.Deleted || kvp.Value == null )
					{
						writer.Write( (int)-1 );
					}
					else
					{
						writer.Write( (int)kvp.Key.Serial );
						kvp.Value.Serialize( writer );
					}
				}
			}

			writer.Close();
		} 
		private static void ExportSectorNodeNetwork(CommandEventArgs e)
		{
			try
			{
				Console.Write("Saving SectorNodes...");
				DateTime dt = DateTime.Now;
				if (!Directory.Exists("Data"))
					Directory.CreateDirectory("Data");

				using (FileStream fs = new FileStream("Data/SectorPathData.dat", FileMode.Create))
				{
					BinaryFileWriter writer = new BinaryFileWriter(fs, false);

					writer.Write(Map.Felucca.Width >> Map.SectorShift);
					writer.Write(Map.Felucca.Height >> Map.SectorShift);

					for (int y = 0; y < (Map.Felucca.Height >> Map.SectorShift); y++)
					{
						for (int x = 0; x < (Map.Felucca.Width >> Map.SectorShift); x++)
						{
							m_Nodes[x, y].Serialize(writer);
						}
					}

					writer.Close();
				}
				Console.WriteLine("done in {0}ms.", (DateTime.Now - dt).TotalMilliseconds);
			}
			catch (Exception ex)
			{
				LogHelper.LogException(ex);
				Console.WriteLine("error:");
				Console.WriteLine(ex);
			}
		}
		public static void Save()
		{
			if (!Directory.Exists("Saves/CTFScore/"))
				Directory.CreateDirectory("Saves/CTFScore/");

			string idxPath = Path.Combine( "Saves/CTFScore", "CTFScore.idx" );
			string binPath = Path.Combine( "Saves/CTFScore", "CTFScore.bin" );

			GenericWriter idx = new BinaryFileWriter(idxPath, false);
			GenericWriter bin = new BinaryFileWriter(binPath, true);

			idx.Write( (int)Players.Values.Count );
			foreach ( CTFPlayer player in Players.Values )
			{
				long startPos = bin.Position;
				player.Serialize( bin );
				idx.Write( (long)startPos );
				idx.Write( (int)(bin.Position - startPos) );
			}
			idx.Close();
			bin.Close();
		}
		// Saves blue mage information to it's own file at Saves/BlueMagic/.
		public static void Save( WorldSaveEventArgs e )
		{
			if ( !Directory.Exists( "Saves/BlueMagic/" ) )
				Directory.CreateDirectory( "Saves/BlueMagic/" );

			if ( BlueMageSpells.Keys.Count > 0 )
			{
				BinaryFileWriter writer = new BinaryFileWriter( "Saves/BlueMagic/MobileAndSpellList.bin", false );

				writer.Write( (int)BlueMageSpells.Keys.Count );
				writer.Write( (int)SPELLCOUNT );

				foreach( KeyValuePair<Serial, bool[]> kvp in BlueMageSpells )
				{
					writer.Write( (Serial)kvp.Key );

					for( int j = 0; j < kvp.Value.Length; j++ )
					{
						writer.Write( (bool)kvp.Value[j] );
					}
				}

				writer.Close();
				PrintBlueMageLog();
			}
		}
        public static void Save(WorldSaveEventArgs e)
        {
            if (!Directory.Exists("LokaiSaves/LokaiSkills"))
            {
                Directory.CreateDirectory("LokaiSaves/LokaiSkills");
            }
            string           filePath = Path.Combine("LokaiSaves/LokaiSkills", "LokaiSkills.bin");
            BinaryFileWriter writer   = null;

            try
            {
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
                Console.WriteLine(".bin file successfully deleted.");
            }
            catch (Exception err)
            {
                Console.WriteLine("Unable to delete the BinaryFileWriter so exiting SAVE process.");
                Console.WriteLine(err.ToString());
                return;
            }
            try
            {
                writer = new BinaryFileWriter(filePath, true);
            }
            catch
            {
                Console.WriteLine("Unable to create new BinaryFileWriter so exiting SAVE process.");
                return;
            }
            writer.WriteEncodedInt((int)0); //version

            writer.WriteEncodedInt((int)m_LinguisticsLevel);
            writer.Write(m_CommerceEnabled);
            writer.Write(m_RidingChecksEnabled);
            writer.Write(m_SailingChecksEnabled);
            writer.Write(m_LinguisticsEnabled);

            writer.Write(ShowButchering);
            writer.Write(ShowSkinning);
            writer.Write(ShowAnimalRiding);
            writer.Write(ShowSailing);
            writer.Write(ShowDetectEvil);
            writer.Write(ShowCureDisease);
            writer.Write(ShowPickPocket);
            writer.Write(ShowPilfering);
            writer.Write(ShowFraming);
            writer.Write(ShowBrickLaying);
            writer.Write(ShowRoofing);
            writer.Write(ShowStoneMasonry);
            writer.Write(ShowVentriloquism);
            writer.Write(ShowHypnotism);
            writer.Write(ShowPreyTracking);
            writer.Write(ShowSpeakToAnimals);
            writer.Write(ShowWoodworking);
            writer.Write(ShowCooperage);
            writer.Write(ShowSpinning);
            writer.Write(ShowWeaving);
            writer.Write(ShowConstruction);
            writer.Write(ShowCommerce);
            writer.Write(ShowBrewing);
            writer.Write(ShowHerblore);
            writer.Write(ShowTreePicking);
            writer.Write(ShowTreeSapping);
            writer.Write(ShowTreeCarving);
            writer.Write(ShowTreeDigging);
            writer.Write(ShowTeaching);
            writer.Write(ShowLinguistics);
            writer.Close();
            Console.WriteLine("All LokaiSkill values successfully written to .bin file. File closed.");
        }
		public static void SerializeMessages()
		{
			if( !Directory.Exists( SavePath ) )
				Directory.CreateDirectory( SavePath );

			BinaryFileWriter writer = new BinaryFileWriter( SaveFile, true );

			writer.Write( (int)_messageTable.Count );

			if( _messageTable.Count > 0 )
			{
				foreach( KeyValuePair<Mobile, List<ChatMessage>> kvp in _messageTable )
				{
					if( kvp.Key == null || kvp.Key.Deleted || kvp.Value == null )
					{
						writer.Write( (int)-1 );
					}
					else
					{
						writer.Write( (int)kvp.Key.Serial );

						writer.Write( (int)kvp.Value.Count );
						kvp.Value.ForEach(
							delegate( ChatMessage message )
							{
								message.Serialize( writer );
							} );
					}
				}
			}

			writer.Close();
		}
        public static void Save()
        {
            log.Info("Saving...");
            log.Info(String.Format("idxPath: '{0}'", idxPath));
            log.Info(String.Format("binPath: '{0}'", binPath));

            if (!Directory.Exists(Path.Combine("Saves", "Donation")))
                Directory.CreateDirectory(Path.Combine("Saves", "Donation"));

            GenericWriter idx = new BinaryFileWriter(idxPath, false);
            GenericWriter bin = new BinaryFileWriter(binPath, true);

            log.Info(String.Format("m_ClaimedOrders.Count: '{0}'", m_ClaimedOrders.Count));
            idx.Write((int)m_ClaimedOrders.Count);
            foreach (ClaimedOrder claimed in m_ClaimedOrders)
            {
                long startPos = bin.Position;
                claimed.Serialize(bin);
                idx.Write((long)startPos);
                idx.Write((int)(bin.Position - startPos));
            }
            idx.Close();
            bin.Close();
            log.Info("Saving done.");
        }
		public static void OnSave(WorldSaveEventArgs e)
		{
			try
			{
				Console.WriteLine("KinCityManager Saving...");
				if (!Directory.Exists("Saves/AngelIsland"))
					Directory.CreateDirectory("Saves/AngelIsland");

				string filePath = Path.Combine("Saves/AngelIsland", "KinCityManager.bin");

				GenericWriter writer;
				writer = new BinaryFileWriter(filePath, true);

				writer.Write(1); //version

				//v1 below
				//write out the city data class'
				writer.Write(_cityData.Count);
				foreach (KeyValuePair<KinFactionCities, KinCityData> pair in _cityData)
					pair.Value.Save(writer);

				writer.Close();
			}
			catch (Exception ex)
			{
				System.Console.WriteLine("Error saving KinCityManager!");
				Scripts.Commands.LogHelper.LogException(ex);
			}
		}
Beispiel #34
0
		public static void Save( WorldSaveEventArgs args )
		{
			if( !Directory.Exists( "Saves/ACC" ) )
				Directory.CreateDirectory( "Saves/ACC" );

			string filename = "acc.sav";
			string path =@"Saves/ACC/";
			string pathNfile = path+filename;
			DateTime start = DateTime.Now;

			Console.WriteLine();
			Console.WriteLine();
			Console.WriteLine( "----------" );
			Console.WriteLine( "Saving ACC..." );

			try
			{
				using( FileStream m_FileStream = new FileStream( pathNfile, FileMode.OpenOrCreate, FileAccess.Write ) )
				{
					BinaryFileWriter writer = new BinaryFileWriter( m_FileStream, true );

					writer.Write( (int) m_RegSystems.Count );
					foreach( DictionaryEntry de in m_RegSystems )
					{
						Type t = ScriptCompiler.FindTypeByFullName( (string)de.Key );
						if( t != null )
						{
							writer.Write( (string)de.Key );
							writer.Write( (bool)de.Value );

							if( (bool)m_RegSystems[(string)de.Key] )
							{
								ACCSystem system = (ACCSystem)Activator.CreateInstance( t );
								if( system != null )
									system.StartSave( path );
							}
						}

					}

					writer.Close();
					m_FileStream.Close();
				}

				Console.WriteLine( "Done in {0:F1} seconds.", (DateTime.Now-start).TotalSeconds );
				Console.WriteLine( "----------" );
				Console.WriteLine();
			}
			catch( Exception err )
			{
				Console.WriteLine( "Failed. Exception: "+err );
			}
		}
Beispiel #35
0
        public static void SaveBackup( Mobile mobile, ArrayList ArgsList )
        {
            MC.SetProcess( Process.SaveBackup );

            if ( !Directory.Exists( MC.BackupDirectory ) )
                Directory.CreateDirectory( MC.BackupDirectory );

            string path = Path.Combine( MC.BackupDirectory, "Backup.mbk" );

            mobile.SendMessage( "Creating backup file..." );

            MC.CheckSpawners();

            ArrayList SpawnerList = CompileSpawnerList();

            GenericWriter writer;

            try
            {
                writer = new BinaryFileWriter( path, true );
            }
            catch(Exception ex)
            {
                MC.SetProcess( Process.None );

                ArgsList[2] = "Create Backup File";
                ArgsList[4] = String.Format( "Exception caught:\n{0}", ex );

                mobile.SendGump( new FileMenuGump( mobile, ArgsList ) );

                return;
            }

            writer.Write( SpawnerList.Count );

            try
            {
                foreach ( MegaSpawner megaSpawner in SpawnerList )
                    Serialize( megaSpawner, writer );
            }
            catch{}

            writer.Close();

            MC.SetProcess( Process.None );

            ArgsList[2] = "Create Backup File";
            ArgsList[4] = "All Mega Spawners have now been backed up to the backup file.";

            mobile.SendGump( new FileMenuGump( mobile, ArgsList ) );
        }
Beispiel #36
0
		public static void Save()
		{
            try
            {
                if (!Directory.Exists(General.SavePath))
                    Directory.CreateDirectory(General.SavePath);

                GenericWriter writer = new BinaryFileWriter(Path.Combine(General.SavePath, "Gumps.bin"), true);

                writer.Write(0); // version

                writer.Write(s_ForceMenu);
                writer.Write(s_ForceInfos.Count);
                foreach (GumpInfo ginfo in s_ForceInfos.Values)
                    ginfo.Save(writer);

                ArrayList list = new ArrayList();
                GumpInfo info;

                foreach (object o in new ArrayList(s_Infos.Values))
                {
                    if (!(o is Hashtable))
                        continue;

                    foreach (object ob in new ArrayList(((Hashtable)o).Values))
                    {
                        if (!(ob is GumpInfo))
                            continue;

                        info = (GumpInfo)ob;

                        if (info.Mobile != null
                        && info.Mobile.Player
                        && !info.Mobile.Deleted
                        && info.Mobile.Account != null
                        && ((Account)info.Mobile.Account).LastLogin > DateTime.Now - TimeSpan.FromDays(30))
                            list.Add(ob);
                    }
                }

                writer.Write(list.Count);

                foreach (GumpInfo ginfo in list)
                    ginfo.Save(writer);

                writer.Close();
            }
            catch (Exception e)
            {
                Errors.Report(General.Local(199));
                Console.WriteLine(e.Message);
                Console.WriteLine(e.Source);
                Console.WriteLine(e.StackTrace);
            }
		}
Beispiel #37
0
        public static void SaveGlobalOptions()
        {
            CleanUpData();

            if (!Directory.Exists(General.SavePath))
                Directory.CreateDirectory(General.SavePath);

            GenericWriter writer = new BinaryFileWriter(Path.Combine(General.SavePath, "GlobalOptions.bin"), true);

            writer.Write(2); // version

            writer.Write(s_MultiPort);
            writer.Write(s_MultiServer);

            writer.Write(s_Notifications.Count);
            foreach (Notification not in s_Notifications)
                not.Save(writer);

            writer.Write(s_Filters.Count);
            foreach (string str in s_Filters)
                writer.Write(str);

            writer.Write((int)s_FilterPenalty);
            writer.Write((int)s_MacroPenalty);
            writer.Write(s_MaxMsgs);
            writer.Write(s_ChatSpam);
            writer.Write(s_MsgSpam);
            writer.Write(s_RequestSpam);
            writer.Write(s_FilterBanLength);
            writer.Write(s_FilterWarnings);
            writer.Write(s_AntiMacroDelay);
            writer.Write(s_IrcPort);
            writer.Write(s_IrcMaxAttempts);
            writer.Write(s_IrcEnabled);
            writer.Write(s_IrcAutoConnect);
            writer.Write(s_IrcAutoReconnect);
            writer.Write(s_FilterSpeech);
            writer.Write(s_FilterMsg);
            writer.Write(s_Debug);
            writer.Write(s_LogChat);
            writer.Write(s_LogPms);
            writer.Write((int)s_IrcStaffColor);
            writer.Write(s_IrcServer);
            writer.Write(s_IrcRoom);
            writer.Write(s_IrcNick);
            writer.Write(s_TotalChats+1);

            writer.Close();
        }
Beispiel #38
0
        public static void SaveGlobalListens()
        {
            if (!Directory.Exists(General.SavePath))
                Directory.CreateDirectory(General.SavePath);

            GenericWriter writer = new BinaryFileWriter(Path.Combine(General.SavePath, "GlobalListens.bin"), true);

            writer.Write(0); // version

            writer.Write(s_Datas.Count);
            foreach (Data data in s_Datas.Values)
            {
                writer.Write(data.Mobile);
                data.SaveGlobalListens(writer);
            }

            writer.Close();
        }
Beispiel #39
0
        private static void OnSave( WorldSaveEventArgs e )
        {
            try{

            if ( !Directory.Exists( "Saves/Commands/" ) )
                Directory.CreateDirectory( "Saves/Commands/" );

            GenericWriter writer = new BinaryFileWriter( Path.Combine( "Saves/Commands/", "Commands.bin" ), true );

            writer.Write( 0 ); // version

            ArrayList list = new ArrayList( s_Defaults.Values );

            writer.Write( list.Count );

            foreach( DefaultInfo info in list )
            {
                writer.Write( info.NewCommand );
                writer.Write( info.OldCommand );
                writer.Write( (int)info.NewAccess );
            }

            writer.Close();

            }catch{ Errors.Report( "Commands-> OnSave" ); }
        }
		private void SaveTypeDatabase(string path, List<Type> types)
		{
			var bfw = new BinaryFileWriter(path, false);

			bfw.Write(types.Count);

			foreach (Type type in types)
			{
				bfw.Write(type.FullName);
			}

			bfw.Flush();
			bfw.Close();
		}
        private static void EventSink_WorldSave( WorldSaveEventArgs e )
        {
            DateTime start = DateTime.Now;
            Console.WriteLine( "processing additional components." );
            Console.WriteLine( "Forums: Saving..." );

            if( AutoCleanup )
                Console.Write( "Auto Cleanup is checking posts..." );
            else
                Console.Write( "Checking deletion queue..." );

            int queue = 0;
            int deleted = RemovedDeletedQueue(out queue);

            if( queue == 0 )
                Console.Write( "Empty Queue..." );
            else
                Console.Write( "{1} Queued...{0} Deleted...", deleted, queue );
            
            string SavePath = Path.Combine( m_SavePath, "forumdata.sig" );

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

            GenericWriter bin = new BinaryFileWriter( SavePath, true );
            
            try
            {
                bin.Write( ( int )0 );//Versioning

                WritePlayerStatistics( bin );
            
                bin.Write( ( int )( m_Threads.Count ) );
                foreach( ThreadEntry te in m_Threads )
                {
                    te.Serialize( bin );
                }

                bin.WriteMobileList( m_Moderators );
                bin.Write( ( int )m_ThreadDeleteAccessLevel );
                bin.Write( ( int )m_ThreadLockAccesLevel );
                bin.Write( ( bool )m_AutoCleanup );
                bin.Write( ( int )m_AutoCleanupDays );
                bin.Write( ( int )m_MinPostCharactersCount );
                bin.Write( ( int )m_MaxPostCharactersCount );
                bin.Close();
                
                DateTime end = DateTime.Now;
                Console.WriteLine( "done in {0:F1} seconds.", ( end - start ).TotalSeconds );
                Console.Write( "World: " );
            }
            catch( Exception err )
            {
                bin.Close();

                Console.Write( "An error occurred while trying to save the forums. {0}", err.ToString());
            }
        }