[RELz] Oblivion Script Extender (OBSE) 0019b

Post » Thu Sep 02, 2010 12:29 am

Quick question. Regarding any enhancement to 'pickidle' and related animation commands. Any idea on the approximate timescale for any enhancements? A huge job or not?

The reason I ask is I'm working on something (that already uses OBSE). If something is likely in a month or two, I'd rather put work on hold than create something that I'll then be keen to replace.
User avatar
Josee Leach
 
Posts: 3371
Joined: Tue Dec 26, 2006 10:50 pm

Post » Wed Sep 01, 2010 4:20 pm

That reminds me, could the ini definitions be moved to the GameAPI header? Right now they're in between the commands and I need to redefine them in order to use it, while this isn't a big deal it seems logical to put the ini stuff in the GameAPI (just like the gamesetting stuff).
INI stuff ? :mellow:

EDIT: oh... INISetting.
User avatar
Jennie Skeletons
 
Posts: 3452
Joined: Wed Jun 21, 2006 8:21 am

Post » Wed Sep 01, 2010 1:45 pm

EDIT: oh... INISetting.
Yea that....sorry if it was a bit cryptic. :P
User avatar
Dorian Cozens
 
Posts: 3398
Joined: Sat May 26, 2007 9:47 am

Post » Wed Sep 01, 2010 2:08 pm

I asked this a while ago but don't think I ever got a response, but has anybody looked into the mod http://www.tesnexus.com/downloads/file.php?id=19772 to see why many, including myself are experiencing a ctd upon exiting the tutorial dungeon? It's not a mod-related problem because i tried this with nothing but Oblivion, the DLC and OBSE 0019b installed and it crashed, and there's no conflict with other obse plugins because all my other obse plugins work fine with Oblivion. I'm pretty sure I don't have any codecs other than the default Windows codecs installed (to my knowledge) so there's not a conflict there...

I'm running the Steam version of Oblivion (again all other OBSE plugins work fine) and I'm running on Windows 7 Home Premium 64-bit. I, and many others who are having the same problems as I am, would greatly appreciate it if someone would take a look at maybe see why this mod seems to be causing problems. It was made with an older version of OBSE, 0015 I believe, so maybe that has something to do with it.

I know the mod is still in a beta stage, but unfortunately I don't think the author is working on it anymore as it hasn't been updated since January. Also unfortunate is I think this is the only mod that touches music the way it does, and I know I'm not the only one who hates how vanilla oblivion handles the changing of music. It would be awesome if someone could take a look into it and maybe fix it.
User avatar
StunnaLiike FiiFii
 
Posts: 3373
Joined: Tue Oct 31, 2006 2:30 am

Post » Wed Sep 01, 2010 11:12 pm

My script is crashing when I reload the game, I think it is because sometimes the array I am creating is empty (no projectile references in it) and I am not checking for that yet. How do you write the following expression in the correct way?


if ar_size aadpFastQuest.ListOfProjectiles > 0

I want to be sure the array has at least one projectile in it before I attempt to use the array.
The following is the PART of the script that I think is crashing.


if FlyingProjectile == 0ForEach projectile <- aadpFastQuest.ListOfProjectiles   Let FlyingProjectileOld := projectile["Value"] <------------------------------   this is where I think it is crashing because the array is empty.set TempProjectile to FlyingProjectileoldif (FlyingProjectileOld)if IsFormValid FlyingProjectileOld == 1if FlyingProjectileold.getdisabled == 0if FlyingProjectileold.GetMagicProjectileSpell != aadpPlasmaBoltfakeand so on...



So I want to do the following but I do not know how to phrase it properly:


if FlyingProjectile == 0 && ar_size aadpFastQuest.ListOfProjectiles > 0
ForEach projectile <- aadpFastQuest.ListOfProjectiles
Let FlyingProjectileOld := projectile["Value"]
User avatar
Adam Baumgartner
 
Posts: 3344
Joined: Wed May 30, 2007 12:12 pm

Post » Wed Sep 01, 2010 9:42 pm

My script is crashing when I reload the game, I think it is because sometimes the array I am creating is empty (no projectile references in it) and I am not checking for that yet. How do you write the following expression in the correct way?

if ar_size aadpFastQuest.ListOfProjectiles > 0

The way I generally do it, is:
if eval (ar_size aadpFastQuest.ListOfProjectiles) > 0
The reason for the "eval" is to tell the CS that this is an OBSE expression (similar to using "let" when assigning arrays). Generally, use "eval" whenever an array or string function is involved in the comparision.

