@Yann - Haha, yeah I am halfway through and gotta say thanks! Covers stuff I had no idea about (like printing out values of arrays - so helpful!).
How I have it set up is a different array for each level that records every enemy position, their direction, chasing player or not, health. That same array also records the self-switch for each item (so, if self is 0 the item has not been collected, if 1 it has basically).
Inventory array that holds all items. This one is simple for me as there is a low max number of items and no duplicates, so I just add to index of 0 if it exists, if not show an 'inventory full' message. However, I think most people doing RPGs will want massive arrays with many duplicates and want to know how to display that, so my method isn't helpful.
Then I have the player's array, which holds health, location, direction, sanity (my main character does not have many stats, but again most other people will want all that luck, agility, etc.).
Then there is also the transition array, which basically holds all the information about where you came from in the case that, say, you go to a cutscene on another layout then return and want everything to be the way it was. So, the previous layout name, the value of any timers that happen to be active, etc., etc.,.
So yeah, although now I have it nicely streamlined and it all loads and saves automatically, it's pretty messy stuff.
Here's an image of the sort of way I'm going about it: https://www.dropbox.com/s/k275o9sxm2aespl/Untitledv.png (sorry I don't know how to put a picture in my post).