All Activity
- Past hour
-
As shown on the screen, the fix files are clean, unpacked client files. You can apply WARP patches using these files, but some patches may not be supported. In such cases, you must modify the client manually — please do not contact me for support regarding this. Commercial use is strictly prohibited. Example: As of the 2024-05-16 client, WARP can no longer patch the clientinfo.xml file. You will need to modify it manually. In addition: 2023-12-06_Ragexe_1701399778_patched.exe (Restore clientinfo.xml, externalsettings Korea patch) — This file includes additional patches that I applied manually. 2025-05-08_Ragexe.exe and 2025-06-04_Ragexe.exe — These files have also been modified with additional patches and are distributed in a compressed state. They cannot be edited further.
-
If it is a new version with a small file size, you cannot edit or hex anything because the file has been encrypted and compressed.
- Today
-
VIP STATUS ICON ERROR (status_change_start: Invalid status change (1500)!)
imat1 replied to funtwocrasher's question in General Support
Update: Working on the latest rathena version as of the date I'm typing this. // SERVER SIDE 1. Open src/map/status.cpp find and add after case SC_JEXPBOOST: case SC_EXPBOOST: case SC_JEXPBOOST: case SC_VIPSTATE: // VIP Status Icon case SC_PERIOD_RECEIVEITEM_2ND: case SC_PERIOD_PLUSEXP_2ND: 2. Open src/map/status.hpp find and add before SC_MAX, SC_OVERCOMING_CRISIS, SC_VIPSTATE = 2000, // VIP Status Icon SC_MAX, //Automatically updated max, used in for's to check we are within bounds. find and add before EFST_MAX, /// Do not modify code above this, since it will be automatically generated by the API again EFST_VIPSTATE = 2000, // VIP Status Icon EFST_MAX, 3. Open src/map/script_constants.hpp find and add after export_constant(SC_OVERCOMING_CRISIS); export_constant(SC_CONTENTS_20); export_constant(SC_OVERCOMING_CRISIS); export_constant(SC_VIPSTATE); // VIP Status Icon /// Do not modify code below this, until the end of the API hook, since it will be automatically generated again find and add after export_constant(EFST_C_BUFF_9); export_constant(EFST_C_BUFF_9); export_constant(EFST_VIPSTATE); // VIP Status Icon /// @APIHOOK_END 4. Open db/import/status.yml copy and paste (your status.yml should look like this if you haven't added any custom sc_status) Header: Type: STATUS_DB Version: 4 Body: - Status: Vipstate Icon: EFST_VIPSTATE Flags: NoDispell: true NoBanishingBuster: true 5. Open db/import/item_db.yml or db/pre-re/item_db_usable.yml (up to you) - Id: 30000 AegisName: Vip_Card_3D Name: VIP Card 3D Type: Cash Buy: 20 Weight: 10 Trade: NoDrop: true NoSell: true NoGuildStorage: true NoMail: true NoAuction: true Script: | if (vip_status(VIP_STATUS_ACTIVE)) { dispbottom "You have extended your VIP duration."; } else { dispbottom "You have successfully become a VIP member."; sc_start SC_VIPSTATE,-1,1; } vip_time 4320; - Id: 30001 AegisName: Vip_Card_7D Name: VIP Card 7D Type: Cash Buy: 20 Weight: 10 Trade: NoDrop: true NoSell: true NoGuildStorage: true NoMail: true NoAuction: true Script: | if (vip_status(VIP_STATUS_ACTIVE)) { dispbottom "You have extended your VIP duration."; } else { dispbottom "You have successfully become a VIP member."; sc_start SC_VIPSTATE,-1,1; } vip_time 10080; - Id: 30002 AegisName: Vip_Card_30D Name: VIP Card 30D Type: Cash Buy: 20 Weight: 10 Trade: NoDrop: true NoSell: true NoGuildStorage: true NoMail: true NoAuction: true Script: | if (vip_status(VIP_STATUS_ACTIVE)) { dispbottom "You have extended your VIP duration."; } else { dispbottom "You have successfully become a VIP member."; sc_start SC_VIPSTATE,-1,1; } vip_time 43200; 6. Open npc/custom and add a text file named vip_system.txt copy and paste - script VIP_TIME -1,{ OnPCLoginEvent: if (vip_status(1)) { .@remain = vip_status(VIP_STATUS_REMAINING); // seconds dispbottom "Remaining VIP duration: " + Time2Str(vip_status(VIP_STATUS_REMAINING) + gettimetick(2)); sc_start SC_VIPSTATE, .@remain * 1000, 1; end; } OnPCLogoutEvent: if (vip_status(1)) { sc_end SC_VIPSTATE; // remove the buff to update the timer on login } end; } 7. Open npc/scripts_custom.conf add to the last line npc: npc/custom/vip_system.txt 8. Recompile your server // CLIENT SIDE 1. You need four files from your RO GRF. Locate and extract them first from luafiles514/lua files/stateicon/ efstids.lub stateiconimginfo.lub stateiconinfo.lub stateiconinfo_f.lub // I'm not sure if this one is necessary but I decided to include it anyway xD 2. Edit efstids.lub Scroll down last line and add. EFST_VIPSTATE = 2000, 3. Edit stateiconimginfo.lub Scroll down last line and add. Edit to your liking. StateIconList[EFST_IDs.EFST_VIPSTATE] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { { "VIP", COLOR_TITLE_BUFF }, { "%s", COLOR_TIME }, { "Base EXP Rate +50%" }, { "Job EXP Rate +50%" }, { "Drop Rate +50%" }, { "Additional 300 Storage Slot" }, { "Ignore gemstone requirement for skills" }, { "Max character limit increase" }, { "Auto Attack Feature" }, } } 4. Edit stateiconinfo.lub Scroll down last line and add. [EFST_IDs.EFST_VIPSTATE] = "vipicon.tga", 5. Edit stateiconinfo_f.lub Scroll down last line and add. EFST_IDs.EFST_VIPSTATE, Done! Congratulations! Free VIP Icon from here. Put it inside your grf - data\texture\effect Note: The timer on the VIP status icon will not be displayed if the duration exceeds 24 days and 19 hours. Unfortunately, I don't know how to make this possible either. -
These client files are provided solely for server testing purposes.
- Yesterday
-
Uses bartershop feature
-
Thank you very much, the import folder worked perfectly It worked for me just by putting it directly in the import folder for some reason it doesn't work directly on the file, only by import folder
-
I think it should be working, as usual dont try it at town since maybe some dev might try at prontera/town with @pvp or something. U can try with the 4 example given (if im not mistaken) and see the damage. Try at any field/dungeon.
-
I just tried it and it's working fine for me. Please share what you put in the file and how you tested it.
-
Put in import folder
-
I'm using the latest revision of rathena and the file "rathena/db /skill_damage_db.txt" doesn't work, no matter what value I put when restarting the server or using @reloadskilldb it doesn't change the damage
-
@Functor I would like to contact you about Gepard too. if you see this message PM me please.
-
Please don't skip this post, I think it's something many in the community would like to be able to configure. The best thing would be to add something like this: // The rate the common items are dropped (Items that are in the ETC tab, besides card) item_rate_common: 100 item_rate_common_boss: 100 item_rate_common_mvp: 100 item_drop_common_min: 1 item_drop_common_max: 10000 But from map drop: // The rate the map items are dropped item_rate_map: 100 item_rate_map_boss: 100 item_rate_map_mvp: 100 item_drop_map_min: 1 item_drop_map_max: 10000
-
Thank you it work perfectly
- Last week
-
The 2023+ clients use new job IDs for the jRO costumes: JOB_RUNE_KNIGHT_2ND = 4332, JOB_MECHANIC_2ND = 4333, JOB_GUILLOTINE_CROSS_2ND = 4334, JOB_WARLOCK_2ND = 4335, JOB_ARCHBISHOP_2ND = 4336, JOB_RANGER_2ND = 4337, JOB_ROYAL_GUARD_2ND = 4338, JOB_GENETIC_2ND = 4339, JOB_SHADOW_CHASER_2ND = 4340, JOB_SORCERER_2ND = 4341, JOB_SURA_2ND = 4342, JOB_MINSTREL_2ND = 4343, JOB_WANDERER_2ND = 4344, You need to add them in the source. Open file \src\common\mmo.hpp. Find JOB_SKY_EMPEROR2 = 4316, then add the following code below it: JOB_RUNE_KNIGHT_2ND = 4332, JOB_MECHANIC_2ND, JOB_GUILLOTINE_CROSS_2ND, JOB_WARLOCK_2ND, JOB_ARCHBISHOP_2ND, JOB_RANGER_2ND, JOB_ROYAL_GUARD_2ND, JOB_GENETIC_2ND, JOB_SHADOW_CHASER_2ND, JOB_SORCERER_2ND, JOB_SURA_2ND, JOB_MINSTREL_2ND, JOB_WANDERER_2ND, Save the file then recompile the server. I've updated the example script for you: // callfunc "F_JobSuit",<Job ID>; //Change to specific sprite // callfunc "F_JobSuit",-1; //Change to 2nd job // callfunc "F_JobSuit",-2; //Change to transcendent 2nd job // callfunc "F_JobSuit",-3; //Change to 3rd job // callfunc "F_JobSuit",-4; //Change to 4th job // callfunc "F_JobSuit",-5; //Change to alternative third class costume // callfunc "F_JobSuit"; //Return to default sprite function script F_JobSuit { .@block_expanded_jobs = false; //Disable changing for expanded job player (true/false) if (getargcount() == 0) { if (PACKETVER >= 20231220) setlook LOOK_BODY2,Class; else if (JobSuit_id > 4331 && JobSuit_id < 4345) setlook LOOK_BODY2,0; else changebase Class; JobSuit_active = false; JobSuit_id = 0; end; } if (getarg(0) > -1) { if (jobname(getarg(0)) == "Unknown Job") { dispbottom "Unknown Job"; end; } callsub S_OK,getarg(0),1; } if (.@block_expanded_jobs && (BaseClass == Job_Novice || BaseClass == Job_Summoner || BaseClass == Job_Gunslinger || BaseClass == Job_Ninja || BaseClass == Job_Taekwon)) end; if (BaseClass == Job_Summoner) { if (Upper) callsub S_OK,Job_Summoner; else callsub S_OK,Job_Spirit_Handler; } else if (BaseClass == Job_Gunslinger) { switch(getarg(0)) { case -1: callsub S_OK,Job_Gunslinger; case -2: case -3: callsub S_OK,Job_Rebellion; case -4: case -5: default: callsub S_OK,Job_Night_Watch; } } else if (BaseClass == Job_Ninja) { switch(getarg(0)) { case -1: callsub S_OK,Job_Ninja; case -2: case -3: callsub S_OK,(Sex ? Job_Kagerou : Job_Oboro); case -4: case -5: default: callsub S_OK,(Sex ? Job_Shinkiro : Job_Shiranui); } } else if (BaseClass == Job_Novice) { switch(getarg(0)) { case -1: callsub S_OK,Job_Novice,1; case -2: case -3: callsub S_OK,Job_Super_Novice; case -4: case -5: default: callsub S_OK,Job_Hyper_Novice; } } else if (BaseJob == Job_Soul_Linker) { switch(getarg(0)) { case -1: case -2: callsub S_OK,Job_Soul_Linker; case -3: callsub S_OK,Job_Soul_Reaper; case -4: case -5: default: callsub S_OK,Job_Soul_Ascetic; } } else if (BaseJob == Job_Star_Gladiator) { switch(getarg(0)) { case -1: callsub S_OK,Job_Taekwon; case -2: callsub S_OK,Job_Star_Gladiator; case -3: callsub S_OK,Job_Star_Emperor; case -4: case -5: default: callsub S_OK,Job_Sky_Emperor; } } switch(getarg(0)) { case -1: callsub S_OK,roclass(eaclass()&EAJ_UPPERMASK); case -2: callsub S_OK,roclass(eaclass()&EAJ_UPPERMASK|EAJL_UPPER); case -3: callsub S_OK,roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); case -4: .@job = roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); callsub S_OK,roclass(eaclass(.@job)|EAJL_FOURTH|EAJL_UPPER); case -5: .@job = roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); if (.@job > 0) callsub S_OK,roclass(eaclass(.@job)|EAJL_FOURTH|EAJL_UPPER)+80; } S_OK: .@c = getarg(0); if (.@c < 1 && getarg(1,0) == 0) end; if (PACKETVER >= 20231220) setlook LOOK_BODY2,.@c; else if (.@c > 4331 && .@c < 4345) setlook LOOK_BODY2,1; else changebase .@c; JobSuit_active = true; JobSuit_id = .@c; end; } - script #JobSuitOnLogin -1,{ OnPCLoginEvent: if (JobSuit_active) F_JobSuit(JobSuit_id); end; }
-
@Racaae puede hacer lo de @JASHI11?
-
Quests, Games: sader's hunting quest
JoseRicart replied to sader1992's topic in Game, Event, Quest Script Releases
@hmwater001 I managed to fix it, this script is working for 2025 rAthena Hunting_Questv1.txt -
need help sa kRO game client ko for my server
Mice replied to romanmydesenyo's topic in Tulong para sa Client
Hello CLIENT DATE yan,, may sinend akong PM sayo check mo -
need help sa kRO game client ko for my server
Eterunaru replied to romanmydesenyo's topic in Tulong para sa Client
Pm po mura lang -
need help sa kRO game client ko for my server
romanmydesenyo replied to romanmydesenyo's topic in Tulong para sa Client
helo mica, may guide ka din ba pano iuprade ang packetver iba kasi version ng naka install sa ubuntu server ko. #define PACKETVER 20211103 yan ang packetver version ko.. salamat -
need help sa kRO game client ko for my server
Mice replied to romanmydesenyo's topic in Tulong para sa Client
Hello sa pag setup ng CLIENT halso andito na sa guide na ito i check mo nalang -
Thank you, it's working. Now, how can I do it like that? I'm using this for a Japanese Sprite, so how can I make it work using the JRO Sprite? It worked fine with the 2022 EXE. Sorry I didn't include this information in my first post. I thought their implementation was the same. EquipScript: | changebase (roclass(eaclass()&EAJ_UPPERMASK)+roclass(EAJL_UPPER)); changelook LOOK_BODY2,3; UnEquipScript: | changelook LOOK_BODY2,0; changebase Class;
-
need help sa kRO game client ko for my server
romanmydesenyo posted a topic in Tulong para sa Client
Hello baka may makatulong sa akin sa pag setup ng game client ko para sa private server ko.. willing ako mag pay sana mura lang hehehe.. paki pm ako thank you! -
Hello, I don't see the variable being set in your item script. You can use OnPCLoginEvent on a NPC to reapply the appearance. Replace changebase with setlook LOOK_BODY2. Example using a function: Script: | callfunc "F_JobSuit"; UnEquipScript: | callfunc "F_JobSuit",-1; // callfunc "F_JobSuit"; //Change to evolution sprite // callfunc "F_JobSuit",<Job ID>; //Change to specific sprite // callfunc "F_JobSuit",-1; //Return to default sprite function script F_JobSuit { if (getarg(0,0) != -1) { if (jobname(getarg(0,-1)) != "Unknown Job") .@c = getarg(0); else if (BaseJob == Job_Priest) .@c = JOB_ARCH_BISHOP; else if (BaseJob == Job_Wizard) .@c = JOB_WARLOCK; else if (BaseJob == Job_Blacksmith) .@c = JOB_MECHANIC; else if (BaseJob == Job_Hunter) .@c = JOB_RANGER; else if (BaseJob == Job_Assassin) .@c = JOB_GUILLOTINE_CROSS; else if (BaseJob == Job_Crusader) .@c = JOB_ROYAL_GUARD; else if (BaseJob == Job_Monk) .@c = JOB_SURA; else if (BaseJob == Job_Sage) .@c = JOB_SORCERER; else if (BaseJob == Job_Rogue) .@c = JOB_SHADOW_CHASER; else if (BaseJob == Job_Alchemist) .@c = JOB_GENETIC; else if (BaseJob == Job_Bard) .@c = JOB_MINSTREL; else if (BaseJob == Job_Dancer) .@c = JOB_WANDERER; if (PACKETVER >= 20231220) setlook LOOK_BODY2,.@c; else changebase .@c; JobSuit_active = true; JobSuit_id = .@c; end; } if (PACKETVER >= 20231220) setlook LOOK_BODY2,Class; else changebase Class; JobSuit_active = false; JobSuit_id = 0; end; } - script #JobSuitOnLogin -1,{ OnPCLoginEvent: if (JobSuit_active) F_JobSuit(JobSuit_id); end; }