Dropped the use of GameTimeController for spawn protection.

This commit is contained in:
MobiusDev 2018-04-18 01:54:52 +00:00
parent 999f8d09ac
commit a05027021a
28 changed files with 150 additions and 231 deletions

View File

@ -715,14 +715,14 @@ UnstuckInterval = 300
# Default: 0 # Default: 0
TeleportWatchdogTimeout = 0 TeleportWatchdogTimeout = 0
# After a player teleports, this is the time the player is protected. # After a player spawns, this is the time the player is protected.
# This time is in seconds, leave it at 0 if you want this feature disabled. # This time is in seconds, leave it at 0 if you want this feature disabled.
# Retail (Since GE): 600 (10 minutes) # Retail (Since GE): 600 (10 minutes)
# Default: 600 # Default: 600
PlayerSpawnProtection = 600 PlayerSpawnProtection = 600
# Teleport spawn protection time. It will protect the player in the # After a player teleports, this is the time the player is protected.
# teleport spawn for the given time. 0 to disable feature # This time is in seconds, leave it at 0 if you want this feature disabled.
PlayerTeleportProtection = 0 PlayerTeleportProtection = 0
# If enabled, players respawn in town on different locations defined in zone.xml for given town. # If enabled, players respawn in town on different locations defined in zone.xml for given town.

View File

@ -130,7 +130,7 @@ public class FindPvP implements IBypassHandler
} }
activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ()); activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ());
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
if (!activeChar.isGM()) if (!activeChar.isGM())
{ {
activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME); activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME);

View File

