Jump to content
  • 0

Some Skills Don't Finish Cast Animation


Question

Posted (edited)

Hi MxC! I have a very irritating problem with my test server, and I don't understand where this problem comes from. Some skills don't finish their cast animation, resulting in causing effect before it should. Here I post a video capturing the problem. The skill Shield Strike works properly, but Power Strike and Shield Stun don't. This problem also occurs with a lot of other skills that involves debuff or applying damage, all of them melee. I think it's related to Formulas.java or L2Character.java, but i'm not sure since I'm not a proper server developer. Also, I'm using the latest revision of l2jserver H5 master branch (https://bitbucket.org/l2jserver/l2j_server)

 

Edited by Ikeryn

9 answers to this question

Recommended Posts

  • 0
Posted (edited)

i know about this, it also happens in extender bassed

 

so you have to check  skill hit time &  skill cool time
shield stun
<set name="hitTime" val="1200"/>
<set name="coolTime" val="300" />

and disable next action attack -very important this one

add this
<set name="nextActionAttack" val="true" />

but it goes false
<set name="nextActionAttack" val="false" />

hope this helps
it solved for me back in 2012 when i had freya modded to H5  java srv

laters!

Edited by etherian
  • 0
Posted

That could be a workaround, but then the character won't auto-attack again when the skill is casted. Is that a retail behaviour?

 

Also, I found the place where the delay before next attack is calculated in Formulas.java (gameserver/model/stats), maybe some values need to be changed?

	/**
	 * Calculate delay (in milliseconds) before next ATTACK
	 * @param attacker
	 * @param target
	 * @param rate
	 * @return
	 */
	public static final int calcPAtkSpd(L2Character attacker, L2Character target, double rate)
	{
		// measured Oct 2006 by Tank6585, formula by Sami
		// attack speed 312 equals 1500 ms delay... (or 300 + 40 ms delay?)
		if (rate < 2)
		{
			return 2700;
		}
		return (int) (470000 / rate);
	}
	
	public static double calcCastTime(L2Character character, Skill skill)
	{
		double skillAnimTime = skill.getHitTime();
		if (!skill.isChanneling() || (skill.getChannelingSkillId() == 0))
		{
			// Calculate the Casting Time of the "Non-Static" Skills (with caster PAtk/MAtkSpd).
			if (!skill.isStatic())
			{
				final double speed = skill.isMagic() ? character.getMAtkSpd() : character.getPAtkSpd();
				skillAnimTime = (skillAnimTime / speed) * 333;
			}
			
			// Calculate the Casting Time of Magic Skills (reduced in 40% if using SPS/BSPS)
			if (skill.isMagic() && (character.isChargedShot(ShotType.SPIRITSHOTS) || character.isChargedShot(ShotType.BLESSED_SPIRITSHOTS)))
			{
				skillAnimTime = (int) (skillAnimTime / 1.4);
			}
			
			if ((skillAnimTime < 500) && (skill.getHitTime() > 500))
			{
				skillAnimTime = 500.0;
			}
		}
		return skillAnimTime;
	}
	
  • 0
Posted (edited)

its clearly coolTime problem.

 

edit your xmls and set new cool time there

example:

<set name="coolTime" val="720" />

P.s if doesnt exists , add it

Edited by melron
  • 0
Posted (edited)

Zealar made a huge less modifying hit time, most formula are wrong, but server to match client animation, hit time should be hitTime + cancelTime with a 500ms cap going down

 

Also indeed coolTime for last casting phase

Edited by Sdw
  • 0
Posted

I have tried increasing coolTime for Shield Stun from 300 to 800 even 3000, and it did nothing :/

 

hitTime of Shield Stun is the same either in client and server (XML 1200 hitTime; SKILLGRP 1.2 hitTime). It's very strange that Shield Strike works properly, and a bunch of other skills not.

  • 0
Posted

Because the whole formula is wrong mostly, time is not calculated correctly :/

  • 0
Posted (edited)

try as i said

 

<set name="nextActionAttack" val="false" />


what is the most you want for your server

retail behaviour  or complete skill animation
anyway if you press attack  will cut off animation 
happens since all lineage servers there is no much to do about 

 

its clearly coolTime problem.

 

edit your xmls and set new cool time there

example:

<set name="coolTime" val="720" />

P.s if doesnt exists , add it

 

yes  cooltime 720  i used that long time ago is good solution
but since last changes in H5 jserver im not sure about, it worked in past, lately seems not at all

 

 

Edited by etherian
  • 0
Posted

TO Fix This In My Source but no Know in Your ....
L2Character.java

