BritainKnights/Scripts/Engines/Spawner/RunUOSpawnerExporter.cs

156 lines
4 KiB
C#

//Engine r154
using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
using Server;
using Server.Mobiles;
using Server.Items;
namespace Server.Commands
{
public class RunUOSpawnerExporter
{
public const bool Enabled = true;
public static bool IsLinux
{
get
{
int p = (int) Environment.OSVersion.Platform;
return (p == 4) || (p == 6) || (p == 128);
}
}
public static void Initialize()
{
CommandSystem.Register( "RunUOSpawnerExporter" , AccessLevel.Administrator, new CommandEventHandler( RunUOSpawnerExporter_OnCommand ) );
CommandSystem.Register( "RSE" , AccessLevel.Administrator, new CommandEventHandler( RunUOSpawnerExporter_OnCommand ) );
}
public static int ConvertToInt( TimeSpan ts )
{
return ( ( ts.Hours * 60 ) + ts.Minutes + (ts.Seconds/60) );
}
[Usage( "RunUOSpawnerExporter" )]
[Aliases( "RSE" )]
[Description( "Convert RunUO Spawners to PremiumSpawners." )]
public static void RunUOSpawnerExporter_OnCommand( CommandEventArgs e )
{
Map map = e.Mobile.Map;
List<Item> list = new List<Item>();
string bar = "\\";
if (IsLinux == true)
bar = "/";
string path = @"."+bar+"Data"+bar+"Spawns"+bar;
if ( !Directory.Exists( path ) )
Directory.CreateDirectory( path );
using ( StreamWriter op = new StreamWriter( String.Format( path+"{0}-exported.map", map ) ) )
{
if ( map == null || map == Map.Internal )
{
e.Mobile.SendMessage( "You may not run that command here." );
return;
}
e.Mobile.SendMessage( "Converting Spawners..." );
foreach ( Item item in World.Items.Values )
{
if ( item.Map == map && item.Parent == null && item is Spawner )
list.Add( item );
}
foreach ( Spawner spawner in list )
{
string mapfinal = "";
string walkrange = "";
if(map == Map.Maps[0])
{
mapfinal = "1";
}
else if(map == Map.Maps[1])
{
mapfinal = "2";
}
else if(map == Map.Maps[2])
{
mapfinal = "3";
}
else if(map == Map.Maps[3])
{
mapfinal = "4";
}
else if(map == Map.Maps[4])
{
mapfinal = "5";
}
else
{
mapfinal = "6";
}
if( spawner.WalkingRange == -1 )
{
walkrange = spawner.HomeRange.ToString();
}
else
{
walkrange = spawner.WalkingRange.ToString();
}
int MinDelay = ConvertToInt(spawner.MinDelay);
if (MinDelay < 1)
{
MinDelay = 1;
}
int MaxDelay = ConvertToInt(spawner.MaxDelay);
if (MaxDelay < MinDelay)
{
MaxDelay = MinDelay;
}
string towrite = "*|";
if( spawner.SpawnNames.Count > 0 )
{
towrite = "*|" + spawner.SpawnNames[0];
for ( int i = 1; i < spawner.SpawnNames.Count; ++i )
{
towrite = towrite + ":" + spawner.SpawnNames[i].ToString();
}
}
if ( spawner.SpawnNames.Count > 0 && spawner.Running == true )
{
op.WriteLine( "{0}||||||{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|1|{9}|0|0|0|0|0", towrite, spawner.X, spawner.Y, spawner.Z, mapfinal, MinDelay, MaxDelay, walkrange, spawner.HomeRange, spawner.Count);
}
if( spawner.SpawnNames.Count == 0 )
{
op.WriteLine( "## Void: {0}||||||{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|1|{9}|0|0|0|0|0", towrite, spawner.X, spawner.Y, spawner.Z, mapfinal, MinDelay, MaxDelay, walkrange, spawner.HomeRange, spawner.Count);
}
if( spawner.SpawnNames.Count > 0 && spawner.Running == false )
{
op.WriteLine( "## Inactive: {0}||||||{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|1|{9}|0|0|0|0|0", towrite, spawner.X, spawner.Y, spawner.Z, mapfinal, MinDelay, MaxDelay, walkrange, spawner.HomeRange, spawner.Count);
}
}
e.Mobile.SendMessage( String.Format( "You exported {0} RunUO Spawner{1} from this facet.", list.Count, list.Count == 1 ? "" : "s" ) );
}
}
}
}