I can't upload a fix because I don't have his permission. What I can do is post my findings so you can fix it for yourselves. Before starting you must know this only affect users without Shivering Isles.
Why it doesn't work
Spoiler
taken from one of my posts in RGO's thread
- these are my points.
1- The game processes all the lines in a script, even those inside if-endif blocks regardless whether conditions are met or not.
2- when the game detects an unrecognized function in a script, it will act as a return statement ignoring all code below.
3- when the game detects an unrecognized editorID in a script, the entire script will stop executing.
My sources:
http://cs.elderscrolls.com/constwiki/index.php/Minimizing_your_Script#An_important_note_on_If_blocks_vs_early_Returns
http://cs.elderscrolls.com/constwiki/index.php/Combine_your_SI_and_non-SI_mods_into_one_%28OBSE,_Patch_v1.1,_Other_mods_too%29
In specific
The problem:
On RenCrimeNodeQuestScript line 114-123
( the same codes repeats itself a few times in two scripts; RenCrimeTrackerQuestScript and RenCrimeNodeQuestScript )
…............
Sens, SEVitharn and SEWORLD are SI locations, their editor IDs do not exist in Oblivion .esm and so my point number 3 applies, when the game engine reaches this point it will ignore the whole script, rendering an important part of the mod unusable, thus braking it.
After deleting or commenting out the lines I can confirm the mod started to work properly. Whilst It never had before that.
taken from one of my posts in RGO's thread
- these are my points.
1- The game processes all the lines in a script, even those inside if-endif blocks regardless whether conditions are met or not.
2- when the game detects an unrecognized function in a script, it will act as a return statement ignoring all code below.
3- when the game detects an unrecognized editorID in a script, the entire script will stop executing.
My sources:
http://cs.elderscrolls.com/constwiki/index.php/Minimizing_your_Script#An_important_note_on_If_blocks_vs_early_Returns
http://cs.elderscrolls.com/constwiki/index.php/Combine_your_SI_and_non-SI_mods_into_one_%28OBSE,_Patch_v1.1,_Other_mods_too%29
In specific
Spoiler
"The Morrowind scripting community determined that the script engine would process all code inside of an If block (even if the condition was false) until the script engine could find an exit point. An exit point can be either an accessible RETURN call, or the end of the script. It appears that this is also true in Oblivion"
"When a script uses a function that isn't recognized by Oblivion, it acts as a return. Make sure all of your OBSE and Patch v1.2 functions occur after the test."
"When a script uses a EditorID (including spells, quests) of something that doesn't exist when Oblivion is loaded, the entire script will be ignored. Therefore, keep any SI and other mod EditorIDs in a separate script."
"The Morrowind scripting community determined that the script engine would process all code inside of an If block (even if the condition was false) until the script engine could find an exit point. An exit point can be either an accessible RETURN call, or the end of the script. It appears that this is also true in Oblivion"
"When a script uses a function that isn't recognized by Oblivion, it acts as a return. Make sure all of your OBSE and Patch v1.2 functions occur after the test."
"When a script uses a EditorID (including spells, quests) of something that doesn't exist when Oblivion is loaded, the entire script will be ignored. Therefore, keep any SI and other mod EditorIDs in a separate script."
The problem:
On RenCrimeNodeQuestScript line 114-123
( the same codes repeats itself a few times in two scripts; RenCrimeTrackerQuestScript and RenCrimeNodeQuestScript )
if (player.GetInCell SENS == 1) set playerintown to 1 set playerlocation to SENS endif if (player.GetInCell SEVitharn == 1) set playerintown to 1 set playerlocation to SEVitharn endif if (RenCrimeNode.playerintown == 0 && player.IsInInterior == 0) set playerlocation to SEWorld endif
…............
Sens, SEVitharn and SEWORLD are SI locations, their editor IDs do not exist in Oblivion .esm and so my point number 3 applies, when the game engine reaches this point it will ignore the whole script, rendering an important part of the mod unusable, thus braking it.
After deleting or commenting out the lines I can confirm the mod started to work properly. Whilst It never had before that.
How to fix it
Spoiler
If you have never used the CS set before or know nothing about scripting, stop right here.
You will have to modify two scripts: RenCrimeTrackerQuestScript and RenCrimeNodeQuestScript.
Trying to compile, the scripts should quickly lead you to the lines giving trouble.
you just need to comment the pertinent lines containing either Sens, SEVitharn or SEWORLD. e.g
note that you will have to comment the whole block. Leaving an endif out will stop you from compiling the script. Leaving something inside the block uncommented will have more dire consequences; it will allow you to compile but the mod won't function correctly.
after you are done the scripts should compile properly. Save the changes and close the CS, the mod should work now.
If you have never used the CS set before or know nothing about scripting, stop right here.
You will have to modify two scripts: RenCrimeTrackerQuestScript and RenCrimeNodeQuestScript.
Trying to compile, the scripts should quickly lead you to the lines giving trouble.
you just need to comment the pertinent lines containing either Sens, SEVitharn or SEWORLD. e.g
;if (player.GetInCell SENS == 1) ;set playerintown to 1 ;set playerlocation to SENS ;endif ;if (player.GetInCell SEVitharn == 1) ;set playerintown to 1 ;set playerlocation to SEVitharn endif ;if (RenCrimeNode.playerintown == 0 && player.IsInInterior == 0) ;set playerlocation to SEWorld ;endif
note that you will have to comment the whole block. Leaving an endif out will stop you from compiling the script. Leaving something inside the block uncommented will have more dire consequences; it will allow you to compile but the mod won't function correctly.
after you are done the scripts should compile properly. Save the changes and close the CS, the mod should work now.
Ren's point:
Spoiler
Ren bases his whole defense on the fact that:
does not interrupt the execution flow of the script for all those players using RGO without OBSE installed. Since "Call", is an OBSE function, in theory it should interrupt the script according to point number 2. But, in fact it doesn't.
So Ren concludes that since "call" does not brake the script for users without OBSE, then the game egine does not process all the lines in the script as stated in point number 1, thus making point number 3 false.
After investigating I can confirm rens claim, call does not cause the script to immediately return in a OBSE-Less environment, as long as it is encapsulated in an if-endif block and the condition for true is never met. Moreover, neither does, printc, modav2 or any other OBSE function I tried. Which leads me to believe that either some internal change has happened in the way OBSE functions are compiled, allowing the oblivion's script engine to simply ignore these unrecognized lines or that it has always been like that since the last Oblivion patch, and point number 2 is indeed incorrect.
However, and this is what Ren fails to understand. This does not mean that point 1 or 3 are incorrect. Point 3 is still very valid and its effect is visible to all players out there without SI for which RGO has never worked.
Ren bases his whole defense on the fact that:
Call renwritetofile (" ")
does not interrupt the execution flow of the script for all those players using RGO without OBSE installed. Since "Call", is an OBSE function, in theory it should interrupt the script according to point number 2. But, in fact it doesn't.
So Ren concludes that since "call" does not brake the script for users without OBSE, then the game egine does not process all the lines in the script as stated in point number 1, thus making point number 3 false.
After investigating I can confirm rens claim, call does not cause the script to immediately return in a OBSE-Less environment, as long as it is encapsulated in an if-endif block and the condition for true is never met. Moreover, neither does, printc, modav2 or any other OBSE function I tried. Which leads me to believe that either some internal change has happened in the way OBSE functions are compiled, allowing the oblivion's script engine to simply ignore these unrecognized lines or that it has always been like that since the last Oblivion patch, and point number 2 is indeed incorrect.
However, and this is what Ren fails to understand. This does not mean that point 1 or 3 are incorrect. Point 3 is still very valid and its effect is visible to all players out there without SI for which RGO has never worked.