Disable pathfinding when moving with keys.

This commit is contained in:
MobiusDev
2017-11-15 06:14:21 +00:00
parent 3bdf97394e
commit 1af47f927c
12 changed files with 100 additions and 115 deletions

View File

@@ -245,6 +245,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
/** Movement data of this L2Character */ /** Movement data of this L2Character */
protected MoveData _move; protected MoveData _move;
private boolean _cursorKeyMovement = false;
/** This creature's target. */ /** This creature's target. */
private L2Object _target; private L2Object _target;
@@ -3494,7 +3495,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
m.onGeodataPathIndex = -1; // Initialize not on geodata path m.onGeodataPathIndex = -1; // Initialize not on geodata path
m.disregardingGeodata = false; m.disregardingGeodata = false;
if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle()) if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle() && !_cursorKeyMovement)
{ {
final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null); final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null);
if (isInVehicle) if (isInVehicle)
@@ -5543,4 +5544,9 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
{ {
return calculateDistance(target, true, false); return calculateDistance(target, true, false);
} }
public void setCursorKeyMovement(boolean value)
{
_cursorKeyMovement = value;
}
} }

View File

@@ -41,26 +41,15 @@ import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMove;
import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast; import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast;
import com.l2jmobius.gameserver.util.Broadcast; import com.l2jmobius.gameserver.util.Broadcast;
/**
* This class ...
* @version $Revision: 1.11.2.4.2.4 $ $Date: 2005/03/27 15:29:30 $
*/
public class MoveBackwardToLocation implements IClientIncomingPacket public class MoveBackwardToLocation implements IClientIncomingPacket
{ {
// cdddddd
private int _targetX; private int _targetX;
private int _targetY; private int _targetY;
private int _targetZ; private int _targetZ;
private int _originX; private int _originX;
private int _originY; private int _originY;
private int _originZ; private int _originZ;
private int _moveMovement; private int _movementMode;
// For geodata
private int _curX;
private int _curY;
@SuppressWarnings("unused")
private int _curZ;
@Override @Override
public boolean read(L2GameClient client, PacketReader packet) public boolean read(L2GameClient client, PacketReader packet)
@@ -71,7 +60,7 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
_originX = packet.readD(); _originX = packet.readD();
_originY = packet.readD(); _originY = packet.readD();
_originZ = packet.readD(); _originZ = packet.readD();
_moveMovement = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used _movementMode = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used
return true; return true;
} }
@@ -105,8 +94,9 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
// Validate position packets sends head level. // Validate position packets sends head level.
_targetZ += activeChar.getTemplate().getCollisionHeight(); _targetZ += activeChar.getTemplate().getCollisionHeight();
if (_moveMovement == 1) if (_movementMode == 1)
{ {
activeChar.setCursorKeyMovement(false);
final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class); final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class);
if ((terminate != null) && terminate.terminate()) if ((terminate != null) && terminate.terminate())
{ {
@@ -114,10 +104,10 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
return; return;
} }
} }
else // 0
_curX = activeChar.getX(); {
_curY = activeChar.getY(); activeChar.setCursorKeyMovement(true);
_curZ = activeChar.getZ(); }
switch (activeChar.getTeleMode()) switch (activeChar.getTeleMode())
{ {
@@ -147,8 +137,8 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
} }
default: default:
{ {
final double dx = _targetX - _curX; final double dx = _targetX - activeChar.getX();
final double dy = _targetY - _curY; final double dy = _targetY - activeChar.getY();
// Can't move if character is confused, or trying to move a huge distance // Can't move if character is confused, or trying to move a huge distance
if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900 if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900
{ {

View File

@@ -246,6 +246,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
/** Movement data of this L2Character */ /** Movement data of this L2Character */
protected MoveData _move; protected MoveData _move;
private boolean _cursorKeyMovement = false;
/** This creature's target. */ /** This creature's target. */
private L2Object _target; private L2Object _target;
@@ -3498,7 +3499,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
m.onGeodataPathIndex = -1; // Initialize not on geodata path m.onGeodataPathIndex = -1; // Initialize not on geodata path
m.disregardingGeodata = false; m.disregardingGeodata = false;
if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle()) if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle() && !_cursorKeyMovement)
{ {
final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null); final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null);
if (isInVehicle) if (isInVehicle)
@@ -5580,4 +5581,9 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
{ {
// Dummy method to be overriden. // Dummy method to be overriden.
} }
public void setCursorKeyMovement(boolean value)
{
_cursorKeyMovement = value;
}
} }

