#W# Added MoveToLoc command. movetoloc +100 +100

This commit is contained in:
WarrentyExpired 2026-08-08 20:32:18 -04:00
parent 72008926de
commit b8a333d3b1

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