Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 12/22/23 in all areas

  1. Version 1.1.0

    433 downloads

    Hi, Just dropping some random scripts on my drive. Enjoy! Script Info: https://maxion-1.gitbook.io/ragnarok-landverse-whitepaper/beginner-guide/pets-system NOTE: This is only a replication attempt. This doesn't have the pet combination UI as per the link showing. This will use NPC Shop UI instead. This is NOT limited to pet combination, you can be creative and change this to item tier combination if you wish. If you know how to read and basic scripting knowledge, then you can edit this script without problem. Use at your own risk.
    Free
    1 point
  2. So it turns out there's actually another version of this glitch where sometimes your character will fail to attack because they're at an extremely precise range where they are out of range to attack, but too close to move closer and then attack. This seemingly requires some degree of client desync and is rare, but it annoyed me enough that I spent many hours tracking down the exact problem. Find this in unit.cpp: if(src->type == BL_PC && ud->walktimer != INVALID_TIMER && (!battle_check_range(src, target, range-1) || ignore_range)) { (it occurs twice in the file) In both instances, replace it with this: if(src->type == BL_PC && (!battle_check_range(src, target, range) || ignore_range)) { if (ud->walktimer == INVALID_TIMER) { unit_walktoxy(src, target->x, target->y, 8); } Do not touch anything below this code, leave everything about the stepskills untouched. If your rathena is old, the ignore range part is not present so you are instead looking for this: if(src->type == BL_PC && ud->walktimer != INVALID_TIMER && !battle_check_range(src, target, range)) { Which you replace with this: if(src->type == BL_PC && !battle_check_range(src, target, range)) { if (ud->walktimer == INVALID_TIMER) { unit_walktoxy(src, target->x, target->y, 8); } The problem is that if the user is too close for the client to execute a move to attack instruction, but not close enough to attack, the walktimer will not be initialized, but the range check will fail. It should execute a stepskill in this situation, but it does not because it requires a valid walktimer to execute a stepskill. This handles this boundary case by forcing the user to approach the target, as the client would do automatically under all other circumstances. This is maybe not the most graceful solution (maybe they should just move one tile closer to the target?) but it works and the problem can no longer occur.
    1 point
  3. - script sample -1,{ OnInit: .map$ = "prontera"; monster .map$,0,0,"--ja--",1002,1, strnpcinfo(3)+"::OnKill"; end; OnKill: addrid(5, 0, .map$); .@rate = rand(100); if (.@rate < 20) { // 20% getitem 512, 1; } else if (.@rate < 35) { // 15% getitem 909, 2; } else if (.@rate < 45) { // 10% getitem 985, 3; } end; }
    1 point
×
×
  • Create New...