View File

@@ -41,26 +41,15 @@ import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMove;
import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast; import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast;
import com.l2jmobius.gameserver.util.Broadcast; import com.l2jmobius.gameserver.util.Broadcast;
/**
* This class ...
* @version $Revision: 1.11.2.4.2.4 $ $Date: 2005/03/27 15:29:30 $
*/
public class MoveBackwardToLocation implements IClientIncomingPacket public class MoveBackwardToLocation implements IClientIncomingPacket
{ {
// cdddddd
private int _targetX; private int _targetX;
private int _targetY; private int _targetY;
private int _targetZ; private int _targetZ;
private int _originX; private int _originX;
private int _originY; private int _originY;
private int _originZ; private int _originZ;
private int _moveMovement; private int _movementMode;
// For geodata
private int _curX;
private int _curY;
@SuppressWarnings("unused")
private int _curZ;
@Override @Override
public boolean read(L2GameClient client, PacketReader packet) public boolean read(L2GameClient client, PacketReader packet)
@@ -71,7 +60,7 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
_originX = packet.readD(); _originX = packet.readD();
_originY = packet.readD(); _originY = packet.readD();
_originZ = packet.readD(); _originZ = packet.readD();
_moveMovement = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used _movementMode = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used
return true; return true;
} }
@@ -105,8 +94,9 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
// Validate position packets sends head level. // Validate position packets sends head level.
_targetZ += activeChar.getTemplate().getCollisionHeight(); _targetZ += activeChar.getTemplate().getCollisionHeight();
if (_moveMovement == 1) if (_movementMode == 1)
{ {
activeChar.setCursorKeyMovement(false);
final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class); final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class);
if ((terminate != null) && terminate.terminate()) if ((terminate != null) && terminate.terminate())
{ {
@@ -114,10 +104,10 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
return; return;
} }
} }
else // 0
_curX = activeChar.getX(); {
_curY = activeChar.getY(); activeChar.setCursorKeyMovement(true);
_curZ = activeChar.getZ(); }
switch (activeChar.getTeleMode()) switch (activeChar.getTeleMode())
{ {
@@ -147,8 +137,8 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
} }
default: default:
{ {
final double dx = _targetX - _curX; final double dx = _targetX - activeChar.getX();
final double dy = _targetY - _curY; final double dy = _targetY - activeChar.getY();
// Can't move if character is confused, or trying to move a huge distance // Can't move if character is confused, or trying to move a huge distance
if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900 if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900
{ {

View File

@@ -246,6 +246,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
/** Movement data of this L2Character */ /** Movement data of this L2Character */
protected MoveData _move; protected MoveData _move;
private boolean _cursorKeyMovement = false;
/** This creature's target. */ /** This creature's target. */
private L2Object _target; private L2Object _target;
@@ -3498,7 +3499,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
m.onGeodataPathIndex = -1; // Initialize not on geodata path m.onGeodataPathIndex = -1; // Initialize not on geodata path
m.disregardingGeodata = false; m.disregardingGeodata = false;
if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle()) if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle() && !_cursorKeyMovement)
{ {
final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null); final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null);
if (isInVehicle) if (isInVehicle)
@@ -5580,4 +5581,9 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
{ {
// Dummy method to be overriden. // Dummy method to be overriden.
} }
public void setCursorKeyMovement(boolean value)
{
_cursorKeyMovement = value;
}
} }

View File

@@ -41,26 +41,15 @@ import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMove;
import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast; import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast;
import com.l2jmobius.gameserver.util.Broadcast; import com.l2jmobius.gameserver.util.Broadcast;
/**
* This class ...
* @version $Revision: 1.11.2.4.2.4 $ $Date: 2005/03/27 15:29:30 $
*/
public class MoveBackwardToLocation implements IClientIncomingPacket public class MoveBackwardToLocation implements IClientIncomingPacket
{ {
// cdddddd
private int _targetX; private int _targetX;
private int _targetY; private int _targetY;
private int _targetZ; private int _targetZ;
private int _originX; private int _originX;
private int _originY; private int _originY;
private int _originZ; private int _originZ;
private int _moveMovement; private int _movementMode;
// For geodata
private int _curX;
private int _curY;
@SuppressWarnings("unused")
private int _curZ;
@Override @Override
public boolean read(L2GameClient client, PacketReader packet) public boolean read(L2GameClient client, PacketReader packet)
@@ -71,7 +60,7 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
_originX = packet.readD(); _originX = packet.readD();
_originY = packet.readD(); _originY = packet.readD();
_originZ = packet.readD(); _originZ = packet.readD();
_moveMovement = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used _movementMode = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used
return true; return true;
} }
@@ -105,8 +94,9 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
// Validate position packets sends head level. // Validate position packets sends head level.
_targetZ += activeChar.getTemplate().getCollisionHeight(); _targetZ += activeChar.getTemplate().getCollisionHeight();
if (_moveMovement == 1) if (_movementMode == 1)
{ {
activeChar.setCursorKeyMovement(false);
final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class); final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class);
if ((terminate != null) && terminate.terminate()) if ((terminate != null) && terminate.terminate())
{ {
@@ -114,10 +104,10 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
return; return;
} }
} }
else // 0
_curX = activeChar.getX(); {
_curY = activeChar.getY(); activeChar.setCursorKeyMovement(true);
_curZ = activeChar.getZ(); }
switch (activeChar.getTeleMode()) switch (activeChar.getTeleMode())
{ {
@@ -147,8 +137,8 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
} }
default: default:
{ {
final double dx = _targetX - _curX; final double dx = _targetX - activeChar.getX();
final double dy = _targetY - _curY; final double dy = _targetY - activeChar.getY();
// Can't move if character is confused, or trying to move a huge distance // Can't move if character is confused, or trying to move a huge distance
if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900 if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900
{ {

View File

@@ -246,6 +246,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
/** Movement data of this L2Character */ /** Movement data of this L2Character */
protected MoveData _move; protected MoveData _move;
private boolean _cursorKeyMovement = false;
/** This creature's target. */ /** This creature's target. */
private L2Object _target; private L2Object _target;
@@ -3498,7 +3499,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
m.onGeodataPathIndex = -1; // Initialize not on geodata path m.onGeodataPathIndex = -1; // Initialize not on geodata path
m.disregardingGeodata = false; m.disregardingGeodata = false;
if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle()) if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle() && !_cursorKeyMovement)
{ {
final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null); final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null);
if (isInVehicle) if (isInVehicle)
@@ -5580,4 +5581,9 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
{ {
// Dummy method to be overriden. // Dummy method to be overriden.
} }
public void setCursorKeyMovement(boolean value)
{
_cursorKeyMovement = value;
}
} }

View File

