From: [RELz] Reneer's Guard Overhaul

Post » Mon Dec 12, 2011 8:44 pm

Dear Reneer;


I've taken on the task of finding out why your mod has never worked for me, now that I finally got some free time. After taking a look at it with the editor, I wonder how can it work for anybody.
I get numerous reference errors, and most scripts refuse to even compile....

What is SENS, SEVitharn and SEWorld? for the context it seems like they are supposed to be cells, referencing to the shivering Isles if I'm not mistaken. however, they do not exist in my world, perhaps because I don't have SI.

I will comment this lines and continue my work....
User avatar
Laura Tempel
 
Posts: 3484
Joined: Wed Oct 04, 2006 4:53 pm

Post » Tue Dec 13, 2011 12:52 am

I can confirm that commenting out all the lines referencing the above mentioned cells on the scripts; 'RenCrimeNodeQuestScript'. and 'RenCrimeTrackerQuestScript' has made the mod almost 80% playable.
Regional Crime seems to be working, and guards follow me around while sneaking. I still get bounties when killing regardless if there are witnesses or not, and the bribe option still doesn't work. Will look into that later on.
User avatar
Alada Vaginah
 
Posts: 3368
Joined: Sun Jun 25, 2006 8:31 pm

Post » Mon Dec 12, 2011 10:35 pm

OK everything is working now. I finally solved the mystery of why RGO has never worked for me and most likely many others.


As we all know the CS parses all the lines on a script, regardless of whether a condition is met or not. E.G

    if ( player.isSpellTarget effect101 )     message "You feel Invigorated"     player.modAV fatigue 100      endif 


The CS will anolyze each line regardless if the player has the "effect101" ability or not. Thats one of the reasons why the wiki recommends to call return early on the scripts.

When you make the check " if ( GetPlayerInSEWorld == 1 )" the engine will still parse the code within, even if the function returns 0. Needles to say the script blows up at this point for those who don't have SI isles installed.
The engine won't just ignore the unrecognized lines, it will stop executing the script altogether.


You can use something like this to make it work for standard Oblivion users:
Spoiler

if ( GetPlayerInSEWorld == 0 )			if ( player.GetInCell Anvil == 1 )					set playerlocation to Anvil					elseif ( player.GetInCell Bravil == 1 )					set playerlocation to Bravil			elseif ( player.GetInCell Bruma == 1 )					set playerlocation to Bruma				elseif ( player.GetInCell Chorrol == 1 )					set playerlocation to Chorrol	elseif ( player.GetInCell Cheydinhal == 1 )					set playerlocation to Cheydinhal	elseif ( player.GetInCell IC == 1 )					set playerlocation to IC	elseif ( player.GetInCell Leyawiin == 1 )					set playerlocation to Leyawiin	elseif ( player.GetInCell Skingrad == 1 || player.GetInWorldspace SkingradWorld == 1 || player.GetInSameCell SkingradCastleCourtyardMarker == 1 )					set playerlocation to Skingrad	elseif (playerintown == 0 && player.IsInInterior == 0)		set playerlocation to Tamriel	endif			set playerintown to 1elseif ( GetPlayerInSEWorld == 1 )	MessageBox "You have the wrong Plugin. Download the SI version if you want RGO to work in the Shivering Isles !!"		endif



I guess that also answers why RGODebugFile isn't created for some people. Like I said the previous code freezes the script before it gets a chance to call renWriteTofile.
User avatar
Shelby McDonald
 
Posts: 3497
Joined: Sat Jan 13, 2007 2:29 pm

Post » Tue Dec 13, 2011 12:38 am

Okay this may finally solve the mystery of why RGO isn't working for me :o Yes, I'm one of those few who doesn't have Shivering Isles installed. Can we expect a patch soon?
User avatar
Matt Bigelow
 
Posts: 3350
Joined: Sun Sep 30, 2007 6:36 pm

Post » Mon Dec 12, 2011 6:09 pm

OK everything is working now. I finally solved the mystery of why RGO has never worked for me and most likely many others.


As we all know the CS parses all the lines on a script, regardless of whether a condition is met or not. E.G

    if ( player.isSpellTarget effect101 )     message "You feel Invigorated"     player.modAV fatigue 100      endif 


The CS will anolyze each line regardless if the player has the "effect101" ability or not. Thats one of the reasons why the wiki recommends to call return early on the scripts.

When you make the check " if ( GetPlayerInSEWorld == 1 )" the engine will still parse the code within, even if the function returns 0. Needles to say the script blows up at this point for those who don't have SI isles installed.
The engine won't just ignore the unrecognized lines, it will stop executing the script altogether.


You can use something like this to make it work for standard Oblivion users:
Spoiler

if ( GetPlayerInSEWorld == 0 )			if ( player.GetInCell Anvil == 1 )					set playerlocation to Anvil					elseif ( player.GetInCell Bravil == 1 )					set playerlocation to Bravil			elseif ( player.GetInCell Bruma == 1 )					set playerlocation to Bruma				elseif ( player.GetInCell Chorrol == 1 )					set playerlocation to Chorrol	elseif ( player.GetInCell Cheydinhal == 1 )					set playerlocation to Cheydinhal	elseif ( player.GetInCell IC == 1 )					set playerlocation to IC	elseif ( player.GetInCell Leyawiin == 1 )					set playerlocation to Leyawiin	elseif ( player.GetInCell Skingrad == 1 || player.GetInWorldspace SkingradWorld == 1 || player.GetInSameCell SkingradCastleCourtyardMarker == 1 )					set playerlocation to Skingrad	elseif (playerintown == 0 && player.IsInInterior == 0)		set playerlocation to Tamriel	endif			set playerintown to 1elseif ( GetPlayerInSEWorld == 1 )	MessageBox "You have the wrong Plugin. Download the SI version if you want RGO to work in the Shivering Isles !!"		endif



I guess that also answers why RGODebugFile isn't created for some people. Like I said the previous code freezes the script before it gets a chance to call renWriteTofile.
Unfortunately, that's not how it works. You need only run RGO with / without OBSE to see that fact. If the player runs without OBSE, all the Call RenWriteToFile lines would crash the script (and thus the entire mod), but they don't, because Oblivion the game never evaluates that code. Oblivion the CS, as you note, does parse every line, but the point is that Oblivion the game does not.

I will look into it - but I don't think that what you outline is the reason RGO is not working for you. If you find that that is the case through some more testing, I'll happily change the code.

Edit: After some thought, I'll make sure to encapsulate everything inside GetPlayerInSEWorld calls. That function is inherent in the latest Oblivion patch, so it will return 0 if the player does not have the SI installed.

Edit 2: Now, I may be incorrect in my assumptions up above - and I an going to test to make sure that what I am saying is in fact the case. But in my experience, Oblivion works as I described it.
User avatar
Courtney Foren
 
Posts: 3418
Joined: Sun Mar 11, 2007 6:49 am

Post » Mon Dec 12, 2011 11:58 pm

Unfortunately, that's not how it works. You need only run RGO with / without OBSE to see that fact. If the player runs without OBSE, all the Call RenWriteToFile lines would crash the script (and thus the entire mod),


How do you know they don't crash it? You obviously have never tried running the game without Shivering Isles, or you would have noticed the mod not working. Have tried you running without OBSE?




because Oblivion the game never evaluates that code. Oblivion the CS, as you note, does parse every line, but the point is that Oblivion the game does not.



You should take a look at this: http://cs.elderscrolls.com/constwiki/index.php/Minimizing_your_Script#An_important_note_on_If_blocks_vs_early_Returns

according to them:

"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.... In short, best practices for Oblivion scripting are to call RETURN early and often. For large scripts this subtle coding difference can yield dramatic performance gains."

Do you really think this "Performance gains" refer to Construction Set" performance ? Like maybe, it will help you type faster? or rather it means in-game performance....If it does it means the game engine, not the CS, is parsing the lines....


If you find that that is the case through some more testing



No need. I already said that the mod is working perfectly, whilst it never had before. I would've never posted the results if I wasn't sure.
I'm just trying to help you out mate, you can heed my advice or disregard it. :shrug:
User avatar
M!KkI
 
Posts: 3401
Joined: Sun Jul 16, 2006 7:50 am