if FlyingProjectile == 0ForEach projectile <- aadpFastQuest.ListOfProjectiles   Let FlyingProjectileOld := projectile["Value"] <------------------------------   this is where I think it is crashing because the array is empty.set TempProjectile to FlyingProjectileoldif (FlyingProjectileOld)if IsFormValid FlyingProjectileOld == 1if FlyingProjectileold.getdisabled == 0if FlyingProjectileold.GetMagicProjectileSpell != aadpPlasmaBoltfakeand so on...
I think maybe the problem is the line before the one you think, if you're using "ForEach" on an un-initialized array. Fortunately, the solution is the same, add the test around the entire block.

So I want to do the following but I do not know how to phrase it properly:

if FlyingProjectile == 0 && ar_size aadpFastQuest.ListOfProjectiles > 0
ForEach projectile <- aadpFastQuest.ListOfProjectiles
Let FlyingProjectileOld := projectile["Value"]
I'd put the two ifs on two different lines. Slightly faster ingame, and slightly clearer:
if FlyingProjectile == 0  if eval (ar_size aadpFastQuest.ListOfProjectiles) > 0    ForEach ...

By putting the two ifs on two lines, the second if will not be executed if the first fails. By having them on the same line, Oblivion executes both before making the test.
User avatar
Sandeep Khatkar
 
Posts: 3364
Joined: Wed Jul 18, 2007 11:02 am

Post » Wed Sep 01, 2010 3:20 pm

My script is crashing when I reload the game, I think it is because sometimes the array I am creating is empty (no projectile references in it) and I am not checking for that yet.

When you say "crashing" do you mean Oblivion is actually crashing to desktop, or your script is generating errors?
If you're getting script errors, post them (from obse.log) along with the full script. If your array is empty the foreach should not cause an error, it should just never be entered. OTOH if the array is uninitialized, you will get an error to that effect.

Otherwise, post obse.log.
User avatar
hannaH
 
Posts: 3513
Joined: Tue Aug 15, 2006 4:50 am

Post » Wed Sep 01, 2010 6:12 pm

Question about the OBSEScriptInterface, is there any possibility of a methode to return the amount of expected arguments for a user function? I'm not really interested in getting the exact expected types but being able to check how many arguments are expected would help with more variable calls to user functions.
User avatar
Chavala
 
Posts: 3355
Joined: Sun Jun 25, 2006 5:28 am

Post » Wed Sep 01, 2010 7:20 pm

Question about the OBSEScriptInterface, is there any possibility of a methode to return the amount of expected arguments for a user function? I'm not really interested in getting the exact expected types but being able to check how many arguments are expected would help with more variable calls to user functions.

Ok, added GetFunctionParams(Script*, UInt8*) which returns the number of params and optionally their types.
User avatar
Emily abigail Villarreal
 
Posts: 3433
Joined: Mon Aug 27, 2007 9:38 am

Post » Wed Sep 01, 2010 4:08 pm

Ok, added GetFunctionParams(Script*, UInt8*) which returns the number of params and optionally their types.
Weeeeee, thanks! :D
User avatar
Monika Fiolek
 
Posts: 3472
Joined: Tue Jun 20, 2006 6:57 pm

Post » Wed Sep 01, 2010 2:19 pm

Will a test version be available for download soon? :) I've been holding off on doing some scripts because I'd like to try out the new functions... :liplick:
User avatar
Dewayne Quattlebaum
 
Posts: 3529
Joined: Thu Aug 30, 2007 12:29 pm

Post » Wed Sep 01, 2010 11:19 am

@ TheNiceOne

Thanks for the explanation on how to check if the array is empty or not, that is a basic tool I will use a lot in the future when I am trying to master ARRAY commands.
BTW is there a difference between array and Array? The docs seem to imply the capitalization of the letter A matters???


@ Scruggsywuggsy The Ferret

Two scripts, one runs .001 to get the projectile refs in the player's cell. This is where the Array is created and filled with refs.
The other script that used that array would stop running after a game reload.

What you said made me think to I should put a check on the second script to be sure the first script ran BEFORE the second one did.
And yes indeed that solved my crashing (stopping) script problem after reload using this:

if GetGameloaded == 1
set aadpFastQuest.FastHasRun to 0
endif

This set the var to 0 in the first script in case the second script ran first. The first script sets it to 1. So I just had to be sure FastHasRun == 1 before I allowed the second script to run.

Thank you so much! :D

When you say "crashing" do you mean Oblivion is actually crashing to desktop, or your script is generating errors?
If your array is empty the foreach should not cause an error, it should just never be entered. OTOH if the array is uninitialized, you will get an error to that effect.

User avatar
Krystina Proietti
 
Posts: 3388
Joined: Sat Dec 23, 2006 9:02 pm

Post » Wed Sep 01, 2010 12:50 pm

Thanks for the explanation on how to check if the array is empty or not, that is a basic tool I will use a lot in the future when I am trying to master ARRAY commands.
BTW is there a difference between array and Array? The docs seem to imply the capitalization of the letter A matters???
I've found that capitalization does not matter at all in Oblivion scripting.
User avatar
Eileen Collinson
 
Posts: 3208
Joined: Thu Dec 28, 2006 2:42 am

Post » Wed Sep 01, 2010 4:17 pm

I have a question:
How to get the remaining time of a torch, before it extinguish?

If we can't get it, could you add this function with OBSE?
User avatar
Hot
 
Posts: 3433
Joined: Sat Dec 01, 2007 6:22 pm

Post » Wed Sep 01, 2010 10:42 am

Another request, this time for OBSEConsoleInterface, a function to toggle the console output. Or just an extra argument for OBSEConsoleInterface::RunScriptLine
User avatar
Nany Smith
 
Posts: 3419
Joined: Sat Mar 17, 2007 5:36 pm

Post » Wed Sep 01, 2010 10:10 am

I figure I would ask in here since it's OBSE related. I have a script that's a hack if you will from a mod called, "The art of speedy disrobing". Used a lot of his variables with my own personal feel. This isn't for public release but my own personal use. Point, right. I'm messing around with the Inventory walking functions. Here's the partial quest script.
Spoiler
scn CSHoldingBoxKitQuestScript;Quest script runs only when defining a standard kit.;Quest name associated with this script - CSwhx01Quest;==== Containers ====;CSwhx01InventoryNotepad;CSwhx01QuestNotepad;CSwhx01EquippedNotepad;CSwhx01Help01Ref;CSwhx01StdKitNotepadshort sGMFlag              ;State of scriptint loLoopVar              int loTotItemsref rItemRef               ;used for holding container refref rItemObj               ;used for holding object refref rContainer             ;used for referencing a container. eg..playerfloat ftimerfloat fQuestDelayTimeshort sIsFinished          ;Used by another script to tell when this script has completedshort sNoMessagesshort swhxButtonBegin GameMode	if sGMFlag == 0		Return		; =================================================		; 800 - Define Standard Kit		; =================================================	elseif sGMFlag == 800     ;Gets set from an object's script		set sGMFlag to 820		; ============= Setup - Clear Containers =============	elseif sGMFlag == 820		CSwhx01InventoryNotepad.RemoveAllItems		CSwhx01QuestNotepad.RemoveAllItems		set sGMFlag to 830		; ============= Copy All Inventory to InventoryNotepad =============	elseif sGMFlag == 830		let rContainer := PlayerRef		foreach rItemRef <- rContainer		     if rItemRef.IsEquipped 	           ;Check what player has equipped			if rItemRef.IsQuestItem	   ;is item a quest item as well? if so, then copy to equipment container				rItemRef.CopyIR CSwhx01EquippedNotepad			else				rItemRef.CopyIR CSwhx01EquippedNotepad	;if not a quest item make copy anyhow to equipment container				rItemRef.CopyIR CSwhx01InventoryNotepad	;And make a copy to the Inventory container			endif		     else					;if item is NOT equipped,			if rItemRef.IsQuestItem		;And is a quest item, then copy the item to the quest container				rItemRef.CopyIR CSwhx01QuestNotepad			else				;if item is NOT equipped and NOT a quest item then copy the item to the inventory container				rItemRef.CopyIR CSwhx01InventoryNotepad			endif		     endif		loop		let rItemRef := 0		set ftimer to 0		set sGMFlag to 840                ; ===========================================		; ============= Take a breather =============	elseif sGMFlag == 840		set ftimer to ftimer + GetSecondsPassed		if ftimer > .01			set sGMFlag to 850		endif                ; ===========================================		; ============= Now create streamlined inventory,                 ;ie one of each item from saved inventory that ISN'T already in the StdKit notepad =============	elseif sGMFlag == 850		SetShowQuestItems 1	;Hide All Quest Items		foreach rItemRef <- rContainer		     if rItemRef.IsQuestItem == 0			rItemRef.RemoveMeIR	 ;Remove all non-quest items from players inventory                     endif		loop		let rItemRef := 0		set loLoopVar to 0		set loTotItems to CSwhx01InventoryNotepad.GetNumItems		Label 15		if loLoopVar < loTotItems			set rItemObj to CSwhx01InventoryNotepad.GetInventoryObject loLoopVar			Message "Streamlining Inventory..."			if CSwhx01StdKitNotepad.GetItemCount rItemObj == 0				if IsQuestItem rItemObj == 0					Player.AddItemNS rItemObj 1				endif			endif			set loLoopVar to loLoopVar + 1			Goto 15		else			set sGMFlag to 870		endif                ; ===========================================		; ============= Open up the Standard Kit container =============	elseif sGMFlag == 870		CSwhx01StdKitNotepad.Activate Player                 ;When testing, this works.  		set sGMFlag to 880                ; ===========================================		; ============  Start restoring player inventory ====================                ; ===========This starts as soon as the player closes their inventory ======	elseif sGMFlag == 880		Message "Restoring Inventory..."		Player.RemoveAllItems                                ;This works as well.		SetShowQuestItems 0                               ;Allow quest items to be seen again.		set ftimer to 0		set sGMFlag to 890                ; ===========================================		; ============= Take another breather =============	elseif sGMFlag == 890		set ftimer to ftimer + GetSecondsPassed		if ftimer > .01			CSwhx01InventoryNotepad.Activate Player      ;For some reason it CTD's upon taking all items from the container.		;	CSwhx01InventoryNotepad.RemoveAllItems Player 1     ;This was the default line.  CTD's on this too.			set sGMFlag to 900    ;Exit Point		endif===============Partial script===== The rest wont' fire unless sGMFlag is set to another number.


