Jump to content

8 Screenshots

About This File

** This program has been orignally uploaded on rAthena; it's been uploaded on Hercules due to multiple requests. If you have suggestions or feedback and you want a quick response, please contact me via rAthena. I will respond on Hercules' forum as well, but it'll take a bit longer ;).

 

Hey everyone,

 

This is a GRF tool I started to develop for my own personnal use, but I thought I'd share it since I've upgraded the UI. Its primary goal is to be easy to use while offering a wide variety of options and customizations. The software is quite stable and can handle large operations easily.

 

How to install

  • Download the zip archive provided from the download link at the bottom of this description or directly from there : http://www.mediafire.com/?aflylbhblrzpz0h
  • Install the application with GRF Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it.
  • Once you are done, you can start the program from the link on your desktop.

Key features

  • Overall speed is faster (or at least equal) than any GRF tool.
  • Common operations : add, delete, merge, extract, preview, save.
  • Undo and redo for any operation.
  • It can open any GRF file.
  • Clean and very interactive interface.
  • Saving formats supported : 0x200, 0x103 and 0x102 (through the Settings page).
  • Instant filter and search options (example : "map .gat").
  • File association and context menus integration for .grf, .gpf and .rgz (through the Settings page).
  • Can rebuild separated images into one file easily.
  • Lub decompilation (in beta, but it can decompile almost any lub file so far).
  • Drag and drop (with the ALT key, can be modified in the Settings page). This is a big part of the software; most of the items can be moved around within the application itself or from/to Windows Explorer.

Tools

  • Sprite editor : a simple sprite editor with powerful features. Semi-transparent images can be added, you can easily change the order or replace images, etc. This tool can convert images in the wrong type by showing you multiple solutions (merging a new palette, dithering the image by using current palette, using the closest color, and a few more).
  • Grf validation : allows you to validate a GRF with multiple settings. It can detect corrupted GRF entries, invalid sprites, empty files, non-GRF files, duplicate files and a lot more.
  • Flat maps maker : generates flat maps from .gat and .rsw files. Useful to generate WoE maps or to fasten up the loading time.
  • Patch maker : generates a GRF patch based on two different GRFs.
  • Hash viewer : shows the hash code (both CRC32 and MD5) for files.
  • Image converter : converts an image to any format requested (BMP, PNG, JPG, TGA).
  • GrfCL : used to create batch files (.bat) which can automate tasks on GRF files. See the content in GrfCL.rar in the download for more information. This tool can be customized from the sources as well.
  • Palette recolorer : creates new sprites by changing their colors (this tool is now deprecated).
  • Client database editor : allows modifications of the database client files (txt and lua) with easy and simple tools. Work in progress.

Grf encryption

 

The encryption feature has been enabled again. It's similar to what it used to be and it has been tested on client versions ranging from 2012-08-01 to 2014-02-05. Some error messages will be displayed if necessary. If you have an issue, copy the error message (with the code, if there's one) and send me the client executable with the cps.dll file generated by GRF Editor. There shouldn't be compatibility issues anymore though!

 

Technical stuff

  • Requires .Net Framework 3.5 (SP1) Client Profile to run (3.5 or more will work as well).
  • Automatically converts file name encoding to their proper values (you can change the encoding).
  • Data virtualization is used as much as possible to preview files, meaning the files aren't completely loaded.
  • Right-clicking an item will bring up the available options with that file.
  • Preview file formats : txt, log, xml, lua, lub, bmp, png, tga, jpp, db, ebm, pal, gnd, rsw, gat, rsm, str, spr, act, imf, fna and wav.
  • Services are "crash ready", meaning that you will be warned about a failed operation and no work will be lost (the application won't close and crash). It tries to continue operating even if it meets unsual conditions.
  • Operations can be cancelled by clicking on the button near the progress bar.
  • The warning level can be changed to avoid messages like "Please select a folder first."
  • When prompted with an error, use Ctrl-C to copy the current dialog's content.

Some screenshots!

1) Previewing an act file, while showing the search feature

f4s9HyJ.png

 

2) Preview of a model file (rsm)

JJGzEDe.png

 

3) Preview of GrfCL with the MakeGrf command

grfcl.png

 

4) Preview of the Client Database Editor

KIilfiY.png

 

5) Preview of Grf validation

RhQY5hj.png

 

6) Search feature (press Ctrl-F or Ctrl-H to bring up within a text editor)

vGwnomr.png

Sources : http://www.mediafire.com/download.php?7z6hkdag4ayj8rs

 

Got a feedback? I'd gladly hear you out and fix issues you have with the program. If you want new features to be added, don't hesitate to ask!