@@ -41,26 +41,15 @@ import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMove;
import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast; import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast;
import com.l2jmobius.gameserver.util.Broadcast; import com.l2jmobius.gameserver.util.Broadcast;
/**
* This class ...
* @version $Revision: 1.11.2.4.2.4 $ $Date: 2005/03/27 15:29:30 $
*/
public class MoveBackwardToLocation implements IClientIncomingPacket public class MoveBackwardToLocation implements IClientIncomingPacket
{ {
// cdddddd
private int _targetX; private int _targetX;
private int _targetY; private int _targetY;
private int _targetZ; private int _targetZ;
private int _originX; private int _originX;
private int _originY; private int _originY;
private int _originZ; private int _originZ;
private int _moveMovement; private int _movementMode;
// For geodata
private int _curX;
private int _curY;
@SuppressWarnings("unused")
private int _curZ;
@Override @Override
public boolean read(L2GameClient client, PacketReader packet) public boolean read(L2GameClient client, PacketReader packet)
@@ -71,7 +60,7 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
_originX = packet.readD(); _originX = packet.readD();
_originY = packet.readD(); _originY = packet.readD();
_originZ = packet.readD(); _originZ = packet.readD();
_moveMovement = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used _movementMode = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used
return true; return true;
} }
@@ -105,8 +94,9 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
// Validate position packets sends head level. // Validate position packets sends head level.
_targetZ += activeChar.getTemplate().getCollisionHeight(); _targetZ += activeChar.getTemplate().getCollisionHeight();
if (_moveMovement == 1) if (_movementMode == 1)
{ {
activeChar.setCursorKeyMovement(false);
final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class); final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class);
if ((terminate != null) && terminate.terminate()) if ((terminate != null) && terminate.terminate())
{ {
@@ -114,10 +104,10 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
return; return;
} }
} }
else // 0
_curX = activeChar.getX(); {
_curY = activeChar.getY(); activeChar.setCursorKeyMovement(true);
_curZ = activeChar.getZ(); }
switch (activeChar.getTeleMode()) switch (activeChar.getTeleMode())
{ {
@@ -147,8 +137,8 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
} }
default: default:
{ {
final double dx = _targetX - _curX; final double dx = _targetX - activeChar.getX();
final double dy = _targetY - _curY; final double dy = _targetY - activeChar.getY();
// Can't move if character is confused, or trying to move a huge distance // Can't move if character is confused, or trying to move a huge distance
if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900 if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900
{ {

View File

@@ -249,6 +249,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
/** Movement data of this L2Character */ /** Movement data of this L2Character */
protected MoveData _move; protected MoveData _move;
private boolean _cursorKeyMovement = false;
/** This creature's target. */ /** This creature's target. */
private L2Object _target; private L2Object _target;
@@ -4389,7 +4390,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
m.onGeodataPathIndex = -1; // Initialize not on geodata path m.onGeodataPathIndex = -1; // Initialize not on geodata path
m.disregardingGeodata = false; m.disregardingGeodata = false;
if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle()) if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle() && !_cursorKeyMovement)
{ {
final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null); final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null);
if (isInVehicle) if (isInVehicle)
@@ -6879,4 +6880,9 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
{ {
return 0; return 0;
} }
public void setCursorKeyMovement(boolean value)
{
_cursorKeyMovement = value;
}
} }

View File

