Ignore my previous posts, I got some new ones.
1. How can I print a Pokemon's name/nickname in message box or something? Preferably the 1st Pokemon's name (in party). And remember it can evolve and be nicknamed so I can't use a variable to memorize his 1st given name.
2. How can I forbid a Pokemon from being put in the PC if it's possible?
3. How can I edit a caught Pokemon's data? Like, the player raised his XXYY to 80 and evolved it, though I want it to become 36 again etc.
4. Is it possible to make 2 systems of PC or more? Like, in 1 city i'll access 50 Pokemons, in another i'll access another 50 or so. Or w/e...
I can handle without the possibilities to use the answers for all those questions, but it'll really help me if they'll be solved.
1. Everything about a pokémon is stored somewhere in the game as data. For your party pokémon, the information is in $trainer.party[x], where x is the position of it in your party (zero-based, meaning your lead pokémon is number 0, the second one that gets used in double battles is 1, and so forth).
For a pokémon's name, look at $trainer.party[0].name. That's a string that contains your lead pokémon's nickname or, if it doesn't have a nickname, its default (i.e. species) name.
All you need to do then is put that into a message. I'm not quite sure how to do that, but it shouldn't be too difficult (if you use pbShowText or whatever it's called).
2. Create a new bit of information for a pokémon (e.g. "canstore", as in pokemon.canstore). This will be null or 0 by default, but in special cases you can set it to 1. Then find the "Deposit Pokémon" script and include an extra check to say "return false if pokemon.canstore" or something similar. This (plus an announcement message to say why) will automatically reject any pokémon you've designated can't be stored on a PC.
It's certainly possible, but it may challenge you if you're not too sure about scripting. Have a look at other examples, such as how the game disallows you to deposit your only remaining pokémon (it'll check $trainer.party.length, I think, and say no if it's 1 or less, along with a message to say you can't deposit your last pokémon) - this should be in the same place in the scripts you need to add your own check on the "canstore" variable.
3. If you mean Level, that's easy enough, depending on what you want to do (e.g. lower the level of all pokémon of species x that evolved immediately (easy), lower the level of a particular (e.g. starter) pokémon (harder)). If you want to change a stat (e.g. Atk or Spd), that's rather more difficult, since the game refers to a table to recalculate the stats at each level up, and those tables are for a species as a whole.
The lowering level thing can be put into the evolution screen. Just after the message saying "Your Squirtle evolved into Wartortle!", put in something like "pokemon.level-=10" to lower that pokémon's level by 10, or "pokemon.level=13" to set it to 13. You can expand on this by checking the pokémon that just evolved's species, and changing the level as appropriate.
You'd probably need to change the amount of experience it has as well, so that it doesn't shoot straight back up to level 18 or whatever when it next "levels up" (i.e. recalculates its level/stats). You'll need to get your calculator out to decide how much exp to detract from each pokémon.
As I said, without knowing more precisely what you want to do, it's hard to offer advice on this question. Most likely it'll involve some in-depth scripting.
4. Yes, but again, it'll require some in-depth changes to the scripts. I don't know exactly how the PC pokémon are stored (i.e. under what object name), but "all" you'd need to do is create another object that works the same but is named slightly differently, and in each instace of all the scripts referring to the PC object, change it to refer to one of your PC objects depending on whatever (perhaps a game variable that you set each time you interact with a PC depending on your location).
Quite in-depth, but certainly technically possible.