Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 10/04/23 in all areas

  1. Version 2.0

    1047 downloads

    2024-09-08_19-37-05.mp4 If you don't understand how to use this please watch the video.
    Free
    1 point
  2. Heya, This topic is actually very complex and it has tons of exceptions. It also depends of the client version since they do have different behaviors. When the clif_damage packet is sent, the important value is "sdelay", "amotion", "animation motion" or "attack motion". This is the duration of the attack animation shown by the monster. This value is defined in your mob db file under AttackMotion. The AttackMotion is the speed at which the mob displays its attack animation and it can go between 0 and 500. It works as you think it does (ish): An AttackMotion motion of 100 would be 100 * AttackMotion / 500 = 1/5th of the normal duration. Meanwhile 600 AttackMotion would be capped to 500, giving you the full attack animation duration. Now you would think the animation duration is given by the AttackMotion, but that's just bullshit. That's not the case at all. The damage number shown isn't related to that. The real animation duration that the client reads is given by the Act file itself by the action index 16. If you take Willow as an example, it has 7 frames at 100 ms each, so it has a total duration of 700 ms. Now there's another special "feature" going on here. The damage number will be shown at "frames count - 1". So in the case of Condor, the damage animation will be shown at frame 7. So while the animation duration is indeed 9 x 75 = 675 ms, the damage number will be shown at 7 x 75 = 525 ms. To be clear, it is shown the moment the frame appears and not when it ends, so that's why it's not 8 x 75 but 7 x 75. As for Condor, there is yet again another special "feature" going on. The damage number will be shown earlier if the "atk" sound is triggered. In the case of Willow, the attack sound is at frame 3, so while the animation duration is 700 ms, the damage will actually be shown at 3 x 100 = 300 ms. Now that's why the attack isn't displayed at the end of the animation as you'd expect it to be. The character stops moving on the client once the damage number is shown. More on the server-side of things: The damage will be inflicted after the AttackMotion timer server-side. Once AttackMotion runs out, the player movement will be stopped, that position will be saved and then a clif_updatestatus will be sent for the new HP value. So as you can imagine, there is absolutely no way that the position in the client and the position on the server would be the same considering all this. The server can't know the Act file true damage animation duration vs attack animation duration. Overall, quite the blunder Gravity made, yet again. And that's just what I've found out through the years. I'm sure there is plenty more weirdness going on there, like how player ranged melee attacks are 4/3 of the AttackMotion on some clients, creating even more position lag issues. Anyway, to fix your issue, change the "atk" sound and it will work out, but fixing that for all mobs doesn't seem very realistic to me. Edit: Please keep in mind most of the above is only related to monsters; players have different behavior in regards to AttackMotion.
    1 point
  3. This is available on my new channel! Join my new channel here - https://discord.gg/CT8hgvapcw Will upload more content soon! #mappingsince2011 halloweenFINALE.mp4
    1 point
  4. Version 1.0.0

    230 downloads

    Please note that you can download the full version of the sprite set from this link. The file is large and cannot be uploaded to the forum. You can download my sprites rework [FOR FREE] and not for resale! [DOWNLOAD] https://mega.nz/file/taQwkKwL#ikVnLwKyX52rymVMlaAqxFMd8YHsC2itTyk3GxmAjtc
    Free
    1 point
  5. Depending on your client: RecommendedQuestInfoList.lub RecommendedQuestInfoList_Sakray.lub RecommendedQuestInfoList_True.lub You can remove it in one of those files located in 'RO\System\'.
    1 point
  6. function script box____ { setarray .@reward, 20103, 60, 20104, 10, 20105, 10, 20106, 10, 20106, 5, 20107, 5; set .@size, getarraysize( .@reward ); for( set .@i, 1; .@i < .@size; .@i += 2 ) { .@percent[.@i] = .@total + .@reward[.@i]; .@total += .@reward[.@i]; } .@r = rand( .@total +1 ); for( set .@i, 1; .@i < .@size; .@i += 2 ) if( .@percent[.@i] > .@r ) break; getitem .@reward[ .@i-1 ], 1; end; } EDIT : Fix a mistake. 25620,3D_Glasses_Box,Box of Minion,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "box____"; },{},{}
    1 point
×
×
  • Create New...