Jump to content
  • 0

Anti AFK TvT L2jacis or L2jfrozen


Question

7 answers to this question

Recommended Posts

  • 0
Posted (edited)
Index: java/com/l2jserver/gameserver/model/actor/L2Character.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/L2Character.java	(revision 2)
+++ java/com/l2jserver/gameserver/model/actor/L2Character.java	(working copy)
 /**
  * Mother class of all character objects of the world (PC, NPC...)<br>
  * L2Character:<br>
@@ -4420,6 +4420,11 @@
 		final int curY = super.getY();
 		final int curZ = super.getZ();
 		
+		if (isPlayer())
+		{
+			getActingPlayer().setLastXY(curX, curY);
+		}
+		
 		// Calculate distance (dx,dy) between current position and destination
 		// TODO: improve Z axis move/follow support when dx,dy are small compared to dz
 		double dx = (x - curX);
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java	(revision 2)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -14483,4 +14514,47 @@
 		return _hasCharmOfCourage;
 		
 	}
+	
+	final int[] _lastXY = new int[2];
+	
+	public void setLastXY(int x, int y)
+	{
+		_lastXY[0] = x;
+		_lastXY[1] = y;
+	}
+	
+	public boolean isAfk()
+	{
+		return (getX() == _lastXY[0]) && (getY() == _lastXY[1]);
+	}
+	
+	/** Methods to put inside your event when it start and it stop */
+	
+	Future<?> _task;
+	
+	public void stopAfk()
+	{
+		if (_task != null)
+		{
+			_task.cancel(true);
+			_task = null;
+		}
+	}
+	
+	public void startAfk()
+	{
+		stopAfk();
+
+		_task = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() ->
+		{
+			L2World.getInstance().getPlayers().stream().filter(p -> p.isAfk()).forEach(p ->
+			{
+				p.sendMessage("You have been detected as afk.");
+				// Tasks here.
+			});
+			
+		}, 60000, 60000);
+	}
 }
\ No newline at end of file

 

I made you a short code that you can use. 

 

*Note: Make sure to put your boolean method or what you have that checks if player is inside event. Ex. p -> p.isAfk() && p.isInEvent()

Edited by Kara`
  • 0
Posted
1 hour ago, Kara` said:

Index: java/com/l2jserver/gameserver/model/actor/L2Character.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/L2Character.java	(revision 2)
+++ java/com/l2jserver/gameserver/model/actor/L2Character.java	(working copy)
 /**
  * Mother class of all character objects of the world (PC, NPC...)<br>
  * L2Character:<br>
@@ -4420,6 +4420,11 @@
 		final int curY = super.getY();
 		final int curZ = super.getZ();
 		
+		if (isPlayer())
+		{
+			getActingPlayer().setLastXY(curX, curY);
+		}
+		
 		// Calculate distance (dx,dy) between current position and destination
 		// TODO: improve Z axis move/follow support when dx,dy are small compared to dz
 		double dx = (x - curX);
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java	(revision 2)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -14483,4 +14514,47 @@
 		return _hasCharmOfCourage;
 		
 	}
+	
+	final int[] _lastXY = new int[2];
+	
+	public void setLastXY(int x, int y)
+	{
+		_lastXY[0] = x;
+		_lastXY[1] = y;
+	}
+	
+	public boolean isAfk()
+	{
+		return (getX() == _lastXY[0]) && (getY() == _lastXY[1]);
+	}
+	
+	/** Methods to put inside your event when it start and it stop */
+	
+	Future<?> _task;
+	
+	public void stopAfk()
+	{
+		if (_task != null)
+		{
+			_task.cancel(true);
+			_task = null;
+		}
+	}
+	
+	public void startAfk()
+	{
+		stopAfk();
+
+		_task = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() ->
+		{
+			L2World.getInstance().getPlayers().stream().filter(p -> p.isAfk()).forEach(p ->
+			{
+				p.sendMessage("You have been detected as afk.");
+				// Tasks here.
+			});
+			
+		}, 60000, 60000);
+	}
 }
\ No newline at end of file

 

I made you a short code that you can use. 

 