@@ -30,23 +30,17 @@ import com.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import com.l2jmobius.gameserver.network.serverpackets.StopMove; import com.l2jmobius.gameserver.network.serverpackets.StopMove;
import com.l2jmobius.gameserver.util.Util; import com.l2jmobius.gameserver.util.Util;
/**
* This class ...
* @version $Revision: 1.11.2.4.2.4 $ $Date: 2005/03/27 15:29:30 $
*/
public class MoveBackwardToLocation extends L2GameClientPacket public class MoveBackwardToLocation extends L2GameClientPacket
{ {
private static final String _C__0F_MOVEBACKWARDTOLOC = "[C] 0F MoveBackwardToLoc"; private static final String _C__0F_MOVEBACKWARDTOLOC = "[C] 0F MoveBackwardToLoc";
// cdddddd
private int _targetX; private int _targetX;
private int _targetY; private int _targetY;
private int _targetZ; private int _targetZ;
private int _originX; private int _originX;
private int _originY; private int _originY;
private int _originZ; private int _originZ;
private int _movementMode;
private int _moveMovement;
@Override @Override
protected void readImpl() protected void readImpl()
@@ -59,7 +53,7 @@ public class MoveBackwardToLocation extends L2GameClientPacket
_originZ = readD(); _originZ = readD();
try try
{ {
_moveMovement = readD(); // is 0 if cursor keys are used 1 if mouse is used _movementMode = readD(); // is 0 if cursor keys are used 1 if mouse is used
} }
catch (BufferUnderflowException e) catch (BufferUnderflowException e)
{ {
@@ -101,8 +95,9 @@ public class MoveBackwardToLocation extends L2GameClientPacket
// Validate position packets sends head level. // Validate position packets sends head level.
_targetZ += activeChar.getTemplate().getCollisionHeight(); _targetZ += activeChar.getTemplate().getCollisionHeight();
if (_moveMovement == 1) if (_movementMode == 1)
{ {
activeChar.setCursorKeyMovement(false);
final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class); final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class);
if ((terminate != null) && terminate.terminate()) if ((terminate != null) && terminate.terminate())
{ {
@@ -110,6 +105,10 @@ public class MoveBackwardToLocation extends L2GameClientPacket
return; return;
} }
} }
else // 0
{
activeChar.setCursorKeyMovement(true);
}
if (activeChar.getTeleMode() > 0) if (activeChar.getTeleMode() > 0)
{ {

View File

@@ -246,6 +246,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
/** Movement data of this L2Character */ /** Movement data of this L2Character */
protected MoveData _move; protected MoveData _move;
private boolean _cursorKeyMovement = false;
/** This creature's target. */ /** This creature's target. */
private L2Object _target; private L2Object _target;
@@ -3498,7 +3499,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
m.onGeodataPathIndex = -1; // Initialize not on geodata path m.onGeodataPathIndex = -1; // Initialize not on geodata path
m.disregardingGeodata = false; m.disregardingGeodata = false;
if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle()) if (!isFlying() && !isInsideZone(ZoneId.WATER) && !isVehicle() && !_cursorKeyMovement)
{ {
final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null); final boolean isInVehicle = isPlayer() && (getActingPlayer().getVehicle() != null);
if (isInVehicle) if (isInVehicle)
@@ -5580,4 +5581,9 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
{ {
// Dummy method to be overriden. // Dummy method to be overriden.
} }
public void setCursorKeyMovement(boolean value)
{
_cursorKeyMovement = value;
}
} }

View File

@@ -41,26 +41,15 @@ import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMove;
import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast; import com.l2jmobius.gameserver.network.serverpackets.sayune.ExFlyMoveBroadcast;
import com.l2jmobius.gameserver.util.Broadcast; import com.l2jmobius.gameserver.util.Broadcast;
/**
* This class ...
* @version $Revision: 1.11.2.4.2.4 $ $Date: 2005/03/27 15:29:30 $
*/
public class MoveBackwardToLocation implements IClientIncomingPacket public class MoveBackwardToLocation implements IClientIncomingPacket
{ {
// cdddddd
private int _targetX; private int _targetX;
private int _targetY; private int _targetY;
private int _targetZ; private int _targetZ;
private int _originX; private int _originX;
private int _originY; private int _originY;
private int _originZ; private int _originZ;
private int _moveMovement; private int _movementMode;
// For geodata
private int _curX;
private int _curY;
@SuppressWarnings("unused")
private int _curZ;
@Override @Override
public boolean read(L2GameClient client, PacketReader packet) public boolean read(L2GameClient client, PacketReader packet)
@@ -71,7 +60,7 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
_originX = packet.readD(); _originX = packet.readD();
_originY = packet.readD(); _originY = packet.readD();
_originZ = packet.readD(); _originZ = packet.readD();
_moveMovement = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used _movementMode = packet.readD(); // is 0 if cursor keys are used 1 if mouse is used
return true; return true;
} }
@@ -105,8 +94,9 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
// Validate position packets sends head level. // Validate position packets sends head level.
_targetZ += activeChar.getTemplate().getCollisionHeight(); _targetZ += activeChar.getTemplate().getCollisionHeight();
if (_moveMovement == 1) if (_movementMode == 1)
{ {
activeChar.setCursorKeyMovement(false);
final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class); final TerminateReturn terminate = EventDispatcher.getInstance().notifyEvent(new OnPlayerMoveRequest(activeChar, new Location(_targetX, _targetY, _targetZ)), activeChar, TerminateReturn.class);
if ((terminate != null) && terminate.terminate()) if ((terminate != null) && terminate.terminate())
{ {
@@ -114,10 +104,10 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
return; return;
} }
} }
else // 0
_curX = activeChar.getX(); {
_curY = activeChar.getY(); activeChar.setCursorKeyMovement(true);
_curZ = activeChar.getZ(); }
switch (activeChar.getTeleMode()) switch (activeChar.getTeleMode())
{ {
@@ -147,8 +137,8 @@ public class MoveBackwardToLocation implements IClientIncomingPacket
} }
default: default:
{ {
final double dx = _targetX - _curX; final double dx = _targetX - activeChar.getX();
final double dy = _targetY - _curY; final double dy = _targetY - activeChar.getY();
// Can't move if character is confused, or trying to move a huge distance // Can't move if character is confused, or trying to move a huge distance
if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900 if (activeChar.isControlBlocked() || (((dx * dx) + (dy * dy)) > 98010000)) // 9900*9900
{ {