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

@ -350,6 +350,7 @@ import org.l2jmobius.gameserver.network.serverpackets.TradeOtherDone;
import org.l2jmobius.gameserver.network.serverpackets.TradeStart; import org.l2jmobius.gameserver.network.serverpackets.TradeStart;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation; 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.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus; import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
import org.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBook; import org.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBook;
@ -357,6 +358,8 @@ import org.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBookC
import org.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBookRewardIcon; import org.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBookRewardIcon;
import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit; import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; 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.PlayerAutoSaveTaskManager;
import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager; import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@ -10366,7 +10369,7 @@ public class PlayerInstance extends Playable
setLastServerPosition(getX(), getY(), getZ()); setLastServerPosition(getX(), getY(), getZ());
} }
// Force a revalidation // Force a revalidation.
revalidateZone(true); revalidateZone(true);
checkItemRestriction(); checkItemRestriction();
@ -10376,14 +10379,14 @@ public class PlayerInstance extends Playable
setTeleportProtection(true); setTeleportProtection(true);
} }
// Trained beast is lost after teleport // Trained beast is lost after teleport.
for (TamedBeastInstance tamedBeast : _tamedBeast) for (TamedBeastInstance tamedBeast : _tamedBeast)
{ {
tamedBeast.deleteMe(); tamedBeast.deleteMe();
} }
_tamedBeast.clear(); _tamedBeast.clear();
// Modify the position of the pet if necessary // Modify the position of the pet if necessary.
if (_pet != null) if (_pet != null)
{ {
_pet.setFollowStatus(false); _pet.setFollowStatus(false);
@ -10404,7 +10407,7 @@ public class PlayerInstance extends Playable
s.updateAndBroadcastStatus(0); s.updateAndBroadcastStatus(0);
}); });
// Show movie if available // Show movie if available.
if (_movieHolder != null) if (_movieHolder != null)
{ {
sendPacket(new ExStartScenePlayer(_movieHolder.getMovie())); sendPacket(new ExStartScenePlayer(_movieHolder.getMovie()));
@ -10416,7 +10419,12 @@ public class PlayerInstance extends Playable
stopTimedHuntingZoneTask(); 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(); broadcastInfo();
} }

View File

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

View File

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

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.TradeStart;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation; 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.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus; import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit; import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; 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.PlayerAutoSaveTaskManager;
import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager; import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@ -10402,7 +10405,7 @@ public class PlayerInstance extends Playable
setLastServerPosition(getX(), getY(), getZ()); setLastServerPosition(getX(), getY(), getZ());
} }
// Force a revalidation // Force a revalidation.
revalidateZone(true); revalidateZone(true);
checkItemRestriction(); checkItemRestriction();
@ -10412,14 +10415,14 @@ public class PlayerInstance extends Playable
setTeleportProtection(true); setTeleportProtection(true);
} }
// Trained beast is lost after teleport // Trained beast is lost after teleport.
for (TamedBeastInstance tamedBeast : _tamedBeast) for (TamedBeastInstance tamedBeast : _tamedBeast)
{ {
tamedBeast.deleteMe(); tamedBeast.deleteMe();
} }
_tamedBeast.clear(); _tamedBeast.clear();
// Modify the position of the pet if necessary // Modify the position of the pet if necessary.
if (_pet != null) if (_pet != null)
{ {
_pet.setFollowStatus(false); _pet.setFollowStatus(false);
@ -10440,7 +10443,7 @@ public class PlayerInstance extends Playable
s.updateAndBroadcastStatus(0); s.updateAndBroadcastStatus(0);
}); });
// Show movie if available // Show movie if available.
if (_movieHolder != null) if (_movieHolder != null)
{ {
sendPacket(new ExStartScenePlayer(_movieHolder.getMovie())); sendPacket(new ExStartScenePlayer(_movieHolder.getMovie()));
@ -10452,7 +10455,12 @@ public class PlayerInstance extends Playable
stopTimedHuntingZoneTask(); 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(); broadcastInfo();
} }

View File

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

