#W# Added MoveToLoc command. movetoloc +100 +100
This commit is contained in:
parent
aa4d83cab9
commit
4e44b70ac1
1 changed files with 53 additions and 0 deletions
53
Scripts/Commands/MoveToLocation.cs
Normal file
53
Scripts/Commands/MoveToLocation.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Commands;
|
||||
|
||||
namespace Server.Commands
|
||||
{
|
||||
public class MoveToLocCommand
|
||||
{
|
||||
public static void Initialize()
|
||||
{
|
||||
// Registers the command. GMs and Admins can use it.
|
||||
CommandSystem.Register( "MoveToLoc", AccessLevel.GameMaster, new CommandEventHandler( MoveToLoc_OnCommand ) );
|
||||
}
|
||||
|
||||
[Usage( "MoveToLoc [+x/-x] [+y/-y] [+z/-z]" )]
|
||||
public static void MoveToLoc_OnCommand( CommandEventArgs e )
|
||||
{
|
||||
Mobile from = e.Mobile;
|
||||
|
||||
if ( e.Length < 2 )
|
||||
{
|
||||
from.SendMessage( "Usage: [MoveToLoc [+x/-x] [+y/-y] [+z/-z]" );
|
||||
return;
|
||||
}
|
||||
|
||||
int currentX = from.X;
|
||||
int currentY = from.Y;
|
||||
int currentZ = from.Z;
|
||||
|
||||
int targetX = ParseCoordinate( e.GetString( 0 ), currentX );
|
||||
int targetY = ParseCoordinate( e.GetString( 1 ), currentY );
|
||||
int targetZ = ( e.Length >= 3 ) ? ParseCoordinate( e.GetString( 2 ), currentZ ) : currentZ;
|
||||
|
||||
from.MoveToWorld( new Point3D( targetX, targetY, targetZ ), from.Map );
|
||||
}
|
||||
|
||||
private static int ParseCoordinate( string input, int currentVal )
|
||||
{
|
||||
if ( string.IsNullOrEmpty( input ) )
|
||||
return currentVal;
|
||||
|
||||
// Check if it starts with a relative modification operator
|
||||
if ( input.StartsWith( "+" ) || input.StartsWith( "-" ) )
|
||||
{
|
||||
int modifier = Utility.ToInt32( input );
|
||||
return currentVal + modifier;
|
||||
}
|
||||
|
||||
// Otherwise treat it as a standard absolute coordinate
|
||||
return Utility.ToInt32( input );
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue