Jump to content

Highest Reputation Content

#52239 [WIP]ExtendedBG

Posted by Dastgir on 05 March 2015 - 01:38 PM

Hello Hercules Community,

Its been few weeks(probably 2 months(8 weeks :P)), since I am working on this project side by side(thus it took 2 months),
Let me explain it first.
It is ExtendedBG, which tends to contain all eAmodBG modes and extra modes(as and when coded).
Currently, only 5-6 modes is coded.... and some major bug fixing and improvements of script stage is going on .
Some Previews:

Ohh, and the last thing I forgot to tell, :P
Its 100% Plugin and Script, no Source Edits ..

(And Yes, it will be free release once its Fully Done....)

jaBote co-founded this project(and really thanks to him , that he motivated me at start at provided some functions and idea of how the base should be, and what we should do it to give flavour of Hercules in it). [Inactive now]

Leave Comments/Suggestions if you find something.

Just Thought to share on what I am working on(I intended to open this topic 2 days later(something special that day...), but I can't resist myself from opening it now),

Those who wanna test eBG, I have a Test Server on, (You can ofcourse report bugs if found, since that is updated Version) - test server have @baselvlup, @joblvlup, @item, @job, @joinbg for joining , @leavebg for leaving, @[email protected] Other Things: (Nothing).
Small Client Link: DOWN CURRENTLY


Want to encourage me?? ;)
Posted Image

29 June/1 Sept:
Everything Managed by me on hold, No PC to code.

#19248 NEMO - Client Patcher

Posted by Neo on 10 November 2013 - 05:07 PM

N.E.M.O. - Neo Exe Modification Organizer

Why another client patcher? well
1) WeeDiffGen - isn't working for 2013 clients + it depends on dlls (not that its a bad thing but i like scripting :P)
2) xDiffGen - yes its scripted but we need to depend on xdiff files.

so i made a new one based on xDiffGen and here it is. The patches are written in QtScript format.
Details of making a patch have already been written in a seperate topic - although now it needs to be updated with more details.
I have already converted most of the patches from xDiffGen.

Why this name? - well I didn't want it to be called * Gen No offense :D 
plus someone keeps calling me Nemo in IRC which gave me the idea :P



How to use?

1) First you need to specify your client file in Input Exe file box. If you browse to select the file name, Output Patched box gets updated with a _patched suffix filename automatically. Ofcourse you can select your own name for the output.
2) Next we need to load both the client and the scripts (patches & addons). so click Load Client button.
3) Select the patches you want . In case you patched once before (for whatever date) they will be saved in your local and you can use the Select Previous button to select them again. Also you can try using the Select Rcomnded button to select all the Recommended patches.
4) So your patches are selected and client is loaded what next but to Apply Patches  which will generate the output file. In 2.0 version , NEMO also generates a .secure.txt file containing the MD5, SHA1 and CRC32 values of the output exe file which you can use in various tools.
5) You can use the Save Profile and  Load Profile buttons for saving/reloading a set of patches & input values, that you have selected (even if they are not applied) for future use.
6) Whenever you apply patches to a client, NEMO updates the patchlist.log file (along with Inputlist.db) in the folder where NEMO.exe is. This file will contain the list of patches you have applied along with their IDs (do not tamper with either of them).
Changes in 2.0:
1) I have made some obvious modifications to the interface (you can definitely see the change in case you have seen v1.0).
     i) Buttons have come downwards and is no longer strippable (toolbar has been fixed in position)
     ii) New status Label has been added which shows your currently loaded client date and how many patches are selected.
     iii) NEMO now has support for Addons - scripts that are meant to retrieve data from the client and do its own thing (not patch the client).
          All the Extract xDiff patches has been added here already. 1 extra addon will be coming soon once i can fix it.
     iv) New Filter box has been added which does live search (i.e. filter as you type) for filtering out only the patches u want to see.
           For e.g. if you type color, it will only show patches that have the string color in either it's name or the description.
          You can also use regular expression :). Also you can sort the columns now :D
    v) An upcoming feature - Test Patches. this one you can use for testing a newly added patch for a variety of clients that you select.
2) NEMO is no longer there in SVN. I have shifted it to GitHub :D. The rar file uploaded has the .git file so you should be able to directly pull to get updates. But just in case I have also provided the repository link below.
Remember to pull for updates before using NEMO and let me know if you are facing any bugs or issues or if i have missed out on anything. Enjoy ^_^.
Repository: https://github.com/MStr3am/NEMO.git
Download Link: NEMO zip file 

#5620 rAthena devs/staff/members on Hercules

Posted by Jman on 25 May 2013 - 04:32 AM



While we do not mind that rAthena developers, staff members and regular members register an account, post or send PM's on our forums, we do not take kindly to 'rAthena is better because x y and z' posts, or anything promoting rAthena as a superior emulator because of such and such. There is no such post on rAthena made by a Hercules staff member about Hercules and we intend to keep it that way, we would appreciate the same respect.


Those who do not follow this simple clause listed above will have their post(s) deleted and/or hidden from view. Repeat offenders will be suspended from our forum with no further warnings or post manipulation.