View File

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

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.TradeStart;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation; 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.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus; import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit; import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; 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.PlayerAutoSaveTaskManager;
import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager; import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@ -10402,7 +10405,7 @@ public class PlayerInstance extends Playable
setLastServerPosition(getX(), getY(), getZ()); setLastServerPosition(getX(), getY(), getZ());
} }
// Force a revalidation // Force a revalidation.
revalidateZone(true); revalidateZone(true);
checkItemRestriction(); checkItemRestriction();
@ -10412,14 +10415,14 @@ public class PlayerInstance extends Playable
setTeleportProtection(true); setTeleportProtection(true);
} }
// Trained beast is lost after teleport // Trained beast is lost after teleport.
for (TamedBeastInstance tamedBeast : _tamedBeast) for (TamedBeastInstance tamedBeast : _tamedBeast)
{ {
tamedBeast.deleteMe(); tamedBeast.deleteMe();
} }
_tamedBeast.clear(); _tamedBeast.clear();
// Modify the position of the pet if necessary // Modify the position of the pet if necessary.
if (_pet != null) if (_pet != null)
{ {
_pet.setFollowStatus(false); _pet.setFollowStatus(false);
@ -10440,7 +10443,7 @@ public class PlayerInstance extends Playable
s.updateAndBroadcastStatus(0); s.updateAndBroadcastStatus(0);
}); });
// Show movie if available // Show movie if available.
if (_movieHolder != null) if (_movieHolder != null)
{ {
sendPacket(new ExStartScenePlayer(_movieHolder.getMovie())); sendPacket(new ExStartScenePlayer(_movieHolder.getMovie()));
@ -10452,7 +10455,12 @@ public class PlayerInstance extends Playable
stopTimedHuntingZoneTask(); 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(); broadcastInfo();
} }

View File

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

View File

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

View File

@ -350,10 +350,13 @@ import org.l2jmobius.gameserver.network.serverpackets.TradeOtherDone;
import org.l2jmobius.gameserver.network.serverpackets.TradeStart; import org.l2jmobius.gameserver.network.serverpackets.TradeStart;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation; 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.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus; import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit; import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; 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.PlayerAutoSaveTaskManager;
import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager; import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@ -10200,7 +10203,7 @@ public class PlayerInstance extends Playable
setLastServerPosition(getX(), getY(), getZ()); setLastServerPosition(getX(), getY(), getZ());
} }
// Force a revalidation // Force a revalidation.
revalidateZone(true); revalidateZone(true);
checkItemRestriction(); checkItemRestriction();
@ -10210,14 +10213,14 @@ public class PlayerInstance extends Playable
setTeleportProtection(true); setTeleportProtection(true);
} }
// Trained beast is lost after teleport // Trained beast is lost after teleport.
for (TamedBeastInstance tamedBeast : _tamedBeast) for (TamedBeastInstance tamedBeast : _tamedBeast)
{ {
tamedBeast.deleteMe(); tamedBeast.deleteMe();
} }
_tamedBeast.clear(); _tamedBeast.clear();
// Modify the position of the pet if necessary // Modify the position of the pet if necessary.
if (_pet != null) if (_pet != null)
{ {
_pet.setFollowStatus(false); _pet.setFollowStatus(false);
@ -10238,7 +10241,7 @@ public class PlayerInstance extends Playable
s.updateAndBroadcastStatus(0); s.updateAndBroadcastStatus(0);
}); });
// Show movie if available // Show movie if available.
if (_movieHolder != null) if (_movieHolder != null)
{ {
sendPacket(new ExStartScenePlayer(_movieHolder.getMovie())); sendPacket(new ExStartScenePlayer(_movieHolder.getMovie()));
@ -10250,7 +10253,12 @@ public class PlayerInstance extends Playable
stopTimedHuntingZoneTask(); 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(); broadcastInfo();
} }

View File

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

View File

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

View File

