Jump to content
  • 0

L2J Attack Delay


MoetsukiDansei

Question

spacer.png

As shown in the gif - after issuing an attack command the character moves to the target, after reaching the target it sometimes stops for 1-2 seconds before attacking. 

 

The pack in the clip is L2J_Mobius_04.0_GrandCrusade, but this issue exists on L2J master branch as well. 

 

It seems to occur far more frequently when attacking monsters that are farther away (e.g. 600+ distance), and happens very rarely when attacking monsters that are close.

 

Despawning all NPCs on the server, then spawning a single non-moving monster on a hill and the issue still occurs.

 

Though it was happening on flat ground (constant Z-axis), after reducing the number of calls to moveToPawn() (there were many for some reason),  it stopped occurring on flat surfaces. Even still it continues to happen on varying Z-axis surfaces. 

 

updatePosition() continues to be called even after the character has arrived on the client  (server still thinks the character has not arrived I guess).

 

calls to player.calculateDistance3D(_x, _y, _z) in ValidatePosition are returning 150+ throughout the movement.

if (player.calculateDistance3D(_x, _y, _z) > player.getStat().getMoveSpeed())
{
   if (player.isBlinkActive())
   {
      player.setBlinkActive(false);
   }
   else
   {
      player.setXYZ(_x, _y, _z);
   }
}

 changing

if (player.calculateDistance3D(_x, _y, _z) > player.getStat().getMoveSpeed())

to 

if (player.calculateDistance3D(_x, _y, _z) > 0)

seems to improve the situation maybe? I imagine there are terrible side-effects to this 😅 

 

 

I noticed this bug does not exist on ACIS servers, but comparing the two sources (I understand they are drastically different), I cannot seem to understand what may be causing this.

 

At this point I'm not sure where to look next. I have started looking at geodata/geoEngine from here, but as I'm pretty new to programming and even newer to L2J server development, I have no clue if this is remotely the correct direction.

 

I'm hoping someone can give me some advice, or a hint, or anything, where I might look next to solve this. 

Link to comment
Share on other sites

Recommended Posts

  • 0
On 2/24/2023 at 10:30 AM, MoetsukiDansei said:

spacer.png

if (player.calculateDistance3D(_x, _y, _z) > player.getStat().getMoveSpeed())
{
   if (player.isBlinkActive())
   {
      player.setBlinkActive(false);
   }
   else
   {
      player.setXYZ(_x, _y, _z);
   }
}

 

Kindly delete this code permanently. I'm not kidding.

Edited by Trance
  • Haha 1
Link to comment
Share on other sites

  • 0
On 2/24/2023 at 9:45 PM, aLzhite said:

it does. you cant even imagine how many clients have been contacted me to fix that. actually its way clear on their pack and i know a better way to trigger it so happens almost always and everywhere.

 

?

 

spacer.png

Link to comment
Share on other sites

  • 0
On 3/19/2023 at 8:37 PM, aLzhite said:

 
?

ps @HyperBlown has the best movement system by far. try contacting him to fix that issue

 

You only show half the movement, and without any //show move on.

 

You probably do idiotic going back and forth, it's the only possibility to get such a desync actually.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...