Issue information

Issue ID
#8263
Status
Fixed
Severity
None
Started
kyeme
Jul 13, 2014 10:33
Last Post
Ind
Sep 20, 2014 19:44
Confirmation
Yes (1)
No (0)

kyeme - Jul 13, 2014 10:33

When using Dec 23 2013 client, damage using skills (examples : Bash, Cart termination) to players shows as if it is using ENDURE but its not.
Client or Server side problem?

@edit: Confirmed also on 2014-02-05 + client

Video: todo

This post has been edited by kyeme on Aug 9, 2014 1:53

pan - Jul 13, 2014 16:50

I've just tested with latest Herc and with both 2013-12-23cRagexe and 2014-02-05bRagexe and couldn't reproduce your issue, do you have any modifications in your Hercules?

kyeme - Jul 14, 2014 1:13

I don't have any modification..

Video: [url="https://www.youtube.com/watch?v=GXPq2JmJWRg&feature=youtu.be"]https://www.youtube.com/watch?v=GXPq2JmJWRg&feature=youtu.be[/url]

kyeme - Aug 1, 2014 7:42

Up~

kyeme - Aug 1, 2014 7:42

Up~

kyeme - Aug 9, 2014 1:53

Up~

pan - Aug 9, 2014 14:21

Just updating with what I found out about this issue in case other dev has time to try to fix it, it _seems_ that another packet is being used to let the client know that a player object was damaged, or another packet is being used to start the fighting stance. In older clients just using PACKET_ZC_NOTIFY_SKILL or ZC_NOTIFY_SKILL2 would suffice, note that PACKET_ZC_NOTIFY_ACT2 is still working.

Rytech - Aug 12, 2014 13:42

Maybe try this....
[code=auto:0] ZC_NOTIFY_ACT3 = 0x8c8 struct PACKET_ZC_NOTIFY_ACT3 { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long GID /* this+0x6 */ unsigned long targetGID /* this+0xa */ unsigned long startTime /* this+0xe */ int attackMT /* this+0x12 */ int attackedMT /* this+0x16 */ int damage /* this+0x1a */ unsigned char IsSPDamage /* this+0x1b */ short count /* this+0x1d */ unsigned char action /* this+0x1e */ int leftDamage } [/code]

ill likely end up looking into this again soon if this doesn't fix it.

pan - Aug 12, 2014 22:58

Doesn't PACKET_ZC_NOTIFY_ACT3 is meant to be used to send information regarding regular attacks and not skill attacks? I tried using this packet to send regular attacks and it works fine, but I'm not sure if the client would handle properly, because some parameters are missing, see PACKET_ZC_NOTIFY_SKILL2's structure:[code=auto:0] struct PACKET_ZC_NOTIFY_SKILL2 { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned short SKID /* this+0x4 */ unsigned long AID /* this+0x8 */ unsigned long targetID /* this+0xc */ unsigned long startTime /* this+0x10 */ int attackMT /* this+0x14 */ int attackedMT /* this+0x18 */ int damage /* this+0x1c */ short level /* this+0x1e */ short count /* this+0x20 */ unsigned char action } [/code]

kyeme - Aug 23, 2014 9:55

UP~

Frost - Aug 31, 2014 14:13

Bump?

Rytech - Sep 13, 2014 19:21

I just learned whats causing the strange issue. When doing regular attacks, enemys will flinch. Same for multi-hit skills. But when using 1 hit skills the enemy will not flinch. Its all because of this setting in the skill_db....

03 hit (8- repeated hitting, 6- single-hit)

Here's what 6 and 8 are on the action list....

typedef enum <unnamed-tag> {
ACTION_ATTACK = 0x0,
ACTION_ITEMPICKUP = 0x1,
ACTION_SIT = 0x2,
ACTION_STAND = 0x3,
ACTION_ATTACK_NOMOTION = 0x4,
ACTION_SPLASH = 0x5,
ACTION_SKILL = 0x6,
ACTION_ATTACK_REPEAT = 0x7,
ACTION_ATTACK_MULTIPLE = 0x8,
ACTION_ATTACK_MULTIPLE_NOMOTION = 0x9,
ACTION_ATTACK_CRITICAL = 0xa,
ACTION_ATTACK_LUCKY = 0xb,
ACTION_TOUCHSKILL = 0xc,
} <unnamed-tag>;

So its likely a packet issue. But looking at the packet length table for all of the packets there doesn't appear to be one for a newer NOTIFY_SKILL, unless the table dumper isnt showing it.

This post has been edited by Rytech on Sep 13, 2014 20:48

Ind - Sep 17, 2014 20:55

Valo mentioned this to me over IRC and I played with it a bit:
- Swapping value 6 for 8 ( if( type == 6 ) type = 8; ) fixed the animation
- I have no idea whether this is a problem exclusive to 2013-12-23 (perhaps it was a very specific packetver issue, in which case we [b]shouldn't[/b] apply it to packetver >= 20131223, and instead use == 20131223).
- From what I could tell using 8 has no visual difference because we send the number of hits in a different field.

Ind - Sep 20, 2014 18:40

Alright going with this until we find out what the new way the client handles it is (if anyone could provide a packet capture from a official client of this date or newer it'd be much appreciated)

Ind - Sep 20, 2014 19:44

Fixed in [url="https://github.com/HerculesWS/Hercules/commit/86d17badf325e9d87559a3a087d3c142a757cae9"]https://github.com/HerculesWS/Hercules/commit/86d17badf325e9d87559a3a087d3c142a757cae9[/url]

Ind - Sep 20, 2014 19:44

Fixed in [url="https://github.com/HerculesWS/Hercules/commit/86d17badf325e9d87559a3a087d3c142a757cae9"]https://github.com/HerculesWS/Hercules/commit/86d17badf325e9d87559a3a087d3c142a757cae9[/url]