[RELz] Oblivion Script Extender (OBSE) 0019

Post » Mon Nov 01, 2010 11:27 am

I got an error report for Quest Log Manager, and a conscribe debug log to go with it. The error in itself wasn't that interesting, but the debug log was! QLM there dumps its arrays using ar_Dump, and according to the ar_Dump command, one of QLM's arrays is not owned by QLM, but rather by Key Chain - and the dump contain some Key Chain errors as well.

So it seems that something has gotten really wrong with the array references. Maybe you (the OBSE team) could look into it, from http://www.gamesas.com/index.php?/topic/1097705-relz-quest-log-manager/page__view__findpost__p__16639289 on?
User avatar
Albert Wesker
 
Posts: 3499
Joined: Fri May 11, 2007 11:17 pm

Post » Mon Nov 01, 2010 11:36 am

Similarly I just got this readout from ConScribe log:
Spoiler
===============================================Game Instance : 1 | Time : 11-08-2010 04-38-07===============================================** Dumping Array #41 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Ancestor Guardian (D9001C35)[ 1.000000 ] : Battle Meditation (D9000801)[ 2.000000 ] : (FM) Reinitialize (CD006EC0)[ 3.000000 ] : Dismiss Companion (D8015178)[ 4.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 5.000000 ] : Join Faction (D8015167)[ 6.000000 ] : Mental Alacrity (BC00A034)[ 7.000000 ] : Recruit Companion (D8015171)[ 8.000000 ] : Soft Shoes (C3002F40)[ 9.000000 ] : Voice Alteration (250194A2)[ 10.000000 ] : A - Burdening Touch (000A97C1)[ 11.000000 ] : A - Protect (000A97A7)[ 12.000000 ] : A - Protect Other (00071090)[ 13.000000 ] : Combat Magic Kit (FA001C84)[ 14.000000 ] : Fix Fake Magic Item (FA01DF23)[ 15.000000 ] : I - Illuminate (000A319D)[ 16.000000 ] : R - Absorb Health (000A9367)[ 17.000000 ] : Weapon Correction (F8006797)[ 18.000000 ] : Atronach Birthsign (E200341D)[ 19.000000 ] : Automagic Cloak (BC0042F5)[ 20.000000 ] : Azura's Spell (D90160E4)[ 21.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 22.000000 ] : Correction Spell Ability (F9000ED8)[ 23.000000 ] : Fix Fake Magic Items (FA0015B0)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)RL: loaded RealisticLeveling.iniRL: recalculating all attributesSM Combat Regen initialised with iniPiiiP : INI Initialized !SM Combat Hide Initialised with iniRealistic Sneak for NPCs.ini loadedRH: RealisticHealth.ini loadedRF: RealisticFatigue.ini loadedFrostcrag Reborn: no sound plugins activeEH:Updated values from ini file in data\ini\.MMO:Updated values from ini file in data\ini\.OBGE Support : Loaded ssao_perf.fxOBGE Support : Loaded ssao_test.fxOBGE Support : Loaded DepthOfField.fxOBGE Support : Loaded Godrays.fxOBGE Support : Loaded CelShader+EdgeAA.fxOBGE Support : Loaded ColorEffects.fxOBGE Support : Loaded ColorMood.fxOBGE Support : Loaded obsharpen.fxEnhanced Seasons: Ini LoadedOBSE Drop Lit Torches Initialised (Ini)EE:Updated values from ini file in data\ini\.All Natural Tamriel: InitialisedAll Natural SI: InitialisedSC|Main: shader has loadedSupreme Magicka Initialised SuccesfullyInn publicans now offer misc items.Cobl : 1RF: incrementing strength skills experience by 0.1RF: incrementing endurance skills experience by 0.1RF: incrementing strength skills experience by 0.1RL: recalculating all attributesSpell 'Fix Fake Magic Items' added to Vandal SavageSpell 'Fix Fake Magic Items' removed from Vandal SavageunlockUnlocked Chest ** Dumping Array #511 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Fix Fake Magic Items (FA0015B0)[ 1.000000 ] : Ancestor Guardian (D9001C35)[ 2.000000 ] : Battle Meditation (D9000801)[ 3.000000 ] : (FM) Reinitialize (CD006EC0)[ 4.000000 ] : Dismiss Companion (D8015178)[ 5.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 6.000000 ] : Join Faction (D8015167)[ 7.000000 ] : Mental Alacrity (BC00A034)[ 8.000000 ] : Recruit Companion (D8015171)[ 9.000000 ] : Soft Shoes (C3002F40)[ 10.000000 ] : Voice Alteration (250194A2)[ 11.000000 ] : A - Burdening Touch (000A97C1)[ 12.000000 ] : A - Protect (000A97A7)[ 13.000000 ] : A - Protect Other (00071090)[ 14.000000 ] : Combat Magic Kit (FA001C84)[ 15.000000 ] : Fix Fake Magic Item (FA01DF23)[ 16.000000 ] : I - Illuminate (000A319D)[ 17.000000 ] : R - Absorb Health {} (000A9367)[ 18.000000 ] : Weapon Correction (F8006797)[ 19.000000 ] : Atronach Birthsign (E200341D)[ 20.000000 ] : Automagic Cloak (BC0042F5)[ 21.000000 ] : Azura's Spell (D90160E4)[ 22.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 23.000000 ] : Correction Spell Ability (F9000ED8)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)Spell 'Fix Fake Magic Items' added to Vandal SavageunlockUnlocked Chest RF: incrementing strength skills experience by 0.1RF: incrementing agility skills experience by 0.1Spell 'Fix Fake Magic Items' added to Vandal SavageSpell 'Fix Fake Magic Items' removed from Vandal SavageunlockUnlocked Chest RF: incrementing endurance skills experience by 0.1PiiiP : Fine Steel Mace {} (FF005E52) is not off-limits ...PiiiP : Toggle Grab fired...PiiiP : Waiting for grab key release ...PiiiP : Untoggle Grab fired ...PiiiP : Grab key released ...PiiiP : Item Tracker initialized ! PiiiP : Grabbing Core - Cycle complete ! PiiiP : Collision detected !PiiiP: Noise Detection triggered ...PiiiP : 02051A6E | Trigger Radius : 1257.12 | Current Dist : 5564.18....PiiiP : The item has stopped moving ...PiiiP : Item Tracking - Cycle complete !PiiiP : Fine Steel Mace {} (FF005E52) is not off-limits ...PiiiP : Toggle Grab fired...PiiiP : Waiting for grab key release ...PiiiP : Untoggle Grab fired ...PiiiP : Grab key released ...PiiiP : Item Tracker initialized ! PiiiP : Grabbing Core - Cycle complete ! PiiiP : The item has stopped moving ...PiiiP : Item Tracking - Cycle complete !RL: recalculating all attributesRF: incrementing strength skills experience by 0.1A:1B:1A:2B:2Blade equippedA:3B:3RF: incrementing strength skills experience by 0.1RF: 00000014:Vandal Savage play stagger dt=1.013 az=0.000 fatigue=0.40 chance=0.0002RF: incrementing strength skills experience by 0.1RF: incrementing endurance skills experience by 0.1RL: recalculating all attributesA:1B:1A:1B:1A:3B:3A:4B:4A:3B:3A:1B:1B:1B:2B:3Bow equippedBow quest startedA:1B:1bow quest stoppedB:3Bow equippedBow quest started** Dumping Array #11 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Fix Fake Magic Items (FA0015B0)[ 1.000000 ] : Ancestor Guardian (D9001C35)[ 2.000000 ] : Battle Meditation (D9000801)[ 3.000000 ] : (FM) Reinitialize (CD006EC0)[ 4.000000 ] : Dismiss Companion (D8015178)[ 5.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 6.000000 ] : Join Faction (D8015167)[ 7.000000 ] : Mental Alacrity (BC00A034)[ 8.000000 ] : Recruit Companion (D8015171)[ 9.000000 ] : Soft Shoes (C3002F40)[ 10.000000 ] : Voice Alteration (250194A2)[ 11.000000 ] : A - Burdening Touch (000A97C1)[ 12.000000 ] : A - Protect (000A97A7)[ 13.000000 ] : A - Protect Other (00071090)[ 14.000000 ] : Combat Magic Kit (FA001C84)[ 15.000000 ] : Fix Fake Magic Item (FA01DF23)[ 16.000000 ] : I - Illuminate (000A319D)[ 17.000000 ] : R - Absorb Health {} (000A9367)[ 18.000000 ] : Weapon Correction (F8006797)[ 19.000000 ] : Atronach Birthsign (E200341D)[ 20.000000 ] : Automagic Cloak (BC0042F5)[ 21.000000 ] : Azura's Spell (D90160E4)[ 22.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 23.000000 ] : Correction Spell Ability (F9000ED8)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)RF: incrementing strength skills experience by 0.1** Dumping Array #511 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Fix Fake Magic Items (FA0015B0)[ 1.000000 ] : Ancestor Guardian (D9001C35)[ 2.000000 ] : Battle Meditation (D9000801)[ 3.000000 ] : (FM) Reinitialize (CD006EC0)[ 4.000000 ] : Dismiss Companion (D8015178)[ 5.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 6.000000 ] : Join Faction (D8015167)[ 7.000000 ] : Mental Alacrity (BC00A034)[ 8.000000 ] : Recruit Companion (D8015171)[ 9.000000 ] : Soft Shoes (C3002F40)[ 10.000000 ] : Voice Alteration (250194A2)[ 11.000000 ] : A - Burdening Touch (000A97C1)[ 12.000000 ] : A - Protect (000A97A7)[ 13.000000 ] : A - Protect Other (00071090)[ 14.000000 ] : Combat Magic Kit (FA001C84)[ 15.000000 ] : Fix Fake Magic Item (FA01DF23)[ 16.000000 ] : I - Illuminate (000A319D)[ 17.000000 ] : R - Absorb Health {} (000A9367)[ 18.000000 ] : Weapon Correction (F8006797)[ 19.000000 ] : Atronach Birthsign (E200341D)[ 20.000000 ] : Automagic Cloak (BC0042F5)[ 21.000000 ] : Azura's Spell (D90160E4)[ 22.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 23.000000 ] : Correction Spell Ability (F9000ED8)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)RF: incrementing endurance skills experience by 0.1RF: incrementing strength skills experience by 0.1RL: recalculating all attributesRF: incrementing endurance skills experience by 0.1** Dumping Array #510 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Fix Fake Magic Items (FA0015B0)[ 1.000000 ] : Ancestor Guardian (D9001C35)[ 2.000000 ] : Battle Meditation (D9000801)[ 3.000000 ] : (FM) Reinitialize (CD006EC0)[ 4.000000 ] : Dismiss Companion (D8015178)[ 5.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 6.000000 ] : Join Faction (D8015167)[ 7.000000 ] : Mental Alacrity (BC00A034)[ 8.000000 ] : Recruit Companion (D8015171)[ 9.000000 ] : Soft Shoes (C3002F40)[ 10.000000 ] : Voice Alteration (250194A2)[ 11.000000 ] : A - Burdening Touch (000A97C1)[ 12.000000 ] : A - Protect (000A97A7)[ 13.000000 ] : A - Protect Other (00071090)[ 14.000000 ] : Combat Magic Kit (FA001C84)[ 15.000000 ] : Fix Fake Magic Item (FA01DF23)[ 16.000000 ] : I - Illuminate (000A319D)[ 17.000000 ] : R - Absorb Health {} (000A9367)[ 18.000000 ] : Weapon Correction (F8006797)[ 19.000000 ] : Atronach Birthsign (E200341D)[ 20.000000 ] : Automagic Cloak (BC0042F5)[ 21.000000 ] : Azura's Spell (D90160E4)[ 22.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 23.000000 ] : Correction Spell Ability (F9000ED8)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)RL: recalculating all attributesRF: incrementing strength skills experience by 0.1** Dumping Array #26 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Fix Fake Magic Items (FA0015B0)[ 1.000000 ] : Ancestor Guardian (D9001C35)[ 2.000000 ] : Battle Meditation (D9000801)[ 3.000000 ] : (FM) Reinitialize (CD006EC0)[ 4.000000 ] : Dismiss Companion (D8015178)[ 5.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 6.000000 ] : Join Faction (D8015167)[ 7.000000 ] : Mental Alacrity (BC00A034)[ 8.000000 ] : Recruit Companion (D8015171)[ 9.000000 ] : Soft Shoes (C3002F40)[ 10.000000 ] : Voice Alteration (250194A2)[ 11.000000 ] : A - Burdening Touch (000A97C1)[ 12.000000 ] : A - Protect (000A97A7)[ 13.000000 ] : A - Protect Other (00071090)[ 14.000000 ] : Combat Magic Kit (FA001C84)[ 15.000000 ] : Fix Fake Magic Item (FA01DF23)[ 16.000000 ] : I - Illuminate (000A319D)[ 17.000000 ] : R - Absorb Health {} (000A9367)[ 18.000000 ] : Weapon Correction (F8006797)[ 19.000000 ] : Atronach Birthsign (E200341D)[ 20.000000 ] : Automagic Cloak (BC0042F5)[ 21.000000 ] : Azura's Spell (D90160E4)[ 22.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 23.000000 ] : Correction Spell Ability (F9000ED8)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)RF: incrementing agility skills experience by 0.1Spell 'Fix Fake Magic Items' added to Vandal SavagetclCollision -> Off** Dumping Array #11 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Fix Fake Magic Items (FA0015B0)[ 1.000000 ] : Ancestor Guardian (D9001C35)[ 2.000000 ] : Battle Meditation (D9000801)[ 3.000000 ] : (FM) Reinitialize (CD006EC0)[ 4.000000 ] : Dismiss Companion (D8015178)[ 5.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 6.000000 ] : Join Faction (D8015167)[ 7.000000 ] : Mental Alacrity (BC00A034)[ 8.000000 ] : Recruit Companion (D8015171)[ 9.000000 ] : Soft Shoes (C3002F40)[ 10.000000 ] : Voice Alteration (250194A2)[ 11.000000 ] : A - Burdening Touch (000A97C1)[ 12.000000 ] : A - Protect (000A97A7)[ 13.000000 ] : A - Protect Other (00071090)[ 14.000000 ] : Combat Magic Kit (FA001C84)[ 15.000000 ] : Fix Fake Magic Item (FA01DF23)[ 16.000000 ] : I - Illuminate (000A319D)[ 17.000000 ] : R - Absorb Health {} (000A9367)[ 18.000000 ] : Weapon Correction (F8006797)[ 19.000000 ] : Atronach Birthsign (E200341D)[ 20.000000 ] : Automagic Cloak (BC0042F5)[ 21.000000 ] : Azura's Spell (D90160E4)[ 22.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 23.000000 ] : Correction Spell Ability (F9000ED8)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)Spell 'Fix Fake Magic Items' added to Vandal SavagetclCollision -> OnSpell 'Fix Fake Magic Items' removed from Vandal SavageRF: incrementing strength skills experience by 0.1** Dumping Array #26 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Fix Fake Magic Items (FA0015B0)[ 1.000000 ] : Ancestor Guardian (D9001C35)[ 2.000000 ] : Battle Meditation (D9000801)[ 3.000000 ] : (FM) Reinitialize (CD006EC0)[ 4.000000 ] : Dismiss Companion (D8015178)[ 5.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 6.000000 ] : Join Faction (D8015167)[ 7.000000 ] : Mental Alacrity (BC00A034)[ 8.000000 ] : Recruit Companion (D8015171)[ 9.000000 ] : Soft Shoes (C3002F40)[ 10.000000 ] : Voice Alteration (250194A2)[ 11.000000 ] : A - Burdening Touch (000A97C1)[ 12.000000 ] : A - Protect (000A97A7)[ 13.000000 ] : A - Protect Other (00071090)[ 14.000000 ] : Combat Magic Kit (FA001C84)[ 15.000000 ] : Fix Fake Magic Item (FA01DF23)[ 16.000000 ] : I - Illuminate (000A319D)[ 17.000000 ] : R - Absorb Health {} (000A9367)[ 18.000000 ] : Weapon Correction (F8006797)[ 19.000000 ] : Atronach Birthsign (E200341D)[ 20.000000 ] : Automagic Cloak (BC0042F5)[ 21.000000 ] : Azura's Spell (D90160E4)[ 22.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 23.000000 ] : Correction Spell Ability (F9000ED8)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)RF: incrementing endurance skills experience by 0.1RF: incrementing strength skills experience by 0.1** Dumping Array #224 **Refs: 1 Owner FA: Duke Patricks - Combat Magic II.esp[ 0.000000 ] : Fix Fake Magic Items (FA0015B0)[ 1.000000 ] : Ancestor Guardian (D9001C35)[ 2.000000 ] : Battle Meditation (D9000801)[ 3.000000 ] : (FM) Reinitialize (CD006EC0)[ 4.000000 ] : Dismiss Companion (D8015178)[ 5.000000 ] : Fix Follower Double-Face Bug (16001BC3)[ 6.000000 ] : Join Faction (D8015167)[ 7.000000 ] : Mental Alacrity (BC00A034)[ 8.000000 ] : Recruit Companion (D8015171)[ 9.000000 ] : Soft Shoes (C3002F40)[ 10.000000 ] : Voice Alteration (250194A2)[ 11.000000 ] : A - Burdening Touch (000A97C1)[ 12.000000 ] : A - Protect (000A97A7)[ 13.000000 ] : A - Protect Other (00071090)[ 14.000000 ] : Combat Magic Kit (FA001C84)[ 15.000000 ] : Fix Fake Magic Item (FA01DF23)[ 16.000000 ] : I - Illuminate (000A319D)[ 17.000000 ] : R - Absorb Health {} (000A9367)[ 18.000000 ] : Weapon Correction (F8006797)[ 19.000000 ] : Atronach Birthsign (E200341D)[ 20.000000 ] : Automagic Cloak (BC0042F5)[ 21.000000 ] : Azura's Spell (D90160E4)[ 22.000000 ] : Combat Expertise: Spell Disruption (BC02D3B1)[ 23.000000 ] : Correction Spell Ability (F9000ED8)[ 24.000000 ] : Mer Heritage - Base (D901597A)[ 25.000000 ] : Mind Leak (E2003907)[ 26.000000 ] : Power of Thunder (E200518E)[ 27.000000 ] : Realistic Fatigue Effects (C8000810)[ 28.000000 ] : Weak Endurance (D9015A00)RF: incrementing strength skills experience by 0.1RF: incrementing endurance skills experience by 0.1
http://www.gamesas.com/index.php?/topic/1107578-duke-patricks-combat-magic-ii/ is Alpha status but I'm not certain these array dumps are intentional. Just reporting to be thorough, no major issues here that I'm aware of. Also never seen this before OBSE 19.

