Hm. In that case, possibly a pretty big one. We use a lot of nwnx stuff, including custom effect ids, and more. I'll show you the basics, and let you decide if you want to dive in (I'm giving you everything I spot, but I may miss some included functions you'd need). Here's the snippet from where it fires on client enter:
http://pastebin.com/6aZ4kthA
Note that our entry script, which normally passes people through our first area, is put on hold while it waits for password confirmation:
http://pastebin.com/jbAf0pWa
That chunk of code repeats every 5 seconds until they enter the password, at which case they pass that return and execute the rest of the code in that onenter, which, among other things, deposits them in the normal start area, if that's where they belong.
The ApplyPasswordHold function is as follows:
http://pastebin.com/bbvGh7EQ
Then, of course, there's the chat event that screens for the various channels:
http://pastebin.com/GYyWx1Xe
That's basically just the standard SIMTools chat event, with some modifications for password support, as noted in the comment.
Next, some selected code from the chat include, including passwording functions and the !password command itself:
http://pastebin.com/LQimj55V
The SQLExecStatement is just a convenience function variant of the normal SQL injector function, SQLExecDirect:
http://pastebin.com/KMfeiM8H
It basically allows you to replace string quotes with ?s, to make the inputs more human-readable, with less room for annoying quote errors. Courtesy of acaos, along with this passwording code, I should mention.
Last up, the password database, both a describe and a sample select. People have criticized the use of OLD_PASSWORD, but it's basically a nonissue unless the person trying to defeat it has lower level access to the server. I sure as hell can't tell what people are entering, at any rate. I wind up setting people's passes to simple phrases like greeneggs if they forget them. '>
http://pastebin.com/66TzGtvN
Please feel free to ask questions.
Funky