All database data is stored in .dbf, .cdx, and .fpt files (you can open these with Microsoft Excel). The dbf only has descriptive information about the variable (variable name, type of variable, player ID, and timestamp) while the other two have in depth detail of the object (except they are in code form rather than a human language).
You are correct that creating NPCs out of an entire local vault would require starting the module once for each PC to store it. While a few things need to be updated (e.g. event scripts) there is a significant amount of data transfer (all local variables are copied, as well as the entire inventory).
Nevertheless, like CopyObject(), there are some unfixable problems (except through a 3rd party utility such as leto). For example a Great Strength I feat adds one strength to a creature when it spawns. If a spawned creature or PC is copied or saved to a database, then causing the copy (or retrieved object) to spawn would add another point of strength to the copy. If, as a PC, I had great Intelligence X then the process to copy event scripts and data would mean that the final retrieved NPC would have 20 more intelligence than I had. If I saved that creature as a henchman from module to module (like OHS does), I could have the henchman's stats go way off the charts due to the number of times it was copied.
Modifié par WhiZard, 31 août 2013 - 03:42 .