Post » Mon Dec 12, 2011 8:35 pm

How do you know they don't crash it? You obviously have never tried running the game without Shivering Isles, or you would have noticed the mod not working. Have tried you running without OBSE?
Uhh.... because I've tested it? I've been working on this mod for the past four years. You've been working on it for maybe a week or two. So please don't patronize me.

You should take a look at this: http://cs.elderscrolls.com/constwiki/index.php/Minimizing_your_Script#An_important_note_on_If_blocks_vs_early_Returns

according to them:

"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.... In short, best practices for Oblivion scripting are to call RETURN early and often. For large scripts this subtle coding difference can yield dramatic performance gains."

Do you really think this "Performance gains" refer to Construction Set" performance ? Like maybe, it will help you type faster? or rather it means in-game performance....If it does it means the game engine, not the CS, is parsing the lines....
Again, I've tested this, thoroughly. It doesn't work that way in the testing I've done.

No need. I already said that the mod is working perfectly, whilst it never had before. I would've never posted the results if I wasn't sure.
I'm just trying to help you out mate, you can heed my advice or disregard it. :shrug:
While I appreciate your help, I don't appreciate your tone. I'm going to test this - though I've never had a problem with it - to see what happens.

Oh, and one more thing: http://cs.elderscrolls.com/constwiki/index.php/Combine_your_SI_and_non-SI_mods_into_one_%28OBSE,_Patch_v1.1,_Other_mods_too%29 - that right there agrees with what I'm saying. It sounds to me like you aren't running the latest Oblivion patch. Based on my own code, GetPlayerInSEWorld should return 0, and those GetInCell checks should never be called.
User avatar
how solid
 
Posts: 3434
Joined: Mon Apr 23, 2007 5:27 am

Post » Mon Dec 12, 2011 8:16 pm

Oh, and one more thing: http://cs.elderscrol...her_mods_too%29 - that right there agrees with what I'm saying. It sounds to me like you aren't running the latest Oblivion patch. Based on my own code, GetPlayerInSEWorld should return 0, and those GetInCell checks should never be called.


You are misunderstanding that completely mate.

According to their own words that snippet of code will not avoid the game engine from parsing the getincell lines:
"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 Si isles editor IDs you are using are: 00096626, 00017474, 00009F18, 00096626, 00017474 or SENS, SEVitharn and SEWorld. Therefore, when you call GetInCell SEWorld.., the rest of the script will be ignored.

Here's more:
"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."




What they are really trying to do in that link you posted, is to show a way of identifying whether the player is using SI or not. To recognize if the player has SI installed before the player even goes to the SI. Contrary to the GetPlayerInSEWorld function which only returns true, if the player already is in the SI.

http://cs.elderscrolls.com/constwiki/index.php/GetPlayerInSEWorld


here is how it works:

You create a quest called "obSITester" with the following script inside:
   player.GetIsID SE02BoneArrow1  set cobSITester.Installed to 1


Then in a different script, you add the following snippet of code:
set cobSITester.Installed to 0			;reinitializes the variable, in case the script has run before.     SetStage cobSITester 0			;this starts the quest    if cobSITester.Installed			;if the Si isles is installed, this will return  1      cobSIEffects.Activate player 1 		;this is a way to let you know that SI is installed     endif


the quest script will act as the test parameter. When the quest is started it will run its first line; player.GetIsID SE02BoneArrow1. Since SE02BoneArrow1 is a shivering Isles item, the next line will execute if and only if Si is installed.
In other words if the player has SI, "Installed" will be set to 1, otherwise "installed" will remain 0. This distinction allows the second script to determine if SI is or not installed.

If you anolyze the script you'll realize that player.GetIsID SE02BoneArrow1 is doing exactly what player.getIncell SENS is doing in RGO....interrupting the execution flow.


So what that wiki link recommends is an excellent way of implementing a single solution to avoid having multiple plugins for multiple oblivion versions. So yeah you should use it.
User avatar
Doniesha World
 
Posts: 3437
Joined: Sun Jan 07, 2007 5:12 pm

Post » Mon Dec 12, 2011 1:16 pm

You are misunderstanding that completely mate.

According to their own words that snippet of code will not avoid the game engine from parsing the getincell lines:


