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

    • 🌍 https://l2origins.org/ 🛡️ LINEAGE II ORIGINS — SEASON 1 🛡️ 🌑 High Five Classic | True Old-School Experience 🌑 ⚠️ Opening on March 6th at 16:00 Welcome back to the origins of Lineage II. ⚔️ ABOUT THE SERVER Lineage2 Origins is built for players who miss the true retail feeling. Classic progression, real challenges, fair competition — enhanced only with carefully selected QoL features, never breaking the original gameplay. 🌿 PHASED GEAR PROGRESSION 🟢 Month 1: Vesper max 🟢 Month 2: Vorpal unlocked 🟢 Month 3+: Top-grade & Elegia released 🚫 NO AUTO-FARM ✔️ External auto-clicker allowed (1 per client, download page only) ❌ Bots & illegal automation forbidden 🛡️ Strong anti-bot + captcha system ⚠️ AFK players will be punished — stay active or logout 📊 RATES & CORE SETTINGS 🔹 Adena: x5 🔹 Drop / Spoil: x5 🔹 Skill EXP: x15 🔹 Max Windows: 2 per PC 🔹 Subclass: Lv 85 (no quest required) 🔹 Party Level Diff: 30 (55–85) 🔹 No custom items (armors / weapons / jewelry) 🔥 FEATURES ✨ Global & Raid Teleport ✨ NPC Buffer (34 buffs) ✨ Auto Events & PvP Zones ✨ Ranking & Clan Progression ✨ GM Shop & Premium System ✨ All-In-One Community Board ✨ Party & Solo Instances ✨ Siege & Territory War Rewards ✨ RaidBoss Kill Rewards ✨ Lucky Creature Event ✨ Daily Login Rewards ✨ Advanced DDoS Protection & Backups ⚔️ ENCHANTMENTS 🔸 Safe: +3 🔸 Max: +12 (Month 2: +14 | Month 3: +16) 🔸 Blessed: 50% (Premium 65%) 🔸 Normal: 45% (Premium 60%) 🏟️ OLYMPIAD 🔹 Max Enchant: +6 🔹 Start Players: 4 🔹 Period: 1st & 15th 🏰 SIEGE & TW 🔹 Siege Time: 16:00 & 20:00 🔹 Territory War: 20:00 🔹 Max Wards: 3 per Castle 🌌 Lineage2 Origins Fair. Competitive. Nostalgic. A true return to the origins of Lineage II.
    • Bastante confiable, ya trabaje en varios proyectos con el y la verdad te da confianza que hoy en dia poca gente hay asi lo  recomiendo 100%  Gracias por todo amigo ! seguiremos trabajando juntos segurisimamente! 
    • Arcana Mace Acumen +6 : 200 Euro    Leave a message here or better on Discord : grandmaster1991   Discord : GrandMaster#1689  
    • overbooked till 3 of march!! Not accepting more works for now, everything after 3 of match!
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..