In creating a persistent world, I spent several months pulling all the ideas together and created a basic starter module. Everyone in the scripting / database forums were so helpful I wanted to give something back if it could help someone else. I could not put names to all the code people helped with since it got too messy, but sufficient to say almost everything came from help in the forums at one time or another. Included in zip: - base starter module like the CEP but with database code built in - .erf if you want to use the code separate - detailed instrutions to install required database, tools, and optional cep - tutorial to show how to use the scripts to create your world. MAIN FEATURES: - persistent spells / hp across restarts - death tracking - crafting framework - random spawns (eq style hunting grounds) - trigger spawns (eq style camps) - treasure spawns (rdm. relocking also) - all customized by database records via mysql - more... Enjoy!
Updated the archive to use the latest versions of stuff (easier to set up your envionment now). No more ODBC needed. Re-worked the documentation. Added a CEP and a non-CEP starter module. Added crafting and banking.
I set it up and log on. I get 2 errors. 1st "There was a problem initializing your player record. Contact your DM". 2. asp_random error: to many instructions. I am using the newest version of MySQL 5.0.27 with your database for version 5.0.18. Is that causeing a problem?
I took a break for awhile to play EQ2 and WOW. I am getting back into this in preparation for NWN2 in a few months. I am redoing the instructions for the newer versions of stuff and noticed a couple of comments here that could use some explanation.
1) realize that the NWNX2 stuff works through hooks to the NWNX2.exe. If you do not start the module with that exe and then connect through your game using multiplayer you will get the too many instructions error and nothing will work.
2) there were special instructions on the odbc stuff and old passwords that needed to be followed exactly to work. The NWNX2 team now allows connecting directly to mysql. I am going to redo the instructions for this setup since it is sooo much easier than messing with ODBC.
3) In preparation on NWN2 im going to provide 2 persistant world base modules. One with the CEP and one without. Since everything ive read says the graphics will all have to be re-done that makes alot of sense to me. I will spend my remaining time reviewing all the scripts and doing performance improvements with the profiler.
I will post the new stuff up here in the next week or 2.
Posted by Venkil Anaht ( 83.31.xxx.xxx ) at 2005-11-29 18:45:17
I had the "too many instructions" problem too, altough I don't use this starter module. Reinstallation of NWN seems to solve this problem. I belive it was caused by some NPC hartbeat scripts, but I can't be sure of that. I use default Bioware database. If someone knows why such problem can occur, I would be gratefull to get such knowledge to handle the bug when it eventually occurs again.
Posted by Amerikanisch ( 217.187.xxx.xxx ) at 2005-05-10 14:44:04
Hello, the tutorials have been extremely useful. I only have two problems, like a previous (unresolved) poster:
The asp_random script shows "too many instructions", I'm no expert with scripting- is this caused by an unresolved loop I need to close? If so, how do I fix it?
The second is the plr_load is coming back with a OID:80000000. Any ideas?
Posted by Dm_DBS ( 80.163.xxx.xxx ) at 2005-04-04 05:49:00
Hey. I got a problem with this system.
When a pleyer join the server, there is comming up a debug error. It says " There was a problem initializing your player record. Please contact the DM for debugging."... Can any one help me!!?...
Posted by HercNav at 2005-03-16 12:05:00 Voted 9.75 on 12/17/04
I started completely over and noticed that, for some reason, this computer doesn't want to run a server with NWNX2/MySQL. On another computer I have had success with sstacha's system. I noticed this error in the logs that are created by NWNX2:
! Error while connecting to database: [MySQL][ODBC 3.51 Driver]Access denied for user 'ODBC'@'localhost' (using password: NO)
I suspect that whatever causes this error is preventing the game from interfacing with MySQL.
Posted by HercNav at 2005-03-16 12:04:00 Voted 9.75 on 12/17/04
I started completely over and noticed that, for some reason, this computer doesn't want to run a server with NWNX2/MySQL. On another computer I have had success with sstacha's system. I noticed this error in the logs that are created by NWNX2:
! Error while connecting to database: [MySQL][ODBC 3.51 Driver]Access denied for user 'ODBC'@'localhost' (using password: NO)
I suspect that whatever causes this error is preventing the game from interfacing with MySQL.
Posted by HercNav at 2005-03-12 00:34:00 Voted 9.75 on 12/17/04
Here's another problem that someone out there might know how to address.
I've been using one computer on my network as my PW server. It's home to all the databases, tables, and data that I've been using to run that PW. I want to use a different computer on my network as my server. I've tried to simply overwrite the "nwn" folder in c:\program files\mysql\mysql 4.1\data with the old server's folder, but I can't get NWNX2 to interface with MySQL thereafter. Is there something I'm missing?
Posted by Anonymous ( 24.193.xxx.xxx ) at 2005-02-27 16:37:00
The plr_load and asp_random scripts show "too many instructions" when I load the module and nothing happens.
Posted by HercNav at 2005-02-26 06:31:00 Voted 9.75 on 12/17/04
I noticed a problem with this script if/when I ran a game that I made available to the internet as opposed to setting up the server with NWNX2. Besides that, I (and probably everyone else that can help you) will need more information. I suggest going through the directions two or three more times (that's what I had to do before the system worked for me).
Posted by Anonymous ( 24.193.xxx.xxx ) at 2005-02-26 00:48:00
I'm clearly doing something wrong. I installed this, MySql etc., but I get a bunch of errors when I run the module (the looped too many times kind of error). I am very good with scripting except when it comes to databases. Any ideas?
Posted by HercNav at 2005-02-22 16:22:00 Voted 9.75 on 12/17/04
I'm not exactly sure I follow the dialogue between RoxyFerret and Aedrielle, but this is what I'm doing so that a character logs in where he/she logged out--even after server reset:
1) I made a script that projects its heartbeat on all PCs in the module--I know, I know: heartbeat = BAD MODULE CREATOR! (Keyword search "HercNav's Heartbeat" to see the default script.)
2) I modified this script so that it saves each PC's location to the database. This creates an entry in the table entitled "pwdata". 'SetPersistentLocation(oPC,"PCLocation",GetLocation(oPC))'
3) I created a tiny room entitled "Welcome..." where I put the module start point (and a portal in case something catastrophic goes wrong and I need a backup system).
4) This small area has an "OnEnter" event where, if the persistent location is NOT valid, the PC is transported to one of seven waypoints (one for each race).
5) If the persistent location IS valid, the room's OnEnter script sends the PC there. 'GetPersistentLocation(oPC,"PCLocation")'
6) If the server resets, the player sees "Welcome...", then the last area where he/she last logged off, but never sees the tiny room.....
For what it's worth, my MODULE is entitled "HercNav's True Global World" in PW Action. I hate to plug my module on someone else's site, but it IS a running demo for what I explained above....
sstacha -
Great work.
Would you mind, if I 'borrow' your crafting system idea to further modify my own CNR-based system? ;)
From your readme:
"Quests: I have not found a way to deal with the Journal Editor. Entries entered there can't be read or set as far as I know."
There IS a way. I tried adding a variable to a text entered into Journal Editor and it appeared to work! The same way precisely as it does with a 'normal' dialog file.
You can easily assign to it any text read from DB or a local string variable through a script.
-------
RoxyFerret -
There is a problem with GetLocation(oPC) IN client_on_leave script. And that's the main point! There is NO valid location any more. All you have is a 'PC' object stripped from all player info (IP and such). It does have all variables set during play, however.
The trick is to save last known location. You do not need to write it to DB every hbeat, save it to a local var instead.
Posted by Stille Vande ( 209.30.xxx.xxx ) at 2005-02-17 01:29:00
Was just looking at your work, nice job man :)
Question, does it connect via an ODBC layer, and if so, is it possible to do without a layer?
Im beginning to make my first MySQL NWN mod, and I think that youve done a great deal of help to people like me that are trying to figure it out. But Ive also read in the vault that it speeds up performance if the database doesnt use an ODBC layer to connect. More of a "not knowing myself the answer due to being green on databases" kind of question. :)
Posted by HercNav at 2004-12-17 15:28:31 Voted 9.75 on 12/17/04
Very nice system. Am looking forward to any/all updates in the near future!
I have taken some time to work with Roxy on implementing some scripts that will allow builders to make an item that on use sets a bind point. I am changing the load scripts to check if a bind point exists for the player and use it when a player loads for the first time. If one is not found it uses the startpt like usual so the change should not affect anything that is currently being built and will be available if someone wants to use bind points. I hope the have the change available by the end of the week. I will post here when I update.
Thanks,
Posted by HercNav at 2004-11-11 13:50:00 Voted 9.75 on 12/17/04
You are exactly correct about what is meant by "persistent container." A PC should be able to leave items in a chest, the server reset, and the PC be able to retrieve the items as if he/she never left. At least, that's MY understanding of persistent containers.
As for custom housing, I think RoxyFerret is referring to systems like my "HercNav's Real Estate Agent". By implementing such a system, a PC can purchase a key from a NPC, thus granting him/her access to a unique house somewhere in the module.
I'm still really new to databases, but I've experimented with your and FastFrench's system. The latter does exactly what I requested (holds a PC's position, even after server resets, in the databases). I think it's storing a few strings like the tag of the area when exiting the module, x and y coordinates, etc.
As for making my real estate system persistent, you should read the posts on that site.... Keyword search "HercNav's".
Sorry I guess I mis-understood your previous post. As I read it you are asking 2 questions. Let me see if I can give some help.
1) player persistance over restarts - the problem is bioware has not given us the ability to get the last location of the player on the event when the player leaves the game even though clearly they are storing the information since the default is to put you back where you left off when you re-enter the game without any scripting. That leaves a couple of options. I chose the first which is to use the feature bioware implemented during normal game-play and all players are brought back to bind points on restart. The other takes quite a bit of overhead, but you could implement a script on the modules heartbeat that would store all players locations to the database. I do not think it is worth the overhead. It caused too many instruction errors at times, slowed down the server HORRIBLY during testing under load and in general I did not think it was worth it. However, if you really want to try and implement this give me an email where I can ftp down your module and I will see what I can do. Also, I will need to know any hakpacks and such to get it to run.
2) I do not understand what you mean by making the chest a persistant container. I never responded because I thought you meant my 'banking scrpts'. If you follow the banking in the tutorial it walks you through setting up a container that can store items to database and back again. If you mean something different post how what you mean is different or send me an email. I will see what I can do.
I just got back from vacation. I got an email from RoxyFeret that I may have dropped a table somehow. I am going to check that out today. Also, can someone please explain a little on what you mean by persistant container and custom housing?
My containers currenly only need a script in the open/use/close events and basically work like a bank you put stuff in, it stores to db and then when they re-open it puts whatever was stored back in. I usually make the container plot so it cant be destroyed. If it is easy to make this type of thing work for a persistant container I will.
Unfortunately, I don't have any idea what is meant by custom housing. It doesn't sound like I have anything like it in my module. If someone can give me a better idea of what this is I can at least give some suggestions.
Posted by HercNav at 2004-11-10 16:31:00 Voted 9.75 on 12/17/04
Thanks Caesarbear; I'll check out the link later.
You can see from the posted comments under my real estate system that I have big plans for "HercNav's Real Estate Agent."
However, of my 12 scripts, there has been only one vote, so It's unlikely that I make any new projects available to the community and just keep the improvements to myself--that is, on my own online PW (shame too; I was almost done with the demo system). I consider it common courtesy that people who USE another's script, actually VOTE for that script. As soon as I figure out how (if/when) sstacha's kit fits my PW, I'll vote on it; it's the least I can do....
Posted by HercNav at 2004-11-10 12:41:00 Voted 9.75 on 12/17/04
RoxyFerret,
Good luck getting any help on peripheral projects like persistent containers and custom housing. You can see way down at the bottom where I solicited help with my PW housing project (HercNav's Real Estate Agent).
To answer your question as best I know how, there is a script that just hit the vault. Keyword search CGPS. I haven't had the time, but I think it suits us both in our endeavors.
I wonder if you could tell me how hard it would be to add persistant chests, and custom housing to this. I know NOTHING about DBs yet. This'll be my incentive.
Any suggestions for good reference material to help with MySQL relative to NWN and PWs?
~ RoxyThe SECOND mouse gets the cheese... _________________________ Antolle ulua sulrim; lle naa haran e' nausalle.
I have a script that checks the levels of characters trying to party and prevents them from joining up if they're over 4 levels apart. Email me at [email protected] and I'd be more than happy to send it along to you.
Posted by DaleV ( 68.59.xxx.xxx ) at 2004-11-04 00:49:00
Thank you, stobbart...for that entire post of time-wasting goodness. ;)
*Clears his throat* Now then, sstacha, I haven't downloaded this yet, because..well..I have all of those things in place already, but I was curious... I've gone over the vault with a fine toothed comb and not found a single script to keep players from partying with anyone that is more than levels above/below them...and no luck. Does your package currently contain anything like this?
And if not, could I suggest that you do? You could, of course, make it optional...but I think it's a pretty decent PG deterence, as it keeps level 30s from leveling their friends. (Since scripting packages like PWFXP, which is AWESOME, but cuts down the xp the higher level player gets, and still gives the low level player massive xp for a kill they never touched.)
Oh..and if I've just asked for an impossibly easy addition, I apologize...still a area-creating maniac with a limited* talent for scripting. :P
Thanks. ;)
Dale, Team Leader Tek9 Development
Lead Creator / The Crescent Coast (Due out in December)
Ok,
I managed to get the bugs fixed that I know about at this point. I also made the download a self extracting executable for those people that don't have .rar or .zip capability. I also created a README.txt file explaining each files purpose and where to go do see how to use it. I put instructions on how to patch and details of what was fixed in the Change_Log.txt. As a quick summary:
- fixed banking / crafting bug where multiple users could open the container at a time
- fixed a SQL bug where apostrophys in the user name or character name caused the SQL to crash when creating the player record
- added banking to the tutorial
- added README file to explain the many files there now
- added Change_Log.txt to explain these and future fiexes
- updated the Install Guide
Post any additional bugs here or email them to me and I will work on them after vacation. Good Luck!
Posted by stobbart ( 172.202.xxx.xxx ) at 2004-10-31 16:34:00
A while ago, I uploaded a base CEP mod, wich contained TONS of community content. I used hcr as a base, and then added all the standard stuff you normally find in a persistant world like bulletin boards, hotu dmfi wands, persistant banks player inventory spying ect... then, i added all the other stuff to create mods like npc activities, special items, vfx generators, desert heat, winter cold and thirst hunger and fatigue, CEP visual cloaks in cloak slot, crr subraces, global weather system, doms fun placables, player loacation sign posts, multipayer sittable benches and couches, prostitutes, self closing doors, fleeing enemy npcs, pack oxes, tile magic, custome npc clothing and a ton of other stuff i cant even remember. It was set up so that a player could play as all the common subraces (drow duergar, ect), a player needed a bed roll to rest outside and could only properly rest by renting an inn room, a player would leave a an exact copy of him as a lootable corpse when he is dying/dead, if an enemy died he would drop his wepon and offhand next to him and his corpse would take a long time to dissapear. thats just some of what it contained. this could have been used to create a very persistant world or a good single player mod. I named it the community module template. anyone remember it? well anyway the community mod template's end was spelt when i tried to update it, but instead deleted it and the update was gone. i did promise peopel i would sort it out but being on dial up i couldnt be bothered. i know im a scum bag. it was popular getting nearly 500 downloads in itss short life of about a week.
I could probably update it and add lots more stuff to it if i had the time.
all i wanted to say was the people who managed to download it, you are lucky and i dont plan on reuploading, but who knows, and i hope you make a good mod with it.
i havent downloaded your package but i think its great that youve posted a professianl dedicated PW dev kit. im sure if its good enough the word will spread.
thanks mate...
I would like to thank everyone for thier comments. Aside from a couple of spelling errors ,my biggest weakness, I recently found one major bug. The bank / crafting container scripts are only supposed to allow one person to use them at a time. I had a hard time trying to implement them and tested by setting a lock and clicking it single player. Once put into multi-player though it doesn't seem to be working. I am going to try to download some code to see how others have done this and try to get a fix by tuesday. If not I will have to work on it after my vacation. Anyway, be aware this exists. Also, if anyone has a fix please email it to me or point me in the right direction and I will get it in.
Thanks,
sstacha
Posted by jeffn516 at 2004-10-31 13:15:00 Voted 10.00
Great job! I looked through the scripts and you're providing an awesome service for folks who want to put together a PW and don't know where to start. As either a base or tutorial, you've done a great job. Adding additional commonly accepted community projects would be great, but probably would reduce the number of people who use the system who would spend more time rolling back features that they don't want. I think we'll (hopefully) see folks add on the other community contributions to this one, but do hope you add more generic features and document where they can be toggled on/off or removed.