How to migrate a persistent Worlds (.mod) from 1.69 to EE?

hi, I play in a persistent world but I am not the owner and we want to migrate to the EE from the 1,69.
The problem is that I’m the only tech savvy (i’m a software developer) in the group and the only one who has time (really not a lot) to spend time to it, but i never developed anything for nwn1 and never ran a multiplayer server.
I just know that now the persistend world is a .mod file and it runs on nwserver on a google cloud virtual machine.
so in my hands I only have the .mod, the settings of nwserver and the machine.
The .mod is uploaded here.

can I kindly ask for help?
many thanks in advance

I’ve done this with a pw.

If you are hakless the good news is you won’t really have to do anything.

If you have haks that’s a different story.

I can’t look at the module right now but if you are using CEP I imagine updating to the newest version will fix some/all of it. I’m not sure. Don’t use it myself.

If you have your own haks you will have to merge the 2da files with the new ones from EE. This can be a bit time consuming, but it isn’t difficult. Just remember adding stuff is easy, moving it around isn’t.

You should be able to run the module with EE without updating anything. However you won’t get access to the new EE content unless you do the 2da merge.

This might help:
https://nwn.wiki/display/NWN1/NWServer

Module should work out of the box, but needs testing end to end as there can be glitches with transitions etc.

If you have CEP it will also work without changes, but upgrading to CEP 2.67 will unlock new EE features.

If you have haks, you will probably want to upgrade to nwsync eventually:
https://nwn.wiki/display/NWN1/NWSync

https://nwn.wiki/display/NWN1/NWSync+Setup+Guide

I’m no expert on PW so others will definitely know more.

1 Like

Thats right, a hakless mod would work out of the box, but in your case, there is CEP installed (which makes the module much more shiny :slight_smile: ). You should download the latest version of CEP (2.67) and install it in the EE-environment…

Then you need to transfer the lcscep21s.hak into the hak-directory of the ee. This file is missing in your download package, so I can’t go deeper into an analysis.

As others have said, sounds like the server uses some hak files. I would start by trying to open the module in the EE toolset and see what it complains about when you Build the scripts in the module. You, who play on the server should have all of the hak files, since you already play in the server. So make sure to copy your hak folder to your new NWNEE directory. Or change the NWN.ini I to point your EE hak location to your old 1.6* location.

Scripting changes between 1.6* and EE should be minimal. And if you’re a programmer should have little trouble fixing them. And a few dozen people would be happy to assist with questions here or on Discord (see the main website here and add /chat to the URL (or use the chat link) for a link to the Discord server).

I’ll try opening the module and see what haks it complains that I’m missing. But it should be easy for you, since EE was aiming to keep compatibility.

It is important to note that some of the scripts the module uses are in the hak files themselves, and cannot be changed in the module itself. You need to remove the script.ncs (compiled version) from the hak, then correct the script in the module. I’m not familiar with this, you may need to export the script to an Erf file first and re-import once the hak file is changed.

Also try Building with the Unused scripts checked, bunches of these errored scripts might not even be used at all.

The compiler seems to have slightly different rules compared to old 1.6, so I make no guarantees these script corrections will actually do what they were designed to do, but they compile:

The only obvious issue I knew how to fix is the error in “dmfi_plychat_exe.nss”, many modules I’ve tried to fix things in (so I can play them) have needed this fix to work in NWNEE, here I’ve escaped \ with \ which ends up \\ below. This script is for Racial languages (Speaking Dwarvish to Dwarves, Elvish to Elves, etc or any PCs that know that language):
case 12: return “/\\/\\”;
case 38: return “/\\/\\”;

Line 18 of dmfi_db_biow_inc:
“const int DMFI_DB_TYPE =DMFI_DB_TYPE_BIOWARE;”
I think is now “const int DMFI_DB_TYPE = 1;”
See the include of that script for details.

I think string values need quotes now. So a Tag of TheBadGuy now needs to be “TheBadGuy”.

Many of the scripts in your module fail due to this script:
x0_i0_treasure.nss(929): ERROR: NO RIGHT BRACKET ON EXPRESSION

Line 12 in “dragouovo_quest2”:
DestroyObject(Uovodrago);
(looks like a simple typo and probably didn’t work before EE either, so it should be?)
DestroyObject(oUovodrago);

First of all thanks to everyone!!
As soon as I am on my lunch break I will answer everyone and start taking notes, Meanwhile the PW owner will pass me the credentials to access the virtual machine where the server is located.

Awesome!

Changing Hak files is also really easy, there are plenty of custom content pros on the discord and here. You can probably do it yourself, nwhak.exe is where the Toolset exe is located. Just open it up and take a look for any scripts, save any .nss files, delete any .ncs files (unless they don’t exist anywhere else, in which case you’ll need to ask more questions).

The DMFI languages may not even be used by players, too, so you might be able to fix a few things (treasure scripts) and be ready to go.

There are a few ways you can get the module into Git as well. Even if it’s just the .nss scripts. After opening a module in the toolset, in the Modules/temp0 folder all of the module files (excluding hak files) should be in there. Be sure to build the module, but just toss the new .nss files into Git and do your thing. .ncs files are compiled and we don’t have a decompiler, so aren’t very useful to track unless you have lost the .nss source file and need a compiled version to run.