Those are all spells and powers by the way.
User avatar
Music Show
 
Posts: 3512
Joined: Sun Sep 09, 2007 10:53 am

Post » Mon Nov 01, 2010 8:28 am

Similarly I just got this readout from ConScribe log:
...
http://www.gamesas.com/index.php?/topic/1107578-duke-patricks-combat-magic-ii/ is Alpha status but I'm not certain these array dumps are intentional. Just reporting to be thorough, no major issues here that I'm aware of. Also never seen this before OBSE 19.

Such array dumps are the result of a call to "ar_Dump ", so it is probably intentional, though they should be inside an "if debug...endif" block, at least when the mod reaches final status.
User avatar
Rik Douglas
 
Posts: 3385
Joined: Sat Jul 07, 2007 1:40 pm

Post » Tue Nov 02, 2010 12:26 am

Just some ideas for OBSE that I would appreciate some feedback on, like whether it can already be done or worth doing. I'm considering developing these as plugins myself, as I'm guessing that would save the OBSE team some much desired time, if thats preferable.

I'm fairly new to Oblivion modding, so apologies if these can already be done and I've just not come across it as yet.

1. Timers that can measure the time taken during a single execution of a script (rather than simply the time between executions from GetSecondsPassed). Useful perhaps for managing execution of complex scripts across multiple executions to prevent stuttering.