We do not appreciate, nor welcome drama here. While criticism is welcome in the form of 'why doesn't Hercules have such and such a feature', drama and belittling a project (hercules or not) will not be tolerated. This is a collaboration, not a drama infested 12 year old's contest.


Thank you.

#25255 Hercules 1st 2014 MegaPatch

Posted by Ind on 11 January 2014 - 03:59 PM

Hercules: 1st 2014 MEGAPATCH

  • Helloooo! Starting 2014 with a boom, yet another outstanding patch from Hercules!

Patch Item #1: Scripting Level UP

  • Char and account variables overhaul
    • They're no longer limited to #define ACCOUNT/GLOBAL_REG_NUM, they're now limitless
    • Their storage capabilities have received a colossal improvement, each numeric variable now uses at least 1/10 the memory it did previously, and we achieved it while increasing speed, simply outstanding as expected from us.
    • Thanks to their quantity no longer being limited, char and account variables now support arrays, i.e. setarray #accreg[y],...;
    • Saving and loading procedures have been improved outstandingly! for instance, previously, if you had 100 char regs but only one had been modified or deleted, map server would need to send all of them and char server would have to re-insert all of them; now only modified or deleted ones are saving, increasing saving speed of both map and char server procedures and decreasing inter-server bandwidth by dinosaur steps.
  • Magnificent Array Improvement (to all variable types)
    • Size limit modified from 127 to ...2 billion!
    • Speed of countless array operations have been improved thanks to new array handling, e.g. whereas previously upon deleting any array it'd set its 127 possible values to 0 (regardless of how many values it actually had) now it only deletes as many members as it possesses
    • getarraysize (the-oh-misleading-function since it returns the arrays' highest index) has been sped up as well thanks to this, and it no longer wastes script stack room on every interaction
    • And the future
      • This improvement has open way for many other amazing features, for example, Haruna has designed a foreach implementation for scripting among some other useful enhancements
  • Global account variable handling redesign
    • To clarify, this is that ancient type used on multiple-char-server setups, ##varname, which are present in all servers an accounts logs into, as opposed to #varname which, while account-wide, are considered 'local' to a char server.
    • Saving and loading have been modified to match char/local-acc variable new design, on its own it already is a major speed boost and bandwidth saver, however, it has also improved login servers overall processing speed, thanks to its processing no longer being attached to ordinary account handling, this means that all operations that required login server to use an accounts data (i.e. login/pincode change/ban/block/etca) have been sped up, and use less memory.
  • '.', '.@' and ''' variables write operation speed up
  • trying to write ''' variables outside instances will now print warnings instead of silently doing nothing
  • runtime read/write operations of global/temporary(@) char variables, as well as account variables, have been considerably sped up, whereas previously it'd run a str lookup to find a match for read/write it now uses the variable id, furthermore it now relies on DBMaps to handle the lookup (whereas previously it was a normal loop).
  • Database tables overhaul
    • We've analysed global reg data storage and we've decided that it not only is a memory waste, it is a processing one as well due to how int and str variables share the same storage, we've analysed global reg data for a number of large servers and have identified most variables are numbers, by a outstanding majority, with that in mind, this patch introduces 6 tables that will improve this drastically. You'll notice this patch's SQL upgrade file will take care of this, and thus migrate the data properly into the new tables.

Special Thanks To:

  • Haruna ! <3 wouldn't have gotten half of it done if it weren't for Haru, thank you so much sensei!
  • jaBote, for proposing it!
  • Emistry
  • Yommy
  • Streusel

Patch Item #2: @autotrade Persistency

  • Also known as: @at merchants survive server crashes/restart, as soon as the server starts again they're re-spawned.
  • May be disabled on src/config/core.h by commenting out AUTOTRADE_PERSISTENCY

Special Thanks To:

  • Haruna!
  • Michieru, this feature wouldn't be out now if it weren't for him, lets all thank him!
  • Dekamaster/Nightroad for helping me on this features original design, 3-4 years ago. Thank you master <3!


#2886 Client Translation Project

Posted by Michi on 14 April 2013 - 04:41 PM

This is a new translation client project that Dastgir and Me want to share for Hercules only.

What this Project contain?

   - itemInfo.lua with iro/kro translation.
   - Some lua that contain last translation found on the board or made by us.
   - Last accessoryid.lub / accname.lub / jobname.lub / NPCIdentity.lub decompiled.
   - Texture Buttons translate.
   - msgstringtable.txt fully translate.
   - Txt files translate (questid2display.txt, mapnametable.txt etc...)
   - Up-To-Date itemInfo and other files required to run a basic Translated client.

You can help us by opening PR, or just pm Dastgir to get access to the repo...

What Client is compatible?

   - Client compatible until 2015.

The link:
Join us @ IRC
Network: RizonHost: irc.rizon.netChannel: #ROClientSide

#51459 Hercules Ultimate Localization Design

Posted by Ind on 23 February 2015 - 05:02 PM

Hercules Ultimate Localization Design
Hello~! - What?!

  • Servers are now able to run under any number of languages, without having any of the default files modified
  • Designed by Haruna and Ind


Translating NPCs without editing them

  • By launching map server with the --generate-translations param a .pot (.po template) file will be created with all of the servers translate-able strings (including all npc dialogue), this file can be edited in text mode or by utilising any .po editor (there are many out there; for a high range of OSes)
  • A .po file does not need to be fully translated to be used, map server will know when loading the file, and will fallback to the hardcoded string in the npc files as necessary
  • Users are able to change their language with the new @lang command, @lang controls what language users see in @commands (msg_txt stuff) as well as over npc dialogues
  • map-server.conf has a new setting called default_language where server owners may specify which language should be used as a base
  • When you have a new .po file you want map server to use, add it to db/translations.conf

Easy to Maintain

  • Since .po is a widely used format there are many tools that can help with merging for example Poedit, which easily consolidates a translated .po file with a newly generated .pot. For example when you have a translated .po and since it was created npc dialogs were added or modified all you have to do is launch map server to generate a new .pot, open your old .po in Poedit, go "Catalog -> Update from POT file" and it will insert the new translatable strings without touching your existing translations, it will also notify you of any "obsolete" strings that are in your .po file but that are no longer in use

Script Command Macro

  • Besides messages.conf, all the dialogue utilised by 'mes' and 'select' is included in the .pot automatically, this patch also introduces a mechanism for utilising strings outside of these commands, the script macro _() which can be employed just as if it were a script function, for example set .@status$,_("Available"); tells map server to export "Available" as a translate-able string when it is run with --generate-translations (when running map server normally the macro has no overhead during runtime)

Special Thanks to

  • Raizen and Roberto from Cronus, we would not have worked on this if it weren't for them


Editing Example

  • TranslationSample1.png

#48849 Plugin Collections

Posted by Dastgir on 11 January 2015 - 06:34 AM

Hello Community,
 I am feeling like, there's many plugin on forum, but not been actively used, due to out-of-date plugin
I have updated Shikazu's Plugin first(as it was requested on the thread from 25th April), maybe Shikazu busy on his rl.
Also I have included My Plugins there.
I would like to add more plugins there(which are not updated on hercules forum <- please suggest if you find some outdated plugin and want me to update it :) )
List of Plugins and Owners:

Repository: https://github.com/dastgir/HPM-Plugins

#23368 Ragnarok Episode Timeline

Posted by kisuka on 20 December 2013 - 09:40 AM

This is a work in progress. Parts will be added as they are organized.

This topic will list out the major episode releases of kRO and the updates under them. This is to keep track of what episodes had which updates. This will assist us in making sure we aren't missing anything in Hercules. The dates below are for Main server release, not RE/Sakray testing period.

* Note: Official Hercules Developers and High Council members have permission to add or modify this list.

2002.08.03: Episode 1.0 : Start of the Adventure
2002.12.17: Episode 2.0 : Lutie
2003.02.04: Episode 3.0 : Comodo
2003.05.02: Episode 4.0 : War of Emperium
2003.07.15: Episode 5.0 : Yuno
2003.10.07: Episode 6.0 : Global Project

#23713 2013-12-23c kRO Client, Merry Christmas <3

Posted by Yommy on 23 December 2013 - 03:19 PM

Here is my christmas gift to Hercules. I wish you all have an awesome holiday and nice time with family.
I have included an xdiff file, but I recommend (when he manage to fix the multiple grf) you to use NEMO Client Patcher made by Neo.

You need to add the PacketShuffle stuff into src/map/packets.h, just follow the files pattern,
then edit src/common/mmo.h and change the PACKETVER to 20131223
do a recompile and the client will be able to connect.

2013-12-23cRagexe_v2.zip 2.5 MB

2013-12-23cRagexe_v2.xdiff 102 KB

This is a very new client, and it will probably require resources from the latest kRO updates.
so kRO will need to be fully updated, i recommend to use RO Patcher Lite made by Ai4rei.

Special Thanks to Rytech and Ind

See you in 2014.



Neo posted.an update here



Thank you



Neo posted some update here 

#13064 Flux Control Panel for Hercules

Posted by Gepard on 06 August 2013 - 04:06 PM

Flux Control Panel for Hercules


Flux CP is now officialy available for Hercules!


It is fully working with both pre-Renewal and Renewal Hercules servers. We will continue developing it, so it is always up-to-date and compatible with latest Hercules.


New theme

Hercules' Flux CP comes with a brand new theme. It's a grey-ish modern and clean HTML5 theme, called Emphaino.

It has a nice dropdown menu located on top of the screen, and a customizable footer area, where you can put some stuff that should be visible all the time (like links to social media, forums etc.).


A picture is worth a thousand words:

FireShot Screen Capture #001 - 'Item Shop » Flux Control Panel' - localhost_FluxCP__module=purchase.png

FireShot Screen Capture #002 - 'List Items » Flux Control Panel' - localhost_FluxCP__module=item.png



It's a HTML5 theme, so it requires a decent browser, or IE9+ (if you insist on using that).


Theme selection

Having two themes is great, but until now it was impossible to make use of them both. That's why theme selector has been added to both themes, so your users can pick whichever theme they like more.


Again, preview:



Extra credits



Hercules' FluxCP Github repository: https://github.com/HerculesWS/FluxCP



Bug reports, questions and suggestions are all welcome directly on GitHub: https://github.com/H...S/FluxCP/issues



#79540 Hercules Battlegrounds v1.0a

Posted by Smoke on 10 January 2017 - 09:38 PM

Hercules Battlegrounds

A full conversion and enhancement of eAmod's Battlegrounds system into a easy-to-install Hercules plugin library.

Version: 1.0a (alpha)





1) Place plugin files in plugin directory. (If you wish to re-compile the code, please do so the standard way.)
2) Place all script files in the default directory provided in the repository (or your own).
3) Place all database and config parts in their respective files.
4) in conf/plugins.conf add "hBG".


Instructions on installing Plugins - http://herc.ws/wiki/...ilding_a_plugin


Battleground Modes

  • Capture the Flag
  • Eye of Storm
  • Triple Inferno
  • Team DeathMatch
  • Bossnia
  • Conquest
  • Stone Control
  • Domination
  • Rush
  • Free For All

Why use it?
1) Prevents conflicts when updating Hercules.
2) Easy to install.
3) Can be easily modified for more functions/features in the future.

For contributors
If you wish to add a free BG script to the list of available battleground modes, please contact me.


Bug Reporting

Please feel free to open an issue on the repository and I'll get to it as soon as I can.

Donate to support the project and motivate updates.


#6524 Memory Slasher !!" - May 30 Patch

Posted by Ind on 30 May 2013 - 11:36 PM

Hercules casts "Memory Slasher !!" - May 30 Patch
Memory Slasher !!
Regardless all the fancy features in it, this patch's greatest achievement is smart, clever employment of memory, by looking at our memory usage wisely we've been able to reduce map-server's memory (RAM) usage by more than 2/3, about 183MB of RAM were dropped, while maintaining Hercules outstanding record on performance improvement. Beyond the memory usage drop there is also a significant processing speed improvement which can be noticed during boot, map cache loading which used to account for most of the map-servers boot time no longer exists, its gone, dead, fini, boom! it was replaced by a smart map cache handler that loads its data only when a map is necessary (the data is then kept until shut down), this logic also makes map-server's shut down process a hell lot faster.
Instance Rework
As suggested by the community, this wasnt supposed to be bundled with this commit but the memory usage improvements required me to modify how instances were stored, so I re-wrote part of it to fit the suggestion as well.

  • Instance Functionality/Feature
    • Server may now create instances of any maps regardless of client-side edits, e.g. one can clone prontera and call it "mymapname" (as is best described in the *instance_attachmap script command note)
    • Instances may now be available in 4 distinct ways (as is best described in *instance_create script command note), by nobody (server type instance, to be used with special map names), by a sole character, by a party, or by a guild
  • Script Command Changes
    • *instance_create 2nd param is now called owner_id instead of party_id, and it got a 3rd optional param that defines what kind of owner id it is (when not provided, assumes party_id, for backwards compatibility), available options are (IOT_ stands for INSTANCE OWNER TYPE) IOT_NONE (0), IOT_CHAR (1), IOT_PARTY (2) and IOT_GUILD (3).
    • *instance_destroy no longer autodetects instance id from party id
    • *instance_attachmap now supports a 4th, optional, param, "<new map name>", it will allow you to specify a entirely new map name for the instance (without the need of client-side edits). This option can be best employed when used on a instance of <owner_type> IOT_NONE
    • *instance_detachmap no longer autodetects instance id from party id
    • *instance_id no longer supports any param
    • *instance_set_timeout no longer autodetects instance id from party id
    • *instance_announce no longer autodetects instance id from party id, and to tell it to autodetect from the attached script you must set instance_id param as -1 as opposed to 0
    • *instance_npcname no longer autodetects instance id from party id
    • *has_instance no longer autodetects instance from party, however it now checks if attached player possesses a instance with same map as has_instance(<param>) checks for
    • *instance_warpall no longer autodetects instance from party
  • Other Changes
    • Instance IDs (valid ones) are now always >= 0 as opposed to > 0 (update your scripts!)

Battlegrounds Queue
As suggested by the community, most of its features were added in this patch, we were unable to finish it though because we lacked some information, we've put our questions in this topic, once our questions are answered we should be able to finish it in a matter of minutes (all the heavy lifting was done in this patch).

  • Arenas
    • They're easily configurable in the new conf/battlegrounds.conf file, it possible to add more arenas by editing the client's lua files/entryqueue/entryqueuelist.lua file
    • Configuration Sample
      arenas: ({    name: "Tierra Gorge" //must match the name in client files    event: "Tierra_BG2::OnPlayerListReady"    minLevel: 80    maxLevel: 150    reward: {/* amount of badges awarded on each case */        win: 3        loss: 1        draw: 1    }    minPlayers: 6 /* minimum amount of players to start */    maxPlayers: 60 /* maximum amount of players */    minTeamPlayers: 6 /* minimum amount of team members required for a team (party or guild) to join */    delay_var: "Tierra_BG_Tick" /* npc variable name that will store the delay for this match */    maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */},{    name: "KVM (Level 59 and below)" //must match the name in client files    event: "KvM03_BG::OnPlayerListReady"    minLevel: 1    maxLevel: 59    reward: {/* amount of badges awarded on each case */        win: 1        loss: 0        draw: 0    }    minPlayers: 4 /* minimum amount of players to start */    maxPlayers: 60 /* maximum amount of players */    minTeamPlayers: 5 /* minimum amount of team members required for a team (party or guild) to join */    delay_var: "KVM_BG_Tick" /* npc variable name that will store the delay for this match */    maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */})
  • Queue
    • We wanted to make the queue as easy to play with as possible, so we've created a whole new set of script commands designed with this purpose. These commands make it easy to create and control queues for anything, games, events, quests, and of course in this case, the battleground's queue.
  • Queue - Script Commands
    • *queue()
      • creates a new queue instance, returns created queue id
        set .@id,queue();
    • *queuesize(<queue_id>)
      • returns the amount of entries in queue instance of <queue_id>.
        set .@length,queuesize(.@queue_id);
    • *queueadd(<queue_id>,<var_id>)
      • adds <var_id> to queue of <queue_id>, returns 1 if <var_id> is already present in the queue, 0 otherwise.
    • *queueremove(<queue_id>,<var_id>)
      • removes <var_id> from queue of <queue_id>, returns 1 if <var_id> is not present in the queue, 0 otherwise.
    • *queueopt(<queue_id>,<optionType>,{Optional <option val>})
      • modifies <queue_id>'s <optionType>, when <option val> is not present, <optionType> is removed from <queue_id>, when present it modifies <queue_id>'s <optionType> with the new <option val> value.
        Currently 3 options are available, HQO_OnDeath (0), HQO_OnLogout (1), HQO_OnMapChange (2) (the constant names are not final).
        It allows you to hook npc events to be triggered by specific actions that may happen to a player in the queue (when the queue in question is used for account ids)
    • *queuedel(<queue_id>)
      • deletes <queue_id> returns 1 when <queue_id> is not found, 0 otherwise.
    • *queueiterator(<queue_id>)
      • creates a new queue iterator instance, a queue iterator is not a reference to a queue's actual members, it copies the queues members when initialized, this way you can loop through them even if you remove them from the queue
        set .@it,queueiterator(.@queue_id);
    • *qicheck(<queue_iterator_id>)
      • checks whether there is a next member in the iterator's queue, 1 when it does, 0 otherwise.
    • *qiget(<queue_iterator_id>)
      • obtains the next member in the iterator's queue, returns the next member's id or 0 when it doesnt exist.
        for( set .@elem,qiget(.@queue_iterator_id); qicheck(.@queue_iterator_id); set .@elem,qiget(.@queue_iterator_id) )
    • *qiclear(<queue_iterator_id>)
      • deletes a queue iterator from memory, returns 1 when it fails, 0 otherwise.
    • Sample Usage:
      /* say create a queue */set .@id,queue();queueadd(.@id,getcharid(3));/* ... add as many entries ... (no limit) */if( queuesize(.@id) == 999 ) {    /* whatever */}/* anywhere in the code */set .@it,queueiterator(.@id);for( set .@elem,qiget(.@it); qicheck(.@it); set .@elem,qiget(.@it) ) {    //do anything e.g.    /* attachrid .@elem; */    /* mes "ID:"+.@elem; */}qiclear(.@it);

Special Thanks To

  • Yommy for providing me with a hell lot of data for the BG Queue, wouldn't have been able to get it to this point without his help.
  • Rosiel for his suggestion on the instance feature
  • Xgear for his help with the network timeout bug
  • mkbu95 for pinpointing the script parser bug
  • All of Hercules Staff for their ideas/suggestions/criticism and support, and for keeping me sane during this memory slashing madness
  • The Future~!
  • This patch sure has taken me away from my usual bug-squashing mode, I'll be going back to my over-10-bug-fix-a-day schedule. We have quite a hell lot planned so this might not last long, make sure to keep an eye on your bug reports for I sure will be replying to them.
  • Link~u!

#45848 2014-10-22, Roulette and per-char gender!

Posted by Ind on 03 November 2014 - 09:46 AM

2014-10-22 Client, Roulette and per-char gender!

Made Possible Thanks to Yommy

  • We're only able to provide you with this patch thanks to Yommy, Thank you very much!



  • During test period it will be disabled by default, to enable you must edit conf/battle/feature.conf
    // Roulette (Note 1)// Requires: 2014-10-22bRagexe or later// Off by default while test version is out; enable at your own risk -- the mean dev.feature.roulette: off
  • Roulette rewards can be defined in db/roulette_db.conf
  • As we understand the coins are points that you obtain by consuming an item, while such an item is not yet available (will be in a upcoming commit), you can set these values with @set command, they're TmpRouletteBronze,TmpRouletteSilver and TmpRouletteGold -- e.g. @set TmpRouletteBronze 5
  • Requires PACKETVER 20141022 or higher. Where you can get such client? Here (Again, Thanks to Yommy!)
  • In action: http://herc.ws/board...Hercules136.jpg

Per-Character Gender

  • Sex is now a character table field, which can be defined as 'M', 'F' or 'U'. 'U' being the default value, meaning undefined, which means the accounts gender takes precedence
  • (upcoming) a script command to change a characters gender
  • Requires PACKETVER 20141022 or higher. Where you can get such client? Here (Again, Thanks to Yommy!)
  • In action: http://herc.ws/board...Hercules137.jpg


Special Thanks to

  • Yommy
  • ..Yommy
  • ...The all-awesome Yommy~! Thank you again!
  • Ziu for extra roulette information (some yet to be applied)
  • Haruna



#45846 2014-10-22 Client Download

Posted by Yommy on 03 November 2014 - 09:37 AM

Hello Hercules, its been a while :D


here i present a new client, which requires a fully updated kRO and Hercules.



its already patched with some options, which i needed for testing..

..Disable Ahnlab

..Disable ragexe filename check

..Read msgstringtable

..Read datafolder first


NEMO Patcher should work for most things, but there may be some patches that are broken.



#56567 2015-05-13aRagexe Release

Posted by Dastgir on 13 May 2015 - 03:03 PM

Note: Stable enough.

Here I present you the New Client:(2015-05-13a)

Whats Not Coded:

What need some works:

NEMO Works fine with this client.


Thanks to Yommy :D (Help Him @ http://herc.ws/board...client-release/)

NOTE: Recommended to not use this client on productive server till all features/bugs have been added/fixed.

#2308 Introducing Hercules' Stress Test Server

Posted by Ind on 04 April 2013 - 09:00 PM

Introducing Hercules' Stress Test Server
The "Stress" Part
Over 1.000 IndAI units (equivalent to +1k online players) will be in the server playing 24/7, farming, going to pvp, doing woe, playing battlegrounds, doing anything a player does, this will create a perfect scenario for us to debug and test Hercules.
The Development Benefits

  • We'll be able to keep track of performance usage 24/7, making us able to detect whenever a update increases a server's usage, allowing us to further optimise said update in order to take the processing down.
  • With the AI characters doing stuff non-stop 24/7 we'll be able to identify and fix any crashes existent.
  • Hercules will gain a super stability boost thanks to this.

How to connect / Moving in and out
This is the fun part.

  • No new clients, and no sclient/clientinfo/blablabla edits will be required.
  • get to the test server by typing [email protected] warp', test whatever you like, and go back to your server with [email protected] leave'.

This technology *might* also be employed in the future by us to create hercules-hosted inter-server events.
Entirely Secure
The only data your server will pass to our test server upon warp is the name of the character (and maybe hairstyle vals).
The test server is unable to modify (or even access) any data on your server, it is entirely secure and damage-free.
Unique to Hercules
The ability to connect through your ordinary client will be made possible by our custom server hosted over at herc.ws, the code won't be made public.
I felt inspired to write about this feature, which is why this announce is out before the feature itself.
This is one of the features to be powered by our Hercules Plugin Manager and will be made public once the HPM implementation reaches the level capable of sustaining it.


  • what if i dont want my players to go to the test server?
    • @hercules is a command like any other, you can restrict access by groups.conf (by default only gms will be able to use it)
  • what if i dont have a test server to use as a gateway to the hercules stress test server?
    • we will also provide clients for those who don't have/want to use a server as the gateway

#3489 Hercules April 22 Patch

Posted by Ind on 22 April 2013 - 09:26 PM

Hercules April 22 Patch
Hello~! - What?!

  • 1st, most of these things were meant to be released separately but as I started to work with them one thing hooked up to another and I ended up deciding to get all out at once
  • No second today!

The all-long, all-mighty list

  • New
    • Map Zone DB Updates
      • Added New "All" Zone, easy way to add modifiers to all maps in the game. Automatically inherited by all existent zones.
      • Added new zone setting disabled_commands, can disable any command in any zone "command-name: min-group-lv" also supports min group level to override, to enable back a command disabled by inheritance just use "command-name: 0"
      • Added new zone setting skill_damage_cap (as requested by the community), can cap any skill damage to any range of unit types, and also a new core config "HMAP_ZONE_DAMAGE_CAP_TYPE" that controls how the cap is applied (before or after modifiers)
      • New target-type support (used by skill_damage_cap and disabled_skills): PET (special thanks to frenzmu06 for bringing it up!), CLONE and MOB_BOSS
      • Added support to ids! item and skill ids may now be employed in all sections of the file in the place of item/skill names
      • Detailed Map Zone DB Update
    • Hercules Channel System Update
    • Added Beret and Yommy's suggestion on cash shop file format, also added support for item ids
    • Added Ryuuzaki's kafra point support to the new cashshop
    • Updated map-server's save_setting, added new option: 128, to save buyingstore transactions on the fly
    • Revisited bindatcmd feature, dropped level support, added group level support and added a new flag capable of deciding whether calls to that command should be logged in the atcommand log.
  • Performance Improvement
    • Added a in-memory list to store existent shops (saves iterating through all online players)
    • Modified searchstore to use said db above, making its queries faster
    • Improved pc_groups processing, decreased runtime ram usage by a about 1mb.
    • Improved @command log processing through groups, now caching the state (no longer does dbmap lookup).
    • Improved atcommand.conf file processing (was doing a extra lookup instead of using atcommand_exists already-performed lookup result)
    • Improved atcommand's help file processing (no more lookups! string is now cached directly in the atcommandinfo struct of each command) and data management
    • Improved @help's processing: dropped the huge config file lookup and replaced by using the caches.
    • Improved atcommand logging, added option to not log specific commands (so you dont waste log room with stuff such as @[email protected]/etc) -- atcommand.conf nolog group
    • Sightly improved zone inheritance processing.
    • Speeded up mvp drop processing
    • Speeded up item log processing
    • Speeded up mob item drop processing
  • Misc
    • With map_zone_db's new clone support, flag 0x8000 (no-clone-use) in the skill db was dropped
    • With map_zone_db's new way to block commands, mapflag nogo was dropped.
    • Fixed a number of discrepancies between unsigned and signed variables in many packets.
    • Fixed loading messages for exp_db, attr_fix, statpoint, mob_chat_db, mob_pouch, mob_branch, mob_classchange, mob_boss, mob_poring and item_group_db
    • pets from gms who cant drop items no longer can loot items (prevents exploit where gm kills something, pet loots, then drops and action is not logged nor blocked).
    • Fixed combo bonuses that used getrefine on weapons/cards that affect weapons.
    • Added @searchstore as to offer same availability to gms as @[email protected] does
    • Improved 2013 client charselect procedure, all thanks to Yommy!


#23766 Christmas Patch! Gift'o

Posted by Ind on 24 December 2013 - 03:50 AM

Gift'o! From Hercules, to your server!
We wish you happy holidays, and thank you for your support.
May the New Year bring you happiness and peace.
2013-12-23c Client Support

  • Thanks to Yommy and Rytech!
  • NPC Market Support
    • A new type of NPC Shop where item availability is limited, for example you can have a vender start with 50x Red Potions and set mechanics for the red potions to be refurbished (for example could be as simple as a OnClock, where Red Potions are refurbished every y hour, or elaborate e.g. be connected with a game quest where players need to help a merchant npc get to the shop in order for it to be resupplied)
    • Available as a NPC Trader subset (details will follow)
  • @costume Oktoberfest Rytech.Oktoberfest.JPG

NPC Trader

  • A whole different way to set up shops, they're easier to read and flexible to customize.
  • Previous format still supported (in the scenario we drop the previous we'll provide a conversion tool)
  • To begin with, 'trader' is a phony name, its only purpose is to sign the parser that 'this npc will open the shop when clicked'. the trader npc is in fact a 'script' type (and thus script types can create/manipulate trader shops, and open them with the help of openshop()).
  • Normal Zeny Shop
    • moc_ruins,93,53,2    trader    Item Collector#moc1    4_M_03,{
          sellitem Scell;
          sellitem Monster's_Feed;
          sellitem Animal's_Skin;
          sellitem Bill_Of_Birds;
  • Custom Shop
    • Script has full control over currency, which allows for scripts to use anything, from quests, to items, variables, etca.
    • For Example:
      prontera,153,152,1    trader    TestCustom2    952,{
          sellitem Red_Potion;
      /* allows currency to be Red_Potion */
      /* receives @price (total cost) */
          if( countitem(Red_Potion) < @price )
          delitem Red_Potion,@price;
  • NPC Market Shop
    • This is the type I mentioned earlier, where item availability is limited
      prontera,150,160,6    trader    HaiMarket    952,{
          sellitem Red_Potion,-1,50;
      OnClock0000://resupplies red potions on midnight
      OnMyResupply://instead of midnight, a event could trigger HaiMarket::OnMyResupply
          if( shopcount(Red_Potion) < 50 )
              sellitem Red_Potion,-1,50;
      The quantity data is disaster-safe, I mean it is persistent to @reloadscript and server restarts (If there were 39 Red Potions on sale upon restart/reloadscript, it continues to be 39 instead of resetting back to 50).
  • 7 script commands to help control (documentation for all of them is present in script_commands.txt): openshop,sellitem,stopselling,setcurrency,tradertype,purchaseok,shopcount

Trader Design by

  • Yommy
  • Haru
  • jaBote
  • mkbu95
  • Gepard
  • Emistry
  • Ind

Special Thanks To

  • Haru
  • Yommy
  • JaBote
  • Muad_Dib


(Upcoming) GM Interface for Cash Shop Control
Found that on the new client, support is being worked on (Data thanks to Yommy <3).

#41388 [Release] The (data) GRF Project

Posted by Ridley on 11 August 2014 - 10:26 PM

Download counter: 40.104
Offering 2 versions of the grf now. Scroll down for more info. Both data.grf do NOT require rdata.grf.
Option 1: (clean standard kRO GRF)
Download GRF + DLL Mediafire 

Download GRF + DLL MEGA.nz

The grf is up-to-date 2016-08-04. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,18gb (1.275.931.939 bytes) most data.grf i saw out there were 2,1gb+.
Works perfect with all current pre-renewal and/or renewal content (rdata.grf is not needed). You still need the content of the Translation Project in order to use this.
All cutins in this grf are reduced by 40%
Note: This is pure kro data.grf and does not contain any jro/iro/whatever files
Option 2: GRF with the content of all official servers
Download enhanced GRF + DLL Mediafire

Download enhanced GRF + DLL MEGA.nz
This GRF contains all official files. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,39gb (1.493.587.980 bytes)
The grf is up-to-date 2016-08-04.
Please throw a PM on me if this GRF is missing something! I want this to be the most complete one of all :)
Small summarize

  • more than 90 additional maps
  • more than 600 additional items
  • more than 60 additional NPC's
  • more than 130 additionalmobs
  • more than 700 additional cutins
  • I already added  the files from the Translation Project, all left to do is to adjust your clientinfo.xml



1. Download the data.7z
2. Extract it
3. Put both (grf + dll) into your RO folder
All rights and credits belong to Gravity
Note: you can still encrypt your grf with SecureGRF or Tokei's GRF Editor - just use another name than cps.dll for it.

Fixed some damaged (official) files (e.g. sarabeholder)
Fixed size of minimaps
Fixed some magenta pixels
Delete kro typo folders</pre>
If someone wants to upload them to a different hoster I would really appreciate it. Drop me a pm and I will include it here. 

updated thread 2016-08-07

#1926 Introducing Hercules' Map Zone Database

Posted by Ind on 27 March 2013 - 03:58 PM

Introducing Hercules' Map Zone Database
Hello~! - What?!

  • 1st, it is a merge from item_noequip.txt and skill_nocast_db.txt functionality.
  • 2nd, it is a major improvement on what these features did in both performance and usability.

map_zone_db.txt format sample

    name: "My Zone"
    inherit: ( "My Other Zone" )
    disabled_skills: {
        //ID11: "PLAYER"
    disabled_items: {
        Assumptio_5_Scroll: false
        //Apple: true
        //ID501: true
    mapflags: (
        "adjust_skill_damage    MG_FIREBOLT    250",
        "adjust_unit_duration    PR_SANCTUARY    50"
    /* "command:min-group-lv-to-override" e.g. "heal: 70" */
    disabled_commands: {
        //Example Below makes @heal be used in maps within this zone only by those group lv 70 and above
        //heal: 70
    skill_damage_cap: {
        //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage,
        // (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h)
        // when cast vs players and monsters.
        //MG_COLDBOLT: (50,"PLAYER | MONSTER")

Notes on the format

  • In disabled_skills the var following the name (: "PLAYER | MONSTER | HOMUN | MERCENARY | ELEMENTAL | PET | CLONE | MOB_BOSS") is what allows a zone to know what unit types should have this skill disabled. In the sample above, for example, in My Zone, player, monster and elemental unit types are unable to cast heal, while only monsters are unable to cast teleport. this variable may also be used to ignore skills from inheritance, for example if My Other Zone disabled a number of skills, including MG_FIREBOLT, in My Zone all of them will be disabled as well, except for MG_FIREBOLT since it is set as NONE.
  • In disabled_items the var following the name (: true or : false) is what allows a zone to override what it inherited, for example if My Other Zone disables a number of items, including Assumptio_5_Scroll, in My Zone all of them will be disabled as well, except Assumptio_5_Scroll since it is as false.
  • A zone may enforce an unlimited number of mapflags on all its maps, by using this sample all maps under My Zone will have Fire Bolt damage increased by 2.5x and Sanctuary will have its duration halved.
  • A unlimited number of maps may be linked to a specific zone through a mapflag
    '<map name><tab>mapflag<tab>zone<tab><zone name>'
  • Changes
    • The mf_restrict (restrict) was dropped.
    • item_noequip.txt and skill_nocast_db.txt were dropped, replaced by map_zone_db.txt.
    • setmapflag script command was modified to support the new zones.
    • @mapinfo was modified to support the new zones, also modified the formatting and made it include the amount of vendings.
  • Improvements
    • As opposed to item_noequip.txt and skill_nocast_db.txt, map_zone_db.txt supports an unlimited number of zones.
    • map_zone_db.txt implementation surpasses the ones from item_noequip.txt and skill_nocast_db.txt, making item equipping (pc_useitem/status_calc_pc) and skill using (previously skillnotok, now status_check_skilluse) processing much faster and efficient.
    • @mapinfo performance was improved (was doing chat room dbmap lookups without even checking if player was on the map in question)
    Special Thanks
    • to Muad_Dib <3.
    • to lighta for discussing the feature with me and helping design the unit-based restrictions on skills
    • to Bahmut and Emistry for ideas on how to format the file.
    • to kyeme for feature ideas.