Stop auto play upon teleporting.

This commit is contained in:
MobiusDevelopment
2021-04-07 11:53:48 +00:00
parent 7e112206dc
commit 85d3e6ae24
18 changed files with 222 additions and 30 deletions

View File

@@ -347,10 +347,13 @@ import org.l2jmobius.gameserver.network.serverpackets.TradeOtherDone;
import org.l2jmobius.gameserver.network.serverpackets.TradeStart;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExAutoPlaySettingSend;
import org.l2jmobius.gameserver.network.serverpackets.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
import org.l2jmobius.gameserver.taskmanager.AutoPlayTaskManager;
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
import org.l2jmobius.gameserver.taskmanager.PlayerAutoSaveTaskManager;
import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager;
import org.l2jmobius.gameserver.util.Broadcast;
@@ -10402,7 +10405,7 @@ public class PlayerInstance extends Playable
setLastServerPosition(getX(), getY(), getZ());
}
// Force a revalidation
// Force a revalidation.
revalidateZone(true);
checkItemRestriction();
@@ -10412,14 +10415,14 @@ public class PlayerInstance extends Playable
setTeleportProtection(true);
}
// Trained beast is lost after teleport
// Trained beast is lost after teleport.
for (TamedBeastInstance tamedBeast : _tamedBeast)
{
tamedBeast.deleteMe();
}
_tamedBeast.clear();
// Modify the position of the pet if necessary
// Modify the position of the pet if necessary.
if (_pet != null)
{
_pet.setFollowStatus(false);
@@ -10440,7 +10443,7 @@ public class PlayerInstance extends Playable
s.updateAndBroadcastStatus(0);
});
// Show movie if available
// Show movie if available.
if (_movieHolder != null)
{
sendPacket(new ExStartScenePlayer(_movieHolder.getMovie()));
@@ -10452,7 +10455,12 @@ public class PlayerInstance extends Playable
stopTimedHuntingZoneTask();
}
// send info to nearby players
// Stop auto play.
AutoPlayTaskManager.getInstance().stopAutoPlay(this);
AutoUseTaskManager.getInstance().stopAutoUseTask(this);
sendPacket(new ExAutoPlaySettingSend(_autoPlaySettings.getOptions(), false, _autoPlaySettings.doPickup(), _autoPlaySettings.getNextTargetMode(), _autoPlaySettings.isLongRange(), _autoPlaySettings.getAutoPotionPercent(), _autoPlaySettings.isRespectfulHunting()));
// Send info to nearby players.
broadcastInfo();
}

View File

@@ -24,7 +24,9 @@ import java.util.concurrent.atomic.AtomicInteger;
*/
public class AutoPlaySettingsHolder
{
private final AtomicInteger _options = new AtomicInteger();
private final AtomicBoolean _pickup = new AtomicBoolean();
private final AtomicInteger _nextTargetMode = new AtomicInteger();
private final AtomicBoolean _longRange = new AtomicBoolean();
private final AtomicBoolean _respectfulHunting = new AtomicBoolean();
private final AtomicInteger _autoPotionPercent = new AtomicInteger();
@@ -33,6 +35,16 @@ public class AutoPlaySettingsHolder
{
}
public int getOptions()
{
return _options.get();
}
public void setOptions(int options)
{
_options.set(options);
}
public boolean doPickup()
{
return _pickup.get();
@@ -43,6 +55,16 @@ public class AutoPlaySettingsHolder
_pickup.set(value);
}
public int getNextTargetMode()
{
return _nextTargetMode.get();
}
public void setNextTargetMode(int nextTargetMode)
{
_nextTargetMode.set(nextTargetMode);
}
public boolean isLongRange()
{
return _longRange.get();

View File

@@ -68,7 +68,9 @@ public class ExAutoPlaySetting implements IClientIncomingPacket
return;
}
player.getAutoPlaySettings().setOptions(_options);
player.getAutoPlaySettings().setPickup(_pickUp);
player.getAutoPlaySettings().setNextTargetMode(_nextTargetMode);
player.getAutoPlaySettings().setLongRange(_longRange);
player.getAutoPlaySettings().setRespectfulHunting(_respectfulHunting);