/**
* 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
You mentioned that you've fixed the issues, but how it would be ready for a live server when only a few fixes have been shared. It would be helpful and appreciated if you could share more information about the fixes or the process. It's always great when everyone can collaborate and learn from each other.
If you choose not to share this information, it's unreasonable to expect others to do the same.
I, along with @Tryskell(I believe), am completely fed up with the arrogance of these so-called "developers." They perform half-baked fixes on critical issues and have the audacity to call it a major accomplishment.
You all deserve your fate!
Most L2 developers are not willing to work remotely through Team Viewer or AnyDesk due to the low income and their moody nature. Therefore, it is highly unlikely to find an L2 developer willing to work under these conditions.
Hello all,
Looking for a developer who would be able working on my new project. Only experienced can apply for this paid job. There will be no direct access to my sources. You will work though teamviewer or anydesk. Interested can contact me here or through skype: Waleess.
Kind regards, Wales
Is the latest version suitable for live servers? Have you heard stories that aren't what you tell me? Na 401 tem travamentos bug or auto consumption of memory and CPU usage is constant. I fixed those things in my aCis.
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
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.