It works as intended and works great up until I get to this part:
	elseif sGMFlag == 890		set ftimer to ftimer + GetSecondsPassed		if ftimer > .01			CSwhx01InventoryNotepad.Activate Player      ;For some reason it CTD's upon taking all items from the container.		;	CSwhx01InventoryNotepad.RemoveAllItems Player 1     ;This was the default line.  CTD's on this too.			set sGMFlag to 900    ;Exit Point		endif


When using SomeContainer.RemoveAllItems Player 1 after i had copied or CopyIR to said container I get a CTD when trying to Take All. Regardless if it's automatic (as with a RemoveAllitems or Manually, From within the container after having called SomeContainer.Activate Player. I can't seem to wrap my head as to why it CTD's. I mean I can open the container with 'SomeContainer.Activate player', I can see the inventory so I know things got copied. I just can't seem to take all items out and I don't know why.

Any help would be greatly appreciated please.

Thanks,

-Mush-

PS. You may need to see the script in the spoiler to see what I'm referring to.
User avatar
Lynne Hinton
 
Posts: 3388
Joined: Wed Nov 15, 2006 4:24 am

Post » Wed Sep 01, 2010 8:25 pm

First, I'd like to state that it is pretty awesome that ya'll are working on really advanced functionality for a 4 year old game that I consider the best game to date. Second, I realize that it's more practical to start re-introducing myself to TES CS and playing with what is currently supported in OBSE.

That being said, I'm just stumbling back on the scene and was extremely intrigued by this mod that manages to hook itself in to the game engine and provides additional scripting capabilities outside of what TES and CS currently support. I did notice by examining the OBSE source code that a lot of this was accomplished by what I can gather were manually discovered memory locations of functions. Would anyone be willing to take a few minutes to describe their development environment and process used to do this discovery or link me to pre-existing posts discussing these concepts? For example, are you using two machines with VS remote debugger capabilities? How are you setting watch points or setting breakpoints in what I assume is a very time sensitive application? An example from start to finish of a simple discovery would be invaluable. The reason I am asking is I would be very interested in adding an event handler that gets called every time the player's angle changes as well as preferably any velocity changes (I couldn't find a current function that gets the velocity information so please forgive me if my nomenclature is off).

Throughout my career as a developer, especially with technology that's new to me, I often find that effectively using the development tools that are already available to me significantly accelerates my capabilities regardless of practice in the art. If you have any insight about the materials, tools, or processes used to accomplish the TES internals inspection that you'd be willing to share I would be forever in your debt.
User avatar
Brandon Wilson
 
Posts: 3487
Joined: Sat Oct 13, 2007 1:31 am

Post » Wed Sep 01, 2010 10:10 pm

After insdtalling 19b (thank you!), every time I switch between 1st and 3rd person view I hear the sound typical for clicking on armor.
User avatar
Penny Courture
 
Posts: 3438
Joined: Sat Dec 23, 2006 11:59 pm

Post » Wed Sep 01, 2010 9:09 pm

I figure I would ask in here since it's OBSE related.

Thanks, looking into it.
Will a test version be available for download soon? :) I've been holding off on doing some scripts because I'd like to try out the new functions... :liplick:

Soonish. I want to make some more progress on the pathgrid commands first.
I've found that capitalization does not matter at all in Oblivion scripting.

Mostly. The distinction between "Array" and "array" is made in the docs to distinguish any type of array (StringMap, Map, Array) from an Array (an array with incremental integer keys starting at zero). Scripts don't care about the capitalization though.
I have a question:
How to get the remaining time of a torch, before it extinguish?

If we can't get it, could you add this function with OBSE?

I'll look into it.
Another request, this time for OBSEConsoleInterface, a function to toggle the console output. Or just an extra argument for OBSEConsoleInterface::RunScriptLine