_skillCast2 = ThreadPoolManager.getInstance().scheduleEffect(mut, 0);
to this
_skillCast2 = ThreadPoolManager.getInstance().scheduleEffect(mut, 33);

 

 

and

 

 

_skillCast = ThreadPoolManager.getInstance().scheduleEffect(mut, 0);
to this
_skillCast = ThreadPoolManager.getInstance().scheduleEffect(mut, 33);

 

  • 0
Posted (edited)

Hi, just fixed it on my windows personal server: (im using the build from http://l2jserver.com) I'm not a dev so I will reproduce how I fixed it step-by-step:

 

1. Navigate to dir "C:\opt\l2j\git\l2j-game-server\scr\main\java\com\l2jserver\gameserver\model\actor"

 

2. Edit "L2Character.java" with text editor like Notepad++.

 

3. Change it

FROM:

        mut.setPhase(3);
        if (mut.getSkillTime() == 0) {
            onMagicFinalizer(mut);
        } else {
            if (mut.isSimultaneous()) {
                _skillCast2 = ThreadPoolManager.getInstance().scheduleEffect(mut, 0);
            } else {
                _skillCast = ThreadPoolManager.getInstance().scheduleEffect(mut, 0);
            }
        }

TO:

        mut.setPhase(3);
        if (mut.getSkillTime() == 0) {
            onMagicFinalizer(mut);
        } else {
            if (mut.isSimultaneous()) {
                _skillCast2 = ThreadPoolManager.getInstance().scheduleEffect(mut, 333);
            } else {
                _skillCast = ThreadPoolManager.getInstance().scheduleEffect(mut, 333);
            }
        }

 

4. Save file.

 

5. Compile by navigating using Windows Power Shell or Command Prompt to "C:\opt\l2j\git\l2j-game-server" and running the command:

 

mvn install

 

(I assume you installed maven in order to compile the server in l2jserver.com, if you created your server using other method use your compiler instead)

 

6. Extract the "C:\opt\l2j\git\l2j-server-game\target\l2j-server-game-2.6.1.0-SNAPSHOT" to your "C:\opt\l2j\server\game\" FOLDER.

 

(again this is for maven compiler)

 

7. Done. Hope it helps anyone else looking for a solution.

 

 

Edited by maugs47
Formating for better reading

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

    • how do I make it so that you only deal damage to a mob if you have the right items equipped, like jewels, belt, underwear, bracelet, so if you don't have one of those items equipped, you don't deal any damage to the mob thanks
    • I always welcome bug reports and never ban ppl - until proven leaker - not sure where the "arrogant" part comes from, I would like to know what exactly let you think that (quote me please, and not 12y old quotes as the other frog meme dude). I request bug reports to be properly detailed, otherwise it's a waste of time. Other than that, I don't see where I have been arrogant. I got proper discussions with many ppl, not sure why you wouldn't be one of them.   I got 76 bug reports in my list (21 on forums, 55 on gitlab).   I have a single bug report regarding lvl 4 clan quest, which has to be tested since it's not even clear about what is supposed to be broken. Seven Signs was never reworked and is basically L2J based (we got a rework branch to test/commit with reworked AIs). Geoengine got no specific issues (at my knowledge), pathfinding was reworked lately to be way more performant, and I still try to improve performance using some pool system. Movement was partially fixed in latest 410, and probably will get another rework soon (notably reverting to the task wallclock).   "I" surely didn't spend 12y over geoengine - Hasha cared about geoengine during rev 334 / 354 / 390 / 395 and 397. It is solely his work, and always tagged as it. He was rewarded with money for his work, and almost a decade of aCis access.   aCis is a community work, things tagged with Tryskell is my work, the leftover is someone else work. 22 ppl worked as developers in this project over 14 years.   I would gladly accept whatever list of fixes/reports you have to share. You will even be rewarded (you probably know about cookie system), as anyone else sharing bug report or fixes.   My main concerns lately is the lack of decent L2OFF IL data, it is my main bottleneck actually. If you're aware about decent L2OFF data to parse, let me know.   Eventually reach me over Discord to speak, I don't want to continue the offtopic over that help request.
    • Your project doesn't compare to aCis; you have to be an idiot to use that. I know someone who bought the High Five "PREMIUM" version, which has the same bugs as the free version. If you want, I can share his latest premium version. Players are going through walls with their bad geoengine, falling under the Olympiad. If you want, I can record and prove what I'm saying. The aCis project is 50 steps ahead of yours and it's not even stable...
    • l2jteon, l2joneo l2jscoria etc etc. and from that we went to this 
  • 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..

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