the Si isles editor IDs you are using are: 00096626, 00017474, 00009F18, 00096626, 00017474 or SENS, SEVitharn and SEWorld. Therefore, when you call GetInCell SEWorld.., the rest of the script will be ignored.

Here's more:




What they are really trying to do in that link you posted, is to show a way of identifying whether the player is using SI or not. To recognize if the player has SI installed before the player even goes to the SI. Contrary to the GetPlayerInSEWorld function which only returns true, if the player already is in the SI.

http://cs.elderscrolls.com/constwiki/index.php/GetPlayerInSEWorld


here is how it works:

You create a quest called "obSITester" with the following script inside:
   player.GetIsID SE02BoneArrow1  set cobSITester.Installed to 1


Then in a different script, you add the following snippet of code:
set cobSITester.Installed to 0			;reinitializes the variable, in case the script has run before.     SetStage cobSITester 0			;this starts the quest    if cobSITester.Installed			;if the Si isles is installed, this will return  1      cobSIEffects.Activate player 1 		;this is a way to let you know that SI is installed     endif


the quest script will act as the test parameter. When the quest is started it will run its first line; player.GetIsID SE02BoneArrow1. Since SE02BoneArrow1 is a shivering Isles item, the next line will execute if and only if Si is installed.
In other words if the player has SI, "Installed" will be set to 1, otherwise "installed" will remain 0. This distinction allows the second script to determine if SI is or not installed.

If you anolyze the script you'll realize that player.GetIsID SE02BoneArrow1 is doing exactly what player.getIncell SENS is doing in RGO....interrupting the execution flow.


So what that wiki link recommends is an excellent way of implementing a single solution to avoid having multiple plugins for multiple oblivion versions. So yeah you should use it.
Do not tell me what I do and do not understand. Want proof that I understood that just fine? Open up RGO and check the RenCrimeOBSE quest and its quest script. Something look familiar to you in there?

And the GetPlayerInSEWorld returns 0 if the player is either not in SI or SI is not installed (hence, the player can never be in the SI). It serves both purposes. As I have already demonstrated, Oblivion will not run code that is encapsulated by an if statement that returns false. If it did do that, each time someone tried to run RGO without OBSE it would fail. Which, I can tell you, it doesn't.
User avatar
lucy chadwick
 
Posts: 3412
Joined: Mon Jul 10, 2006 2:43 am

Post » Mon Dec 12, 2011 3:06 pm

@ Five Alpha Reductase: The 1.2 Oblivion patch includes the updated script functions that 1.1 (AKA the Shivering Isles patch) included So anyone without Shivering Isles WONT crash when SI added functions are used.

Reneer is correct in that the game WILL NOT crash for people who don't have SI.
User avatar
Amber Ably
 
Posts: 3372
Joined: Wed Aug 29, 2007 4:39 pm

Post » Mon Dec 12, 2011 7:41 pm

Five Alpha Reductase: According to what I've seen, you've probably been looking through this mod for a week or two, and you seem to think you know more about this mod than the person who has been working on it for 4+ years, who most likely already checked if that would happen. And like Echonite said, the 1.2 patch includes the Shivering Isles script functions in it, so non-SI users can use it. Only thing I can think of is you were using an older version of Oblivion, and only just updated to 1.2, solving your problem. This probably isn't the case, but it's alI can think of.
User avatar
Crystal Birch
 
Posts: 3416
Joined: Sat Mar 03, 2007 3:34 pm

Post » Mon Dec 12, 2011 8:58 pm

Please, for the Love of god, I can not believe there is such a level of ignorance in this forums !!! :sadvaultboy:
Shademe, TheNiceOne, Qquix, ABO where are you, can you please come here for a moment and shed some light into these paupers.

What I'm I seeing here, a blind man leading the flock towards a cliff and when someone tries to help, they stone that person ?
away with you then.....



1.2 patch talk about 1.2 patch !!! what does the 1.2 patch has to do with anything, who is talking about 1.2 patch??? I installed the 1.2 patch since the paleolithic age !!! Hell OBSE doesn't even run without the 1.2 patch !!! and who is saying the game will crash ?? I'm certainly not!!!


