Jump to content

Recommended Posts

All right! Now its logical (and the chrashes too in fact).

 

If you want to look through the code on sourceforge and see if there are others like ExtractArgs that I'm using wrong and can change to an "NG friendly" call' date=' I would appreciate it immensely. It's something I obviously need to do, but time is always short..

 

I would [i']love[/i] to not have to release different versions of the extender for NG -- it's a real pain in the ass.

Link to comment

I've tossed up a v10 BETA (really an alpha) of my working copy that..

 

- Has all the save/load stuff ifdef'd out. This *should* prevent it from crashing since none of you have my modded NVSE yet.

 

- Switches all ExtractArgs calls to ExtractArgsEx. This is the only gore/nogore thing I have noticed so far, actually.

 

Test this one with normal and nogore FONV please!

Link to comment

Ok, loaded a clean install unmodded game with NVSE and the extender only. Loaded fine, made it through character creation (Been playing with Lean Start Gear for so long vanilla startup is painful BTW) and across Goodsprings with no problems. Trying to install sexout to test a basic run that actually uses the extender, but package manager is hating me ATM. Gimme another few minutes.

Link to comment

Ok, got package manager to cooperate. Basic sexout (sexout, slavery, SCR, tryouts, sexoutsex) and lean start gear (could not go through vanilla startup again). Fresh start, character creation, save and load, and making Sunny walk funny all worked fine. Not an extensive test by any means but at least it didn't blow up on launch or relaunch. Hope that's enough to tell you what you needed, if you need more let me know.

 

No more vanilla though, I'm not playing anymore until I get at least my basics loaded.

Link to comment

All right! Now its logical (and the chrashes too in fact).

 

If you want to look through the code on sourceforge and see if there are others like ExtractArgs that I'm using wrong and can change to an "NG friendly" call' date=' I would appreciate it immensely. It's something I obviously need to do, but time is always short..

 

I would [i']love[/i] to not have to release different versions of the extender for NG -- it's a real pain in the ass.

 

I am having issues with the conversion of the project. I will have to rebuild the vcproj from scratch (different edition of VS 2010).

Link to comment

VS' version/edition stuff is a nightmare and always has been. I'm considering rewriting the extender DLL in some other language just to get away from the VS issues.

 

I went through the same pain when I started the project, as the example plugin was done in the free version of 2k5 or something and the conversion to 2k10 pro was not completely smooth.

Link to comment

I realized I only had to change the common project which I already had. Your vcxproj I could open directly. Error was when trying to change it to a vcproj.

 

But I'm doing 4 things at the same time and have a race about to start on TV so it will have to wait some more.

 

At first glance, the number of cpp included is "frightening"! Particulary all those xxxExtraxxx full of initiator offsets

You also have the RTTI includes!

 

Way I see would be:

  1. to replace all IFDEF by if (isNoGore) but that's nightmarish!
  2. copout to a fomod installation option/question (error prone)
  3. do TWO versions, install both, and close the wrong one during NVSEPlugin_Query (it works very well for runtime only or geck only plugins)

Link to comment

Well, I've pulled ALL the NVSE .cpps out, as those are certainly the problem.. or so I would think? I'm left with just the .h files in the project list. Compilation goes fine but linking fails, as expected, with a buttload of unresolved external symbols. That's why I added all those .cpp's to begin with.

 

There must be a better way (meaning "the right way") for me to compile the plugin that doesn't require me to link in all the nvse .OBJ files, which are different depending on the gore/nogore issue.

 

If not the option 3 sounds the most appealing, but I'm not seeing any other plugins out there doing this -- the one that comes with project nevada only has one DLL.. there's only one geck powerup DLL.. etc.

 

They're doing something right that I'm doing wrong, I just don't know what it is.

Link to comment

Well' date=' I've pulled ALL the NVSE .cpps out, as those are certainly the problem.. or so I would think? I'm left with just the .h files in the project list. Compilation goes fine but linking fails, as expected, with a buttload of unresolved external symbols. That's why I added all those .cpp's to begin with.

 

There must be a better way (meaning "the right way") for me to compile the plugin that doesn't require me to link in all the nvse .OBJ files, which are different depending on the gore/nogore issue.

 

If not the option 3 sounds the most appealing, but I'm not seeing any other plugins out there doing this -- the one that comes with project nevada only has one DLL.. there's only one geck powerup DLL.. etc.

 

They're doing something right that I'm doing wrong, I just don't know what it is.

[/quote']

 

GeckPU is a Geck only plugin so it doesn't care.

For Nevada, asks them explicitly if they support noGore.

 

in fact : http://forums.nexusmods.com/index.php?showtopic=296312&view=findpost&p=5967508

Link to comment

Got the extender building right.. now just looking for some kind of runtime nogore check I can do to make #3 a reality. The loader knows if it's nogore or not, but it doesn't look like nvse does.

 

Going to try this and see how it does..

#if RUNTIME_VERSION == RUNTIME_VERSION_1_4_0_525
 // return false if nvse reporsts NG
 if (nvse->runtimeVersion != RUNTIME_VERSION_1_4_0_525)
 {
   _MESSAGE("Standard extender aborting in NOGORE FONV");
   return false;
 }

#elif RUNTIME_VERSION == RUNTIME_VERSION_1_4_0_525ng
 // return false if nvse does not report NG
 if (nvse->runtimeVersion != RUNTIME_VERSION_1_4_0_525ng)
 {
   _MESSAGE("NOGORE extender aborting in standard FONV");
   return false;
 }
#endif

Link to comment

Well that's no good.. nvse->runtimeVersion == 0. Search through the source says it's defined but never used. Hmm.

 

that is from one of my plugin.

 

// version checks
if(!nvse->isEditor)
{
	if(nvse->nvseVersion < NVSE_VERSION_INTEGER)
	{
		_ERROR("NVSE version too old (got %08X expected at least %08X)", nvse->nvseVersion, NVSE_VERSION_INTEGER);
		return false;
	}

	if(nvse->runtimeVersion != RUNTIME_VERSION_1_4_0_525)
	{
		_ERROR("incorrect runtime version (got %08X need %08X)", nvse->runtimeVersion, RUNTIME_VERSION_1_4_0_525);
		return false;
	}
}
else
{
	// not needed for Editor
	return false;
}

 

it works for me.

Link to comment

Did you compile a custom NVSE that fills out nvse->runtimeVersion?

 

This:

#if RUNTIME_VERSION == RUNTIME_VERSION_1_4_0_525
 // return false if nvse reporsts NG
 if (nvse->runtimeVersion != RUNTIME_VERSION_1_4_0_525)
 {
   _MESSAGE("Standard extender aborting in NOGORE FONV");
   _MESSAGE("%x != %x", nvse->runtimeVersion, RUNTIME_VERSION_1_4_0_525);
   return false;
 }

#elif RUNTIME_VERSION == RUNTIME_VERSION_1_4_0_525ng
 // return false if nvse does not report NG
 if (nvse->runtimeVersion != RUNTIME_VERSION_1_4_0_525ng)
 {
   _MESSAGE("NOGORE extender aborting in standard FONV");
   return false;
 }
#endif

 

Results in this in the log:

Standard extender aborting in NOGORE FONV
0 != 40020d0

Link to comment

Did you compile a custom NVSE that fills out nvse->runtimeVersion?

 

This:

#if RUNTIME_VERSION == RUNTIME_VERSION_1_4_0_525
 // return false if nvse reporsts NG
 if (nvse->runtimeVersion != RUNTIME_VERSION_1_4_0_525)
 {
   _MESSAGE("Standard extender aborting in NOGORE FONV");
   _MESSAGE("%x != %x", nvse->runtimeVersion, RUNTIME_VERSION_1_4_0_525);
   return false;
 }

#elif RUNTIME_VERSION == RUNTIME_VERSION_1_4_0_525ng
 // return false if nvse does not report NG
 if (nvse->runtimeVersion != RUNTIME_VERSION_1_4_0_525ng)
 {
   _MESSAGE("NOGORE extender aborting in standard FONV");
   return false;
 }
#endif

 

Results in this in the log:

Standard extender aborting in NOGORE FONV
0 != 40020d0

 

My NVSE is very custom but the static declaration in pluginmanager.cpp is vanilla

static const NVSEInterface g_NVSEInterface =
{
PACKED_NVSE_VERSION,

#ifdef RUNTIME
RUNTIME_VERSION,
0,
0,
#else
0,
EDITOR_VERSION,
1,
#endif

PluginManager::RegisterCommand,
PluginManager::SetOpcodeBase,
PluginManager::QueryInterface,
PluginManager::GetPluginHandle
};

 

RUNTIME_VERSION for nvse_xxx.dll is a preprocessor definition in the dll project ! It should not be possible for it to be 0. That would make the whole project impossible to build.

Link to comment

It occured to me while watching television that it is probably zero because... I was only 'testing' by firing up the GECK. *facepalm*. Obviously, no runtime-version there.

 

I'm fixing up the test now to be smarter about the version check, and to only do that bit if it's in the game and not the editor. Good times. ;)

Link to comment

It occured to me while watching television that it is probably zero because... I was only 'testing' by firing up the GECK. *facepalm*. Obviously' date=' no runtime-version there.

 

I'm fixing up the test now to be smarter about the version check, and to only do that bit if it's in the game and not the editor. Good times. ;)

[/quote']

 

I almost asked if you were not compiling the geck version but it was not coherent with your project...

 

Good night (for me)

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use