btw what changes with the 'plugins run in own environment'?
Ah, I should update the plugin FAQ about that. Basically, we spawn a new PluginEnvironment instance (it's a persistent, invisible object) and do
with(env) { execute_file(...); } so any variables you forget to define will end up on that object instead of on GameServer, Client or the weird non-object game_init runs in.
It also means you can now just type 'packetID' and 'directory' to get the packet ID or directory, respectively, since we put those as variables on the object for you. There's also isLocalPlugin and isServerSentPlugin for checking what mode the plugin's running in.
This also gives you a nice place to stick your variables. For my latest plugin, I did this:
globalvar myplugin;
myplugin = id; // this PluginEnvironment object
blah = 3;
foobar = "stuff";
...
if (myplugin.blah) {
...
}