All Activity
- Past hour
-
RO3 will be cross or multi plattform? Mobile and PC? Rynbef~
- Today
-
Yes fake player it's display only Novice.
-
anyone tested this to the latest rAthena Git?
-
- Yesterday
-
There are rathena src diffs needed to get body style working correctly. I can share some but I need help getting it to work for niche things like fakeplayers.
-
ok
-
Requesting a script for 1. assassin job only can enter inside the pvp room 2. only custom item will allowed to use inside the sinx pvp room thanks in advance! here's my script prt_ext,165,138,5 script PvP Arena 574,{ if(agitcheck()) goto nowoetime; mes "[PvP Battle Room]"; mes "Let's Go!!!!!"; menu "No limit [" + getmapusers("guild_vs3") + "]",pvp1, "Non Donate [" + getmapusers("guild_vs4") + "]",spvp, "Guild vs Guild [" + getmapusers("guild_vs2") + "]",gvg1; nowoetime: mes "[PvP Warper]"; mes "You cannot enter to PvP Room during WoE!"; close; pvp1: warp "guild_vs3",0,0; announce ""+ strcharinfo(0) +" Has Entered The PVP Room.",bc_all; close; gvg1: warp "guild_vs2",0,0; announce ""+ strcharinfo(0) +" Has Entered The GVG Room.",bc_all; close; spvp: if(countitem(59138) > 0 || countitem(59139) > 0 || countitem(59140) > 0 || countitem(59141) > 0 || countitem(59142) > 0 || countitem(59143) > 0 || countitem(59144) > 0 || countitem(59145) > 0 || countitem(59146) > 0 || countitem(59147) > 0 || countitem(59148) > 0 || countitem(59149) > 0 || countitem(59155) > 0 || countitem(59150) > 0 || countitem(59151) > 0 || countitem(59152) > 0 || countitem(59153) > 0 || countitem(59154) > 0 //donate weapon || countitem(59000) > 0 || countitem(59001) > 0 || countitem(59002) > 0 || countitem(59003) > 0 || countitem(59004) > 0 || countitem(59005) > 0 || countitem(59006) > 0 || countitem(59007) > 0 || countitem(59008) > 0 || countitem(59009) > 0 || countitem(59010) > 0 || countitem(59011) > 0 || countitem(59012) > 0 || countitem(59013) > 0 || countitem(59014) > 0 //Pointers || countitem(501) > 0) goto donator; warp "guild_vs4",0,0; announce ""+ strcharinfo(0) +" Has Entered The PVP Room Non Donate.",bc_all; close; donator: mes "You are a donator you are not allowed to this room"; close; //OnPCDieEvent: //set @Die,@Die + 1; //if( @Die % 2 == 0 ) warp "SavePoint",0,0; //end; } //Mapflag guild_vs4 mapflag pvp guild_vs4 mapflag nowarp guild_vs4 mapflag nowarpto guild_vs4 mapflag noreturn guild_vs4 mapflag nosave SavePoint guild_vs4 mapflag notrade guild_vs3 mapflag pvp guild_vs3 mapflag nowarp guild_vs3 mapflag nowarpto guild_vs3 mapflag noreturn guild_vs3 mapflag nosave SavePoint guild_vs3 mapflag noicewall guild_vs3 mapflag pvp_noparty guild_vs3 mapflag pvp_noguild guild_vs4 mapflag notrade guild_vs2 mapflag pvp guild_vs2 mapflag nowarp guild_vs2 mapflag nowarpto guild_vs2 mapflag noreturn guild_vs2 mapflag nosave SavePoint - script DOTAPVP -1,{ OnInit: // Config set .sound, 2; // soundeffect : 0 - disable, 1 - play soundeffect to all players on map, 2 - play soundeffect to an area around the killer, 3 - play soundeffect to killer only set .ownage, 2; // ownage announcement : 0 - disable, 1 - party owns, 2 - guild owns set .announce, 0; // make announce to : 0 - global, 1 - map set .announcemap, 1; // announce the map name in the announcement ? : 0 - off, 1 - on set .announcekill, 1; // announce who pawn who's head : 0 - off, 1- on set .msg_die, 0; // show message who kill you when die : 0 - off, 1- on set .msg_kill, 0; // show message you kill who when killed someone : 0 - off, 1- on set .gmnokill, 0; // GMs are not suppose to kill players. A GM with <this number> level or higher will do nothing. IF set to 60, GM60 and above kill any player will not get anything : 0 - off set .killingspree, 3; set .dominating, 4; set .megakill, 5; set .unstoppable, 6; set .wickedsick, 7; set .monsterkill, 8; set .godlike, 9; set .holyshit, 10; set .continue, 1; // after beyond-godlike, every <this number> kills will make announcement again set .owned, 5; // how many times the party/guild has to kill to announce ownage set .owncontinue, 1; // after ownage, every <this number> party/guild cumulative kills will make ownage announce again setarray .maptrigger$, // only these maps will trigger this script "all", // comment this line to only trigger this script on these listed maps "guild_vs1", "guild_vs2", "guild_vs3", "guild_vs4", "guild_vs5", "guild_vs2-1"; // anti-sit-killer system // a player must kill another player with this minimum <this number> level to get the announcement and in the ladder. // Otherwise only have streak ended announcement and killed player's streak reset. // Its possible for a level 1 novice to kill a level 55 player and he/she will still get in the ladder // but a level 55 kill a level 1 player will get nothing // 0 - off this system ( default is 55, pk setting ) set .lvltokill, 0; // when a player kill another same player <this number> times in a row, the player is warp back to save point. // and the player's streak and ownage count will deduct accordingly // 0 - off this system set .counttopunish, 0; // minimum level range to kill another player // eg. when set to 20, player level 99 needs to kill another player with minimum level of 79 to get announcement and increase the kill rank. // but a player with base level 50 kills a level 99 will also get the announcement // higher base level cannot kill lower level, but lower level can kill higher level // 0 - off this system set .minlvlrange, 0; // Config ends ------------------------------------------------------------------------------------------ // to prevent bug happen if ( .ownage < 0 || .ownage > 2 ) set .ownage, 0; if ( .announce < 0 || .announce > 1 ) set .announce,0; if ( .continue < 1 ) set .continue, 1; if ( .owncontinue < 1 ) set .owncontinue, 1; if ( .gmnokill <= 0 ) set .gmnokill, 100; if ( .lvltokill <= 1 ) set .lvltokill, 0; if ( .counttopunish <= 1 ) set .counttopunish, 0; set .maptriggersize, getarraysize(.maptrigger$); end; // script start OnPCKillEvent: if ( getgmlevel() >= .gmnokill ) end; getmapxy .@map$, .@x, .@y; if ( .maptrigger$ != "all" ) { for ( set .@i, 0; .@i < .maptriggersize; set .@i, .@i +1 ) { if ( .@map$ == .maptrigger$[.@i] ) break; } if ( .@i == .maptriggersize ) end; } attachrid killedrid; if ( killerrid != getcharid(3) && ( .msg_die || .msg_kill ) ) { if ( .msg_die ) message strcharinfo(0),"You have been killed by "+ rid2name(killerrid); if ( .msg_kill ) message rid2name(killerrid),"You just killed "+ strcharinfo(0); } if ( @PlayersKilledStreak >= .holyshit ) set .@streakname$,"Beyond Godlike"; else if ( @PlayersKilledStreak >= .godlike ) set .@streakname$,"Godlike"; else if ( @PlayersKilledStreak >= .monsterkill ) set .@streakname$,"Monster Kill"; else if ( @PlayersKilledStreak >= .wickedsick ) set .@streakname$,"Wicked Sick"; else if ( @PlayersKilledStreak >= .unstoppable ) set .@streakname$,"Unstoppable"; else if ( @PlayersKilledStreak >= .megakill ) set .@streakname$,"Mega-kill"; else if ( @PlayersKilledStreak >= .dominating ) set .@streakname$,"Dominating"; else if ( @PlayersKilledStreak >= .killingspree ) set .@streakname$,"Killing Spree"; if ( @PlayersKilledStreak >= .killingspree && killerrid == getcharid(3) ) announce strcharinfo(0) +" has ended "+( (sex)?"him":"her" )+" own "+ .@streakname$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ .@map$):""),16|.announce; else if ( @PlayersKilledStreak >= .killingspree ) announce rid2name(killerrid) +" has ended "+ strcharinfo(0) +"'s "+ .@streakname$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ .@map$):""),16|.announce; else if ( .announcekill && killerrid != getcharid(3) ) announce rid2name(killerrid) +" has pawned "+ strcharinfo(0) +"'s head "+( (.announcemap)?("at "+ .@map$):""),16|.announce; set @PlayersKilledStreak,0; set @dota_multikills,0; if ( .ownage && getcharid(.ownage) ) { setd ".dotaown_"+ getcharid(.ownage), 0; set .@killedgroup, getcharid(.ownage); } if ( killerrid == getcharid(3) || baselevel < .lvltokill ) end; if ( .minlvlrange ) set .@killedlvl, baselevel; attachrid killerrid; if ( .minlvlrange && .@killedlvl + .minlvlrange < baselevel ) end; if ( .counttopunish ) { if ( @sitkillminute != gettime(2) ) { deletearray @sitkillid, 128; deletearray @sitkilltimes, 128; set @sitkillminute, gettime(2); } set .@sitkillsize, getarraysize(@sitkillid); for ( set .@i,0; .@i < .@sitkillsize; set .@i, .@i +1 ) { if ( @sitkillid[.@i] != killedrid ) continue; else { set @sitkilltimes[.@i], @sitkilltimes[.@i] +1 ; if ( @sitkilltimes[.@i] >= .counttopunish ) { warp "SavePoint",0,0; announce strcharinfo(0) +" , Stop killing "+ rid2name(killedrid) + " !!!",0; debugmes strcharinfo(0) +" is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[.@i] + " times"; logmes "is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[.@i] +" times"; set @PlayersKilledStreak, @PlayersKilledStreak +1 - .counttopunish; set PlayersKilled, PlayersKilled +1 - .counttopunish; if ( .ownage && getcharid(.ownage) ) setd ".dotaown_"+ getcharid(.ownage), getd(".dotaown_"+ getcharid(.ownage) ) +1 - .counttopunish; end; } break; } } if ( .@i == .@sitkillsize ) { set @sitkillid[.@i], killedrid; set @sitkilltimes[.@i], 1; } } set @PlayersKilledStreak, @PlayersKilledStreak + 1; set PlayersKilled, PlayersKilled + 1; if ( @PlayersKilledStreak == .killingspree ) setarray .@streakname$,"killingspree.wav","is on a KILLING SPREE","!"; else if ( @PlayersKilledStreak == .dominating ) setarray .@streakname$,"dominating.wav","is DOMINATING","!"; else if ( @PlayersKilledStreak == .megakill ) setarray .@streakname$,"megakill.wav","has a MEGA KILL","!"; else if ( @PlayersKilledStreak == .unstoppable ) setarray .@streakname$,"unstoppable.wav","is UNSTOPPABLE","!!"; else if ( @PlayersKilledStreak == .wickedsick ) setarray .@streakname$,"wickedsick.wav","is WICKED SICK","!!"; else if ( @PlayersKilledStreak == .monsterkill ) setarray .@streakname$,"monsterkill.wav","has a MONSTER KILL","!!"; else if ( @PlayersKilledStreak == .godlike ) setarray .@streakname$,"godlike.wav","is GODLIKE","!!!"; else if ( @PlayersKilledStreak >= .holyshit && ( (@PlayersKilledStreak - .holyshit) % .continue == 0 ) ) setarray .@streakname$,"triplekill.wav","is BEYOND GODLIKE",". Someone KILL "+( (sex)?"HIM":"HER" ) +"!!!!!!"; if ( .@streakname$[1] != "" ) { announce strcharinfo(0) +" "+ .@streakname$[1] +"["+ @PlayersKilledStreak +"] "+( (.announcemap)?("at "+ .@map$):"") + .@streakname$[2],16|.announce; if ( .sound == 1 ) soundeffectall .@streakname$[0],0,.@map$; else if ( .sound == 2 ) soundeffectall .@streakname$[0],0; else if ( .sound == 3 ) soundeffect .@streakname$[0],0; } set @dota_multikills, @dota_multikills + 1; deltimer "DOTAPVP::OnStreakReset"; addtimer 18000,"DOTAPVP::OnStreakReset"; if ( .ownage ) { set .@sideid, getcharid(.ownage); if ( .@sideid != .@killedgroup ) setd ".dotaown_"+ .@sideid, getd(".dotaown_"+ .@sideid ) + 1; } set .@dota_multikills, @dota_multikills; set .@origin, getcharid(3); sleep 1500; if ( .@sideid && .ownage && .@sideid != .@killedgroup && getd(".dotaown_"+ .@sideid) >= .owned && ( ( getd(".dotaown_"+ .@sideid) - .owned ) % .owncontinue == 0 ) ) { if ( .announce ) mapannounce .@map$, "The "+( (.ownage == 1)?"party":"guild" )+" ["+( (.ownage == 1)?getpartyname(.@sideid):getguildname(.@sideid) )+"] is OWNING["+ getd(".dotaown_"+ .@sideid) +"] !!!",16; else announce "The "+( (.ownage == 1)?"party":"guild" )+" ["+( (.ownage == 1)?getpartyname(.@sideid):getguildname(.@sideid) )+"] is OWNING["+ getd(".dotaown_"+ .@sideid) +"] !!!",16; if ( .sound == 1 ) soundeffectall "ownage.wav",0,.@map$; else if ( .sound == 2 ) soundeffectall "ownage.wav",0; else if ( .sound == 3 && attachrid(.@origin) ) soundeffect "ownage.wav",0; } sleep 1250; if ( !attachrid(.@origin) ) end; if ( .@dota_multikills == 2 ) { if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Double Kill !",16; else announce strcharinfo(0) +" just got a Double Kill !",16; if ( .sound == 1 ) soundeffectall "doublekill.wav",0,.@map$; else if ( .sound == 2 ) soundeffectall "doublekill.wav",0; else if ( .sound == 3 ) soundeffect "doublekill.wav",0; } else if ( .@dota_multikills == 3 ) { if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Triple Kill !!!",16; else announce strcharinfo(0) +" just got a Triple Kill !!!",16; if ( .sound == 1 ) soundeffectall "triplekill.wav",0,.@map$; else if ( .sound == 2 ) soundeffectall "triplekill.wav",0; else if ( .sound == 3 ) soundeffect "triplekill.wav",0; } else if ( .@dota_multikills == 4 ) { if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Ultra Kill !!!",16; else announce strcharinfo(0) +" just got a Ultra Kill !!!",16; if ( .sound == 1 ) soundeffectall "ultrakill.wav",0,.@map$; else if ( .sound == 2 ) soundeffectall "ultrakill.wav",0; else if ( .sound == 3 ) soundeffect "ultrakill.wav",0; } else if ( .@dota_multikills >= 5 ) { if ( .announce ) mapannounce .@map$, strcharinfo(0) +" is on a Rampage !!!",16; else announce strcharinfo(0) +" is on a Rampage !!!",16; if ( .sound == 1 ) soundeffectall "killingspree.wav",0,.@map$; else if ( .sound == 2 ) soundeffectall "killingspree.wav",0; else if ( .sound == 3 ) soundeffect "killingspree.wav",0; } end; OnWhisperGlobal: dispbottom "Your current Streak : "+ @PlayersKilledStreak; dispbottom "Your total Kills : "+ PlayersKilled; if ( .ownage && getcharid(.ownage) ) dispbottom "Your "+( (.ownage ==1)?"party":"guild" )+" Own : "+ getd(".dotaown_"+ getcharid(.ownage) ); end; OnStreakReset: set @dota_multikills, 0; end; } //- script Unfro113 -1,{ //OnPCStatCalcEvent: //if(isequipped(4302)) { //bonus2 bSubRace,RC_Player,12; //end; //} //} //- script Unfro113 -1,{ //OnPCStatCalcEvent: //if(isequipped(60166)) { //if(BaseClass==Job_Taekwon) bonus bstr,5; //end; //} //}
-
Guys read OP, it says patches applied to the exe.
-
-
-
The issue you're encountering, where it cannot be patched, is because the version they provided for you to play with has already been patched. It is not the original EXE file. If there is a patch that has already been applied and modified in their own way, we won't be able to select that patch to change or modify it.
-
Is there a way to use ^i[984] or mesitemicon in a switch(select( ?
-
only works on some 2023, 2024 to 2025
-
I didn't know it was already patched! Thanks!! I'm having this same issue, this is why I thought the ragexe was not patched. For some reason after updating to this new 2025 client, non local players can't select their characters.
-
It's already patched in, if OP could supply the unpatched exe it would be cool but he is already generous in sharing latest client.
-
-
2022
-
Version 1.0.8
19 downloads
Rsm Editor is a tool to edit RSM1 and RSM2 model files from Ragnarok Online. How to install Download the zip archive provided from the download link on this page. Install the application with Rsm Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it (the tool requires .NET 4.0). Once you are done, you can start the program from the link on your desktop. If you are opening the software for the first time, you'll be prompted with a setting resource window. You can either add a data folder or a list or GRFs from this window. This will be used for loading textures on your models. Key features Can edit both RSM1 and RSM2 file formats. When saving, you can also downgrade or upgrade the model version. The tool uses a different technique for version conversion which should give very accurate results. Position, scale and texture keyframes cannot be converted. Undo and redo for any operation. Quaternions are translated into Euler angles using the YXZ order. Merging different models can be done by right-clicking a mesh node or by drag and dropping another mesh directly. Easy texture modification for each mesh. Enable to set two-faced polygons for the entire model (to avoid invinsible faces in-game). Files can be associated with the tool through Windows (there will not be a setting for this within the software). Backups are created while you are editing the mesh. You can view the list via Debug > Backups manager... Automatically fixes mesh names and root node upon saving. There is no conversion to fbx and vice versa at the moment. Useful shortcuts All shortcuts can be modified via File > Settings > Shortcuts. Pressing Enter on a mesh will center the camera around it. You can quickly duplicate a mesh with Ctrl-C/Ctrl-V. You can hold the Shift key to snap the Gizmo when applying a transformation. You can also hold Shift when selecting a frame. You can select a mesh directly by holding Alt while clicking on it in the viewport. You can enable the wireframe view by pressing F8 or View > Wireframe view. This is useful when positioning meshes. Modifying transform origin The origin position is used for the rotation and scale transformations. To modify, press F1 or View > Show origin, then move the white gizmo. Modifying textures or normals If you click on the model rather than a mesh, you'll have a few more options. Smooth normals is the recommended method. The list of textures can be edited directly. The textures shown in this node are for all meshes together. If you edit the texture locally from your data folder, you can reload the model textures by using Ctrl-R or Transform > Reload model. Animation transform If you've already made an animation for a mesh and you want to apply a rotation (or translation) to all keyframes, you can do so by using the animation transform feature. Press F7 or Animation > Animation transform. This mode applies the transformation to all keyframes at the same time. Keyframes edit You can select multiple keyframes by holding down Shift+LeftMouseButton in the timeline view. You can unselect specific keys by pressing Ctrl+LeftMouseButton. You can move the selected frames by holding down LeftMouseButton. You can copy and paste keys with Ctrl-C/Ctrl-V. You can select all keys with Ctrl-A or deselect all with Ctrl-D. Gizmo orientation By pressing F4 or View > Change gizmo orientation, you can change between global or local orientation. Local orientation sets the gizmo to the current mesh transformation, while global ignores all mesh transformations. Each mesh has local transformations and global transformations (this is unrelated to the gizmo orientation). The difference is that local transformations do not apply to children (not entirely true for RSM2 though). Keyframe transformations always apply to children.Free - Last week
-
GretelHS not complet for 100%, because all still basic setup
-
I’ve now resolved the issue. I’d like to sincerely thank everyone for their help and advice. A special thank you to Skylove for your generosity in sharing—it's rare to find someone so kind and willing to help others in this way. You are truly a good-hearted and generous person. Thank you again, and I encourage you to keep updating and sharing!
-
Ty for sharing. Able to login but stuck after select service and turn into failed connect to server. idk what i miss. other client work fine. nothing error from console.
-
Thank you all bro i'll try.
-
I think it's about lua files, like attendance feature, must match server and lua. Or, needs to be in some iteminfo file, since there are a lot of duplicates. Cash shop banner: - data\luafiles514\lua files\datainfo\tb_cashshop_banner.lua
-
help me to compile project?