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 ); } } }