Jump to content
  • 0

acis stuck character


Question

Posted (edited)

Hello , I have a serious problem that needs fixing but it's hard because it is a problem without any error in my gamserver console.

 

So, many times (random) when a character (tested with mage if that makes any sense) kills mobs , he gets stucked.

What that means?

He can see mobs moving and other characters. He can't write anything or do any action. Other players can see him (or kill him,etc).

The only way to unstuck is CTRL+ALT+DELETE.

 

No errors on gameserver , that's the worst.

version: 368

 

Any help please , to what can be the problem?

Edited by alcohol

Recommended Posts

  • 0
Posted
6 minutes ago, melron said:

when the player does NOT stuck, the drops when killing that mob, do they have some delay?

 

Just checked it and no it's normal , immediately loot normal. It is so strange and important as well. The bad is that I cannot test it because I don't even know when will I stuck , itslike random.

I tried a "debugging" now to see if character is movementDisabled or null , but I don't think so. I try everything , cant' come with a solution :(

  • 0
Posted (edited)

Try to open ur server in a different pc and tell me what will happen. You got a similar prob like one guy had today. Its like packet loss thing but you have to test it

Edited by melron
  • 0
Posted
1 minute ago, melron said:

Try to open ur server in a different pc and tell me what will happen. You got a similar prob like one guy had today. Its like packet loss thing but you have to test it

 

Server is hosted on VPS machine with excellent connection speed , so this is not the problem. So it is already on different computer. It was from the beginning. Packet loss yes maybe(?) but how can I test this to see wtf is going on?

  • 0
Posted

i didnt say anything related to connection speed. Can you check what i told you? just open your server from your pc . not ur vps. 

  • 0
Posted
3 minutes ago, melron said:

i didnt say anything related to connection speed. Can you check what i told you? just open your server from your pc . not ur vps. 

 

Ok i am going to do it now and I will give a feedback.

What should I see? if problem is happening (or not) in localhost?

  • 0
Posted
Just now, alcohol said:

 

Ok i am going to do it now and I will give a feedback.

What should I see? if problem is happening (or not) in localhost?

exactly

  • 0
Posted (edited)

You can try to dump ClientStats. I'm interested by your results. Do that on a saved project in order to be able to revert it.

 

You can also tweak MMO values under Config.java, search for keyword "hidden". Edit whatever based on packets count, until you find some good values.

 

### Eclipse Workspace Patch 1.0
#P aCis_gameserver
Index: java/net/sf/l2j/gameserver/network/ClientStats.java
===================================================================
--- java/net/sf/l2j/gameserver/network/ClientStats.java	(revision 1055)
+++ java/net/sf/l2j/gameserver/network/ClientStats.java	(nonexistent)
@@ -1,212 +0,0 @@
-package net.sf.l2j.gameserver.network;
-
-import net.sf.l2j.Config;
-
-public class ClientStats
-{
-	public int processedPackets = 0;
-	public int droppedPackets = 0;
-	public int unknownPackets = 0;
-	public int totalQueueSize = 0;
-	public int maxQueueSize = 0;
-	public int totalBursts = 0;
-	public int maxBurstSize = 0;
-	public int shortFloods = 0;
-	public int longFloods = 0;
-	public int totalQueueOverflows = 0;
-	public int totalUnderflowExceptions = 0;
-	
-	private final int[] _packetsInSecond;
-	private long _packetCountStartTick = 0;
-	private int _head;
-	private int _totalCount = 0;
-	
-	private int _floodsInMin = 0;
-	private long _floodStartTick = 0;
-	private int _unknownPacketsInMin = 0;
-	private long _unknownPacketStartTick = 0;
-	private int _overflowsInMin = 0;
-	private long _overflowStartTick = 0;
-	private int _underflowReadsInMin = 0;
-	private long _underflowReadStartTick = 0;
-	
-	private volatile boolean _floodDetected = false;
-	private volatile boolean _queueOverflowDetected = false;
-	
-	private final int BUFFER_SIZE;
-	
-	public ClientStats()
-	{
-		BUFFER_SIZE = Config.CLIENT_PACKET_QUEUE_MEASURE_INTERVAL;
-		_packetsInSecond = new int[BUFFER_SIZE];
-		_head = BUFFER_SIZE - 1;
-	}
-	
-	/**
-	 * @return true if incoming packet need to be dropped.
-	 */
-	protected final boolean dropPacket()
-	{
-		final boolean result = _floodDetected || _queueOverflowDetected;
-		if (result)
-			droppedPackets++;
-		return result;
-	}
-	
-	/**
-	 * @param queueSize
-	 * @return true if flood detected first and ActionFailed packet need to be sent. Later during flood returns true (and send ActionFailed) once per second.
-	 */
-	protected final boolean countPacket(int queueSize)
-	{
-		processedPackets++;
-		totalQueueSize += queueSize;
-		if (maxQueueSize < queueSize)
-			maxQueueSize = queueSize;
-		if (_queueOverflowDetected && queueSize < 2)
-			_queueOverflowDetected = false;
-		
-		return countPacket();
-	}
-	
-	/**
-	 * Counts unknown packets.
-	 * @return true if threshold is reached.
-	 */
-	protected final boolean countUnknownPacket()
-	{
-		unknownPackets++;
-		
-		final long tick = System.currentTimeMillis();
-		if (tick - _unknownPacketStartTick > 60000)
-		{
-			_unknownPacketStartTick = tick;
-			_unknownPacketsInMin = 1;
-			return false;
-		}
-		
-		_unknownPacketsInMin++;
-		return _unknownPacketsInMin > Config.CLIENT_PACKET_QUEUE_MAX_UNKNOWN_PER_MIN;
-	}
-	
-	/**
-	 * Counts burst length.
-	 * @param count - current number of processed packets in burst
-	 * @return true if execution of the queue need to be aborted.
-	 */
-	protected final boolean countBurst(int count)
-	{
-		if (count > maxBurstSize)
-			maxBurstSize = count;
-		
-		if (count < Config.CLIENT_PACKET_QUEUE_MAX_BURST_SIZE)
-			return false;
-		
-		totalBursts++;
-		return true;
-	}
-	
-	/**
-	 * Counts queue overflows.
-	 * @return true if threshold is reached.
-	 */
-	protected final boolean countQueueOverflow()
-	{
-		_queueOverflowDetected = true;
-		totalQueueOverflows++;
-		
-		final long tick = System.currentTimeMillis();
-		if (tick - _overflowStartTick > 60000)
-		{
-			_overflowStartTick = tick;
-			_overflowsInMin = 1;
-			return false;
-		}
-		
-		_overflowsInMin++;
-		return _overflowsInMin > Config.CLIENT_PACKET_QUEUE_MAX_OVERFLOWS_PER_MIN;
-	}
-	
-	/**
-	 * Counts underflow exceptions.
-	 * @return true if threshold is reached.
-	 */
-	protected final boolean countUnderflowException()
-	{
-		totalUnderflowExceptions++;
-		
-		final long tick = System.currentTimeMillis();
-		if (tick - _underflowReadStartTick > 60000)
-		{
-			_underflowReadStartTick = tick;
-			_underflowReadsInMin = 1;
-			return false;
-		}
-		
-		_underflowReadsInMin++;
-		return _underflowReadsInMin > Config.CLIENT_PACKET_QUEUE_MAX_UNDERFLOWS_PER_MIN;
-	}
-	
-	/**
-	 * @return true if maximum number of floods per minute is reached.
-	 */
-	protected final boolean countFloods()
-	{
-		return _floodsInMin > Config.CLIENT_PACKET_QUEUE_MAX_FLOODS_PER_MIN;
-	}
-	
-	private final boolean longFloodDetected()
-	{
-		return (_totalCount / BUFFER_SIZE) > Config.CLIENT_PACKET_QUEUE_MAX_AVERAGE_PACKETS_PER_SECOND;
-	}
-	
-	/**
-	 * @return true if flood detected first and ActionFailed packet need to be sent. Later during flood returns true (and send ActionFailed) once per second.
-	 */
-	private final synchronized boolean countPacket()
-	{
-		_totalCount++;
-		final long tick = System.currentTimeMillis();
-		if (tick - _packetCountStartTick > 1000)
-		{
-			_packetCountStartTick = tick;
-			
-			// clear flag if no more flooding during last seconds
-			if (_floodDetected && !longFloodDetected() && _packetsInSecond[_head] < Config.CLIENT_PACKET_QUEUE_MAX_PACKETS_PER_SECOND / 2)
-				_floodDetected = false;
-			
-			// wrap head of the buffer around the tail
-			if (_head <= 0)
-				_head = BUFFER_SIZE;
-			_head--;
-			
-			_totalCount -= _packetsInSecond[_head];
-			_packetsInSecond[_head] = 1;
-			return _floodDetected;
-		}
-		
-		final int count = ++_packetsInSecond[_head];
-		if (!_floodDetected)
-		{
-			if (count > Config.CLIENT_PACKET_QUEUE_MAX_PACKETS_PER_SECOND)
-				shortFloods++;
-			else if (longFloodDetected())
-				longFloods++;
-			else
-				return false;
-			
-			_floodDetected = true;
-			if (tick - _floodStartTick > 60000)
-			{
-				_floodStartTick = tick;
-				_floodsInMin = 1;
-			}
-			else
-				_floodsInMin++;
-			
-			return true; // Return true only in the beginning of the flood
-		}
-		
-		return false;
-	}
-}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/network/L2GameClient.java
===================================================================
--- java/net/sf/l2j/gameserver/network/L2GameClient.java	(revision 1055)
+++ java/net/sf/l2j/gameserver/network/L2GameClient.java	(working copy)
@@ -67,7 +67,6 @@
 	protected ScheduledFuture<?> _cleanupTask = null;
 	
 	public GameCrypt _crypt;
-	private final ClientStats _stats;
 	
 	private boolean _isDetached = false;
 	
@@ -80,7 +79,6 @@
 		_state = GameClientState.CONNECTED;
 		_connectionStartTime = System.currentTimeMillis();
 		_crypt = new GameCrypt();
-		_stats = new ClientStats();
 		_packetQueue = new ArrayBlockingQueue<>(Config.CLIENT_PACKET_QUEUE_SIZE);
 		
 		_autoSaveInDB = ThreadPool.scheduleAtFixedRate(new AutoSaveTask(), 300000L, 900000L);
@@ -107,11 +105,6 @@
 		}
 	}
 	