For those of you who have discernment:

- these are my points.

1- The game parses 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


How does this concern RGO?
Spoiler

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. After deleting or commenting out the lines the mod started to work properly.

Oh and BTW I did not spend two weeks trying to figure this out it took me less than 10 minutes to see the problem. Not because I'm a genius but thanks to the CSE which promptly directed me to the right direction...

[CS] Could not find referenced object (00096626) on Script (01000ED4) 'RenCrimeNodeQuestScript'.
[CS] Could not find referenced object (00017474) on Script (01000ED4) 'RenCrimeNodeQuestScript'.
[CS] Could not find referenced object (00009F18) on Script (01000ED4) 'RenCrimeNodeQuestScript'.
[CS] Could not find referenced object (00096626) on Script (01002A3E) 'RenCrimeTrackerQuestScript'.
[CS] Could not find referenced object (00017474) on Script (01002A3E) 'RenCrimeTrackerQuestScript'.

Easy as a pie as you cans see. It has taken me longer trying to explain you the mistake than to find it and fix it.



Make of that what you please, I've had enough of your haughty contempt.
User avatar
maya papps
 
Posts: 3468
Joined: Mon Aug 07, 2006 3:44 pm

Post » Mon Dec 12, 2011 11:38 am

So, how about releasing that patch so it can be tested? :) I'm not that good with the CS to try to fix it myself.
User avatar
Carys
 
Posts: 3369
Joined: Wed Aug 23, 2006 11:15 pm

Post » Tue Dec 13, 2011 1:55 am

What I'm I seeing here, a blind man leading the flock towards a cliff and when someone tries to help, they stone that person ?
away with you then.....


What I see is a new guy stomping into the thread of an established and respected modder and spewing his arrogance all over the damn walls. How about you try a little humility and hey, just for kicks, some respect for the guy who spent all his free time making this mod so you could have your little superiority attack?

Want people to treat you with more respect? Then speak more respectfully and less like your gracing the plebeian masses with your magnificence. :rolleyes:
User avatar
Miguel
 
Posts: 3364
Joined: Sat Jul 14, 2007 9:32 am

Post » Mon Dec 12, 2011 6:09 pm