@ -669,7 +669,8 @@ public final class L2PcInstance extends L2Playable
private final L2Request _request = new L2Request(this); private final L2Request _request = new L2Request(this);
// Used for protection after teleport // Used for protection after teleport
private long _protectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
@ -677,18 +678,6 @@ public final class L2PcInstance extends L2Playable
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events; private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events;
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
public boolean isSpawnProtected()
{
return _protectEndTime > GameTimeController.getInstance().getGameTicks();
}
private long _teleportProtectEndTime = 0;
public boolean isTeleportProtected()
{
return _teleportProtectEndTime > GameTimeController.getInstance().getGameTicks();
}
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
private long _recentFakeDeathEndTime = 0; private long _recentFakeDeathEndTime = 0;
@ -3878,24 +3867,24 @@ public final class L2PcInstance extends L2Playable
return item; return item;
} }
public void setProtection(boolean protect) public boolean isSpawnProtected()
{ {
if (Config.DEVELOPER && (protect || (_protectEndTime > 0))) return _spawnProtectEndTime > System.currentTimeMillis();
{ }
LOGGER.warning(getName() + ": Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
} public boolean isTeleportProtected()
{
_protectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0; return _teleportProtectEndTime > System.currentTimeMillis();
}
public void setSpawnProtection(boolean protect)
{
_spawnProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_SPAWN_PROTECTION * 1000) : 0;
} }
public void setTeleportProtection(boolean protect) public void setTeleportProtection(boolean protect)
{ {
if (Config.DEVELOPER && (protect || (_teleportProtectEndTime > 0))) _teleportProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_TELEPORT_PROTECTION * 1000) : 0;
{
LOGGER.warning(getName() + ": Tele Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
}
_teleportProtectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0;
} }
/** /**
@ -10275,7 +10264,7 @@ public final class L2PcInstance extends L2Playable
{ {
if (isSpawnProtected()) if (isSpawnProtected())
{ {
setProtection(false); setSpawnProtection(false);
if (!isInsideZone(ZoneId.PEACE)) if (!isInsideZone(ZoneId.PEACE))
{ {
sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS); sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS);

View File

@ -427,7 +427,7 @@ public class EnterWorld implements IClientIncomingPacket
if (Config.PLAYER_SPAWN_PROTECTION > 0) if (Config.PLAYER_SPAWN_PROTECTION > 0)
{ {
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
} }
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ()); activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());

View File

@ -715,14 +715,14 @@ UnstuckInterval = 300
# Default: 0 # Default: 0
TeleportWatchdogTimeout = 0 TeleportWatchdogTimeout = 0
# After a player teleports, this is the time the player is protected. # After a player spawns, this is the time the player is protected.
# This time is in seconds, leave it at 0 if you want this feature disabled. # This time is in seconds, leave it at 0 if you want this feature disabled.
# Retail (Since GE): 600 (10 minutes) # Retail (Since GE): 600 (10 minutes)
# Default: 600 # Default: 600
PlayerSpawnProtection = 600 PlayerSpawnProtection = 600
# Teleport spawn protection time. It will protect the player in the # After a player teleports, this is the time the player is protected.
# teleport spawn for the given time. 0 to disable feature # This time is in seconds, leave it at 0 if you want this feature disabled.
PlayerTeleportProtection = 0 PlayerTeleportProtection = 0
# If enabled, players respawn in town on different locations defined in zone.xml for given town. # If enabled, players respawn in town on different locations defined in zone.xml for given town.

View File

@ -130,7 +130,7 @@ public class FindPvP implements IBypassHandler
} }
activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ()); activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ());
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
if (!activeChar.isGM()) if (!activeChar.isGM())
{ {
activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME); activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME);

View File

@ -671,7 +671,8 @@ public final class L2PcInstance extends L2Playable
private final L2Request _request = new L2Request(this); private final L2Request _request = new L2Request(this);
// Used for protection after teleport // Used for protection after teleport
private long _protectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
@ -679,18 +680,6 @@ public final class L2PcInstance extends L2Playable
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events; private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events;
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
public boolean isSpawnProtected()
{
return _protectEndTime > GameTimeController.getInstance().getGameTicks();
}
private long _teleportProtectEndTime = 0;
public boolean isTeleportProtected()
{
return _teleportProtectEndTime > GameTimeController.getInstance().getGameTicks();
}
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
private long _recentFakeDeathEndTime = 0; private long _recentFakeDeathEndTime = 0;
@ -3884,24 +3873,24 @@ public final class L2PcInstance extends L2Playable
return item; return item;
} }
public void setProtection(boolean protect) public boolean isSpawnProtected()
{ {
if (Config.DEVELOPER && (protect || (_protectEndTime > 0))) return _spawnProtectEndTime > System.currentTimeMillis();
{ }
LOGGER.warning(getName() + ": Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
} public boolean isTeleportProtected()
{
_protectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0; return _teleportProtectEndTime > System.currentTimeMillis();
}
public void setSpawnProtection(boolean protect)
{
_spawnProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_SPAWN_PROTECTION * 1000) : 0;
} }
public void setTeleportProtection(boolean protect) public void setTeleportProtection(boolean protect)
{ {
if (Config.DEVELOPER && (protect || (_teleportProtectEndTime > 0))) _teleportProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_TELEPORT_PROTECTION * 1000) : 0;
{
LOGGER.warning(getName() + ": Tele Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
}
_teleportProtectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0;
} }
/** /**
@ -10282,7 +10271,7 @@ public final class L2PcInstance extends L2Playable
{ {
if (isSpawnProtected()) if (isSpawnProtected())
{ {
setProtection(false); setSpawnProtection(false);
if (!isInsideZone(ZoneId.PEACE)) if (!isInsideZone(ZoneId.PEACE))
{ {
sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS); sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS);

View File

@ -432,7 +432,7 @@ public class EnterWorld implements IClientIncomingPacket
if (Config.PLAYER_SPAWN_PROTECTION > 0) if (Config.PLAYER_SPAWN_PROTECTION > 0)
{ {
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
} }
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ()); activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());

View File

@ -715,14 +715,14 @@ UnstuckInterval = 300
# Default: 0 # Default: 0
TeleportWatchdogTimeout = 0 TeleportWatchdogTimeout = 0
# After a player teleports, this is the time the player is protected. # After a player spawns, this is the time the player is protected.
# This time is in seconds, leave it at 0 if you want this feature disabled. # This time is in seconds, leave it at 0 if you want this feature disabled.
# Retail (Since GE): 600 (10 minutes) # Retail (Since GE): 600 (10 minutes)
# Default: 600 # Default: 600
PlayerSpawnProtection = 600 PlayerSpawnProtection = 600
# Teleport spawn protection time. It will protect the player in the # After a player teleports, this is the time the player is protected.
# teleport spawn for the given time. 0 to disable feature # This time is in seconds, leave it at 0 if you want this feature disabled.
PlayerTeleportProtection = 0 PlayerTeleportProtection = 0
# If enabled, players respawn in town on different locations defined in zone.xml for given town. # If enabled, players respawn in town on different locations defined in zone.xml for given town.

View File

@ -130,7 +130,7 @@ public class FindPvP implements IBypassHandler
} }
activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ()); activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ());
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
if (!activeChar.isGM()) if (!activeChar.isGM())
{ {
activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME); activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME);

View File

@ -673,7 +673,8 @@ public final class L2PcInstance extends L2Playable
private final L2Request _request = new L2Request(this); private final L2Request _request = new L2Request(this);
// Used for protection after teleport // Used for protection after teleport
private long _protectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
@ -681,18 +682,6 @@ public final class L2PcInstance extends L2Playable
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events; private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events;
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
public boolean isSpawnProtected()
{
return _protectEndTime > GameTimeController.getInstance().getGameTicks();
}
private long _teleportProtectEndTime = 0;
public boolean isTeleportProtected()
{
return _teleportProtectEndTime > GameTimeController.getInstance().getGameTicks();
}
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
private long _recentFakeDeathEndTime = 0; private long _recentFakeDeathEndTime = 0;
@ -3886,24 +3875,24 @@ public final class L2PcInstance extends L2Playable
return item; return item;
} }
public void setProtection(boolean protect) public boolean isSpawnProtected()
{ {
if (Config.DEVELOPER && (protect || (_protectEndTime > 0))) return _spawnProtectEndTime > System.currentTimeMillis();
{ }
LOGGER.warning(getName() + ": Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
} public boolean isTeleportProtected()
{
_protectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0; return _teleportProtectEndTime > System.currentTimeMillis();
}
public void setSpawnProtection(boolean protect)
{
_spawnProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_SPAWN_PROTECTION * 1000) : 0;
} }
public void setTeleportProtection(boolean protect) public void setTeleportProtection(boolean protect)
{ {
if (Config.DEVELOPER && (protect || (_teleportProtectEndTime > 0))) _teleportProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_TELEPORT_PROTECTION * 1000) : 0;
{
LOGGER.warning(getName() + ": Tele Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
}
_teleportProtectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0;
} }
/** /**
@ -10292,7 +10281,7 @@ public final class L2PcInstance extends L2Playable
{ {
if (isSpawnProtected()) if (isSpawnProtected())
{ {
setProtection(false); setSpawnProtection(false);
if (!isInsideZone(ZoneId.PEACE)) if (!isInsideZone(ZoneId.PEACE))
{ {
sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS); sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS);

View File

@ -432,7 +432,7 @@ public class EnterWorld implements IClientIncomingPacket
if (Config.PLAYER_SPAWN_PROTECTION > 0) if (Config.PLAYER_SPAWN_PROTECTION > 0)
{ {
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
} }
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ()); activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());

View File

@ -715,14 +715,14 @@ UnstuckInterval = 300
# Default: 0 # Default: 0
TeleportWatchdogTimeout = 0 TeleportWatchdogTimeout = 0
# After a player teleports, this is the time the player is protected. # After a player spawns, this is the time the player is protected.
# This time is in seconds, leave it at 0 if you want this feature disabled. # This time is in seconds, leave it at 0 if you want this feature disabled.
# Retail (Since GE): 600 (10 minutes) # Retail (Since GE): 600 (10 minutes)
# Default: 600 # Default: 600
PlayerSpawnProtection = 600 PlayerSpawnProtection = 600
# Teleport spawn protection time. It will protect the player in the # After a player teleports, this is the time the player is protected.
# teleport spawn for the given time. 0 to disable feature # This time is in seconds, leave it at 0 if you want this feature disabled.
PlayerTeleportProtection = 0 PlayerTeleportProtection = 0
# If enabled, players respawn in town on different locations defined in zone.xml for given town. # If enabled, players respawn in town on different locations defined in zone.xml for given town.

View File

@ -130,7 +130,7 @@ public class FindPvP implements IBypassHandler
} }
activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ()); activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ());
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
if (!activeChar.isGM()) if (!activeChar.isGM())
{ {
activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME); activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME);

View File

@ -676,7 +676,8 @@ public final class L2PcInstance extends L2Playable
private final L2Request _request = new L2Request(this); private final L2Request _request = new L2Request(this);
// Used for protection after teleport // Used for protection after teleport
private long _protectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
@ -684,18 +685,6 @@ public final class L2PcInstance extends L2Playable
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events; private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events;
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
public boolean isSpawnProtected()
{
return _protectEndTime > GameTimeController.getInstance().getGameTicks();
}
private long _teleportProtectEndTime = 0;
public boolean isTeleportProtected()
{
return _teleportProtectEndTime > GameTimeController.getInstance().getGameTicks();
}
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
private long _recentFakeDeathEndTime = 0; private long _recentFakeDeathEndTime = 0;
@ -3877,24 +3866,24 @@ public final class L2PcInstance extends L2Playable
return item; return item;
} }
public void setProtection(boolean protect) public boolean isSpawnProtected()
{ {
if (Config.DEVELOPER && (protect || (_protectEndTime > 0))) return _spawnProtectEndTime > System.currentTimeMillis();
{ }
LOGGER.warning(getName() + ": Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
} public boolean isTeleportProtected()
{
_protectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0; return _teleportProtectEndTime > System.currentTimeMillis();
}
public void setSpawnProtection(boolean protect)
{
_spawnProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_SPAWN_PROTECTION * 1000) : 0;
} }
public void setTeleportProtection(boolean protect) public void setTeleportProtection(boolean protect)
{ {
if (Config.DEVELOPER && (protect || (_teleportProtectEndTime > 0))) _teleportProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_TELEPORT_PROTECTION * 1000) : 0;
{
LOGGER.warning(getName() + ": Tele Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
}
_teleportProtectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0;
} }
/** /**
@ -10285,7 +10274,7 @@ public final class L2PcInstance extends L2Playable
{ {
if (isSpawnProtected()) if (isSpawnProtected())
{ {
setProtection(false); setSpawnProtection(false);
if (!isInsideZone(ZoneId.PEACE)) if (!isInsideZone(ZoneId.PEACE))
{ {
sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS); sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS);

View File

@ -432,7 +432,7 @@ public class EnterWorld implements IClientIncomingPacket
if (Config.PLAYER_SPAWN_PROTECTION > 0) if (Config.PLAYER_SPAWN_PROTECTION > 0)
{ {
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
} }
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ()); activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());

View File

@ -21,7 +21,7 @@ DecreaseSkillOnDelevel = True
# Weight limit multiplier. Example: Setting this to 5 will give players 5x the normal weight limit. # Weight limit multiplier. Example: Setting this to 5 will give players 5x the normal weight limit.
# Default: 1 # Default: 1
AltWeightLimit = 2 AltWeightLimit = 1
# Run speed modifier. Example: Setting this to 5 will give players +5 to their running speed. # Run speed modifier. Example: Setting this to 5 will give players +5 to their running speed.
# Default: 0 # Default: 0
@ -753,15 +753,15 @@ UnstuckInterval = 300
# Default: 0 # Default: 0
TeleportWatchdogTimeout = 0 TeleportWatchdogTimeout = 0
# After a player teleports, this is the time the player is protected. # After a player spawns, this is the time the player is protected.
# This time is in seconds, leave it at 0 if you want this feature disabled. # This time is in seconds, leave it at 0 if you want this feature disabled.
# Retail (Since GE): 600 (10 minutes) # Retail (Since GE): 600 (10 minutes)
# Default: 600 # Default: 600
PlayerSpawnProtection = 600 PlayerSpawnProtection = 600
# Teleport spawn protection time. It will protect the player in the # After a player teleports, this is the time the player is protected.
# teleport spawn for the given time. 0 to disable feature # This time is in seconds, leave it at 0 if you want this feature disabled.
PlayerTeleportProtection = 30 PlayerTeleportProtection = 0
# If enabled, players respawn in town on different locations defined in zone.xml for given town. # If enabled, players respawn in town on different locations defined in zone.xml for given town.
# If disabled the first spawn location from zone.xml is used. # If disabled the first spawn location from zone.xml is used.

View File

@ -130,7 +130,7 @@ public class FindPvP implements IBypassHandler
} }
activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ()); activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ());
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
if (!activeChar.isGM()) if (!activeChar.isGM())
{ {
activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME); activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME);

View File

@ -688,21 +688,10 @@ public final class L2PcInstance extends L2Playable
private L2ItemInstance _boltItem; private L2ItemInstance _boltItem;
// Used for protection after teleport // Used for protection after teleport
private long _protectEndTime = 0; private long _spawnProtectEndTime = 0;
private L2ItemInstance _lure = null;
public boolean isSpawnProtected()
{
return _protectEndTime > GameTimeController.getInstance().getGameTicks();
}
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
public boolean isTeleportProtected() private L2ItemInstance _lure = null;
{
return _teleportProtectEndTime > GameTimeController.getInstance().getGameTicks();
}
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
private long _recentFakeDeathEndTime = 0; private long _recentFakeDeathEndTime = 0;
@ -3846,32 +3835,28 @@ public final class L2PcInstance extends L2Playable
return item; return item;
} }
/** public boolean isSpawnProtected()
* Set _protectEndTime according settings.
* @param protect
*/
public void setProtection(boolean protect)
{ {
if (Config.DEVELOPER && (protect || (_protectEndTime > 0))) return _spawnProtectEndTime > System.currentTimeMillis();
{ }
LOGGER.warning(getName() + ": Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
} public boolean isTeleportProtected()
{
_protectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0; return _teleportProtectEndTime > System.currentTimeMillis();
}
public void setSpawnProtection(boolean protect)
{
_spawnProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_SPAWN_PROTECTION * 1000) : 0;
} }
public void setTeleportProtection(boolean protect) public void setTeleportProtection(boolean protect)
{ {
if (Config.DEVELOPER && (protect || (_teleportProtectEndTime > 0))) _teleportProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_TELEPORT_PROTECTION * 1000) : 0;
{
LOGGER.warning(getName() + ": Tele Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
}
_teleportProtectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0;
} }
/** /**
* Set protection from agro mobs when getting up from fake death, according settings. * Set protection from aggro mobs when getting up from fake death, according settings.
* @param protect * @param protect
*/ */
public void setRecentFakeDeath(boolean protect) public void setRecentFakeDeath(boolean protect)
@ -10738,7 +10723,7 @@ public final class L2PcInstance extends L2Playable
{ {
if (isSpawnProtected()) if (isSpawnProtected())
{ {
setProtection(false); setSpawnProtection(false);
if (!isInsideZone(ZoneId.PEACE)) if (!isInsideZone(ZoneId.PEACE))
{ {
sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS); sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS);

View File

@ -437,7 +437,7 @@ public class EnterWorld implements IClientIncomingPacket
if (Config.PLAYER_SPAWN_PROTECTION > 0) if (Config.PLAYER_SPAWN_PROTECTION > 0)
{ {
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
} }
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ()); activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());

View File

@ -664,14 +664,14 @@ UnstuckInterval = 300
# Default: 0 # Default: 0
TeleportWatchdogTimeout = 0 TeleportWatchdogTimeout = 0
# After a player teleports, this is the time the player is protected. # After a player spawns, this is the time the player is protected.
# This time is in seconds, leave it at 0 if you want this feature disabled. # This time is in seconds, leave it at 0 if you want this feature disabled.
# Retail (Since GE): 600 (10 minutes) # Retail (Since GE): 600 (10 minutes)
# Default: 600 # Default: 600
PlayerSpawnProtection = 600 PlayerSpawnProtection = 600
# Teleport spawn protection time. It will protect the player in the # After a player teleports, this is the time the player is protected.
# teleport spawn for the given time. 0 to disable feature # This time is in seconds, leave it at 0 if you want this feature disabled.
PlayerTeleportProtection = 0 PlayerTeleportProtection = 0
# If enabled, players respawn in town on different locations defined in zone.xml for given town. # If enabled, players respawn in town on different locations defined in zone.xml for given town.

View File

@ -130,7 +130,7 @@ public class FindPvP implements IBypassHandler
} }
activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ()); activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ());
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
if (!activeChar.isGM()) if (!activeChar.isGM())
{ {
activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME); activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME);

