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

    • I'm using Myext64 HF and recently tried to replicate the "br_xmas09_event" Raising Rudolph Event. Detailed event information can be found at https://legacy-lineage2.com/news/_rudolf_the_red.html After configuring .eventdata.xml and starting the server, t  server log shows: 12/02/2025 15:39:01.809, [NO_ERROR] SpawnEx2 [br_xmas2009_invisible][schuttgart20_npc2213_xs03m1] [1][0][0][0][0][346796390] 12/02/2025 15:39:02.057, DummyPacket received from L2Server 12/02/2025 15:39:02.058, server socket close 312ac(f0820224) error(997) 12/02/2025 15:39:02.058, [CallStack][tid:0][tick:2][0] Begin 12/02/2025 15:39:02.058, [CallStack][tid:0][tick:2][1][0] void __cdecl IOThreadCallback::IOThread_common(void) 12/02/2025 15:39:02.059, [CallStack][tid:0][tick:2][2][1] void IOThread_common 1 12/02/2025 15:39:02.059, [CallStack][tid:0][tick:2][3][2] void __cdecl CIOSocketEx<class CIOBufferEx<16384> >::Close(void) 12/02/2025 15:39:02.059, [CallStack][tid:0][tick:2][4][3] void __cdecl CServerSocket::OnClose(void) 12/02/2025 15:39:02.059, [CallStack][tid:0][tick:2][5] End l2server log: 12/02/2025 15:39:02.112, npc server closed(127.0.0.1) error: 64 read buffer size: (server:0 npc:0) 12/02/2025 15:39:02.112, [NO_ERROR] L2Server is under protection mode!!! 12/02/2025 15:39:02.112, [NO_ERROR] L2Server is under protection mode!!! 12/02/2025 15:39:02.112, [NO_ERROR] L2Server is under protection mode!!! 12/02/2025 15:39:02.131, dwTime[0] < 80 !!!!!!! 12/02/2025 15:39:02.131, [CallStack][tid:7][tick:1][0] Begin 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][1][0] void __cdecl IOThreadCallback::IOThread_common(void) 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][2][1] void IOThread_common 1 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][4][3] void __cdecl NpcSocket::OnClose(void) 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][3][2] void __cdecl CIOSocketEx<class CIOBufferEx<16384> >::Close(void) 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][5] End 12/02/2025 15:39:31.767, server closed(127.0.0.1) Error: 64 Read buffer size: (server:0 npc:0) 12/02/2025 15:39:31.768, [NO_ERROR] Logout All Characters : 1   The NPC server sent a packet to the L2 server while generating the br_xmas2009_invisible game NPC server, and the NPC server subsequently crashed.     After some digging, I found a clue in a very old MXC post, but the fix was for the GF version. The whole problem is in l2server side support for NPC function CreateOnePrivateNearUser. It sends CreatePacket but Koreans made some changes in it (added instance ID) so it got broken. As Santa event is the only AI that uses this function, they probably don't know about it    So is there a way to fix this problem, specifically for Myext64 HF? I'd be happy to buy him coffee.
    • Offtopic, personal attacks, probably too old to use that much memes and what's YOUR actual contribution to L2J, in order I laugh aswell ?   The main poster quotes my pack so I answer accordingly, while you advertise L2JFrozen in both of your posts - discontinued since 2014 (? 1132 rev), with none taking back the open source lead while anyone could.   If you're somewhat affiliated to hopzone, you probably packed way more money than me. Packs don't make any type of money (barely 100e/month) and if you would follow me, you would know there are ways to handle it or even getting paid.   Hope I was short enough, 🧂🤡.
    • Hi guys, this is a CMS im sharing for lineage 2 servers, im tired of the crap i see on new release servers. Dont let me start on the IA developed ones lmao.   📋 Description Free and open source template to create landing pages for Lineage 2 private servers. Designed with a dark fantasy theme and modern animations. ✨ Current Features This FREE version includes: Complete Landing Page - Professional design ready to use Multi-language Support - Spanish, English, Portuguese Dark Fantasy Theme - With animated UI elements Server Information - Rates, features, and rules Olympiad Ranking - Rankings display Download Section - For game client Skins and Animations Gallery Streaming Widget - Twitch/Kick integration Fully Customizable - Via configuration files ❌ Not Included in Free Version ❌ User Registration System ❌ Online Players Counter ❌ Donation Panel 💎 Premium Integrations IntegrationPrice Registration System $50 USD Online Players Counter $50 USD Donation Panel $50 USD   📧 Contact: https://gh0tstudio.com 🛠️ Tech Stack Technology    Version    Description React              19.2.0       UI Library TypeScript       5.8.2        Static typing Vite                 6.2.0         Build tool TailwindCSS   CDNCSS    Framework Lucide React   0.554.0         Icons i18next           23.16.0       Internationalization react-i18next   15.1.0        React bindings for i18n All documentation provided for AI AGENTS to make changes on the ui texts and so on. u can have a look on the cms fully working with donation panel, online count and register via: https://crmlineage2.vercel.app/ https://github.com/6h0T/CRM-LINEAGE2-FREE If u are in the lookings to develop a unique website for ur projects, u can dm me or contact me throw my socials on my profile. all code has encrypted references so any type of rebranding, copying or selling without authorization will result in take downs
    • Hello dude, i can help u out, i reached to u via DM, my studio is https://gh0tstudio.com i have worked with almost 40 brands on developing Private Lineage and Mu online servers, dashboard for vote pages and more. I sent u some examples too
    • L2 TARTARUS - HTML DESIGN       L2 KOMBAT - ANIMATED BORDER   L2 SERENITY - ANIMATED LOGO   L2 ARCANE - COMMUNITY BOARD     L2 AMERIKA - ADVERTISING BANNER   L2 ZERON - ADVERTISING BANNER  
  • 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