7
I Use This!
Moderate Activity

News

Analyzed about 11 hours ago. based on code collected about 17 hours ago.
Posted about 10 years ago
HPM Data CheckI begin by thanking ai4rei for bringing this to our attentionHELLOOOO, WHAT?!This introduces automatic data integrity insurance between plugins and the core, allowing the core to reject loading plugins whose data structures mismatch ... [More] those in the core thus preventing potential crashes and loose data read/write, it goes a long way towards making this issue being inexistent.In short: its a feature that enables the core to reject "outdated" plugins, "outdated" meaning that a data struct used by the plugin has been modified in the core while the plugin was not recompiled to reflect the change.It is smartThanks to Haru's design the feature is able to identify the files which the plugin relies on, therefore even if data structs in the core have been modified the plugin will only fail load if its a data struct from a file it actually includesChanges: Hello Plugin Developers!Plugins are now required to include the HPMDataCheck file, plugins without it will not pass loading validation, to include use:#include "../common/HPMDataCheck.h"it should be the last file included, if it isn't the last it'll render the plugin uncompilable (intentionally)....and thats it, it stands on its own afterwards.Also in & Thanks to Haruthe HPMHookGen has been updated so that the data HPMDataCheck relies on is always up to dateHPMHookGen has been sped up.New PossibilitiesThanks to HPMDataCheck enabling the core to know which files the plugin relies on there are many enhancements we can (and intend to) add, for example, drop GET_SYMBOL entirely and have the core load the interfaces automaticallySpecial Thanks toHaruai4reiLink'uHPMHookGen UpdateCommit [Less]
Posted about 10 years ago
January Digest 2014 The following digest covers the month of January 1st - January 31st 2014.   Just starting off this digest with a link back to Administrative Staff Changes topic incase no one has gotten a chance to read it as the Team Changes ... [More] listed below *could* get a little confusing.   Team Changes Mysterious has been moved from Community Administrator to Community Administrator (Topic). Haru has been moved from Core Developer to Development Administrator (Topic). Judas has been moved from Community Administrator to Former Global Moderator. mleo1 has been awarded a Community Contributor title for continuous contribution throughout Hercules. evilpuncker has been awarded a Community Contributor title for continuous contribution throughout Hercules.   Development Highlights Introduction to Hercules' Autotrade Persistency (b79a9d7) Hercules' 1st 2014 Mega Patch (82b583b) Adjusted indexing of vars Index (95f13f3) Fixed ERS Cache Sharing (209d15e) Dropped unused char_dat (8aeb011) Fixed DB/BB/PB Logging (8aeb011) Libconfig interfaced (a9cc02e) Socket interfaced (14f84fc) PCRE interfaced (c32a22c) HPM Custom Data Struct Expansion: map/instance/party/guild (acc992a) Improvement to exp_guild.txt loading (ce15f82) Improved questlog handling to honor the value of MAX_QUEST_OBJECTIVES (1da4887) Compatability fixes for NetBSD and Solaris (e68d860)   Scripting Highlights  Improved overwriting priority of variables/constants/parameters (8eadb9f)   Build System Highlights Script engine self-test NPC with array tests (253e90c)    NPC & Database Highlights  Update of Hunting Mission (634e7e7) Added additional missing costumes (7ed885a)   FluxCP Branch Highlights  Updated of pt_br.php (3272471) Changed calls on `global_reg_value` to char_reg_num_db` where appropriate (4cc6996) Additionally changed a comment in the application config which may be misinterpreted (4cc6996)   December Statistics During the period there were 73 Commits. Of these 73 commits, 7 included bug-fixes. 4 Commits from Pull Requests In this month, there were 7,715 Additions and 4,764 Deletions. [Less]
Posted about 10 years ago
Hello all,   Just a small snippet paragraph that will help everyone (the public (i.e. you guys )) be informed of our Staff Changes . I would like to take this moment and address certain staff changes in the administration team. As some of you may ... [More] notice, Haruna and I have been moved around. Haruna is now a Development Administrator along side with Ind. Myself, Mysterious, is now an Administrator (Community). Community Administrator position has been removed as promotional group (amongst staff) and is now going to be served as a root position.   Ind and Haruna will be the Development Administrators and I will be the Community Administrator. We believe these changes between the staff will be more beneficial for the community at a large and within the staff circle.   We thank everyone for being a part of Hercules' community and as with other changes done towards Hercules, we hope these will help benefit and further grow the community! [Less]
Posted over 10 years ago
Hercules: 1st 2014 MEGAPATCHHelloooo! Starting 2014 with a boom, yet another outstanding patch from Hercules!Patch Item #1: Scripting Level UPChar and account variables overhaulThey're no longer limited to #define ACCOUNT/GLOBAL_REG_NUM, they're now ... [More] limitlessTheir 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 ...4 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 possessesgetarraysize (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 interactionAnd the futureThis improvement has open way for many other amazing features, for example, Haruna has designed a foreach implementation for scripting among some other useful enhancementsGlobal account variable handling redesignTo 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 uptrying to write ''' variables outside instances will now print warnings instead of silently doing nothingruntime 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 overhaulWe'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!EmistryYommyStreuselPatch Item #2: @autotrade PersistencyAlso 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_PERSISTENCYSpecial 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!Link'u!CommitUpgrade files#1 (Autotrade)#2 (Scripting Level UP) [Less]
Posted over 10 years ago
December Digest 2013 The following digest covers the month of December 1st - December 31st 2013. Team Changes Dastgir Pojee has joined as a Community Contributor. Mhalicot has joined as a Filipino International Moderator. Mumbles has been moved from ... [More] Support Leader to Global Moderator. Beret has been moved from Community Contributor to High Council. Development Highlights Fixed an issue with items accidentally made equippable for every class (671d61a) Whitespace fixes in script.c (a9156de) Added support for string vars on commands that require a string (fefaf39) Christmas Patch! Gift'o (cf19b26) (Topic) Implementation of #define DEVOTION_REFLECT_DAMAGE (36d0c78) As requested by the community. Modified Xcodeproj, removed global tab/indentWidth override (46a9906) Fixed several compiler warnings (15a0f6d) Added support for non-aborting assertion (a23d072) Nullpo cleanup (853c5a3) Added Apple Xcode project files (4d13474) Introducing HPM Support for custom battle confs (0e25c60) Modified second 'infinity loop!' error (f19fb90) HPM mapindex interface (d4a58d2) Questlog fixes (6f55c00) Corrected Steal Coin formulas and battle log message (470ab15) Added Windows batch file for 'db2sql' plugin (9f210e1) Changed item Aegis ID and Mob Sprite ID lookups to case sensitive (6e9c385) Changed variables, labels, functions, and commands to case sensitive (c6c2ad1) Scripting Highlights Correctly removed persistent database entries for disabled NPC Market (c2f6086) Improved script builtin function parser (4d1f7cc) Changed builtin keywords in the script engine (49d2dff) Build System Highlights Improved plugins Makefile (3462866) NPC & Database Highlights Modernized syntax and fixed errors in sample scripts (21fa090) Update mob spawns in 13.1 quest to aegis info (16f474b) Bard Quest constant fix (9e22313) Different item bug fixes (0fd5a42) Skill Highlights Fixed crashing of GN_SPORE_EXPLOSION in certain systems (c3c5e31) Fixed Cell Basilica (Which was broken for 5 years) (813908c) FluxCP Branch Highlights Security Patch (86ba82d) Added Rebellion Job (7cf9d09) December Statistics During the period there were 49 Commits. Of these 49 commits, 13 included bug-fixes. 3 Commits from Pull Requests In this month, there were 60,318 Additions and 53,489 Deletions. [Less]
Posted over 10 years ago
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 SupportThanks to Yommy and Rytech!NPC Market SupportA new type of NPC Shop where item ... [More] 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 NPC TraderA 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 Shopmoc_ruins,93,53,2 trader Item Collector#moc1 4_M_03,{ OnInit: sellitem Scell; sellitem Monster's_Feed; sellitem Animal's_Skin; sellitem Bill_Of_Birds; } Custom ShopScript 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,{ OnInit: tradertype(NST_CUSTOM); sellitem Red_Potion; end; /* allows currency to be Red_Potion */ OnCountFunds: setcurrency(countitem(Red_Potion)); end; /* receives @price (total cost) */ OnPayFunds: if( countitem(Red_Potion) < @price ) end; delitem Red_Potion,@price; purchaseok(); end; } NPC Market ShopThis is the type I mentioned earlier, where item availability is limitedprontera,150,160,6 trader HaiMarket 952,{ OnInit: tradertype(NST_MARKET); sellitem Red_Potion,-1,50; end; 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; end; }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,shopcountTrader Design byYommyHarujaBotemkbu95GepardEmistryIndSpecial Thanks ToHaruYommyJaBoteMuad_DibLink'u~!Commit: https://github.com/HerculesWS/Hercules/commit/cf19b26d50ac96111e44c33a80afd1f1ea935cecNPC Trader Samples: https://raw.github.com/herculesWS/Hercules/master/doc/sample/npc_trader_sample.txt(Upcoming) GM Interface for Cash Shop ControlFound that on the new client, support is being worked on (Data thanks to Yommy <3). [Less]
Posted over 10 years ago
We're changing up the way we bring out our Digests from this point onwards. We'll typically toss out new month digests on either the 1st, 2nd, or 3rd of every month depending on how long Github takes to process the total number of commits given in ... [More] the month (especially if theres a lot of commits done on the last day of the month (30th's and 31st's))November Digest 2013The following digest covers the month of November 1st - November 30th 2013.Team ChangesPatskie has joined as a Community Contributor.Development HighlightsChanged  built-in keywords, variables, labels, functions, commands, Aegis IDs, and mob sprite IDs to case-sensitive (49d2dff) (c6c2ad1) (6e9c385)Introduction of "Contributors of Athena throughout the Ages" (eeafd81) (c069e2e)Added support for Max EquipLv in Pre-Renewal (972caf2)Added emblem blank pixels check (e095650)Introducing Character Ban Support (aee2f63) (Blog)Fix of atcommand aliases on certain commands (5739588)Updated char server's response to offline map server (d77c011)Fixed char server's maintenance mode (ee281a2)Official expiration timer support (7120b55)Removal of Emperium Spawn Restrictions (8ecffa8)Added inheritance support for item_db2 (d3fe9bb)Removed redundant item_db2_re.sql (59b9acb)ItemDB Overhaul (ed72a94) (Topic)HPM Custom Data Structure Makeover (8fda38d) (Requested)Added rAthena to Hercules log database upgrade (938ac2d) (Topic)Added rAthena to Hercules main database upgrade (54c2500) (8f28388) (044332d) (f0591e6) (be6440d) (Topic)Fixed item chain drop rate processing (122c491)Item Bind Fixes/Adjustments/Improvements (b9b32ac) (8083dae)Fix of Equip Command (068d42e)Modification of status_calc_ (6f77d07)Introduction to Hercules' Standalone Script Syntax Checker (9700171)Shadow System Fixes (84e4e6e)Scripting HighlightsOfficial Item BindOnEquip support (1f5161a)Added deprecation messages for incorrect capitalization in scripts (dd05ae3)Case Sensitivity (857bdc4)Added support for automatic concatenation of adjacent string literals (09dd209)Improved scripting operators precedence rules (ac6ae8c)Added support for ++x / --x operators and changed the x++ / x-- operators to post-increment (9a802b9)Added support for Mercenary/Homun Constants (63d5893)Added support for Monster Constants (0b7b379)Extended Script Constants to support NPC IDs (9f32aa9)Overriding of @command loadings (778facb)Standardized Formatting of NPC Parse error messages (7e68906)Warp Duplicates no longer need a 'face' value (6728c0f)Build System HighlightsFixed equip_level_max handling in the db sql converter (1064d8c)Added support for 'make plugin.pluginname' to compile only 'pluginname' (98ad6bc)Added support for case-sensitive jobmasks to the itemdb converter (e249264) Added item_db2.sql conversion script to new structure (9928044)Updated db2sql plugin parse in server console (091e235)HPM Support for Plugin-implemented (A bot that maintains .sql item dbs in sync with their counterparts) (1be53db)Addition of Visual Studio 2013 (4078436)Added _MSC_VER Checker (d7913a0)Travis no longer builds plugins (fa07bc4)NPC & Database HighlightsFixed case mismatches in BG (b1f4be7)Cleaned up Zeny Manipulation (4faa0ec) (94ac9fe)Added constant values for true and false (463cbc9)Replaced hardcoded ItemIDs with constants (385e1e5)BG Queue Update (eaf04b9)Implementation of Correct Refinement Formulas (Above 10+) (6577a59)FluxCP Branch HighlightsIntroduction of known Authors of FluxCP (3af11b7)Compatibilized item module (f3eed0e)Update of equip_locations (a55efb0)Update of equip_location_combinations (822220ae)November StatisticsDuring the period there were 162 Commits.Of these 162 commits, 35 included bug-fixes.6 Commits from Pull RequestsIn this month, there were 231,641 Additions and 67,709 Deletions.November ended up being a successful month of fixing bugs compared to October, September, and August. The highest score of bug fixes was in June's Digest! Thank you to everyone who contributed to squashing these bugs! [Less]
Posted over 10 years ago
Athena has been passed along from team to team through the ages: from Athena, to AthenaMods, to eAthena, to 3CeAM, to rAthena, and now Hercules. With each new development team that acquires the project, a little bit more is done to improve the ... [More] overhaul project that is Athena.   There have been countless people involved with this project through many years. Many of them have put in countless hours, and contributed thousands of lines of code (some of which still exists to this day).   Athena would not be where it is today without the help of these amazing developers. Because of this, I'm adding in this AUTHORS file to give tribute and credit to the amazing people which have made this project possible.   Thank you to everyone who has helped in the development of Athena. You are amazing, skilled, and your work will live on through the years to come. This project is yours, and has lasted over 10 years thanks to the dedication and support you have put in.  View AUTHORS List   If you know any past developers which have contributed to Athena and aren't on the list, please submit a pull request   To any development teams that are maintaining their own forks of Athena, please include this AUTHORS file in your own repos, give credit to all these amazing people. [Less]
Posted over 10 years ago
Item DB file structure overhaulHello~! Uguu~?!We noticed that the Item Database file format, unchanged for years, is less than optimal (read: terrible)The file is really hard to read (is it the fifteenth or the sixteenth zero? No wait, that line has ... [More] an extra comma!!)Whenever you merge an update, if you had a customized entry, you're sure to encounter large conflicts that won't be trivial to solveHow do we fix it?We're switching to a brand new, modern, file format, making use of the libconfig library we're already using for other configuration files.It uses libconfig. This means the parser is more solid and, perhaps not faster, but surely easier to maintain, with simpler code. And the file format is something you're already used to, since it's the same as many other configuration files we use!Empty fields and the long sequences of those hard to count commas are gone! You just specify the fields you need, and the others can be completely skipped.The item_db2 entries can be left incomplete and set to inherit the original item_db entry. If you have a custom script for your Knife[3], you can just write the script in your item_db, and let it read the other values from the item_db, so that if we update them, you get the update automaticallyItem scripts can be split into several lines, so they can made easier to read, especially the long ones.We can finally add more fields (to support new features) to the file at any time, easily and without having to edit all the lines (or force you to edit all the lines of your custom item_db2)!Pre-Renewal and Renewal Item databases now use the same format. This also means that you can make use of the min/max level feature in both renewal and pre-renewal (of course, pre-renewal servers will ignore the Matk field, if you specify it, since it's meaningless there)What does it look like?Each entry follows this structure:{ // =================== Mandatory fields =============================== Id: ID                        (int) AegisName: "Aegis_Name"       (string, optional if Inherit: true) Name: "Item Name"             (string, optional if Inherit: true) // =================== Optional fields ================================ Type: Item Type               (int, defaults to 3 = etc item) Buy: Buy Price                (int, defaults to Sell * 2) Sell: Sell Price              (int, defaults to Buy / 2) Weight: Item Weight           (int, defaults to 0) Atk: Attack                   (int, defaults to 0) Matk: Magical Attack          (int, defaults to 0, ignored in pre-re) Def: Defense                  (int, defaults to 0) Range: Attack Range           (int, defaults to 0) Slots: Slots                  (int, defaults to 0) Job: Job mask                 (int, defaults to all jobs = 0xFFFFFFFF) Upper: Upper mask             (int, defaults to any = 0x3f) Gender: Gender                (int, defaults to both = 2) Loc: Equip location           (int, required value for equipment) WeaponLv: Weapon Level        (int, defaults to 0) EquipLv: Equip required level (int, defaults to 0) EquipLv: [min, max]           (alternative syntax with min / max level) Refine: Refineable            (boolean, defaults to true) View: View ID                 (int, defaults to 0) Script: <" Script (it can be multi-line) "> OnEquipScript: <" OnEquip Script (can also be multi-line) "> OnUnequipScript: <" OnUnequip Script (can also be multi-line) "> // =================== Optional fields (item_db2 only) ================ Inherit: true/false           (boolean, if true, inherit the values                               that weren't specified, from item_db.conf,                               else override it and use default values) }, Here's a Red Potion in the old format:501,Red_Potion,Red Potion,0,50,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(45,65),0; },{},{}And here's the same Red Potion in the new format:{ Id: 501 AegisName: "Red_Potion" Name: "Red Potion" Type: 0 Buy: 50 Weight: 70 Script: <" itemheal rand(45,65),0; "> }, Not convinced yet it's easier to read? Okay, let's try a Poison Bottle:678,Poison_Bottle,Poison Bottle,2,5000,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(Class==Job_Assassin_Cross) { sc_start SC_DPOISON,60000,0; sc_start SC_ATTHASTE_INFINITY,60000,0; } else percentheal -100,-100; },{},{}changes to:{ Id: 678 AegisName: "Poison_Bottle" Name: "Poison Bottle" Type: 2 Buy: 5000 Weight: 100 Script: <" if(Class==Job_Assassin_Cross) { sc_start SC_DPOISON,60000,0; sc_start SC_ATTHASTE_INFINITY,60000,0; } else percentheal -100,-100; "> }, Better, isn't it!? Let's now try a Jellopy:909,Jellopy,Jellopy,3,6,,10,,,,,,,,,,,,,,{},{},{}Count the commas! Did I miss any? An extra comma you say? No, I don't want to count them, thanks...{ Id: 909 AegisName: "Jellopy" Name: "Jellopy" Buy: 6 Weight: 10 }, Not even a comma!Now, help me read what this item does?13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,4,20,,0,55,,1,0,0x02000000,7,2,34,4,80,1,22,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,NJ_HUUMA,100; bonus2 bSkillAtk,NJ_ISSEN,100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,NJ_ISSEN,AL_HEAL,10,1000,1; bonus4 bAutoSpellOnSkill,NJ_HUUMA,NPC_CRITICALWOUND,2,200; } },{},{}{ Id: 13307 AegisName: "Krieger_Huuma_Shuriken1" Name: "Glorious Shuriken" Type: 4 Buy: 20 Atk: 55 Range: 1 Job: 0x02000000 Loc: 34 WeaponLv: 4 EquipLv: 80 View: 22 Script: <" bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,NJ_HUUMA,100; bonus2 bSkillAtk,NJ_ISSEN,100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,NJ_ISSEN,AL_HEAL,10,1000,1; bonus4 bAutoSpellOnSkill,NJ_HUUMA,NPC_CRITICALWOUND,2,200; } "> }, Which one did you find easier to read? Old or new format?Want to see an example that specifies both min and max levels? Here you go:{ Id: 2819 AegisName: "Swordman_Manual" Name: "Swordman Manual" Type: 5 Buy: 0 Weight: 100 Job: 0x00000001 Upper: 47 Loc: 136 EquipLv: [1, 12] Refine: false Script: <" bonus bMaxSP,100; skill SM_BASH,1; skill SM_PROVOKE,1; skill SM_MAGNUM,1; "> }, Okay, one last example. Let's try to make an item_db2 entry for a Pupa Card that gives a bonus of 1000 HP rather than just 700.{ Id: 4003 Inherit: true Script: <" bonus bMaxHP,1000; "> }, Done. No need to rewrite the name, location, prices... those are already in the item_db!But... I have several custom items, do I have to manually convert all of them...?Of course you do! No, I'm kidding, don't hate me :(It's true that you need to convert your item database to the new format, but we can do it for you!Go to http://haru.ws/hercules/itemdbconverter/ and paste (or upload) your item_db2.txt (or even your item_db.txt if you have custom entries there), press the Convert button, wait a few seconds and you're done! It's already converted for you. Easy, isn't it?Don't trust us? No, no, we don't need your custom items, you can sleep safe... But if you still don't want to paste anything on a website... well, we have provided the source code of the converter script! It's in the 'tools' folder of the Hercules repository. All you need is a Perl interpreter (and if you're running Linux or Mac OS, on either your server or your own computer, it's almost certain that you already have that). All you have to do is run it (example: perl tools/itemdbconverter.pl < db/item_db2.txt > db/item_db2.conf), and your item database will be converted in a split second!What if I was using SQL item databases?Well... Then you won't have to worry about the txt databases, unless you were creating the items in txt, then converting them to sql (if you're not doing this, maybe you should consider it, you know? It's easier to create and manage them in txt even if you use the sql version!)If you were converting your custom item databases from the txt version to sql through the db2sql plugin, there are good news for you! We just updated the plugin, and now it's able to create a .sql script rather than just inserting the entries into your database. This means that you can create the SQL entries in your own computer, without even needing a database (just a copy of Hercules), without risking to slow down your server, and then upload them whenever you want.And if you're relying on the .sql scripts we provide... well, there are still good news for you! Outdated item_db.sql files are a thing of the past now: those scripts will get updated automatically after every commit by our HerculesWS API bot, exactly like the HPM Hooks!As a final note, now the pre-re and re databases share the same structure in SQL as well! no more column mismatch if you're trying to import into your Renewal server an item that was meant for pre-renewal.If you have data already imported to your item_db2 SQL table, it'll be updated to the new table format through the regular upgrade sql mechanism (just run the provided script in the sql-files/upgrades folder). Please note that the script requires MySQL 5.0 or newer -- if you're still on MySQL 4.0, please open it in a text editor, read the comments and run the provided queries manually.I have this event item entry that came with an old script I downloaded...No worries, you can get it converted. Use the same script (or the provided web page) you'd use to convert an entire item database, it'll work just fine even for an item or two!Special thanksTo Ind, for bringing up the idea and pushing it forward until it was implemented. And for his awesome work on the HerculesWS API and database converter plugin.To Yommy, for the original idea, and for some invaluable help finalizing the actual database format.Links~u!Main commit.Removed redundant item_db2_re.sql (now both have the same structure).db2sql plugin update.item_db2 inheritance.item_db2 SQL upgrade script. [Less]
Posted over 10 years ago
* jaBote switches on Ind mode *  rAthena to Hercules database convertersHello~! What?! I've observed a big rise of rAthena to Hercules database conversion requests this week, so I've just revised again the converters I made before and will be ... [More] releasing on the repository so that people can find them more easily. What does that do? We have two new .SQL files on our repository that make the conversion easy. One is for applying on the main ragnarok table (sql-files/rathena-main-upgrade.sql) and the other is for the logs one (sql-files/rathena-logs-upgrade.sql). Please remember to make a backup prior to converting the database, just in case something goes wrong. This is meant to convert a fully upgraded rAthena to a fully upgraded Hercules. If you have some uninstalled rAthena upgrades please install them first. Avoid using it if there has been an upgrade posted in rAthena newer than the date of the converter or, at least, you didn't apply it or know how to undo the changes (remember that main.sql is usually fully upgraded both in Hercules and in rAthena). Some data (especially the data we don't use here on Hercules may be lost on the conversion). We'll not be resposible for this. How does it work? Plain and simple: just load them on the respective databases you have in rAthena, as if they were the original main.sql or logs.sql. Obviously enough, they won't work if you don't have CREATE, ALTER, INDEX and DROP permissions (and maybe others too) for the user(s) you'll be running this. These converters will NOT work if you changed the table names. Special thanks rAthena staff for their database structure and upgrades. Hercules staff for the database structure and upgrades. All the users that requested the converters in their respective topics. Dastgir Pojee for suggesting this to be committed to the repository. Haru for last minute corrections. Disclaimer As I warned before, there may be some intended or unintended data loss. Please make a backup before applying. This may get outdated quite quicly without me noticing about that. If that's so, please make a pull request or ping me to update the converter when I have time. I've avoided to name the files as "upgrades" here on the topic, but I've named them like that to make them have the name structure as the eAthena upgrade. This is NOT an offense to rAthena staff by any means. People are requesting this, so I made the conversion process easy for them, much like rAthena made a converter from eAthena and nobody got offended. Just that. Links~u! Main database converter commit. Logs database converter commit.   * jaBote switches off Ind mode * [Less]