/**
* Updates and clears PvP flag of {@link L2PcInstance} after specified time.
* @author Tryskell, Hasha
*/
public final class PvpFlagTaskManager implements Runnable
{
private final Map<L2PcInstance, Long> _players = new ConcurrentHashMap<>();
public static final PvpFlagTaskManager getInstance()
{
return SingletonHolder._instance;
}
protected PvpFlagTaskManager()
{
// Run task each second.
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 1000, 1000);
}
/**
* Adds {@link L2PcInstance} to the PvpFlagTask.
* @param player : L2PcInstance to be added and checked.
* @param time : Time in ms, after which the PvP flag is removed.
*/
public final void add(L2PcInstance player, long time)
{
_players.put(player, System.currentTimeMillis() + time);
}
/**
* Removes {@link L2PcInstance} from the PvpFlagTask.
* @param player : {@link L2PcInstance} to be removed.
*/
public final void remove(L2PcInstance player)
{
_players.remove(player);
}
@Override
public final void run()
{
// List is empty, skip.
if (_players.isEmpty())
return;
// Get current time.
final long currentTime = System.currentTimeMillis();
// Loop all players.
for (Iterator<Map.Entry<L2PcInstance, Long>> iterator = _players.entrySet().iterator(); iterator.hasNext();)
{
// Get entry of current iteration.
Map.Entry<L2PcInstance, Long> entry = iterator.next();
// Get time left and check.
final long timeLeft = entry.getValue();
if (_players.isInsideZone(ZoneId.BOSS))
entry.setValue(System.currentTimeMillis() + Config.PVP_NORMAL_TIME);
// Time is running out, clear PvP flag and remove from list.
if (currentTime > timeLeft)
{
entry.getKey().updatePvPFlag(0);
iterator.remove();
}
// Time almost runned out, update to blinking PvP flag.
else if (currentTime > (timeLeft - 5000))
entry.getKey().updatePvPFlag(2);
// Time didn't run out, keep PvP flag.
else
entry.getKey().updatePvPFlag(1);
}
}
private static class SingletonHolder
{
protected static final PvpFlagTaskManager _instance = new PvpFlagTaskManager();
}
}
Modificar mensaje
if you are selling something, you have to have both updated, right? people see forum first, not website.
if you are selling something, you have to have both updated, right? people see forum first, not website.
⏳ L2Elixir Open Beta goes live in less than 4 hours!
This Saturday, November 15th at 21:00 (UTC +2), the gates open for our biggest testing phase!
🔥 Don’t miss the first 30 minutes — exclusive rewards await!
A special NPC, “The Judge”, will appear in Giran, offering unique bonuses to early participants:
🏅 Open Beta Rewards:
- The first 2 players who talk to The Judge → Premium Account for Launch
- Another 2 random players who interact → Premium Account
- Everyone who speaks to the NPC within the first 30 minutes → Legendary Starter Pack for all characters on launch day (Nov 28th, 2025)
📌 The NPC will spawn exactly at 21:00 (UTC+2).
⏱️ Follow the countdown on our website — the hype is real!
Create your account & download the Updater to be ready!
🔗 https://l2elixir.org/connect/
💬 Discord: https://discord.gg/5ydPHvhbxs
Question
Miracles
Script if someone need it, make all GrandBoss Chaotic Zone http://www.lineager.su/always-pvp-status-in-boss-zone/ .
Someone know why got this error? Thanks guys.
Error
PvpFlagTaskManager.java
/** * Updates and clears PvP flag of {@link L2PcInstance} after specified time. * @author Tryskell, Hasha */ public final class PvpFlagTaskManager implements Runnable { private final Map<L2PcInstance, Long> _players = new ConcurrentHashMap<>(); public static final PvpFlagTaskManager getInstance() { return SingletonHolder._instance; } protected PvpFlagTaskManager() { // Run task each second. ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 1000, 1000); } /** * Adds {@link L2PcInstance} to the PvpFlagTask. * @param player : L2PcInstance to be added and checked. * @param time : Time in ms, after which the PvP flag is removed. */ public final void add(L2PcInstance player, long time) { _players.put(player, System.currentTimeMillis() + time); } /** * Removes {@link L2PcInstance} from the PvpFlagTask. * @param player : {@link L2PcInstance} to be removed. */ public final void remove(L2PcInstance player) { _players.remove(player); } @Override public final void run() { // List is empty, skip. if (_players.isEmpty()) return; // Get current time. final long currentTime = System.currentTimeMillis(); // Loop all players. for (Iterator<Map.Entry<L2PcInstance, Long>> iterator = _players.entrySet().iterator(); iterator.hasNext();) { // Get entry of current iteration. Map.Entry<L2PcInstance, Long> entry = iterator.next(); // Get time left and check. final long timeLeft = entry.getValue(); if (_players.isInsideZone(ZoneId.BOSS)) entry.setValue(System.currentTimeMillis() + Config.PVP_NORMAL_TIME); // Time is running out, clear PvP flag and remove from list. if (currentTime > timeLeft) { entry.getKey().updatePvPFlag(0); iterator.remove(); } // Time almost runned out, update to blinking PvP flag. else if (currentTime > (timeLeft - 5000)) entry.getKey().updatePvPFlag(2); // Time didn't run out, keep PvP flag. else entry.getKey().updatePvPFlag(1); } } private static class SingletonHolder { protected static final PvpFlagTaskManager _instance = new PvpFlagTaskManager(); } } Modificar mensaje3 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now