*Note: Make sure to put your boolean method or what you have that checks if player is inside event. Ex. p -> p.isAfk() && p.isInEvent()

I'm extremely grateful Kara, just get me a single question, I'm using Acis 374, it has no PcInstance.java I believe I have been replaced by Player.java and also does not have ThreadPoolManager.java only ThreadPool.java and also does not have L2Character .java, I believe it has been replaced by Creature.java, if I am wrong could you give me a light? because that slows me down when adding the mod.
I tried putting on the cited files and had errors on the ThreadPool.getInstance ().
Follow the images below;

ThreadPool.java https://imgur.com/r7Kcl9a

Player.java : https://imgur.com/mptTG0A

Creature.java : https://imgur.com/96gP8ao

 

  • 0
Posted

ThreadPool is not using getInstance() anymore - remove it. Simple search over eclipse with ThreadPool would give you an solution. 

  • 0
Posted

if you store somewhere all the players that are in the tvt , instead of World.getInstance().... use the tvt collection about this loop. as main anti-afk this code is good. You can add more conditions and not only checking the location to be more secure 

  • 0
Posted
On 2/28/2022 at 12:31 AM, Kusaty said:

Is work on L2JFROZEN?

Adaption won't be hard for any pack. Also, please consider not to undig old topics. Feel free to create a new one if you struggle.

Guest
This topic is now closed to further replies.


  • Posts

    • Wtb full account or items on l2 warland 
    • https://discord.gg/k53SZ4DM5z   Interlude Client L2Old Pride is a L2 Pride Interlude Based All functional skills (Not archer/mage server)   L2Old Pride Helper (Works like Woundrous Cubic) https://imgur.com/iYqmHQY Farm Zones: Cave of Trials and Elven Ruins (Chaotic) Olympiads: Every 15 days Various Cosmetic Items https://imgur.com/uoeU6Jw https://imgur.com/oCS2Zed PvP Zone: Gludin Village (No-Parties, Disguised) More than 100 new Skills https://imgur.com/6RaPsQV Max Level: 90 https://imgur.com/z4QVJKZ Gaining Xp by PVP https://imgur.com/LRqI31T Purchasable S-grade items +10 or +20 with random chance to enchant +5 Purchasable Custom Items Depends on Tier Mysterious Merchants https://imgur.com/2ZwWyPH Auto Enchant Via PvPing (with low chance) Custom Raid Bosses Siege Every Weekend (Aden, Rune, Giran) Autofarm / Drop Tracker https://imgur.com/Vz3rha6   RATES: • Start Level 80 • Max level 90  • EXP: 5000x • SP: 5000x • ADENA 6000x   ENCHANT: • Maximum enchant S Grade Items: +35. • Maximum enchant Unique/Epic Items: +25. • Maximum enchant Legendary Items: +18. • Maximum enchant Relic Items: +14. •Descriptions for rate at scrolls!   EVENTS: • TEAMS vs TEAMS • CAPTURE THE FLAG • DOMINATION • DEATH MATCH • DICE OF DEATH • CHAOTIC ZONE   OTHERS: Assistance system in pvps. Where support classes are enabled to receive pvp with a low chance, for supporting a party member during pvp. •  /sit to regen HP/MP/CP • Custom Shots Glows https://imgur.com/FLK0DmR • Achievements System • Daily Tasks System • Monthly Tasks System   CUSTOM ARMORS SETS Dread Armor/Titanium Armor Pride Armor Rykros Armor https://imgur.com/SPxoQp1   CUSTOM WEAPONS SETS Unique Weapons Pride Weapons Legendary Weapons Relic Weapons https://imgur.com/kOHNXhS   CUSTOM ACCESSORIES Standard Superior Legendary https://imgur.com/zPqNiiX   CUSTOM JEWELS/TATTOO Legendary Nightmarish https://imgur.com/gcqS28P There are many more features that you will only understand by playing and following. Beta testing server is currently open. Follow us on our discord and join our server to test it.
    • You shouldn't use rev 382, not sure why everyone keep using that.   I don't make changesets for fun, I don't make new revisions for nothing.   Follow the revisions.
    • Your issue isn't related to geoengine at all (as always), rev 410 got improved water movement management.
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock