Jump to content

mkbu95

Retired Staff
  • Content Count

    237
  • Joined

  • Days Won

    4

Reputation Activity

  1. Upvote
    mkbu95 got a reaction from jTynne in Merry Christmas Hercules!   
    good holidays @ everyone. and remember to drink with moderation 🙂
     
  2. Upvote
    mkbu95 reacted to Ind in Hercules Ultimate Localization Design   
    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 Links~!
    Commit Editing Example
  3. Upvote
    mkbu95 reacted to Yommy in Drop use_grf setting   
    i vote not to remove,
    while it might be useless to most who love the mapcache.
    removing wont improve anything and will be just one feature less, and as above some people still use it (personal preference maybe)
     
    its not affecting anyone if the feature stays..
     
    Yom
  4. Upvote
    mkbu95 reacted to Ind in Introducing Bank Support   
    Bank Support

    Account-Wide Bank
    May store up to 2.1 Billion Zeny Works on clients from 2013-07-24 onwards New DB Table 'account_data' Primarily to store the bank value, we have plans to employ it on new features as well (the official exp/death/drop modifiers for example) Run the '2013-10-09--21-38.sql' and '2013-10-10--16-36.sql' upgrade files. New Log TypeBan(K) to store bank transactions Bank Enable/Disable SwitchIn /conf/battle/feature.conf map-server.conf/save_settings UpdateNew '256' option to save bank transactions as soon as they take place. Made Possible Thanks to Yommy
    Wouldn't have been able to complete the feature without all the data Yommy made available, Thanks! Special Thanks
    Yommy Haru Links~!
    Commit
  5. Upvote
    mkbu95 reacted to Ind in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  6. Upvote
    mkbu95 reacted to Ind in Hercules Plugin Manager: Update   
    Hercules Plugin Manager: Update
    Hello~! What?
    This is the first major update to our Hercules Plugin Manager, HPM, since it has been first introduced some 3 months ago Made Possible Thanks to Haruna, Gepard and Xgear In this Update
    Initial Char and Login Server support Custom Packet support (and thus ability to override existent packets) in all 3 servers Initial Custom Data Struct supportThe ability for a plugin to create and append data structs to existent data, currently available to player units (map_session_data) and network pipes (socket_data), we'll be extending this to others as we go by, drop us a word if you need it somewhere it isn't available yet Documentation Update
    The documentation is currently being updated and will be available over http://herc.ws/wiki/HPM once it is complete The sample (src/plugins/sample.c) has been updated to demonstrate the usage of the new features Up-and-Coming
    HPM HooksSince HPM was first released we've greatly advanced in the design of this feature, which will take full advantage of our Hercules Renewal Phase One and be extremely efficient Hercules Stress Test ServerOur Stress Test Server will become a reality as soon as the HPM Hooks is released, as it is the one condition necessary for it to function as we intend it to Link!~u
    Commit
  7. Upvote
    mkbu95 reacted to Gepard in Flux Control Panel for Hercules   
    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:



     
    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
    Authors of original FluxCP & FluxCP-rA. Authors of Emphaino theme (originally for Wordpress).

     
    Download
    Hercules' FluxCP Github repository: https://github.com/HerculesWS/FluxCP
     
    Issues
    Bug reports, questions and suggestions are all welcome directly on GitHub: https://github.com/HerculesWS/FluxCP/issues
     
    Enjoy~
  8. Upvote
    mkbu95 reacted to Mystery in July Digest 2013   
    July Digest 2013
    The following digest covers the month of July 1st - July 31st 2013.
     
    Team Changes
    [*]Xgear has been moved from Community Contributor to High Council. [*]Shikazu has joined as a International Moderator. [*]Haru has joined as a Core Developer. [*]Gepard has joined as a High Council. [*]Susu has joined as a Core Developer.

     
    Development Highlights
    [*]Battlegrounds Queue Update (7aa9e6e) [*]Ultimate Item DB Update (1caae98) [*]Additional Interface Changes [*]Mercenary Interface (b717147) [*]Intif Interface (853489bcb) [*]Elemental Interface (9d53093) [*]iDuel Interface (5a22b04) [*]Chat Interface (9ac2cf7) [*]Expansion of script.c interface (5832722)
    [*]Extended ID <item_id> syntax to Item Packages and Item Groups (606a985) [*]Item Package Update (0118a09, dc85ce0) [*]Server Statistics Implementation (ea5a413) [*]Splitting of use_sql_db into: item_db, mob_db, and mob_skill_db (0f2899c) [*]Implementation of Official Mute System (da064c0) [*]Implementation of new commands { sit(), stand(), issit() } (e8adea6) - Please refer to /doc/script_commands.txt for documentation


     
    Scripts
    [*] Dewata Warps now available (3e91032)

     
    Client Support
    [*]New Packets for: 2013-06-12Ragexe, 2013-06-18Ragexe, 2013-06-26Ragexe, 2013-07-03Ragexe. New Packet Keys for: 2013-06-26Ragexe, 2013-07-03Ragexe (f530cfe)

     
     Introduction to Github: Issues
    [*]For the past two weeks, the staff has been using Github: Issues to discuss issues and development strategies with the help of source code annotation features provided by Github. While being mainly used by Hercules team, all users are welcome to provide feedback on GitHub Issues page.


    [*]You can view our issues that are posted and labeled by heading to our Hercules Repo in Github and on your right, there's a little tab with an Exclamation (!) inside a circle.

    Once you're in our Issues page, you'll be able to view a variety of issues that the developers have opened - you may also view issues that have been closed.
     
     
     
     
    Statistics
    [*]During the period there were 95 Commits. [*]Of these 95 commits, 57 included bug-fixes. [*]11 Commits from Pull Requests [*]In this month, there were 33,805 Additions and 30,555 Deletions.

  9. Upvote
    mkbu95 reacted to OnNplay in This latest KRO updated 17July2013   
    This KRO is updated and packed up to 17th July 2013 by me.

    http://5.178.71.18/Ragnarok16072013.7z
    http://188.165.187.164/Ragnarok16072013.7z
    http://192.210.208.214/Ragnarok16072013.7z
    http://192.210.208.217/Ragnarok16072013.7z

    MD5: 5e716f849e938a8cc94b44c510b160dc
    Size: 2.11GB
    Password: not available
    MD5 Tool: http://keir.net/hash.html

     
  10. Upvote
    mkbu95 reacted to Ai4rei in RO Credentials (ROCred), v1.10.0 - last updated 2017/12/31   
    RO Credentials


    About
    Simple and tiny client launcher+login. Has no prerequisites and runs on all Windows versions. Known Issues
    [aavc] This tool is not safe for computers running Avast Anti-Virus. Download
    binary, reference source Q & A Is it customizable?
    Yes. How?
    With resource editing tools, such as ResourceHacker. All text and icons can be customized. Settings can be edited in an INI file, instructions on how to do that are provided in the example files together with the launcher. What is "reference source"?
    You cannot compile it (unless you provide the missing components), but see what functionality the latest binary contains. I want it to be xyz.exe, but it does not read the INI file. Why?
    You have to match the INI name to the EXE name. rocred.exe -> rocred.ini mytest.exe -> mytest.ini  
    How can I embed an INI file into the EXE?
    Add the INI file as RCDATA resource named CONFIG with ResourceHacker. How do I use background skinning?
    Create a file named bgskin.bmp (magenta #ff00ff is considered transparent). You can also embed the file as BITMAP resource with the name BGSKIN. Window size is adjusted to the bitmap size, position of controls must be set in the INI. Buttons can be skinned as well, see the INI for names.
    Can I add custom buttons, if so, how many?
    Yes, see the INI template for details. There is no defined limit on how many, the only constraints are available memory, GDI resources and INI size limit on some platforms. By the way, custom buttons can be skinned as well. Why does the client not auto-login when I press "Start" / Why do I have to login twice?
    The client must be 2010-08-04aRagexeRE or newer and must not have the "Restore Login Window" patch and should have the "Use SSO Login Packet" patch.
    This work is licensed under a Creative Commons Attribution-Noncommercial 3.0 Unported License.
     
  11. Upvote
    mkbu95 reacted to Ind in Ultimate Item DB Update   
    Ultimate Item DB Update
     
    Overview
    A very extensive item db update for renewal mode The Numbers: Over 6500 individual flag updates 212 newly added/enabled items Made Possible Thanks To: Muad_Dib for all the data Yommy for the help on the equip field Haru for the new upper masks and his ultimate parser skills that improved the quality of this update by many fold In the update
    db/re/item_db (and thus sql-files/item_db_re.sql) over 6500 flag updates and 212 newly added/enabled items 16: Upper Third jobs (Trans)32: Baby Third jobs The AegisName field was updated in several entries to match the official ones The name field was also updated in several entries to match the client display files 2 New 'Upper' flags were added to accommodate many of the newly added items:Custom items in renewal mode will require to have these new flags if you wish these jobs to make use of such items db/re/item_packages update to match the newly added items db/re/item_groups update to match the newly added items A new error message in the item db parser that will display any duplicate AegisName fields that are conflicting (Thanks to Masao) Special Thanks
    once again,
    Muad_Dib, this update wouldn't exist if it weren't for all the data he provided us with Yommy, wouldn't have been able to properly update the equip flags if it weren't for the job data he provided me with Haru, for making it possible to polish this update so many times. Haru spent many hours debugging this update and writing tools to further enhance the quality of the update Link~u!
    Commit Commit 2 (Follow up)Special Thanks to Yommy for bringing it to our attention and for providing the data for the follow up, and to Haru for help in validating the update
  12. Upvote
    mkbu95 reacted to Ind in HCache | Item Packages Update   
    Item Packages: Update
    In this commit we've modified the 'Random' field so that it can be used to define a group id to that item, as to allow packages to have more than one random group of items as its official equivalents do.
    The updated documentation is as follows, note that random field is no longer optional, and for "Must" types it should be 0, this commit has updated package_items.conf in both pre-re and re, the remaining fields remain optional when their value isn't necessary, e.g. you don't need to specify Count if it is 1, Expire if it is 0, Announce/Named if it is false.
    <Container_Item_Name>: {     <Entry_Item_Name>: {         Random: 0 - Signs what group type this item belongs to, 0 is "Must", a group of items that come out whenever the package is open (doesn't use rate), anything above 0 is considered "random_group_<value>", a package with 2 random groups for example gets 2 items whenever open, one from each group         Count: 30 - Stands for how much <Entry_Item_Name> will be obtained.         Expire: 2 - Signs how many hours this item will last (makes a rental item).         Announce: True/False - Signs whether to relay a special item obtain announcement when this item comes out of the package.         Rate: 50 - If 'Random' is not 0, a rate from 1 to 10000 (0.01% - 100%) will be given.         Named: True/False - Signs whether the item should have the owner's name in it.     } } HCache
    Reading these new files takes more processing time than the previous as the format is more flexible (or complex), and as we are always trying to improve we couldn't let this stand, we've designed a caching method to make this processing time overhead happen only when the files are modified.
     
    Smart
    The feature checks when a file has been last modified, and if it hasn't been modified since the cache was made it relies on the cache instead of reading the file over. This feature also is capable of realizing when the server been recompiled and re-writes the caches when it happens so the data in them is always up to date with the latest source code.
     
    The Future
    As we have a number of other planned things we'll be slowly extending this to the other files that would benefit from it.
    This feature can be employed in any files and used to store any data we like, we have intent to boost NPC parsing/reload with it in the near future, our estimates expect NPC parse time to drop by over 80%, reload time will drop just as much.
     
    Special Thanks to
    Beret and hemagx, its thanks to them we became aware of the missing feature in item packages. Muad_Dib for all the data he provided to this update mkbu95 for his help in the development of HCache Link~u
    Commit
  13. Upvote
    mkbu95 reacted to Vader in KPatcher -> OpenSource   
    Hi all, I am a long time thinking about it and finally made ​​a decision.
    Source code of patcher except for the library to work with the GRF will be available in SVN or GitHub.
    I also continue to develop and support patcher.
     
    Link to github: Patcher
  14. Upvote
    mkbu95 reacted to Ai4rei in Show memory consumption   
    Semi-related debugging code I used for eA: 2013-07-05sockstatram.diff
  15. Upvote
    mkbu95 got a reaction from kyeme in Anti Flood System   
    Implemented at da064c030d22c0920f74b345ca3118c9204dae2b.
  16. Upvote
    mkbu95 reacted to Ind in Hercules WPE Free - June 14th Patch   
    Hercules WPE Free - June 14th Patch
     
    Made Possible Thanks to Yommy
    We're only able to provide you with this feature thanks to Yommy, Thank you very much! WPE Free - Official Packet Obfuscation Support Packet spamming is no longer possible by normal means, with this feature each packet sent has its own id, so spamming (by sending the same packet more than once) is impossible. For this feature to function you MUST NOT use the 'disable packet obfuscation' client diff. conf/battle/client.conf
    // Whether to enable the official packet obfuscation support (good vs WPE)// 0: disabled// 1: optional (not recommended) -- identifies whether it is required// 2: enabled (recommended)packet_obfuscation: <value>
    Currently functional for over 44 clients (Thanks to Shakto!): 2011-08-17 - 2015-05-13 Special Thanks to Yommy ..Yommy ...The all-awesome Yommy~! Thank you again! Shakto for the 44 PacketKeys! Also - SQL DB Updates & DB2SQL For logical and performance reasons we've modified the structure of the renewal item db tables, atk and matk no longer share the same column, equip_level was replaced by equip_level_min so that we could add equip_level_max which is required by new renewal items. Note however that because of the previous atk:matk format, it was not possible to provide a upgrade file that would save the matk data Item script errors from sql dbs used to point to a inexistent line number, it was modified to display the item id instead. This update has shrunk the sizes of the item db .sql files, making it possible for tools such as phpmyadmin to parse them, once again. With this patch we're also introducing a new official plugin, db2sql, its purpose is to make it easier for our developers to keep the .sql db files up to date (but you may use that to convert your own if you so desire, too), to use this plugin (when it is enabled in plugins.conf) type server tools db2sql in the console. Link~u! Commit 1 Commit 2
  17. Upvote
    mkbu95 reacted to malufett in Introducing Hercules Renewal Challenge   
    Hercules Renewal Updates
     
    Ladies and Gentlemen Hercules Development Team Proudly present you Official Ragnarok Renewal Mechanics/Systems that is now available in Hercules....
     
     
    What Renewal updates do we have?
     
    RE PHYSICAL ATK SYSTEM
    -RE EDP support.
    -Mob ATK support
    -RE DEF reduction support
    NOTE:It is functional however there are still some missing piece that needs to be discovered
     
    RE MAGICAL ATK SYSTEM
    -Mob MATK support
    -RE MDEF support
    NOTE:It is functional however there are still some missing piece that needs to be discovered
     
    RE CASTING SYSTEM
    -Fully functional casting formula derived/based from kRO
    -Skill bonuses support
     
    RE ASPD SYSTEM
    -Full support for skill bonuses
    -Support for item bonuses
     
    RE STATUS SYSTEM
    -Accurate batk, hit, flee, def, mdef & etc formula for MOBS and PC
     
    RE SKILLS
    -Such as CR_ACIDDEMONSTRATION, ASC_BREAKER and etc.
    -3rd jobs skills
    NOTE:This is huge but I can say we already have almost half of it
     
    2013 kRO Updates
    we already have some of the new skills implemented
    GC_DARKCROW RA_UNLIMIT GN_ILLUSIONDOPING RK_DRAGONBREATH_WATER RK_LUXANIMA NC_MAGMA_ERUPTION WM_FRIGG_SONG SO_ELEMENTAL_SHIELD SR_FLASHCOMBO SC_ESCAPE AB_OFFERTORIUM WL_TELEKINESIS_INTENSE LG_KINGS_GRACE ALL_FULL_THROTTLE And a lot lot lot more to be added...
     
     
    And now we challenge you to compare our current system to official servers and we guarantee a good satisfaction but PLLEEASE if you find bugs, discrepancy and other anomaly just drop by our  Bug Tracker and we will immediately take appropriate action to serve you most..
     
    commit
     
    SPECIAL THANKS!
    To Awesome Yommy for the AWESOME support, resources, methods and techniques. To Rytech for the KG/OB skill info To Kyeme, Mecheiru, Angezerous & others for RE info and tips And lastly to you as a member of Hercules
  18. Upvote
    mkbu95 got a reaction from anacondaq in Memory Slasher !!" - May 30 Patch   
    Simply the best.
     
    To all the haters:

  19. Upvote
    mkbu95 reacted to Mystery in May Digest 2013   
    May Digest 2013
    The following digest covers the month of May 1st - May 31st 2013.
     
    Team Changes
    [*]Judas has been moved from Global Moderator to Forum Manager. [*]Mysterious has been moved from Global Moderator to Forum Manager. [*]jaBote has been moved from International Moderator to Global Moderator. [*]Joseph has joined as a Script Developer. [*]Masao has joined as a Script Developer.

    Development Highlights
    [*]Memory Slasher {May 30th Patch} (20bdc01, 5a138ce, f6bca33) [*]Instance Rework [*]Instance Functionality/Feature [*]Script Command Changes
    [*]Battlegrounds Queue
    [*]Arenas [*]Queuing [*]Queue Script Commands
    [*]MOTD Redesign (Dropped old design) (9080a58) [*]Third Class Effects: Update (8cc9012) [*]Support for 5,000 Skill IDs (d95d689) [*]Mapreg Saving Overhaul (3bfadf4) [*]Upgrading of Stat Server (2.5 --> 3.0) (c5986ba) [*]Hercules Plugin Manager (a2c45a8) [*]Hercules Console Input  (a2c45a8) [*]Implementation of "item_nouse" (c347eba)


    Scripts
    [*]Implementation of Mora NPCs / Quests (11a90e1) [*]Custom implementation of Dwarf Mighty Hammer (b17e2b7) [*]Eden EXP quests 56-70 Rewritten (26ba1ad)

    Client Support
    [*]Update of packet.h for Ragexe 2013-05-22 (cc6defd) [*]New Packets for 2013-05-15aRagexe (2ff4db5) [*]Character Slot Change Fix (890e296) [*]2013-03-20 Packet Update (8e41dab)

    Statistics
    [*]During the period there were 103 Commits. [*]Of these 103 commits, 52 included bug-fixes. [*]11 Commits from Pull Requests [*]In this month, there were 25,241 Additions and 15,837 Deletions.

  20. Upvote
    mkbu95 got a reaction from Tragedy in Memory Slasher !!" - May 30 Patch   
    Simply the best.
     
    To all the haters:

  21. Upvote
    mkbu95 got a reaction from jTynne in Memory Slasher !!" - May 30 Patch   
    Simply the best.
     
    To all the haters:

  22. Upvote
    mkbu95 got a reaction from kyeme in Memory Slasher !!" - May 30 Patch   
    Simply the best.
     
    To all the haters:

  23. Upvote
    mkbu95 reacted to Ind in Memory Slasher !!" - May 30 Patch   
    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 ChangesInstance 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) */}) QueueWe 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. queueadd(.@queue_id,.@var_id); *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. queueremove(.@queue_id,.@var_id); *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). queueopt(.@queue_id,0,"MyNPC::MyOnQueueMemberDeathEventName");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. queuedel(.@queue_id); *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. qicheck(.@queue_iterator_id); *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. qiclear(.@queue_iterator_id) 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! Commit 1 Commit 2 Commit 3
  24. Upvote
    mkbu95 reacted to Beret in Group Search System   
    New packages for clients 2012-04+
     
    // packet 0x8e6struct PACKET_ZC_PARTY_RECRUIT_ACK_REGISTER { /* this+0x0 */ short PacketType /* this+0x2 */ short Result}// packet 0x8e7struct PACKET_CZ_PARTY_RECRUIT_REQ_SEARCH { /* this+0x0 */ short PacketType /* this+0x2 */ short Level /* this+0x4 */ unsigned long LastIndex /* this+0x8 */ short ResultCount}// packet 0x8e9struct PACKET_CZ_PARTY_RECRUIT_REQ_DELETE { /* this+0x0 */ short PacketType}// packet 0x8eastruct PACKET_ZC_PARTY_RECRUIT_ACK_DELETE { /* this+0x0 */ short PacketType /* this+0x2 */ short Result}// packet 0x8ebstruct PACKET_CZ_PARTY_RECRUIT_REQ_UPDATE { /* this+0x0 */ short PacketType /* this+0x2 */ char Notice[37]}// packet 0x8ecstruct PACKET_ZC_PARTY_RECRUIT_NOTIFY_INSERT { /* this+0x0 */ short PacketType /* this+0x2 */ struct PARTY_RECRUIT_AD_INFO Info { /* this+0x0 */ unsigned long Index /* this+0x4 */ long ExpireTime /* this+0x8 */ char CharName[24] /* this+0x20 */ struct PARTY_RECRUIT_DETAIL Detail { /* this+0x0 */ short Level /* this+0x2 */ char Notice[37] } }}// packet 0x8edstruct PACKET_ZC_PARTY_RECRUIT_NOTIFY_UPDATE { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long Index /* this+0x6 */ char Notice[37]}// packet 0x8eestruct PACKET_ZC_PARTY_RECRUIT_NOTIFY_DELETE { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long Index}// packet 0x8efstruct PACKET_CZ_PARTY_RECRUIT_ADD_FILTERLINGLIST { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long Index}// packet 0x8f0struct PACKET_CZ_PARTY_RECRUIT_SUB_FILTERLINGLIST { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long GID}// packet 0x8f1struct PACKET_CZ_PARTY_RECRUIT_REQ_VOLUNTEER { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long Index}// packet 0x8f2struct PACKET_ZC_PARTY_RECRUIT_VOLUNTEER_INFO { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long AID /* this+0x6 */ int Job /* this+0xa */ short Level /* this+0xc */ char CharName[24]
  25. Upvote
    mkbu95 reacted to Jguy in rAthena devs/staff/members on Hercules   
    Hello,
     
    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.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.