What's New in Version 1.6.5   See changelog

Released

  • [Fixed] GrfEditor : Saving a file as ACT now uses the proper methods.
  • [Fixed] GrfEditor : Bug when extracting files (introduced in the previous release) which would pause all threads and wait indefinitely.
  • [Fixed] GrfEditor : Rebuilding images (from cut images) wasn't updating the drag and drop image, this has been fixed.
  • [Fixed] GrfExt : The "Open with GRF Editor" options weren't working if the paths contained spaces.
  • [Fixed] TkLibrary : The progress stayed red after cancelling a task. This no longer happens.
  • [Fixed] SpriteEditor : "Export all" now extract images without throwing an exception.
  • [Modified] GRF : The GRF paths are no longer case sensitive. When saving a GRF with duplicate file names, one of them will be removed.
  • [Modified] Grf : Ignores error code -3 from Gravity's official compression DLL.
  • [Deleted] WpfImaging : This library no longer exists. It was handling all the image format conversion; if you have issues with images, let me know. It is now being handled directly by the GRF library.



User Feedback

Recommended Comments

I'm attempting to load the data.grf from a fresh kRO install (from here) and I get this error:

 

--------------          Message          --------------
Couldn't load the GRF.
--------------        Stack trace        --------------
   at GrfToWpfBridge.Application.DefaultErrorHandler._reportAnyManagedExceptions(String message, Exception exception, ErrorLevel errorLevel)
   at GrfToWpfBridge.Application.DefaultErrorHandler.Handle(Exception exception, ErrorLevel errorLevel)
   at ErrorManager.ErrorHandler.HandleException(String message, Exception exception, ErrorLevel errorLevel)
   at GRF.Core.Container._load(String fileName)
   at GRF.Core.Container..ctor(String fileName)
   at GRF.Core.GrfContainerProvider.Get(String fileName)
   at GRF.Core.GrfHolder.Open(String fileName, GrfLoadOptions options)
   at GRF.Core.GrfHolder.Open(String fileName)
   at GRFEditor.EditorMainWindow.<>c__DisplayClass63.<_load>b__58()
   at GRF.Threading.GrfThread.<>c__DisplayClass7.<Start>b__6()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

--------------         Exception         --------------
System.Exception: Couldn't load the GRF. ---> GRF.ContainerFormat.GrfException: The length of the stream is too small for this container. Unable to parse the header.
Actual size : -1610635553
Expected minimal size : 46
   at GRF.ContainerFormat.GrfExceptions.ThrowHeaderLengthInvalid(Int32 length, Int32 expected)
   at GRF.Core.GrfHeader..ctor(IBinaryReader reader)
   at GRF.Core.Container._load(String fileName)
   --- End of inner exception stack trace ---
--------------          Message          --------------
The length of the stream is too small for this container. Unable to parse the header.
Actual size : -1610635553
Expected minimal size : 46
--------------      Inner exception      --------------
GRF.ContainerFormat.GrfException: The length of the stream is too small for this container. Unable to parse the header.
Actual size : -1610635553
Expected minimal size : 46
   at GRF.ContainerFormat.GrfExceptions.ThrowHeaderLengthInvalid(Int32 length, Int32 expected)
   at GRF.Core.GrfHeader..ctor(IBinaryReader reader)
   at GRF.Core.Container._load(String fileName)
 

Anyone know what's going on?

Share this comment


Link to comment
Share on other sites

And as an added bonus, when I try to open the data.grf from the pre-re translation project, all clientinfo.xml says is

 

[null][null][null][null][null][null][null][null][null][null][null][null][null][null][null][null][null][null]

 

translation project grf updated.PNG

Share this comment


Link to comment
Share on other sites
9 hours ago, Vejova said:

And as an added bonus, when I try to open the data.grf from the pre-re translation project, all clientinfo.xml says is

 

[null][null][null][null][null][null][null][null][null][null][null][null][null][null][null][null][null][null]

 

translation project grf updated.PNG

save this as clientinfo.xml 

 

<?xml version="1.0" encoding="euc-kr" ?>
<clientinfo>
    <desc>Ragnarok Client Information</desc>
    <servicetype>korea</servicetype>
    <servertype>primary</servertype>
            <connection>
            <display>BesprenRO</display>
              <address>192.168.0.1</address>
              <port>6900</port>
              <version>55</version>
              <langtype>1</langtype>
        <registrationweb>www.besprenro.com</registrationweb>
        <yellow>
            <admin>2000000</admin>
        </yellow>
        <loading>
            <image>loading00.jpg</image>
            <image>loading01.jpg</image>
        </loading>
    </connection>
</clientinfo>



 

Share this comment


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

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