Added RunScriptLineNoOutput, which does the same thing as RunScriptLine without generating console output. (This way we don't have to worry about a plugin permanently disabling console output, at least not through the plugin API).
If you have any insight about the materials, tools, or processes used to accomplish the TES internals inspection that you'd be willing to share I would be forever in your debt.

No magical insights or secret tools, but PM'ed to keep nitty-gritty stuffs out of the forum thread.
After insdtalling 19b (thank you!), every time I switch between 1st and 3rd person view I hear the sound typical for clicking on armor.

That's weird. Does this happen with no mods? If you switch to a previous version of 0019 without changing your load order, does it go away?
User avatar
Vicki Gunn
 
Posts: 3397
Joined: Thu Nov 23, 2006 9:59 am

Post » Wed Sep 01, 2010 2:45 pm

@scruggsy,
Did more testing and the code above works on a brand new game w/out any mods at all. Vanilla Game works fine. Well at least the part about not CTD. The code itself is more pseudo, just to see what would happen.

I'll post my load order. It's definitely some conflict with a mod though. I'm wondering if it has to do with token's being added to containers then having them removed or added using the walking functions.

Maybe a mod puts a token in a container for various reasons and it wasn't the modders intent to have that removed. I don't know. Kind of grasping here.
I have some reason actually to think that. In another mod I made, i had it so the container would detect if 1 item was inside it. A player would put in one item, if there were more inside, the script would tell the player to remove all but one. Found out through some debug code i made, that
my script to detect 1 item was actually returning 3. There were two hidden tokens being added to the container from other mods. I think gold coins. Can't be too sure as I've changed that part of the mod's script to detect a particular type of item and if it's playable.

I'm just wondering if maybe tokens are being added by other mods while the inventory is doing it's walking references. Maybe it's choking on it. (shrugs)

Here's my load order:
Spoiler
Active Mod Files:00  Oblivion.esm01  All Natural Base.esm  [Version 1.0]02  Francesco's Leveled Creatures-Items Mod.esm  [Version 4.5bSI]03  Francesco's Optional New Items Add-On.esm  [Version 4.5bSI]04  Cobl Main.esm  [Version 1.72]05  Oscuro's_Oblivion_Overhaul.esm  [Version 1.34]06  Mart's Monster Mod.esm  [Version 3.7b3p3]07  FCOM_Convergence.esm  [Version 0.9.9MB3]08  Armamentarium.esm  [Version 1.35]09  Artifacts.esm  [Version 1.1]0A  Kvatch Rebuilt.esm0B  Better Cities Resources.esm  [Version 4.8.0]0C  Toaster Says Share v3.esm0D  Cobl Races TNR.esp  [Version 1.53]0E  Cobl Races TNR SI.esp  [Version 1.53]0F  Unofficial Oblivion Patch.esp  [Version 3.3.3]10  DLCShiveringIsles.esp11  Unofficial Shivering Isles Patch.esp  [Version 1.4.0]12  Better Cities .esp13  Francesco's Optional Chance of Stronger Bosses.esp14  Francesco's Optional Chance of Stronger Enemies.esp++  FCOM_Francescos.esp  [Version 0.9.9]++  FCOM_FrancescosItemsAddOn.esp  [Version 0.9.9]15  FCOM_FrancescosNamedBosses.esp  [Version 0.9.9]16  Fran Armor Add-on.esp17  Fran_Lv30Item_Maltz.esp18  All Natural.esp  [Version 1.1]19  All Natural - SI.esp  [Version 1.0]1A  Immersive Interiors.esp  [Version 0.7]1B  Immersive Interiors - Lights Addon.esp  [Version 0.7]++  Diverse Voices.esp  [Version 0.1a]1C  All Natural - Real Lights.esp  [Version 1.1]1D  Book Jackets Oblivion.esp++  Item interchange - Extraction.esp  [Version 0.76]1E  Enhanced Economy.esp  [Version 5.0.2]1F  DLCHorseArmor.esp20  DLCHorseArmor - Unofficial Patch.esp  [Version 1.0.6]21  DLCOrrery.esp22  DLCOrrery - Unofficial Patch.esp  [Version 1.0.4]23  DLCVileLair.esp24  DLCVileLair - Unofficial Patch.esp  [Version 1.0.6]25  DLCMehrunesRazor.esp26  DLCSpellTomes.esp++  DLCSpellTomes - Unofficial Patch.esp  [Version 1.0.1]++  MaleBodyReplacerV4.esp27  Armamentium female.esp28  DLCThievesDen.esp29  DLCThievesDen - Unofficial Patch.esp  [Version 1.0.7]2A  Cobl Glue.esp  [Version 1.72]2B  Cobl Si.esp  [Version 1.63]2C  Bob's Armory Oblivion.esp2D  FCOM_BobsArmory.esp  [Version 0.9.9]2E  Oblivion WarCry EV.esp  [Version 1.08a]2F  FCOM_WarCry.esp  [Version 0.9.9MB3]30  Oscuro's_Oblivion_Overhaul.esp  [Version 1.34]++  ArmamentariumLLVendors.esp  [Version 1.35]++  ArmamentariumLLMagic.esp  [Version 1.35]31  ArmamentariumArtifacts.esp  [Version 1.35]32  OOO 1.32-Cobl.esp  [Version 1.72]33  Mart's Monster Mod - Additional Enemy NPC Vars.esp  [Version 3.7b3p3]34  FCOM_Convergence.esp  [Version 0.9.9Mb3]++  FCOM_EntropicOrderRebalance.esp  [Version 0.9.9beta2]35  FCOM_RealSwords.esp  [Version 0.9.9]36  FCOM_DurabilityAndDamage.esp  [Version 0.9.9]++  Mart's Monster Mod - More Passive Wildlife.esp  [Version 3.7b3p3]++  FCOM_SaferRoads.esp  [Version 0.9.9]++  FCOM_LessRats.esp  [Version 0.9.9]++  FCOM_NoWyverns.esp  [Version 0.9.9]37  Mart's Monster Mod - Extra Wounding.esp  [Version 3.7b3p3]++  Mart's Monster Mod - Looting NPCs & Creatures.esp  [Version 3.7b3p3]++  Mart's Monster Mod - No Reavers.esp  [Version 3.7b3p3]38  Mart's Monster Mod - No Carrion Rats.esp  [Version 3.7b3p3]++  Mart's Monster Mod - No Blood.esp  [Version 3.7b3p3]++  Mart's Monster Mod - No Undead Rise.esp  [Version 3.7b3p3]++  Mart's Monster Mod - No Slimes.esp  [Version 3.7b3p3]39  Mart's Monster Mod - Safer Quest Locations.esp  [Version 3.7b3p3]3A  Mart's Monster Mod - Dungeons of MMM.esp  [Version 3.7b3p3]3B  Mart's Monster Mod - Hunting & Crafting.esp  [Version 3.7b3p3]3C  Mart's Monster Mod - Farm Animals.esp  [Version 3.7b3p3]++  Mart's Monster Mod - Slof Horses Complete.esp  [Version 3.7b3p3]++  Mart's Monster Mod - Diverse Runeskulls Loot.esp  [Version 3.7b3p3]++  FCOM_DiverseGuardUnity.esp  [Version 0.9.9]++  FCOM_BobsGuardUnity.esp  [Version 0.9.9]++  FCOM_HungersUnitySI.esp  [Version 0.9.9]3D  FCOM_FriendlierFactions.esp  [Version 0.9.9]3E  FCOM_MoreRandomSpawns.esp  [Version 0.9.9]3F  FCOM_MoreRandomItems.esp  [Version 0.9.9]++  Mart's Monster Mod - Shivering Isles.esp  [Version 3.7b3p3]++  ArmamentariumLL4OOO.esp  [Version 2.01]++  ArmamentariumLLMagicOOO.esp  [Version 1.35]40  Fransfemale.esp41  OOO-WaterFish.esp  [Version 1.34]++  MMM-Cobl.esp  [Version 1.69]42  Artifacts.esp  [Version 1.1]++  Artifacts - ArmaCompleteAddon.esp  [Version 1.0]43  Kvatch Rebuilt.esp++  Kvatch Rebuilt - OOO Compatibility.esp44  Kvatch Rebuilt - Leveled Guards - FCOM.esp45  Kvatch Rebuilt Weather Patch.esp46  GlenvarCastle.esp47  DLCBattlehornCastle.esp48  DLCBattlehornCastle - Unofficial Patch.esp  [Version 1.0.5]49  DLCfrostcrag.esp4A  FrostcragRebornCobl.esp4B  Knights.esp4C  Knights - Unofficial Patch.esp  [Version 1.1]4D  EVE_KnightsoftheNine.esp++  FCOM_Knights.esp  [Version 0.9.9Mb3]4E  ElsweyrAnequina.esp++  ElsweyrAnequinaFemaleBody.esp++  ElsweyrAnequina - Races HGEC-Robert.esp  [Version 1.1]4F  PTMudwater.esp++  FCOM_UnofficialFranArmorAddon.esp  [Version 0.9.9]50  Better Cities - House price patch.esp  [Version 1.0]51  Harvest [Flora].esp  [Version 3.0.0]++  Harvest [Flora] - Shivering Isles.esp  [Version 3.0.0]++  Harvest [Flora] - DLCVileLair.esp  [Version 3.0.0]52  Harvest [Flora] - DLCFrostcrag.esp  [Version 3.0.0]53  EVE_ShiveringIslesEasterEggs.esp54  Toggleable Quantity Prompt.esp  [Version 3.1.1]55  Enhanced Economy - House prices.esp  [Version 1.0]56  Kyoma's Spell Renamer.esp  [Version 3.0.1]57  SupremeMagicka.esp  [Version 0.90]58  SM_ShiveringIsles.esp  [Version 0.86]++  SM_DLCSpellTome.esp  [Version 0.80]++  SM_OOO.esp  [Version 0.89]++  SM_MMM.esp  [Version 0.89]++  SM_COBL.esp  [Version 0.86]59  SM_EnchantStaff.esp  [Version 0.80]++  SM_Scrolls.esp  [Version 0.84]++  SM_SigilStone.esp  [Version 0.83]5A  MidasSpells.esp5B  Poison Equipper.esp5C  nGCD.esp5D  nGCD Oghma Infinium.esp++  nGCD Skeleton Key.esp++  Item interchange - Placement for FCOM.esp  [Version 0.76]++  Item interchange - Placement for Frostcrag Reborn.esp  [Version 0.76]++  EVE_KhajiitFix.esp++  Mart's Monster Mod - Resized Races.esp  [Version 3.7b3p3]5E  Cobl Races.esp  [Version 1.52]++  Cobl Races - Balanced.esp  [Version 1.52]5F  Better Cities Full.esp  [Version 4.8.0]60  Better Cities - VWD of the IC.esp  [Version 4.7.0]61  Better Imperial City.esp  [Version 4.8.0]62  Better Cities - COBL.esp  [Version 2.1]63  FCOM_Archery.esp  [Version 0.9.9]++  Cobl Filter Late MERGE ONLY.esp  [Version 1.53]64  Cobl Silent Equip Misc.esp  [Version 01]**  All Natural - Indoor Weather Filter For Mods.esp  [Version 1.1]++  CS_SM_NoGreenLight.esp65  CS_MegaEnchantment.esp66  CS_ArmoryHideOut.esp67  CS_DarNBookPlacement.esp68  CS_Dates_Training.esp69  Bashed Patch, 0.esp6A  CS_HoldingBox.esp


Maybe someone here may have insight on that and what may be the cause please.

Thanks,

-Mush-
User avatar
brandon frier
 
Posts: 3422
Joined: Wed Oct 17, 2007 8:47 pm

Post » Thu Sep 02, 2010 1:23 am

Added RunScriptLineNoOutput, which does the same thing as RunScriptLine without generating console output. (This way we don't have to worry about a plugin permanently disabling console output, at least not through the plugin API).
Is this something different than RunScriptLine "...", 0, 1, where the last "1" is the new bSuppressOutput parameter?

Anyway, I am trying to supress console output. I have started to use a trick of initiating arrays through ini file with setstage, and get unwanted console output.

What I do, is from a GetGameLoaded script block, call "RunBatchScript 1"
then contains a number initializer blocks, where each block has a number of "set ..." followed by a "setstage 10".
has a repeatable stage 10, which is empty, except for the Result Script, which contains one line: "Call "
then reads the variables set in and puts them into some arrays

All this works great, with one exception - command lines in someInitScript spams the console. Examples of this is:
"SetDebugMode 1" which causes "Debug statements toggled off for mod X", and
"if IsModLoaded " which causes "Mod not loaded"
...etc.

Adding the bSuppressOutput parameter to RunBatchScript does not seem to work, probably since it is not directly the batch script lines that cause the console ouput, but a Function Script called via a setstage. But those commands do not cause console spam if the same Function Script is called directly from a quest script, so the RunBatchScript command is at least indirectly responsible for the console spam.


OK, that became a long-winded explanation for a simple request: Could this spam be blocked in some way? I still want console output from DebugPrint commands, but those can be turned on off unlike this unwanted spam.
User avatar
Marine Arrègle
 
Posts: 3423
Joined: Sat Mar 24, 2007 5:19 am

Post » Wed Sep 01, 2010 5:07 pm

Well after more testing, I loaded up oblivion on what i would consider the minimum req mods. Still CTD's, only instead of CTDing at the removeallitems line, it ctd's when i go back into my inventory.

Current Mod Load Order:
Spoiler
Active Mod Files:00  Oblivion.esm01  Unofficial Oblivion Patch.esp  [Version 3.3.3]02  DLCShiveringIsles.esp03  Unofficial Shivering Isles Patch.esp  [Version 1.4.0]04  DLCHorseArmor.esp05  DLCHorseArmor - Unofficial Patch.esp  [Version 1.0.6]06  DLCOrrery.esp07  DLCOrrery - Unofficial Patch.esp  [Version 1.0.4]08  DLCVileLair.esp09  DLCVileLair - Unofficial Patch.esp  [Version 1.0.6]0A  DLCMehrunesRazor.esp0B  DLCSpellTomes.esp0C  DLCThievesDen.esp0D  DLCThievesDen - Unofficial Patch.esp  [Version 1.0.7]0E  DLCBattlehornCastle.esp0F  DLCBattlehornCastle - Unofficial Patch.esp  [Version 1.0.5]10  DLCfrostcrag.esp11  Knights.esp12  Knights - Unofficial Patch.esp  [Version 1.1]13  Toggleable Quantity Prompt.esp  [Version 3.1.1]14  CS_Dates_Training.esp15  Bashed Patch, 0.esp16  CS_HoldingBox.esp


I've run out of clues here. Could be how I'm coding it, I've no idea but it seems to work. I can access the container afterwards, just can't take all. If i take one item from the container where I copied to, then try to access my inventory, I ctd.

My original mod and scripts worked fine for a long time, but it's odd. After about 3 days of real time playing, the part of the script that checked to see if anything was in my equipped container just stopped. Like it hung and didn't process after. Worked for 3 days then stopped functioning properly. When i saw the new OBSE and it's walking inventory functions I figured I would give it a shot and modify my original scripts with it. That's where I am now, trying to figure out how to essentially clean up the script a bit and use the ref.copyIR, ref.removeMeIR, foreach, loop etc etc.. functions instead of doing it by label 1, etc.. goto 1 .. loops.

Sorry, it's long winded. I have thoughts and need to get them out of my head. But yeah, currently I can't figure out why I keep CTD'ing.

The original mod's purpose is to automatically transfer certain items from the player to a sort of holding box for that particular type of item.
So a menu pops up asking basically what box to store things, eg.. Weapons Menu, Clothes Menu, Armor Menu, Soulgems Menu. etc.. along with sub menus for Weapons etc.. if you want to store enchanted, unenchanted all or just open up the weapons box. Then this is where the script functions. The way I was doing it was the same way the mod "The art of speedy depositing" works or worked. By walking through the players inventory and checking the object, if it's a quest item, turn it to a non-quest and move it to a quest container. do the same for equipped items, also check the type being moved and turn everything NOT of that type to a quest item. So now you use SomeItem.RemoveAllitems WeaponsContainer 1. Because it was grabbing the base object, using removeallitems with the 1 flag is used to preserve the original owner. eg.. is it stolen. and because all the items are now quest itmes except for the ones that are weapons, only weapons get moved. After which, the script checks the various containers to see what is really a quest item, then walks through the entire player inventory resetting things back to normal, then re-equipping the player by checking the players inventory object with that of what's in the equipment chest. If the same object exists, then equip the item. All the tempChests get cleaned out at the start of the script.
Anyhow, that was just a summary of how the original mod works.

With the new OBSE ref walking functions, because they work on references, they keep the stolen flag, so i'd be able to move just the items i need and not go through the whole hassle of assigning and un-assinging quest itmes to various item types to put in various containers. I would also be able to bypass anything the player is wearing and not have them an item unequipped.

Again, thanks for any help.

-Mush-
User avatar
Brandi Norton
 
Posts: 3334
Joined: Fri Feb 09, 2007 9:24 pm

Post » Wed Sep 01, 2010 12:19 pm

Well after more testing, I loaded up oblivion on what i would consider the minimum req mods. Still CTD's, only instead of CTDing at the removeallitems line, it ctd's when i go back into my inventory.

I appreciate the detailed report. This will almost certainly be something on our side, not anything in your script. I'll be looking into it tomorrow after the tryptophan haze has worn off.
User avatar
chirsty aggas
 
Posts: 3396
Joined: Wed Oct 04, 2006 9:23 am

Post » Thu Sep 02, 2010 1:04 am

Mush, just fyi...I'm going to release an update to Speedy Depositing in the near future. I have permission from Wolfhound, and the scripting for the update is 99% complete. It uses the new inventory references to move the items, and features a much more robust filtering engine. At the bare minimum, I just need to write up the documentation, and I can release it. That won't take too long. The main reason it isn't already released is that I was planning on also adding a small unmarked quest and custom player home with pre-configured containers to showcase the filtering possibilities.

In other words, it may save you a bunch of work if you'll wait for the update. You'll find the update much easier to expand on for your personal needs.
User avatar
Lucky Boy
 
Posts: 3378
Joined: Wed Jun 06, 2007 6:26 pm

Post » Wed Sep 01, 2010 11:06 am

I have one request. I know, I always come here with requests and nothing else. Sorry about that. Would it be possible to add functions for modifying creature values like 'combat', 'stealth' or 'magic'? Preferably functions that don't affect the base, but only the reference. Ahem.
User avatar
Laura Cartwright
 
Posts: 3483
Joined: Mon Sep 25, 2006 6:12 pm

PreviousNext

Return to IV - Oblivion