[Tool] GD Stash

Ah, you just click on an empty spot in the stash to place the item there and then save, so the game sees the changed stash.

But as you said, you figured it out :wink:

Hi!
Is this suggestion ignored or unseen?
Thanks.

it is neither. It is implemented and will be in the next release.

Thanks! Hope this feature will be useful :slight_smile:

Bit of a strange thought, but just now while I was playing a character that I had completely changed from another build a week ago I was wondering if you can change the value for highest damage dealt? I don’t see a way currently. I’d like to know how strong this new version of the character is but its still got the damage value from the previous very strong (full korba, 540k hit in campaign) build and it’s not easy to break that one. Forgive me if I’m wrong but this is probably simple to modify if you know how?

I am not even showing that value, let alone let you change it.

GD save file editor should be able to do this, if you work your way through its interface (maybe ask the author for what string you should look for).

Will think about adding it, but if so, only to reset it, not to enter a number.

That’s all I was looking for, since I do respec old characters a lot lately.

I just installed it and it looks im missing the Noire skin ;( i did something wrong?

No, that will be included in the next update

How to edit steam cloud save data?

I’ve tried to turn off cloud save but items wont stay in stash when I turn it back on.

Edit. Also when I turn it back on, I lose that non-steam-cloud-save character ( the new one who should have DB items). Well, I moved new char files from documents/mygames/grimdawn/save TO steam/userdata/205807435/219990/remote/save… STILL nothing.

Why this is so hard? I just want to play from cloud save.

You do not need to turn cloud save off, what you need to do is make sure GD is not running while you make the changes.

Local and cloud saves are stored in different dirs, so if all you do is turn it on and off, you toggle between different save files, which probably is why the item disappears.

For this to work you would have to

  • turn cloud save off
  • copy the cloud save to the local dir
  • change the local save via the tool
  • copy the local save to the cloud dir
  • turn cloud save back on

Closing GD is the easier option.

Okay, tried… It gives me error ā€œWrong directoryā€ after copied cloudsave to local dir.

sry, have to post this more to add link with images. :smiley:

…so here is that error.

After ā€œopenā€ it says that ā€œwrong directoryā€.

Because it is the wrong directory. The dir you want is the save dir, not a specific char’s save dir. You select the specific stash / char to edit in the tool.

You’re right. Got it, thanks!

Have a nice day. :slight_smile:

Hi,

I have reinstalled Win10, installed Java10 64bit runtime and with GDStash 1.2.7c this error comes up when i want to ā€œSave settingsā€ in the config tab:

Note - I’m using a different Grim Dawn install folder, but I’ve put in the new folder location into the config tab though

Error while saving the configuration data.

The conglomerate (384) requested does not exist.
java.sql.SQLException: The conglomerate (384) requested does not exist.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement42.<init>(Unknown Source)
at org.apache.derby.jdbc.Driver42.newEmbedPreparedStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.gdstash.db.DBConfig.setConfigData(DBConfig.java:750)
at org.gdstash.ui.GDConfigPane$ConfigListener.actionPerformed(GDConfigPane.java:870)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue.access$600(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: ERROR XSAI2: The conglomerate (384) requested does not exist.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.readConglomerate(Unknown Source)
at org.apache.derby.impl.store.access.CacheableConglomerate.setIdentity(Unknown Source)
at org.apache.derby.impl.services.cache.ConcurrentCache.find(Unknown Source)
at org.apache.derby.impl.store.access.RAMAccessManager.conglomCacheFind(Unknown Source)
at org.apache.derby.impl.store.access.RAMTransaction.findConglomerate(Unknown Source)
at org.apache.derby.impl.store.access.RAMTransaction.findExistingConglomerate(Unknown Source)
at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown Source)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndexMinion(Unknown Source)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(Unknown Source)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getAliasDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.QueryTreeNode.resolveTableToSynonym(Unknown Source)
at org.apache.derby.impl.sql.compile.UpdateNode.bindStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)

Thanks, F.

According to Google this is a Derby message, which means your DB is probably corrupted.

Assuming you have no items stored in it, delete C:\Users&lt;username>\GDStash\db (or db_<modname> if you use a mod).

If you have items stored you need to save, let me know.

Thanks, I deleted the db folder and I could save the config and start the import of the db - after the import of the DB it comes up with this error:

Please check if newer version of GD Stash is available.

Version not supported
org.gdstash.util.FileVersionException: Version not supported
at org.gdstash.character.GDChar.readSummary(GDChar.java:768)
at org.gdstash.character.GDChar.readCharSummary(GDChar.java:713)
at org.gdstash.ui.util.GDCharInfoList.processCharFile(GDCharInfoList.java:90)
at org.gdstash.ui.util.GDCharInfoList.processCharDir(GDCharInfoList.java:81)
at org.gdstash.ui.util.GDCharInfoList.processCharDir(GDCharInfoList.java:80)
at org.gdstash.ui.util.GDCharInfoList.findCharsInDir(GDCharInfoList.java:62)
at org.gdstash.ui.util.GDCharInfoList.findChars(GDCharInfoList.java:45)
at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:316)
at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:73)
at java.desktop/javax.swing.SwingWorker$1.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.desktop/javax.swing.SwingWorker.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)

You can ignore that as far as the DB import is concerned. The import was successful.

After the import, the tool reads all chars, so it can display them in its dropdown list. The error is from that step.

Apparently you have a really old char somewhere in your save dir (i.e. one that uses a format the tool does not understand - and it understands all versions since the official GD release (that is after EA)).

To fix this, try identifying the char (it should not be in the drop-down list on the char transfer or char edit pages) and try loading that char in game. Assuming the format is not too old, GD should update it to the recent file format. If it is too old for that, your only option really is to delete it.

There is no impact from this error however, other than you being unable to edit the char in the tool, so you can also simply ignore it…

I was getting error messages whenever I started GD Stash about items missing from the database, so I tried to re-import the database. It’s been stuck decompressing database.arz for about an hour now (for the second time), and I can no longer access my stash or the hundreds (thousands?) of items in it.

Do you have any suggestions on how I can successfully install a new database?

Thanks!