-	public ClientStats getStats()
-	{
-		return _stats;
-	}
-	
 	public long getConnectionStartTime()
 	{
 		return _connectionStartTime;
@@ -635,17 +628,7 @@
 	 */
 	public boolean dropPacket()
 	{
-		if (_isDetached) // detached clients can't receive any packets
-			return true;
-		
-		// flood protection
-		if (getStats().countPacket(_packetQueue.size()))
-		{
-			sendPacket(ActionFailed.STATIC_PACKET);
-			return true;
-		}
-		
-		return getStats().dropPacket();
+		return _isDetached;
 	}
 	
 	/**
@@ -653,12 +636,6 @@
 	 */
 	public void onBufferUnderflow()
 	{
-		if (getStats().countUnderflowException())
-		{
-			_log.severe("Client " + toString() + " - Disconnected: Too many buffer underflow exceptions.");
-			closeNow();
-			return;
-		}
 		if (_state == GameClientState.CONNECTED) // in CONNECTED state kick client immediately
 		{
 			if (Config.PACKET_HANDLER_DEBUG)
@@ -672,12 +649,6 @@
 	 */
 	public void onUnknownPacket()
 	{
-		if (getStats().countUnknownPacket())
-		{
-			_log.severe("Client " + toString() + " - Disconnected: Too many unknown packets.");
-			closeNow();
-			return;
-		}
 		if (_state == GameClientState.CONNECTED) // in CONNECTED state kick client immediately
 		{
 			if (Config.PACKET_HANDLER_DEBUG)
@@ -692,45 +663,16 @@
 	 */
 	public void execute(ReceivablePacket<L2GameClient> packet)
 	{
-		if (getStats().countFloods())
-		{
-			_log.severe("Client " + toString() + " - Disconnected, too many floods:" + getStats().longFloods + " long and " + getStats().shortFloods + " short.");
-			closeNow();
-			return;
-		}
-		
 		if (!_packetQueue.offer(packet))
 		{
-			if (getStats().countQueueOverflow())
-			{
-				_log.severe("Client " + toString() + " - Disconnected, too many queue overflows.");
-				closeNow();
-			}
-			else
-				sendPacket(ActionFailed.STATIC_PACKET);
-			
+			sendPacket(ActionFailed.STATIC_PACKET);
 			return;
 		}
 		
 		if (_queueLock.isLocked()) // already processing
 			return;
 		
-		try
-		{
-			if (_state == GameClientState.CONNECTED && getStats().processedPackets > 3)
-			{
-				if (Config.PACKET_HANDLER_DEBUG)
-					_log.severe("Client " + toString() + " - Disconnected, too many packets in non-authed state.");
-				
-				closeNow();
-				return;
-			}
-			
-			ThreadPool.execute(this);
-		}
-		catch (RejectedExecutionException e)
-		{
-		}
+		ThreadPool.execute(this);
 	}
 	
 	@Override
@@ -741,7 +683,6 @@
 		
 		try
 		{
-			int count = 0;
 			ReceivablePacket<L2GameClient> packet;
 			while (true)
 			{
@@ -763,10 +704,6 @@
 				{
 					_log.severe("Exception during execution " + packet.getClass().getSimpleName() + ", client: " + toString() + "," + e.getMessage());
 				}
-				
-				count++;
-				if (getStats().countBurst(count))
-					return;
 			}
 		}
 		finally

 

Edited by Tryskell
  • 0
Posted
1 hour ago, melron said:

Try to open ur server in a different pc and tell me what will happen. You got a similar prob like one guy had today. Its like packet loss thing but you have to test it

 

I hit mobs in localhost more than 15 minutes and nothing happened. Propably it's ok on local (even i am not sure, its so hard )

 

@Tryskell should i test it local , vps or it doesnt matter? what should i see?

 

PS: maybe movement is a part of this bug? because a friend stucked without even hitting a mob before some minutes. random stuck while running. (same bug , ctrl+alt+delete only way to exit)

  • 0
Posted (edited)

If things like chatting, playing with inventory items and other actions are frozen, it simply means packets are dropped, in one way or another (being client, or packets of the client).

 

Got nothing related to movement.

Edited by Tryskell
  • 0
Posted
6 minutes ago, Tryskell said:

If things like chatting, playing with inventory items and other actions are frozen, it simply means packets are dropped, in one way or another (being client, or packets of the client).

 

Got nothing related to movement.

 

Okay it is just strange because some stucks happened when even not hitting mobs.

 

What are the reccomendations for fixing the problem? (completely)

  • 0
Posted (edited)
29 minutes ago, alcohol said:

 

Okay it is just strange because some stucks happened when even not hitting mobs.

 

What are the reccomendations for fixing the problem? (completely)

 

- Don't use a customized pack, or review whatever you added. I'm not Harry Potter (even if I got black glasses and a scar on the fronthead IRL) and can't help you if you edited stuff.

- Don't use any Guard-like, they are mostly shitty.

- Drop ClientStats or tweak hidden Config related to MMOCore / ClientStats (see my previous post).

 

Nothing more. You can eventually test your pack on another OS environment to exclude Linux / Windows.

Edited by Tryskell
  • 0
Posted
4 minutes ago, Tryskell said:

 

- Don't use a customized pack, or review whatever you added. I'm not Harry Potter (even if I got black glasses and a scar on the fronthead IRL) and can't help you if you edited stuff.

- Don't use any Guard-like, they are mostly shitty.

- Drop ClientStats or tweak hidden Config related to MMOCore / ClientStats (see my previous post).

 

Nothing more. You can eventually test your pack on another OS environment to exclude Linux / Windows.

 

-Nothing custom yet , ONLY 2 mobs npcs xml.

-not using any guard now.

-Droping ClientStats will have any negative effect? Will it make the problem dissapear?

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 account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • This is more than a server. It is an ode to Lineage 1, built with heart, modern technology, and more than 20 years of dreams.   Here, nostalgia meets innovation in a world shaped by its players, balanced for adventure, solo play, teamwork, competition, and long-term progression.   Lineage 1 Reborn brings together beloved ideas inspired by many of the great servers that came before, including Resurrection, Zelgo, KoD, Classic, Dabid, and others. Those foundations have been refined, reimagined, and expanded alongside entirely new systems and experiences designed to breathe fresh life into a timeless world.   Now nine months old, Reborn is a no-pay-to-win Lineage I server built around thoughtful evolution without losing the danger, rivalry, identity, and sense of accomplishment that made the original game unforgettable and has attracted many veteran and new players alike!   Choose between our expanded Standard world or slower Classic Style world, both connected through one community. Discover tasteful class enhancements, build-defining runes, Hard Mode endgame, advanced pets with talents and critical strikes, rotating EXP zones, more than 120 kill quests, renewed zones, original bosses, seasonal events, arenas, overhauled sieges, offline shops, extensive website integration, and countless quality-of-life improvements.   Behind the scenes, strong anti-dupe protections, item and transaction tracking, audit systems, and active administration help safeguard player progress and the economy. Most importantly, Reborn is supported by an amazing and active community. Player feedback and regular direction polls genuinely shape the server, while cheating, harassment, and excessive toxicity are actively addressed.   This is a fair, slow-paced journey among friends. Help us shape the realm, share your feedback, enjoy the adventure, and remember: passion built this world, and community will sustain it.   No pay to win. Thoughtful evolution. Community guided.   https://lineage1reborn.com/
    • Im looking to update it, could you possibly add me on discord? I need the client,  ilikebeer.
    • Very nice and passionate effort. Good luck.
    • SX.ORG is a global proxy platform offering residential, mobile and datacenter IPs for SEO, web scraping, ad verification and multi-account management. It provides flexible IP rotation, precise geo-targeting, HTTP(S)/SOCKS5 support, API access and pay-as-you-go pricing based only on the traffic you use.
    • L2-IMBA — SEASON 2  Custom PvP / PvE Interlude · Every Class Playable BETA — LIVE NOW GRAND START — 11 September 2026, 20:00 GMT+2 https://l2-imba.com · https://discord.com/invite/jmhVpj8ySv ═══════════════════════════════════════ RATES & CORE SETTINGS ═══════════════════════════════════════ Chronicle — Interlude XP / SP — x45, level-adjusted curve Adena — x1 Max level — 90 Subclass — 1, to level 80 Starting hub — Giran Skills — Auto-learn, post-80 via custom trainers Loot — Auto-loot with low-value filtering Buffs — Extended duration, expanded slots, saved schemes Client limit — NO DUAL-BOXING, one client per player Automation — Built-in auto-farm with daily time limit Offline — Trading and crafting enabled Current beta configuration. Final values confirmed at launch sign-off. ═══════════════════════════════════════ All 31 third classes are developed to level 90 through five specialized trainers — there are no dead classes here. Tanks, daggers, archers, warriors, summoners, healers, buffers and crafters all have real post-80 progression and a role worth playing. Full PvE progression through ten farm zones, thirty-five themed encounters and eighteen tracked raids, feeding into gear-equalized Team vs Team and open-world PvP. This isn't a stat patch with a new name. L2-IMBA keeps the combat, classes and world of Interlude and builds a new endgame on top of it — new equipment branches, custom class development past level 80, purpose-built farm ecosystems, boss progression, crafting, and augmentation, all connected into one progression loop. Level and develop your class → choose an armor identity → clear themed farm content → collect materials and boss resources → craft and upgrade without abandoning your build → compete in equalized and open-world PvP → reach God's equipment. ═══════════════════════════════════════ ROLE MASTERY ARMOR ═══════════════════════════════════════ Starting at Dynasty, armor becomes a real build choice instead of a mandatory set everyone wears. Each armor type offers three role masteries plus a flexible Universal path — twelve paths per tier, sixty full-set configurations across the progression. The chest piece selects your mastery; a matching five-piece set activates it. HEAVY   Juggernaut — frontline wall, shield synergy, reflection   Spellbreaker — anti-magic fortress, spell disruption   Slayer — heavy armor turned offensive, vampiric sustain LIGHT   Bowmaster — ranged pressure, kiting, accuracy   Assassin — positional burst, blow reliability, dagger lethals   Berserker — high-risk carry, power rises as HP falls ROBE   Arcanist — rapid-fire critical casting   Invoker — high-impact nuking and debuffs   Oracle — dedicated healing and support Upgrade recipes preserve your chosen path through every tier: Dynasty → Zariche → Valakas → Cursed → God's The system is gear-driven, not class-locked. Build creatively. ═══════════════════════════════════════ LEVEL 90 CLASS DEVELOPMENT ═══════════════════════════════════════ Max level extended to 90. Five specialized trainers — Archer, Tank, Rogue, Warrior, Mystic — cover all 31 third classes in post-80 progression, with 470+ learning entries. Every race gets a custom passive from level one. Tanks get distinct Human/Elf/Dark Elf identities. Duelist gains a two-handed greatsword path. Fortune Seeker becomes a real fighter without losing its spoil identity. Maestro gets a durable frontline route. Summoners, cubics and servitors get deeper combat logic rather than stat scaling. This is backed by server-side combat work — dedicated handling for debuff proficiency, PvE skill damage, blows, lethals, bow reuse, vampirism and reflection. ═══════════════════════════════════════ THE FARMING WORLD ═══════════════════════════════════════ Ten dedicated farm destinations via Global Gatekeeper: Farm Coins 1 & 2, Holy, Fire/Water, Wind, Earth, Unholy, Golden, Chaotic and Night zones. Seven themed enemy families — Undead, Demon, Angel, Beast, Bug, Water, Fire — each with four stages and a mini-boss. Thirty-five distinct encounters, each with its own resource identity feeding crafting. Eighteen tracked raids — twelve Farm Raid Bosses and six Custom Epic Raid Bosses. Plus a scheduled group-based Party Zone with dynamically managed normal and rare spawns. ═══════════════════════════════════════ CRAFTING & ENDGAME ═══════════════════════════════════════ SOUL FORGE — recycle old weapons into tier resources, convert boss and farm materials, craft Legendary components. Old gear becomes input, not warehouse clutter. CURATED AUGMENTATION — data-driven Top-Grade and Legendary profiles with meaningful stat, active and passive pools. Active effects are categorized so the same effect can't be stacked through equipment swapping. EXTENDED ENCHANT — Custom Crystal and Legendary stages. On the Legendary route, a failed enchant does not destroy the item or reduce its enchant level. Long-term progression, not an all-or-nothing gamble. TREASURE CHESTS — Rare, Immortal, Epic and Legendary tiers feeding gear growth, crafting and augmentation. ═══════════════════════════════════════ PvP ═══════════════════════════════════════ Gear-equalized Team vs Team on a recurring schedule — your equipment is snapshotted and restored, so the fight is about play, not who farmed longest. Open-world PvP with rewards and ranks alongside it. ═══════════════════════════════════════ QUALITY OF LIFE ═══════════════════════════════════════ - No dual-boxing — one client per player, enforced - Built-in auto-farm with a daily time limit — no third-party software needed, and third-party automation is bannable - Auto-learn skills, auto-loot with low-value drop filtering - Extended-duration buffs, expanded slots, saved schemes - Offline trading and crafting - Global Gatekeeper, global class change - Offline combat automation disabled ═══════════════════════════════════════ BY THE NUMBERS ═══════════════════════════════════════ 380+ custom item definitions · 110+ weapons and shields · 210+ armor and wearables · 250+ custom skill definitions · 2,700+ custom monster placements · 90+ shop and exchange catalogs · 1,100+ offers ═══════════════════════════════════════ BETA ═══════════════════════════════════════ Core systems, progression identities and content routes are in place. Exact item bonuses, mastery values, skill strength, reuse times, augment pools, enchant chances, drop rates and crafting costs remain subject to testing. Beta changes will refine balance without removing the defining role of each mastery or the overall progression structure. All beta characters are wiped at full launch. Beta testers keep their rewards. ═══════════════════════════════════════ OPEN BETA — 4 SEPTEMBER 2026 · 18:00 GMT+2 Website: https://l2-imba.com Wiki: https://l2-imba.com/wiki Register: https://l2-imba.com/account Download: https://l2-imba.com/start-playing Discord:  https://discord.com/invite/jmhVpj8ySv
  • 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..