Jump to content

Feature request: Fill pokedex from boxes


suloku

Recommended Posts

Pokedex entries are not updated when importing pokemon, and the only way to do it in game is trough daycare or with pokemon bank.

What I'm asking for is a button at the pokedex editor that would itterate trough every pokemon in the boxes, team, daycare, gts, old man and fused and add that specific pokemon's entry to pokedex (forme, gender, shinyness, kalos or non kalos...) to the corresponding encounter, owned and language fields.

I don't really need this feature myself, but I think it is a not very hard to code feature that would be very cool for pkhex to have.

Link to comment
Share on other sites

Instead of fixing a symptom, it is better to fix the cause. What are all the methods of adding a Pokémon to the save file?

Methods that do set the Pokédex Flag:

* Setting from Tabs

* Dropping from external file

* Importing individual files from a folder

Methods that do NOT set the Pokédex Flag:

* Importing Decrypted Battle Videos

* Importing boxdata.bin

* Importing pcdata.bin

* Importing injectiondebug.bin

While I personally feel that the last 3 should never be used (the others are much more convenient), they should set the Pokédex data regardless.

It'd be easiest to add the Pokédex setting methods to the ones that currently do not have it instead of adding a very niche feature.

By adding it to these cases, the feature you requested is pseudo-implemented as the user can just export their pcdata and re-import it.

Fixes have been implemented in the latest commit. Thanks for bringing this issue to my attention :)

Link to comment
Share on other sites

Thank you very much, I didn't actually notice pokedex entries are set when importing individual pokemon files or importing folder to box. I was copying a full pokedex and 719+formes to another savefile, and drag and drop those many files would be tiring.

You may nbe thinking, why not use the Load/Dump boxes feature? Becuase that feature for some reason fails on my latias. Then it failed on my unown box (but didn't fail on the unown I have in my sorted pokedex boxes, which should be the same as the other unown), then it fails with some vivillion...

I'm trying to locate all the pokemon from my save that trigger the problem.

This is the exception error:

Consulte el final de este mensaje para obtener más detalles sobre cómo invocar a la depuración 
Just-In-Time (JIT) en lugar de a este cuadro de diálogo.

************** Texto de la excepción **************
System.ArgumentException: Caracteres no válidos en la ruta de acceso.
  en System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
  en System.IO.Path.Combine(String path1, String path2)
  en PKHeX.Form1.mainMenuBoxDumpLoad(Object sender, EventArgs e)
  en System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
  en System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
  en System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
  en System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
  en System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
  en System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
  en System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
  en System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
  en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  en System.Windows.Forms.Control.WndProc(Message& m)
  en System.Windows.Forms.ScrollableControl.WndProc(Message& m)
  en System.Windows.Forms.ToolStrip.WndProc(Message& m)
  en System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
  en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Ensamblados cargados **************
mscorlib
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
PKHeX
   Versión del ensamblado: 1.0.0.0
   Versión Win32: 1.0.0.0
   Código base: file:///C:/Users/sergi/Dropbox/Personal/Savegames/3ds/Pok%EF%BF%A9mon%20X%20-%20Diego/PKHeX.exe
----------------------------------------
System.Core
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_es_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
System.Data
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
mscorlib.resources
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_es_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Numerics
   Versión del ensamblado: 4.0.0.0
   Versión Win32: 4.6.81.0 built by: NETFXREL2
   Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------

************** Depuración JIT **************
Para habilitar la depuración Just In Time (JIT), el archivo de configuración de esta
aplicación o equipo (machine.config) debe tener el
valor jitDebugging establecido en la sección system.windows.forms.
La aplicación también se debe compilar con la depuración
habilitada

Por ejemplo:

<configuration>
   <system.windows.forms jitDebugging="true" />
</configuration>

Cuando esté habilitada la depuración JIT, cualquier excepción no controlada
se enviará al depurador JIT registrado en el equipo
en lugar de controlarlo mediante el cuadro de diálogo.

System.ArgumentException: Caracteres no válidos en la ruta de acceso. --> Invalid characters in access path

I can send you my save file if you want to try yourself. I'm gonna try pinpoint the problematic pokemon, see if they have something in common.

Also, why are pk6 files exported with load/dump boxes (or drag and drop to a folder) 232 bytes while manually "saving as" a pk6 file outputs 260 bytes?

While I personally feel that the last 3 should never be used (the others are much more convenient), they should set the Pokédex data regardless.

May I know the reasoning behind that? Since you said it is a personal feel, it makes me think there's no actual difference from importing a full box and adding 30 pkm files manually?

The only reason I can think of is that a box bin file has more data than just the 30 pkm entries it stores, but maybe it is just that importing a box overwrites everything there is inside the current box?

EDIT: just checked, a boxdata.bin is only a concatenation of 232bytes pk6 files.

Which leds me to another (simple) suggestion: could the export box feature prompt if we want to export the files in separate folders when not exporting to pkhex database? Each folder would be a box (Box-XX-TID for example, or without TID), This only makes sense if a box bin file holds more data than the concatenated pk6 files, but it may be useful for managing big amount of pokemon.

UPDATE: I have found the 4 pokemon that made load/dump boxes crash, I'm attaching a box bin file with the 4 of them. Latias and both vivillion I got them from GTS, but the Celebi is a 100% legit celebi I myself got from pokemon colosseum bonus disk and transfered the official way trough retail cartridges and finally to gen VI with poke transfer and pokemon bank.

Only think I see they have in common is that they have nicknames (should the japanesse celebi be marked as having a nickname? I guess since gen VI region for it is mine, instead of keeping it a japanesse one.

bugged.zip

bugged.zip

Edited by suloku
Link to comment
Share on other sites

I was editing my post while you replied, I've attached the box to my previous post.

About boxes, I was more referring to exporting all pokemon in pk6 while keeping them in folders as an option, but that's what export as boxdata.bin does, so no real need for that.

EDIT: about the 232 and 260 bytes, I'll respond myself:

"Pokémon in the games Pokémon X and Y are stored in a new 232 byte structure (for the box data only). Party Pokémon hold 28 bytes of additional data for overworld and battle values. We recommend using the pk6 extension for decrypted 232-byte box data and 260-byte party data structures."

I guess there's a reason for "Save as.." to add the battle data, can't see why though. Oh well, won't take my sleep.

Link to comment
Share on other sites

You may be thinking, why not use the Load/Dump boxes feature? Becuase that feature for some reason fails on my Latias. Then it failed on my Unown box (but didn't fail on the Unown I have in my sorted Pokedex boxes, which should be the same as the other Unown), then it fails with some Vivillion...

UPDATE: I have found the 4 Pokemon that made load/dump boxes crash, I'm attaching a box bin file with the 4 of them. Latias and both Vivillion I got them from GTS, but the Celebi is a 100% legit Celebi I myself got from Pokemon Colosseum bonus disk and transferred the official way trough retail cartridges and finally to gen VI with poke transfer and Pokemon bank.

Only think I see they have in common is that they have nicknames (should the Japanese Celebi be marked as having a nickname? I guess since gen VI region for it is mine, instead of keeping it a Japanese one.

Fixed in latest commit. Trash Bytes and a recent change are the root of the issue :)

Thanks for reporting this issue!

---

Also, thanks for the feature pull request; has been merged. I have tweaked it a little to avoid a bug where the user exits out of the FolderBrowserDialog without specifying a file.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...