2. Reading of ini files in the format key=value (or any format really) with support for variable sized ini files and obse strings/arrays. I know pluggy basically provides this functionality, and you can convert pluggy strings to obse strings, but I get the impression that pluggy is kind of on the way out. Is it worth providing a more up to date version that uses obse strings/arrays which avoids the need for pluggy entirely (yes I'm looking at you TheNiceOne, I know you did this for EE)?

3. A reference manager, which provides some core functionality for maintaining lists of certain types of references that are within player vicinity/cell or still in memory at least. Would be built upon obse's getfrstref(incell)/getnextref functions, but would exapnd on it slightly to take some of the scripting effort away from the modder. Haven't given this a lot of thought as yet, just a very preliminary suggestion. Are there simple rules which dictate when non-persistent references are accessible? I know the wiki said they are only accessible when in the player's current cell, but, just for testing purposes, I wrote a script which manipulates the building exterior meshes and it seemed to also work for meshes in at least the cells adjacent to the players current cell (they are still visible after all). Is this behaviour predictable or easy to safely test for?

4. Fast quest script init. Utilising OBSE callbacks, provide a means for mods with quest scripts to initialise certain game states as soon as a game is loaded, rather than having to wait the few seconds until the quest script commences.
User avatar
Ruben Bernal
 
Posts: 3364
Joined: Sun Nov 18, 2007 5:58 pm

Post » Mon Nov 01, 2010 11:35 pm

Sorry for the delayed response, juggling a bunch of projects atm.
Cool thanks, one more question. What exactly is the reserved opcode range for MenuQue? I think it would be 0x25D0 to 0x25FF but I wanna be sure I'm not gonna conflict. :unsure:

I have you listed for 25D0-25EF. The next block up is already claimed, but if you need more opcodes let me know.
I suppose there's some issue with updating the first person version? Do meshes of things equipped by the player that are visible in 1st person (gloves/gauntlets, weapons, shields) that get refreshed in third person "revert" when you go back to 1st?

I still have to work out how to handle the first person skeleton. There are two parts: making changes to equipped items reflected on the skeleton, and allowing an altogether different first person skeleton to be substituted on the fly. The first part is probably easier and more in-demand so it gets priority.
(ClearHotkey: an error on this http://cs.elderscrolls.com/constwiki/index.php/ClearHotkey: (nothing) ClearHotkeyItem whichHotkey:short)

Thanks, I went ahead and made ClearHotKeyItem an alias for the command to make it consistent with the other hotkey commands.
Does the OBSE mods list ever get updated anymore? I realize their are probably a googolplex of OBSE mods out there so updating them all into the list is pretty extreme. But what if we submitted OBSE mods to you for the list?

No. There are far too many (I guess we can call that a good thing) and we hate writing documentation of any kind.
I think I have discovered a couple of bugs, or at least one bug and one quirk with OBSEv19.

I got an error report for Quest Log Manager, and a conscribe debug log to go with it. The error in itself wasn't that interesting, but the debug log was! QLM there dumps its arrays using ar_Dump, and according to the ar_Dump command, one of QLM's arrays is not owned by QLM, but rather by Key Chain - and the dump contain some Key Chain errors as well.

So it seems that something has gotten really wrong with the array references. Maybe you (the OBSE team) could look into it, from http://www.gamesas.com/index.php?/topic/1097705-relz-quest-log-manager/page__view__findpost__p__16639289 on?

Thanks for the detailed reports. I'm on it. PM'ed the user from the other thread.
Docu-stuff: Sigil Stones are missing their qualities list. I assume it should be Inventory, Named, Magic, Scriptable, Simple?

In particular, I hope they're legitimate members of the Magic quality so far as OBSE's commands are concerned; but I'm uncertain because in other places there's an explicit list which doesn't include them (Alchemy, Enchantment, Ingredient, Spell). Should all the EI-related commands work, or should I be looking out for certain exceptions, or are they just off-limits to the category?

As JRoush said, the EI commands are set up to accept sigil stones as magic items. CopyAllEffectItems should work. If you run into any commands that don't work but should, let me know and I'll update them.
Just some ideas for OBSE that I would appreciate some feedback on, like whether it can already be done or worth doing. I'm considering developing these as plugins myself, as I'm guessing that would save the OBSE team some much desired time, if thats preferable.

I'm fairly new to Oblivion modding, so apologies if these can already be done and I've just not come across it as yet.

1. Timers that can measure the time taken during a single execution of a script (rather than simply the time between executions from GetSecondsPassed). Useful perhaps for managing execution of complex scripts across multiple executions to prevent stuttering.

2. Reading of ini files in the format key=value (or any format really) with support for variable sized ini files and obse strings/arrays. I know pluggy basically provides this functionality, and you can convert pluggy strings to obse strings, but I get the impression that pluggy is kind of on the way out. Is it worth providing a more up to date version that uses obse strings/arrays which avoids the need for pluggy entirely (yes I'm looking at you TheNiceOne, I know you did this for EE)?

3. A reference manager, which provides some core functionality for maintaining lists of certain types of references that are within player vicinity/cell or still in memory at least. Would be built upon obse's getfrstref(incell)/getnextref functions, but would exapnd on it slightly to take some of the scripting effort away from the modder. Haven't given this a lot of thought as yet, just a very preliminary suggestion. Are there simple rules which dictate when non-persistent references are accessible? I know the wiki said they are only accessible when in the player's current cell, but, just for testing purposes, I wrote a script which manipulates the building exterior meshes and it seemed to also work for meshes in at least the cells adjacent to the players current cell (they are still visible after all). Is this behaviour predictable or easy to safely test for?

4. Fast quest script init. Utilising OBSE callbacks, provide a means for mods with quest scripts to initialise certain game states as soon as a game is loaded, rather than having to wait the few seconds until the quest script commences.

1. Consider using http://obse.silverlock.org/obse_command_doc.html#GetUserTime.
2. It's been on the agenda for a while now. Mostly on the back burner because of Pluggy's similar functionality. When it happens each mod's .ini will probably be read automatically at startup into a persistent array which can be accessed via script.
3. Non-persistent references are accessible from the time they are loaded by the game into memory until the time they are released to free up memory for other things. They are always accessible when the player is in the same cell as them (or in exteriors, when they are in one of the cells adjacent to the player's cell which the game also keeps in memory). Beyond that you can't predict so the general rule is to assume they are not accessible, but IsFormValid someRefOrRefVar will tell you if the object is currently accessible.
4. Added to the list.
User avatar
naome duncan
 
Posts: 3459
Joined: Tue Feb 06, 2007 12:36 am

Post » Mon Nov 01, 2010 11:37 am

I think I may have found a bug.

[Set or Let] [Float, Long, or Short] [:= or to] GetAVc Variable - returns garbage for certain negative AV values.
I couldn't get it to work no matter what types of variables I used with either set or let. (using Resist Fire and Resist Frost)
I Rewrote it to bounds check for garbage and assume the value was 0 or Negative.

Similarly, I had a problem with Let short := -float, and rewrote it using set short to -float.
I would love to know the proper way to write "convert float to integer is, ala short = int(float)"
User avatar
Lauren Denman
 
Posts: 3382
Joined: Fri Jun 16, 2006 10:29 am

Post » Mon Nov 01, 2010 7:18 pm

2. It's been on the agenda for a while now. Mostly on the back burner because of Pluggy's similar functionality. When it happens each mod's .ini will probably be read automatically at startup into a persistent array which can be accessed via script.
I would love to have a function to read ini files, but if so, I really hope you can make it a bit more general than Pluggy's. What I would like, was a function that simply created a two-dimensional array. The first dimension would be for each line in the ini file, and the second dimension for each column in that line, using space, comma (and probably "=") as delimiters. Then it would be up to the modder to use the array for whatever he/she wants :)
User avatar
Blaine
 
Posts: 3456
Joined: Wed May 16, 2007 4:24 pm

Post » Mon Nov 01, 2010 6:59 pm

I am new in OBSE but I have a question:

Is possible to transform it in a framework? (I am not sure se the term Framework apply correctly)

EX: To make one object to orbit other, I will need to use trigonometric functions con or sin I don't remeber this things anymore.

If I put objectA.Orbit objectB ( radius, speed, counterclockwise, height) the OBSE take care of the rest to me. :whistling:

Thanks.
User avatar
Bones47
 
Posts: 3399
Joined: Fri Nov 09, 2007 11:15 pm

Post » Mon Nov 01, 2010 8:07 am

Such a function would be possible, but is most easily done as a user-defined function using OBSE's trigonometric functions. OBSE typically focuses more on adding functions that allow modders to do new things than on functions that make things more convenient.
User avatar
R.I.P
 
Posts: 3370
Joined: Sat Dec 01, 2007 8:11 pm

Post » Mon Nov 01, 2010 9:03 am

I would love to have a function to read ini files, but if so, I really hope you can make it a bit more general than Pluggy's. What I would like, was a function that simply created a two-dimensional array. The first dimension would be for each line in the ini file, and the second dimension for each column in that line, using space, comma (and probably "=") as delimiters. Then it would be up to the modder to use the array for whatever he/she wants :)


Not that I have any pressing need for this, but support for sections might still be nice. A StringMap of StringMap's of arrays perhaps. So, basically what you said, with an extra initial dimension for section headers, and the key of the second level stringmap is what's on the left of the '=', with the array associated with it containing all the entries on the right side of the '='. If the number of entries is variable and/or unknown, simply iterate through them using foreach.

Thanks scruggsy for the info. Just realised, though, with the fast quest script init, isn't that already possible using obse's loadgame event handler? The only issue is this won't work the very first time a mod is loaded, as it hasn't yet registered the listener, but that's probably not much of a problem really, certainly not worth creating an entirely new mechanism for.
User avatar
Lyndsey Bird
 
Posts: 3539
Joined: Sun Oct 22, 2006 2:57 am

Post » Mon Nov 01, 2010 7:11 pm

I would love to have a function to read ini files, but if so, I really hope you can make it a bit more general than Pluggy's. What I would like, was a function that simply created a two-dimensional array. The first dimension would be for each line in the ini file, and the second dimension for each column in that line, using space, comma (and probably "=") as delimiters. Then it would be up to the modder to use the array for whatever he/she wants :)


I think I mentioned it before, but it does not hurt to mention it again, I guess.

As a temporary solution to the INI-to-Array-to-INI thing, I developed a couple of functions to do the job. They support multi-dimensional arrays and are http://cs.elderscrolls.com/constwiki/index.php/Saving_OBSE_arrays_into_Pluggy_INI_files, in case somebody is interested.
User avatar
Nicola
 
Posts: 3365
Joined: Wed Jul 19, 2006 7:57 am

Post » Mon Nov 01, 2010 10:57 am

Is it possible to change the type of enchant on an item with an obse script.

I put an unenchanted staff in the game and enchanted it with fire damage, but it's an "on hit" enchant like what would be on a melee weapon. Is there a way to turn that enchant into an "on target" enchant with a script?
User avatar
Love iz not
 
Posts: 3377
Joined: Sat Aug 25, 2007 8:55 pm

Post » Mon Nov 01, 2010 3:02 pm

Yes, there is: use http://cs.elderscrolls.com/constwiki/index.php/SetEnchantmentType.
User avatar
Kim Bradley
 
Posts: 3427
Joined: Sat Aug 18, 2007 6:00 am

Post » Mon Nov 01, 2010 8:32 pm

Just wondering if there any chance of seeing a fully working SetPlayerSkeletonPath function in OBSE anytime soon.....
User avatar
Dezzeh
 
Posts: 3414
Joined: Sat Jun 16, 2007 2:49 am

Post » Mon Nov 01, 2010 8:09 am

A bug report, though a very minor one. Your ArrayFromStdVector helper function crashes if passed an empty vector, as it doesn't check it's size before accessing &data[0].
Almost not worth mentioning, but it'll only take 2 seconds to fix so I thought I might as well.
User avatar
Alexis Estrada
 
Posts: 3507
Joined: Tue Aug 29, 2006 6:22 pm

Post » Mon Nov 01, 2010 4:57 pm

A bug report, though a very minor one. Your ArrayFromStdVector helper function crashes if passed an empty vector, as it doesn't check it's size before accessing &data[0].
Almost not worth mentioning, but it'll only take 2 seconds to fix so I thought I might as well.
It is, in the latest revision of the source. Are you using v19's ?
User avatar
GLOW...
 
Posts: 3472
Joined: Thu Aug 03, 2006 10:40 am

Post » Mon Nov 01, 2010 11:01 am

It is, in the latest revision of the source. Are you using v19's ?


Yep. Downloaded on 2nd of november from obse.silverlock.org. Just downloaded it again, no different. Are you referring to a dev version not on the website yet?

Edit: Not that it matters. I fixed it myself anyway.
User avatar
Mylizards Dot com
 
Posts: 3379
Joined: Fri May 04, 2007 1:59 pm

Post » Mon Nov 01, 2010 12:44 pm

***AVMod[C] case sensitivity bug/inconsistency:

GetAVMod magicka max -- works
GetAVMod Magicka Max -- works -- both terms are fully case insensitive
GetAVModC 9 max -- works
GetAVModC 9 Max -- fails -- works only if lowercase
Above applies for damage and script modifiers as well.

GetAVModC 9 base -- works
GetAVMod magicka base -- fails -- oops?

Not limited to magicka, of course. Set/Mod show similar results, though I wasn't as thorough.
User avatar
Zosia Cetnar
 
Posts: 3476
Joined: Thu Aug 03, 2006 6:35 am

Post » Mon Nov 01, 2010 7:30 pm

I've got another bug report for you :sad:

I'm using Inventory References and SetCurrentHealth to get a working Repair All button, but SetCurrentHealth doesn't work reliably for the inventory refs. I made a test script for it:
Spoiler
ScriptName TestRepairfloat fQuestDelayTimefloat targetPfloat targetHfloat baseHfloat currHref itemBegin GameMode	if GetGameLoaded		set fQuestDelayTime to 0.001	endif	if OnKeyDown 35		let targetP := 90	endif		if OnKeyDown 36		let targetP := 100	endif		if OnKeyDown 37		let targetP := 110	endif		if OnKeyDown 38		let targetP := 125	endif			if targetP > 0		PrintC " "		PrintC "**"		ForEach item <- PlayerRef			if item.IsWeapon || item.IsArmor				let baseH := item.GetObjectHealth				let currH := item.GetCurrentHealth				let targetH := baseH * targetP / 100.0				let targetH := Ceil targetH								if targetH != currH					item.SetCurrentHealth targetH					PrintC "%n, set health from %.1f to %.1f, base %.0f, p %.0f", item, currH, targetH, baseH, targetP				endif			endif		Loop		let targetP := 0	endif		if OnKeyDown 34		PrintC " "		PrintC "--"		ForEach item <- PlayerRef			if item.IsWeapon || item.IsArmor				let baseH := item.GetObjectHealth				let currH := item.GetCurrentHealth				PrintC "%n, health: %.1f, base %.0f", item, currH, baseH			endif		Loop		let targetP := 0	endifEnd


When using it (tapping H, J, K or L to set 90/100/110/125 % health), it works for most items, but does not work for some items (they keep their old health, even if the first PrintC indicates that the health is changed):

From testing, it seems that it fails for the following items:
* Any armor that is NOT equipped (equipping/unequipping it before tapping a key seems to make it work)
* Any weapon that is stacked (you have 2 or more identical)


I love the possibilities the new inventory refs open up, and understand that it is difficult to get all right, but hope you can fix this :)
User avatar
Charles Mckinna
 
Posts: 3511
Joined: Mon Nov 12, 2007 6:51 am

Post » Mon Nov 01, 2010 8:22 pm

Hey all!

I am the scripting Overseer of the 'Middle Earth Roleplaying Project' (MERP) Total Conversion, and first I'd like to thank the authors of OBSE from the bottom of my heart! I wouldn't even bother with modding Oblivion if it wasn't for OBSE.

I encountered a glitch with the Update3D function today, when I tried to use it on a horse. The horse model disappears for a split second, and the rider is dismounted. I really hope it is possible to and that you are willing to fix this.

We made several copies of the horse skeleton.nif and integrated the vanilla horse models, and in others counterpart low poly models in them. I created a script that checks the distance between the player and the horse periodically, and if the horse is near it sets the modelpath to the skeleton.nif with the high poly model, and if it's far away it sets it to the skeleton with the low poly model. This way we created custom distant LOD for horses, because we are implementing very big cavalry battles (Yep we already got NPC cavalry combat!).

Although I don't have nearly as much knowledge as you guys, it seems to me like first the current 3D data is discarded, then it starts loading the new 3D data, and when it is done loading, it is applied. If that's true, could it be created that it first loads the new 3D data, and once it's done it discards the current 3D data and instantly replaces it with the new? That would maybe also solve the dismounting problem.

Thank you for your time on behalf of the MERP team,

Maegfaer
User avatar
Kortniie Dumont
 
Posts: 3428
Joined: Wed Jan 10, 2007 7:50 pm

Post » Mon Nov 01, 2010 12:44 pm

Hey guys quick question. I'm writing a test script, just to learn how some functions work and I'm having trouble with "GetWeaponType". This script is supposed to display a message if the player equips a certain weapon type in the inv menu.


Spoiler
scn MFQWeaponCurse1Ref EquipedWeaponBegin MenuMode 1002Set EquipedWeapon to Player.GetEquippedObject 16	IF Player.GetWeaponType EquipedWeapon == 0		MessageBox "this is a sword"	EndIfEnd


This script doesn't work, the message will pop up on the screen every few seconds weather or not i have a sword equipped or not.

Spoiler
scn MFQWeaponCurse1Ref EquipedWeaponBegin MenuMode 1002Set EquipedWeapon to Player.GetEquippedObject 16	IF Player.GetWeaponType EquipedWeapon == 4		MessageBox "this is a staff"	EndIfEnd


does work. For some reason the value of "0" messes everything up, but 0 = 1handed swords. Can I get an explanation as to why this is happening please?
User avatar
Justin
 
Posts: 3409
Joined: Sun Sep 23, 2007 12:32 am

Post » Mon Nov 01, 2010 7:01 pm

Hey guys quick question. I'm writing a test script, just to learn how some functions work and I'm having trouble with "GetWeaponType". This script is supposed to display a message if the player equips a certain weapon type in the inv menu.


Spoiler
scn MFQWeaponCurse1Ref EquipedWeaponBegin MenuMode 1002Set EquipedWeapon to Player.GetEquippedObject 16	IF Player.GetWeaponType EquipedWeapon == 0		MessageBox "this is a sword"	EndIfEnd


This script doesn't work, the message will pop up on the screen every few seconds weather or not i have a sword equipped or not.

Spoiler
scn MFQWeaponCurse1Ref EquipedWeaponBegin MenuMode 1002Set EquipedWeapon to Player.GetEquippedObject 16	IF Player.GetWeaponType EquipedWeapon == 4		MessageBox "this is a staff"	EndIfEnd


does work. For some reason the value of "0" messes everything up, but 0 = 1handed swords. Can I get an explanation as to why this is happening please?


Use this instead:
IF GetWeaponType EquipedWeapon == 0
IF GetWeaponType EquipedWeapon == 4

You already stored the weapon reference in the EquippedWeapon variable, the fact that it is equipped by the player is irrelevant for the GetWeaponType function. I am surprised you even got a true in the staff example, because how you wrote that line is incorrect.
User avatar
Matt Bee
 
Posts: 3441
Joined: Tue Jul 10, 2007 5:32 am

Post » Mon Nov 01, 2010 7:55 pm

Ok, I changed IF Player.GetWeaponType EquipedWeapon to If GetWeaponType EquipedWeapon. But, i'm still having problems with the line:
IF GetWeaponType EquipedWeapon == 0. It just doesn't like the "0".

My newest test

Spoiler
scn MFQWeaponCurse1Ref EquipedWeaponBegin MenuMode 1002Set EquipedWeapon to Player.GetEquippedObject 16	IF GetWeaponType EquipedWeapon == 2		MessageBox "one hand blund"	ElseIF GetWeaponType EquipedWeapon == 5		MessageBox "Bow"	EndIfEnd


This works, i dont get the messagebox spam, it only pops up if i equip a 1hblund or a bow. I need the script to recognize "0" which is 1handed swords.

acording to the wiki:
Weapon Type:
0: Blade1H
1: Blade2H
2: Blunt1H
3: Blunt2H
4: Staff
5: Bow

EDIT: I tried this.

Spoiler
scn MFQWeaponCurse1Ref EquipedWeaponshort EquipedWeaponBegin MenuMode 1002Set EquipedWeapon to Player.GetEquippedObject 16	IF GetWeaponType EquipedWeapon == 0		MessageBox "Sword"	ElseIF GetWeaponType EquipedWeapon == 4		MessageBox "Staff"	Elseif GetWeaponType EquipedWeapon == 5		MessageBox "Bow"	EndIfEnd


I added the short because I was thinking it was reading the "0" as a boolean value true=1 or false=0 (if i'm understanding this right, i'm very new at this). But I'm getting the same results.

EDIT2: SOLVED!

Spoiler
scn MFQWeaponCurse1Ref WeaponShort WeaponTypeBegin MenuMode 1002Set Weapon to Player.GetEquippedObject 16Set weapontype to GetWeaponType Weapon	IF WeaponType < 0								;probably unnecessary		return	ElseIF WeaponType == 0		If Player.GetEquippedObject 16 == 0			return		ElseIf Player.GetEquippedObject 16  != 0			MessageBox "Sword"		EndIf	ElseIF WeaponType == 4		MessageBox "Staff"	Else													;probably unnecessary		Return	EndIfEnd


I know this is remedial scripting, but I'm proud of my self. I wish I had taken up scripting/programing a long time ago, because this is really gratifying when you get it right.
User avatar
Gemma Flanagan
 
Posts: 3432
Joined: Sun Aug 13, 2006 6:34 pm

Post » Mon Nov 01, 2010 9:10 pm

I'm trying to figure out the function "SetScript". I can't get it to work. The test script I've set up is a spell effect that sets a script to the currently equipped weapon.

The spell script that sets the script
Spoiler
scn MfSpellSetScriptRef WeaponRef MfSetScriptTarBegin GameModeSet Weapon to Player.GetEquippedObject 16Weapon.SetScript MfSetScriptTar Player.UnequipItem weaponPlayer.EquipItem WeaponEnd


The simple test script
Spoiler
scn MfSetScriptTarShort ControlVarBegin OnEquip	If ControlVar == 0		MessageBox "Test 1 2 3"		Set ControlVar to 1	EndIfEnd


The spell script un/re-equips the weapon which I thought would start the OnEquip script on the weapon. But it doesn't.
User avatar
Jason Rice
 
Posts: 3445
Joined: Thu Aug 16, 2007 3:42 pm

Post » Mon Nov 01, 2010 8:11 pm

scn MFQWeaponCurse1Ref WeaponShort WeaponTypeBegin MenuMode 1002Set Weapon to Player.GetEquippedObject 16Set weapontype to GetWeaponType Weapon	IF WeaponType < 0								;probably unnecessary		return	ElseIF WeaponType == 0		If Player.GetEquippedObject 16 == 0			return		ElseIf Player.GetEquippedObject 16  != 0			MessageBox "Sword"		EndIf	ElseIF WeaponType == 4		MessageBox "Staff"	Else										;probably unnecessary		Return	EndIfEnd


Try this:

Spoiler
scn MFQWeaponCurse1Ref WeaponShort WeaponTypeBegin MenuMode 1002Set Weapon to Player.GetEquippedObject 16If Player.GetEquippedObject 16 == 0				;If no weapon is equipped the script stops here	returnEndifSet weapontype to GetWeaponType Weapon				;Now you are sure that player has a weapon equipped	If WeaponType == 0		MessageBox "Sword"	ElseIF WeaponType == 4		MessageBox "Staff"	EndIfEnd

User avatar
Richard Dixon
 
Posts: 3461
Joined: Thu Jun 07, 2007 1:29 pm

PreviousNext

Return to IV - Oblivion