I was wondering if you would explain the relationship of IS itself, ISXDK, and plugins (yours or 3rd party) and how different versions of IS, ISXDK will affect the plugins.
For example, your ISXGenHack plugin (the dll itself) broke when upgrading IS from .58 to .59. But at the same time ISXDK was updated. The question is, if I recompiled ISXGenHack after upgrading IS to .59 with the old version of ISXDK would it work? Or do new versions of IS require all plugins to be built with the latest ISXDK? Also, basically, are we going to need to recompile our plugins every time a new ISXDK (or even IS) version is released?
Thanks for your time!
Question about Versions and Plugins.
Moderators: Lavish Software Team, Moderators
Extensions are ONLY dependent on the version of ISXDK that Inner Space was compiled with.
ISXDK.h
ISXInterface.h
Both Inner Space and plugins are compiled with ISXDK. When an extension is loaded, IS calls the GetVersion function that every extension has. If the ISXDK_VERSION does not match the one compiled into the IS, the plugin does not attempt to get loaded.
ISXDK versions will only be changed when either the ISXInterface (Inner Space's interface for an extension) or ISInterface (extension's interface for Inner Space) change. The reason for this is simple... if the extension tries to use a different version of IS, or vice versa, it will probably end up crashing.
So the answer is, compiling with the old ISXDK wont work, you must compile with the current ISXDK. Extensions need to be recompiled when a new ISXDK version is released, but not necessarily when a new version of Inner Space is released. Once the ISXDK is more complete, it will be a rare occurrence that something is changed that requires a version change. Note that ISXDK version 3 was compatible from something like IS 0.6 all the way to 0.59.
Oddly, it took more than a week for anyone to mention that ISXGenHack couldn't be loaded Someone mentioned it to me privately a couple days ago, and I updated the zip. I'll be adding a console message when a plugin's version is mismatched so it's easier to see why they wont load.
ISXDK.h
Code: Select all
#define ISXDK_VERSION 0x0004
Code: Select all
virtual unsigned long GetVersion() {return ISXDK_VERSION;}
ISXDK versions will only be changed when either the ISXInterface (Inner Space's interface for an extension) or ISInterface (extension's interface for Inner Space) change. The reason for this is simple... if the extension tries to use a different version of IS, or vice versa, it will probably end up crashing.
So the answer is, compiling with the old ISXDK wont work, you must compile with the current ISXDK. Extensions need to be recompiled when a new ISXDK version is released, but not necessarily when a new version of Inner Space is released. Once the ISXDK is more complete, it will be a rare occurrence that something is changed that requires a version change. Note that ISXDK version 3 was compatible from something like IS 0.6 all the way to 0.59.
Oddly, it took more than a week for anyone to mention that ISXGenHack couldn't be loaded Someone mentioned it to me privately a couple days ago, and I updated the zip. I'll be adding a console message when a plugin's version is mismatched so it's easier to see why they wont load.
I didn't mention it because I was trying to figger out how to recompile it on my own from scratch, since you didn't provide a proj or sln. NBD, just a learning thing. Plus I'm still playing the game for fun more than taking it apart, so while it was missed, it wasn't that critical.
thanks for the answer, it's perfectly clear now.
btw, I had an odd dream last night that you starred in. You were working for my company on the Unix team and I was on the Windows team (same team, different people have different focuses). You were trying to train me and showing off your super powers by jumping thru holes in the ceiling and expecting me to follow. When I had to climb up instead of fly up, you mocked me, heheh.
thanks for the answer, it's perfectly clear now.
btw, I had an odd dream last night that you starred in. You were working for my company on the Unix team and I was on the Windows team (same team, different people have different focuses). You were trying to train me and showing off your super powers by jumping thru holes in the ceiling and expecting me to follow. When I had to climb up instead of fly up, you mocked me, heheh.
Well, fyi, I got it working. Wasn't too hard. But similar to the errors I was getting with the other module (on ISMods), I'm getting these errors even though it compiles and loads successfully:
Any suggestions?
Code: Select all
------ Rebuild All started: Project: ISXGenHack, Configuration: Release Win32 ------
Deleting intermediate files and output files for project 'ISXGenHack', configuration 'Release|Win32'.
Compiling...
ISXGenHack.cpp
ISXGenHack.cpp(113) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISXGenHack.cpp(119) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'unsigned char *' of greater size
ISXGenHack.cpp(168) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISXGenHack.cpp(175) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISXGenHack.cpp(177) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'unsigned char *' of greater size
ISXGenHack.cpp(177) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'unsigned char *' of greater size
ISXGenHack.cpp(184) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISXGenHack.cpp(185) : warning C4312: 'type cast' : conversion from 'unsigned long' to 'void *' of greater size
ISPtrType.cpp
Generating Code...
Linking...
Creating library Release/ISXGenHack.lib and object Release/ISXGenHack.exp
ISXDK.lib(ISXDK.obj) : warning LNK4204: 'd:\wowgame\ISXGenHack\Release\vc70.pdb' is missing debugging information for referencing module; linking object as if no debug info
Build log was saved at "file://d:\wowgame\ISXGenHack\Release\BuildLog.htm"
ISXGenHack - 0 error(s), 9 warning(s)
---------------------- Done ----------------------
Rebuild All: 1 succeeded, 0 failed, 0 skipped