@ -354,11 +354,14 @@ import org.l2jmobius.gameserver.network.serverpackets.TradeOtherDone;
import org.l2jmobius.gameserver.network.serverpackets.TradeStart; import org.l2jmobius.gameserver.network.serverpackets.TradeStart;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation; 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.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus; import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount; import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount;
import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit; import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; 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.PlayerAutoSaveTaskManager;
import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager; import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@ -10287,7 +10290,7 @@ public class PlayerInstance extends Playable
setLastServerPosition(getX(), getY(), getZ()); setLastServerPosition(getX(), getY(), getZ());
} }
// Force a revalidation // Force a revalidation.
revalidateZone(true); revalidateZone(true);
checkItemRestriction(); checkItemRestriction();
@ -10297,14 +10300,14 @@ public class PlayerInstance extends Playable
setTeleportProtection(true); setTeleportProtection(true);
} }
// Trained beast is lost after teleport // Trained beast is lost after teleport.
for (TamedBeastInstance tamedBeast : _tamedBeast) for (TamedBeastInstance tamedBeast : _tamedBeast)
{ {
tamedBeast.deleteMe(); tamedBeast.deleteMe();
} }
_tamedBeast.clear(); _tamedBeast.clear();
// Modify the position of the pet if necessary // Modify the position of the pet if necessary.
if (_pet != null) if (_pet != null)
{ {
_pet.setFollowStatus(false); _pet.setFollowStatus(false);
@ -10325,7 +10328,7 @@ public class PlayerInstance extends Playable
s.updateAndBroadcastStatus(0); s.updateAndBroadcastStatus(0);
}); });
// Show movie if available // Show movie if available.
if (_movieHolder != null) if (_movieHolder != null)
{ {
sendPacket(new ExStartScenePlayer(_movieHolder.getMovie())); sendPacket(new ExStartScenePlayer(_movieHolder.getMovie()));
@ -10337,7 +10340,12 @@ public class PlayerInstance extends Playable
stopTimedHuntingZoneTask(); 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(); broadcastInfo();
} }

View File

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

View File

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

View File

@ -354,11 +354,14 @@ import org.l2jmobius.gameserver.network.serverpackets.TradeOtherDone;
import org.l2jmobius.gameserver.network.serverpackets.TradeStart; import org.l2jmobius.gameserver.network.serverpackets.TradeStart;
import org.l2jmobius.gameserver.network.serverpackets.UserInfo; import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation; 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.commission.ExResponseCommissionInfo;
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus; import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount; import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount;
import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit; import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; 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.PlayerAutoSaveTaskManager;
import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager; import org.l2jmobius.gameserver.taskmanager.PvpFlagTaskManager;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@ -10291,7 +10294,7 @@ public class PlayerInstance extends Playable
setLastServerPosition(getX(), getY(), getZ()); setLastServerPosition(getX(), getY(), getZ());
} }
// Force a revalidation // Force a revalidation.
revalidateZone(true); revalidateZone(true);
checkItemRestriction(); checkItemRestriction();
@ -10301,14 +10304,14 @@ public class PlayerInstance extends Playable
setTeleportProtection(true); setTeleportProtection(true);
} }
// Trained beast is lost after teleport // Trained beast is lost after teleport.
for (TamedBeastInstance tamedBeast : _tamedBeast) for (TamedBeastInstance tamedBeast : _tamedBeast)
{ {
tamedBeast.deleteMe(); tamedBeast.deleteMe();
} }
_tamedBeast.clear(); _tamedBeast.clear();
// Modify the position of the pet if necessary // Modify the position of the pet if necessary.
if (_pet != null) if (_pet != null)
{ {
_pet.setFollowStatus(false); _pet.setFollowStatus(false);
@ -10329,7 +10332,7 @@ public class PlayerInstance extends Playable
s.updateAndBroadcastStatus(0); s.updateAndBroadcastStatus(0);
}); });
// Show movie if available // Show movie if available.
if (_movieHolder != null) if (_movieHolder != null)
{ {
sendPacket(new ExStartScenePlayer(_movieHolder.getMovie())); sendPacket(new ExStartScenePlayer(_movieHolder.getMovie()));
@ -10341,7 +10344,12 @@ public class PlayerInstance extends Playable
stopTimedHuntingZoneTask(); 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(); broadcastInfo();
} }

View File

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

View File

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