FAR (I'm calling you FAR) Why are you being arrogant? You are really not engendering any help for your cause at the moment. Here's a nice little refresher for you on how to pose a question...

How this should have been done: Hey Reneer, I may have found an issue that may be the fault of RGO. After looking around, I found this. Would you be willing to take a look at it?

What you did: Reneer, your mod is broken with Shivering Isles. You NEED to fix it, and here's how you do it.

Now, you'll note that the first one is a lot nicer, and doesn't assign blame (as sometimes it's combinations of mods that cause issues, instead of a single mod) to either the mod, or the modder.

It also doesn't help that you've basically insulted everyone who responded in this thread, if not everyone in these forums.

At the moment, you've pretty much ensured that your issue (if there is one) will not be looked at.
User avatar
Stephanie I
 
Posts: 3357
Joined: Thu Apr 05, 2007 3:28 pm

Post » Mon Dec 12, 2011 8:14 pm

FAR (I'm calling you FAR) Why are you being arrogant? You are really not engendering any help for your cause at the moment. Here's a nice little refresher for you on how to pose a question...

How this should have been done: Hey Reneer, I may have found an issue that may be the fault of RGO. After looking around, I found this. Would you be willing to take a look at it?

What you did: Reneer, your mod is broken with Shivering Isles. You NEED to fix it, and here's how you do it.

Now, you'll note that the first one is a lot nicer, and doesn't assign blame (as sometimes it's combinations of mods that cause issues, instead of a single mod) to either the mod, or the modder.

It also doesn't help that you've basically insulted everyone who responded in this thread, if not everyone in these forums.

At the moment, you've pretty much ensured that your issue (if there is one) will not be looked at.



Cause and effect mate...

I was never asking for help I was offering a solution. Perhaps my first post was not very polite, I concur :whistling:
But his posts where becoming more a paroxysm of rage, naturally I had my moment too when people overlooked my point and let prejudice and favoritism win over logic :shocking:
User avatar
tiffany Royal
 
Posts: 3340
Joined: Mon Dec 25, 2006 1:48 pm

Post » Mon Dec 12, 2011 1:37 pm

Have you actually read your own posts? o.o Initially, Reneer already admitted that he may be wrong and is willing to test and look into it. You came back in an accusatory/arrogant tone. Of course that'd upset him... Regardless of who was right, this isn't the way to go about it, mate.
User avatar
Amysaurusrex
 
Posts: 3432
Joined: Wed Aug 09, 2006 2:45 pm

Post » Mon Dec 12, 2011 8:52 pm

Well, I just wanted say thanks for Reneer's Guard Overhaul and the permanent spot it has in my load order over the past 3 years. :P
User avatar
zoe
 
Posts: 3298
Joined: Sun Nov 12, 2006 1:09 pm

Post » Mon Dec 12, 2011 10:43 pm

Wow. Some people can be such butts. I was actually interested with what you were saying FAR until you started being an obnoxious little punk about it. Now its all disregarded. Anyway I wanted to ask Reneer (or someone else who knows) if this messes with SDR (Sneaking Detection Re-calibrated) or if SDR messes with this?
User avatar
Queen
 
Posts: 3480
Joined: Fri Dec 29, 2006 1:00 pm

Post » Mon Dec 12, 2011 10:37 pm

I wanted to ask Reneer (or someone else who knows) if this messes with SDR (Sneaking Detection Re-calibrated) or if SDR messes with this?


RGO is an essential component in my ideal stealth set-up. As such, I designed SDR with RGO in mind to work hand-in-pocket so to speak ;), but I have not had time to test the combo yet. Others have though, and to my knowledge, no one has reported any issues. However, if something does crop up, please let me know (either via thread or PM), and I will do what I can to resolve the issue on my side.

saebel
User avatar
Karine laverre
 
Posts: 3439
Joined: Tue Mar 20, 2007 7:50 am

Post » Mon Dec 12, 2011 2:39 pm

1- The game parses all the lines in a script, even those inside if-endif blocks regardless whether conditions are met or not.

This is demonstrably false:

	if( ALBChargenQuest.PrisonPicked > 0 )		Player.RemoveItemNS Breadloaf 1		Player.RemoveItemNS LowerPlateTan01 1		Player.RemoveItemNS LowerMugTan01 1		Player.MoveTo CGPlayerE3Marker	else		setstage CharacterGen 88                ....        endif


You're saying that even if the variable I test for is <= 0 that those lines inside the first block will execute anyway, yes? They don't if that variable is <= 0 though. Tested repeatedly, and works as expected every time.

Your points #2 and #3 are correct though and I've got scripting in a couple of places which exploits point #2 to make the game ignore code that won't function without OBSE.
User avatar
Breanna Van Dijk
 
Posts: 3384
Joined: Mon Mar 12, 2007 2:18 pm

Post » Mon Dec 12, 2011 5:33 pm

RGO is an essential component in my ideal stealth set-up. As such, I designed SDR with RGO in mind to work hand-in-pocket so to speak ;), but I have not had time to test the combo yet. Others have though, and to my knowledge, no one has reported any issues. However, if something does crop up, please let me know (either via thread or PM), and I will do what I can to resolve the issue on my side.

saebel


Awesome!! If any thing goes wrong I will let you and Reneer know ASAP! (and for Reneer i will do the pluggy file thing)
User avatar
Spencey!
 
Posts: 3221
Joined: Thu Aug 17, 2006 12:18 am

Post » Mon Dec 12, 2011 9:03 pm

I was actually interested with what you were saying FAR until you started being an obnoxious little punk about it.


Couldn't agree more... had my attention then Poof! I can't disregard it, because it's interesting, but Poof.

RGO is an essential component in my ideal stealth set-up. As such, I designed SDR with RGO in mind to work hand-in-pocket so to speak ;), but I have not had time to test the combo yet. Others have though, and to my knowledge, no one has reported any issues.
saebel


Great to know! I'm trying to put together my last load-out (every-time i say that i do one more) And I'm leaning heavily on SDR, RGO, RBP and T.I.E. with a nice helping of Oblivion XPs Experience system with an emphasis on realism mods. Should be ready to post up a storm in a few weeks about the experience.

And speaking of T.I.E.

This is demonstrably false:

	if( ALBChargenQuest.PrisonPicked > 0 )		Player.RemoveItemNS Breadloaf 1		Player.RemoveItemNS LowerPlateTan01 1		Player.RemoveItemNS LowerMugTan01 1		Player.MoveTo CGPlayerE3Marker	else		setstage CharacterGen 88                ....        endif


You're saying that even if the variable I test for is <= 0 that those lines inside the first block will execute anyway, yes? They don't if that variable is <= 0 though. Tested repeatedly, and works as expected every time.

Your points #2 and #3 are correct though and I've got scripting in a couple of places which exploits point #2 to make the game ignore code that won't function without OBSE.


I am not even in the same game as you script wizards but thanks for taking this seriously and kudos for coming up with a logical way to use #2 for good instead of evil!

Seriously, that's impressive logical thinking.

Was coming to ask a question about RGO with T.I.E and SDR but it seems like it's a go!

Thanks guys.
User avatar
Rob Davidson
 
Posts: 3422
Joined: Thu Aug 02, 2007 2:52 am

Post » Mon Dec 12, 2011 4:43 pm

This is demonstrably false:

	if( ALBChargenQuest.PrisonPicked > 0 )		Player.RemoveItemNS Breadloaf 1		Player.RemoveItemNS LowerPlateTan01 1		Player.RemoveItemNS LowerMugTan01 1		Player.MoveTo CGPlayerE3Marker	else		setstage CharacterGen 88                ....        endif


You're saying that even if the variable I test for is <= 0 that those lines inside the first block will execute anyway, yes? They don't if that variable is <= 0 though. Tested repeatedly, and works as expected every time.

Your points #2 and #3 are correct though and I've got scripting in a couple of places which exploits point #2 to make the game ignore code that won't function without OBSE.


I would expect nothing less from, but rational and logical discussion. I'm glad you replied.

You're saying that even if the variable I test for is <= 0 that those lines inside the first block will execute anyway, yes?

No, I'm saying the engine will process them. Not execute them. In most, dare I say all , programming languages if a condition is not met (ALBChargenQuest.PrisonPicked > 0 = FALSE) the execution flow will "jump" to the next valid instruction.
However, according to this:

http://cs.elderscrolls.com/constwiki/index.php/Minimizing_your_Script#An_important_note_on_If_blocks_vs_early_Returns

that is not the case in Oblivion. They say the Oblivion Script Engine apparently lacs that functionality and it will go through each line of code. It will not execute them all, but it will anolyze them without distinction. e.g

        if ( activator101.getInSameCell player )               set posZ to player.getPos Z               if ( posZ <= activator101.getPos Z )                    player.setPos Z to posZ + 500               endif        endif


Oblivion would go through each line regardless if activator101 is or not in the same cell the player is. It would not execute them, but it would for example get the activator101 position, and compare it to the value stored in posZ. Processing is not the same as execution.

That is their claim.
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. It appears that this is also true in Oblivion

I do not know how they got to that conclusion, or what sort of tests they did, and more important, I don't know how to verify it. But I do believe it to be true.
User avatar
Joanne Crump
 
Posts: 3457
Joined: Sat Jul 22, 2006 9:44 am

Post » Mon Dec 12, 2011 9:40 am

Apologies for running your thread out Reneer. Just noticed it's at 200 now. Oops.

@Five Alpha: Dragoonwraith is a leading authority in the Oblivion community when it comes to scripts and his anolysis over the years has led us to the conclusion that Oblivion's script processor is infinitely better than the one in Morrowind and it's not necessary to insert early returns or even to worry about line by line optimization like this. It's why very few people are still using the Oblivion Script Optimizer mod, because it was shown to have an almost zero performance change in the game as a whole. To the tune of a single AI pack on an single NPC using more CPU time than all of the scripts in the game combined, or something like that. You could probably ask him for clarification.

The discussion tab on the wiki page is worth the read as well since the two people who were primarily involved discussed this two years ago.
User avatar
evelina c
 
Posts: 3377
Joined: Tue Dec 19, 2006 4:28 pm

PreviousNext

Return to IV - Oblivion