Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[v83] DoActiveSkill shenanigans.

Junior Spellweaver
Joined
Sep 16, 2017
Messages
156
Reaction score
36
Hi everyone,
I have a few questions regarding a few aspects of the way the v83 client communicates skill usage to the server.

1) What is an "antirepeat skill"? It's a list that includes party buffs, mob-affecting skills, and self-only buffs, so I can't see a possible definition for it.
Since its check purpose is to eventually pass the player coordinates as packet data, I'm even more confused, as some antirepeat skills don't seem to have any use for them.

Also, I'm assuming that the fact that Marksman's Sharp Eyes is excluded from this list (if I did my calculations right), while Bowmaster's is included, is just an oversight by Nexon?

2) The skill delay that's passed with many skills at the end of the packet should be used to prevent skill spamming (or am I missing its purpose?).
In that case, what's the reason for Priest's Dispel sending the skill delay for every single person in the party, plus sending it again at the end of the packet?


Thank you. c:
 
Experienced Elementalist
Joined
Feb 10, 2008
Messages
249
Reaction score
161
AntiRepeat skills is client sided botting detection. So for example you have a bot spamming the skill Heal , after a while itll see you havent moved and will not allow you to cast it. Hence why people had to make "Unlimited Attack" scripts to bot properly.
 
Upvote 0
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
In regards to the tDelay you mentioned, it's actually used in your buff packets (Odin sources just don't know it/use it). The tDelay short is passed as an argument every time you call SendTemporaryStatSet. Also, Nexon doesn't send the tDelay for everyone, it's a forloop of mobid's according to the client (might be user oid's from members though) and an additional short with the same tDelay used for the person casting the skill. Either way, it's going to send the same delay to all the looped party members' SendTemporaryStatSet regardless.
Code:
// Priest Dispel    SkillID     Lv.   RepeatPos  Bitmap tDelay Count    MobID1      MobID2       tDelay
// [3C 59 56 06] [59 43 23 00] [14] [D8 04 96 00] [30] [58 02] [02] [4C 75 00 00] [56 75 00 00] [58 02]
 
Upvote 0
Junior Spellweaver
Joined
Sep 16, 2017
Messages
156
Reaction score
36
Ohh, so the player position is to compare subsequent activations, and it looks like I finally understand what those two bytes before isMoveAffecting are about.
And yep, my bad, I confused myself about the delay, there's not even such a thing as a loop of party members in the packet.


Thank you guys so much c:
 
Upvote 0
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Ohh, so the player position is to compare subsequent activations, and it looks like I finally understand what those two bytes before isMoveAffecting are about.
And yep, my bad, I confused myself about the delay, there's not even such a thing as a loop of party members in the packet.


Thank you guys so much c:

i was just told that the loop isn't for party members, it's for mobs. since dispel will dispel skills of mobs as well as users, the loop is to decode and debuff the mobs because dispel removes magic debuffs. but yep, the two bytes before move affecting is indeed the delay :p
 
Upvote 0
Junior Spellweaver
Joined
Sep 16, 2017
Messages
156
Reaction score
36
Yep! I actually had the structure ready, since I'm currently in the process of fixing those poor skill packets (and yesterday I was working on that party byte handling), so I'm not sure which part of my brain decided to talk about an extra loop, hehe.
 
Upvote 0
Back
Top