Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/07/20 in Posts

  1. Hi everyone, It's been a while since I've published something. Today I'm releasing the code of a patcher I've been working on for some time. The idea was to make an open-source drop-in replacement for the Thor patcher while also bringing some improvements. The project has been developed in Rust and the UI is based on the webview project. The project also includes a cross-platform, command-line THOR patch generator. The patcher's current features are the following: Customizable, web-based UI Cross-platform (Windows 7/8/10, Linux, macOS) Configurable through an external YAML file HTTP/HTTPS support GRF file patching (version 0x101, 0x102, 0x103 and 0x200) THOR patch format support Drop-in replacement for the Thor patcher SSO login support (i.e., can act as a launcher) Manual patching Can use multiple patch mirrors The project's repository can be found here: https://github.com/L1nkZ/rpatchur (and documentation can be found here). Contributions are welcome! Releases v0.3.0: https://github.com/L1nkZ/rpatchur/releases/tag/v0.3.0 v0.2.3: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.3 v0.2.2: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.2 v0.2.1: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.1 v0.2.0: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.0 v0.1.0: https://github.com/L1nkZ/rpatchur/releases/tag/v0.1.0
    1 point
  2. ItemDB -> YAML! As of Git Hash: 04cfe17, rAthena's item database has been converted to YAML! What this means: The item database being in YAML format means that the database is now much more human-readable. This allows for quick review, modification, and addition of items without having to memorize the CSV format or use any third party tools. The parser now also has much better error handling when reading items into memory so tracking down those pesky typos is a thing of the past! The update combines item_avail, item_buyingstore, item_delay, item_flag, item_nouse, item_stack, and item_trade databases into the item_db so there is much less searching around multiple databases when doing anything with items! As items are no longer defined in a single row, this means the flat file has grown in size. To ease the on load text editors for people's computers who may not have the horsepower we split the items as they are in game via Consumables, Equipment, and Etc. The Job restriction for items has been cleaned up so that custom masks don't have to be made and removes a horrible restriction for those adding custom classes to their servers. Now it's as easy as defining the EAJ_* constant... and that's it! The item combo system has had a massive cleanup in the background. We no longer do sketchy memory management and manipulation with a move to use standard libraries provided by C++11! As with any YAML conversion we have provided an option in the CSV2YAML tool built right into rAthena! Just build the CSV2YAML tool within Visual Studio or via Make and run the executable. The tool will provide you with general steps and convert your custom items right on over to the YAML format. No muss, no fuss! Something that was brought up in the Pull Request was the support for SQL. Many people were against the move to YAML because the support for SQL was compromised. Well, we are happy to say that SQL is still supported and isn't going anywhere! We've developed a new tool, YAML2SQL, which can convert the YAML item database into SQL format. This allows servers who utilize SQL to continue with this method. We've also gone a step further and provided a SQL View which will create a new compatibility table without breaking support for your Control Panel/databases. The SQL View is optional though once the Control Panel/database is setup to utilize the new table. The new and fuller item data in this table also provides much more detail to the item database than ever before! You can read more details in our README! What this means to developers: Pull Requests can be reviewed much quicker and much more simpler. Identifying the actual change to the item and easily verifying said change without having to count commas! Additional features being added to the item database no longer requires the development of a side database. A vast majority of the item data is now part of the item_db structure and can continue to grow in this format! Redefined Import System: Now that the item_db is in YAML format, the adjustment of items is much simpler. If a change is being made to an item only the parts that are being changed have to be defined in the import. Below are some examples: Adjusting Red_Potion weight to 10 and increasing the heal rate in the script. - Id: 501 Weight: 100 Script: | itemheal rand(100,120),0; Remove the Thief classes from being able to equip the Cap. - Id: 2226 Jobs: Assassin: false Rogue: false Thief: false Add a stack limit of 10 to Meat for inventory only. - Id: 517 Stack: Amount: 10 Inventory: true Check out the item_db documentation for further details! Thanks to @Lemongrass, @Capuche, and @Cydh for their help!
    1 point
  3. Just give a try didn't test. // Credits: Stolao function script dispell_Function { while( .@STATUS < 297 ) { if( .@STATUS != SC_WEIGHT50 && .@STATUS != SC_WEIGHT90 && .@STATUS != SC_NOCHAT && .@STATUS != SC_XMAS && .@STATUS != SC_SUMMER && .@STATUS != SC_JAILED && .@STATUS != SC_STRFOOD && .@STATUS != SC_AGIFOOD && .@STATUS != SC_VITFOOD && .@STATUS != SC_INTFOOD && .@STATUS != SC_DEXFOOD && .@STATUS != SC_LUKFOOD && .@STATUS != SC_FLEEFOOD && .@STATUS != SC_BATKFOOD && .@STATUS != SC_WATKFOOD && .@STATUS != SC_MATKFOOD && .@STATUS != SC_SCRESIST && .@STATUS != SC_EXPBOOST && .@STATUS != SC_ITEMBOOST && .@STATUS != SC_BOSSMAPINFO && .@STATUS != SC_LIFEINSURANCE && .@STATUS != SC_JEXPBOOST ) sc_end .@STATUS; .@STATUS++; } return; } // Sample Script geffen, 119, 71, 0 script TestWarp#Sample 45,2,2,{ end; OnTouch: mes "[ Portal ]"; mes "^FF0000WARNING: Once you entered automatically dispelled.^000000"; close2; warp "geffen",119,78; sleep2 2; setpcblock PCBLOCK_IMMUNE|PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM, true; dispbottom "DEBUG: TRUE"; dispell_Function(); addtimer 5000,strnpcinfo(0)+"::OnPass"; end; OnPass: dispbottom "DEBUG: FALSE"; setpcblock PCBLOCK_IMMUNE|PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM, false; end; }
    1 point
  4. Quick update post. I've worked on the patcher a bit since my last post. Here's a quick summary of the changes: * Allow cancelling the patching process * Fix several bugs (related to both archive parsing and patching) * Improve overall patching performance * Add a couple of configuration fields (to toggle integrity checks and GRF file creation) * Switch configuration file format from JSON to YAML * Add documentation (https://l1nkz.github.io/rpatchur/) * Add ability to display the current download speed in the UI
    1 point
×
×
  • Create New...