View File

@ -668,7 +668,8 @@ public final class L2PcInstance extends L2Playable
private final L2Request _request = new L2Request(this); private final L2Request _request = new L2Request(this);
// Used for protection after teleport // Used for protection after teleport
private long _protectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
@ -676,18 +677,6 @@ public final class L2PcInstance extends L2Playable
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events; private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events;
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
public boolean isSpawnProtected()
{
return _protectEndTime > GameTimeController.getInstance().getGameTicks();
}
private long _teleportProtectEndTime = 0;
public boolean isTeleportProtected()
{
return _teleportProtectEndTime > GameTimeController.getInstance().getGameTicks();
}
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
private long _recentFakeDeathEndTime = 0; private long _recentFakeDeathEndTime = 0;
@ -3854,24 +3843,24 @@ public final class L2PcInstance extends L2Playable
return item; return item;
} }
public void setProtection(boolean protect) public boolean isSpawnProtected()
{ {
if (Config.DEVELOPER && (protect || (_protectEndTime > 0))) return _spawnProtectEndTime > System.currentTimeMillis();
{ }
LOGGER.warning(getName() + ": Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
} public boolean isTeleportProtected()
{
_protectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0; return _teleportProtectEndTime > System.currentTimeMillis();
}
public void setSpawnProtection(boolean protect)
{
_spawnProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_SPAWN_PROTECTION * 1000) : 0;
} }
public void setTeleportProtection(boolean protect) public void setTeleportProtection(boolean protect)
{ {
if (Config.DEVELOPER && (protect || (_teleportProtectEndTime > 0))) _teleportProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_TELEPORT_PROTECTION * 1000) : 0;
{
LOGGER.warning(getName() + ": Tele Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
}
_teleportProtectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0;
} }
/** /**
@ -10216,7 +10205,7 @@ public final class L2PcInstance extends L2Playable
{ {
if (isSpawnProtected()) if (isSpawnProtected())
{ {
setProtection(false); setSpawnProtection(false);
if (!isInsideZone(ZoneId.PEACE)) if (!isInsideZone(ZoneId.PEACE))
{ {
sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS); sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS);

View File

@ -431,7 +431,7 @@ public class EnterWorld implements IClientIncomingPacket
if (Config.PLAYER_SPAWN_PROTECTION > 0) if (Config.PLAYER_SPAWN_PROTECTION > 0)
{ {
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
} }
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ()); activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());

View File

@ -664,14 +664,14 @@ UnstuckInterval = 300
# Default: 0 # Default: 0
TeleportWatchdogTimeout = 0 TeleportWatchdogTimeout = 0
# After a player teleports, this is the time the player is protected. # After a player spawns, this is the time the player is protected.
# This time is in seconds, leave it at 0 if you want this feature disabled. # This time is in seconds, leave it at 0 if you want this feature disabled.
# Retail (Since GE): 600 (10 minutes) # Retail (Since GE): 600 (10 minutes)
# Default: 600 # Default: 600
PlayerSpawnProtection = 600 PlayerSpawnProtection = 600
# Teleport spawn protection time. It will protect the player in the # After a player teleports, this is the time the player is protected.
# teleport spawn for the given time. 0 to disable feature # This time is in seconds, leave it at 0 if you want this feature disabled.
PlayerTeleportProtection = 0 PlayerTeleportProtection = 0
# If enabled, players respawn in town on different locations defined in zone.xml for given town. # If enabled, players respawn in town on different locations defined in zone.xml for given town.

View File

@ -130,7 +130,7 @@ public class FindPvP implements IBypassHandler
} }
activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ()); activeChar.teleToLocation((mostPvP.getX() + Rnd.get(300)) - 150, (mostPvP.getY() + Rnd.get(300)) - 150, mostPvP.getZ());
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
if (!activeChar.isGM()) if (!activeChar.isGM())
{ {
activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME); activeChar.setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_PVP_TIME);

View File

@ -668,7 +668,8 @@ public final class L2PcInstance extends L2Playable
private final L2Request _request = new L2Request(this); private final L2Request _request = new L2Request(this);
// Used for protection after teleport // Used for protection after teleport
private long _protectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
@ -676,18 +677,6 @@ public final class L2PcInstance extends L2Playable
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events; private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events;
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
public boolean isSpawnProtected()
{
return _protectEndTime > GameTimeController.getInstance().getGameTicks();
}
private long _teleportProtectEndTime = 0;
public boolean isTeleportProtected()
{
return _teleportProtectEndTime > GameTimeController.getInstance().getGameTicks();
}
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
private long _recentFakeDeathEndTime = 0; private long _recentFakeDeathEndTime = 0;
@ -3854,24 +3843,24 @@ public final class L2PcInstance extends L2Playable
return item; return item;
} }
public void setProtection(boolean protect) public boolean isSpawnProtected()
{ {
if (Config.DEVELOPER && (protect || (_protectEndTime > 0))) return _spawnProtectEndTime > System.currentTimeMillis();
{ }
LOGGER.warning(getName() + ": Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
} public boolean isTeleportProtected()
{
_protectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_SPAWN_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0; return _teleportProtectEndTime > System.currentTimeMillis();
}
public void setSpawnProtection(boolean protect)
{
_spawnProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_SPAWN_PROTECTION * 1000) : 0;
} }
public void setTeleportProtection(boolean protect) public void setTeleportProtection(boolean protect)
{ {
if (Config.DEVELOPER && (protect || (_teleportProtectEndTime > 0))) _teleportProtectEndTime = protect ? System.currentTimeMillis() + (Config.PLAYER_TELEPORT_PROTECTION * 1000) : 0;
{
LOGGER.warning(getName() + ": Tele Protection " + (protect ? "ON " + (GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND)) : "OFF") + " (currently " + GameTimeController.getInstance().getGameTicks() + ")");
}
_teleportProtectEndTime = protect ? GameTimeController.getInstance().getGameTicks() + (Config.PLAYER_TELEPORT_PROTECTION * GameTimeController.TICKS_PER_SECOND) : 0;
} }
/** /**
@ -10216,7 +10205,7 @@ public final class L2PcInstance extends L2Playable
{ {
if (isSpawnProtected()) if (isSpawnProtected())
{ {
setProtection(false); setSpawnProtection(false);
if (!isInsideZone(ZoneId.PEACE)) if (!isInsideZone(ZoneId.PEACE))
{ {
sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS); sendPacket(SystemMessageId.YOU_ARE_NO_LONGER_PROTECTED_FROM_AGGRESSIVE_MONSTERS);

View File

@ -431,7 +431,7 @@ public class EnterWorld implements IClientIncomingPacket
if (Config.PLAYER_SPAWN_PROTECTION > 0) if (Config.PLAYER_SPAWN_PROTECTION > 0)
{ {
activeChar.setProtection(true); activeChar.setSpawnProtection(true);
} }
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ()); activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());