#W# New genteleporter script.
This commit is contained in:
parent
f3ed632fd7
commit
15bb7a4751
2 changed files with 199 additions and 0 deletions
93
Scripts/Commands/GenTeleporter.cs
Normal file
93
Scripts/Commands/GenTeleporter.cs
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Commands;
|
||||
|
||||
namespace Server.Misc
|
||||
{
|
||||
public class GenTeleporters
|
||||
{
|
||||
public static void Initialize()
|
||||
{
|
||||
CommandSystem.Register( "GenTeleporters", AccessLevel.Administrator, new CommandEventHandler( GenTeleporters_OnCommand ) );
|
||||
}
|
||||
|
||||
[Usage( "GenTeleporters" )]
|
||||
[Description( "Generates teleporters from Data/Config/teleporters.cfg" )]
|
||||
public static void GenTeleporters_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
e.Mobile.SendMessage( "Generating teleporters..." );
|
||||
string filePath = Path.Combine( Core.BaseDirectory, "Data/Config/teleporters.cfg" );
|
||||
|
||||
int count = 0;
|
||||
|
||||
if ( File.Exists( filePath ) )
|
||||
{
|
||||
using ( StreamReader ip = new StreamReader( filePath ) )
|
||||
{
|
||||
string line;
|
||||
while ( (line = ip.ReadLine()) != null )
|
||||
{
|
||||
line = line.Trim();
|
||||
|
||||
// Skip empty lines and comments
|
||||
if ( line.Length == 0 || line.StartsWith( "#" ) )
|
||||
continue;
|
||||
|
||||
string[] split = line.Split( ' ' );
|
||||
|
||||
// We need at least 8 parameters: Map1 X1 Y1 Z1 Map2 X2 Y2 Z2
|
||||
if ( split.Length >= 8 )
|
||||
{
|
||||
try
|
||||
{
|
||||
Map map1 = Map.Parse( split[0] );
|
||||
int x1 = Convert.ToInt32( split[1] );
|
||||
int y1 = Convert.ToInt32( split[2] );
|
||||
int z1 = Convert.ToInt32( split[3] );
|
||||
|
||||
Map map2 = Map.Parse( split[4] );
|
||||
int x2 = Convert.ToInt32( split[5] );
|
||||
int y2 = Convert.ToInt32( split[6] );
|
||||
int z2 = Convert.ToInt32( split[7] );
|
||||
|
||||
// Default to two-way unless false is explicitly stated
|
||||
bool twoWay = true;
|
||||
if ( split.Length >= 9 && split[8].ToLower() == "false" )
|
||||
{
|
||||
twoWay = false;
|
||||
}
|
||||
|
||||
Point3D loc1 = new Point3D( x1, y1, z1 );
|
||||
Point3D loc2 = new Point3D( x2, y2, z2 );
|
||||
|
||||
// Create Teleporter A (Location 1 -> Location 2)
|
||||
Teleporter tele1 = new Teleporter( loc2, map2 );
|
||||
tele1.MoveToWorld( loc1, map1 );
|
||||
count++;
|
||||
|
||||
// Conditionally Create Teleporter B (Location 2 -> Location 1)
|
||||
if ( twoWay )
|
||||
{
|
||||
Teleporter tele2 = new Teleporter( loc1, map1 );
|
||||
tele2.MoveToWorld( loc2, map2 );
|
||||
count++;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Console.WriteLine( "Warning: Error parsing teleporter line: {0}", line );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
e.Mobile.SendMessage( "{0} teleporters generated successfully.", count );
|
||||
}
|
||||
else
|
||||
{
|
||||
e.Mobile.SendMessage( "Error: Could not find Data/Config/teleporters.cfg" );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue