Talk:OBSE Wish List

From the Oblivion ConstructionSet Wiki
Revision as of 22:49, 22 December 2008 by imported>Shademe (→‎Semi-Fulfilled Wishes?: Moved a function)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Disputed Changes[edit source]

If you think something should have stayed on the list or if you think a change in one of the items misinterpreted what was meant, please let us know.

GetCrosshairDistance[edit source]

How far away is the item or surface under the crosshair?

This can already be done with GetDistance using the reference returned by GetCrosshairRef and player.
response: Not if the crosshair is over terrain or water.
GetCrosshairRef returns the reference that would be activated if the player pressed activate. Terrain and water would require a completely different function. Also, it's unclear what could be done with this specific information, and a different function/request might be better suited.--Haama 18:21, 26 February 2008 (EST)
GetCrosshairPos, as in the XYZ coordinates of the intersection of the crosshair-ray with the first thing you see, would be ideal, and a wonderful addition to the scripting language. That's the one we want.
Dragoon Wraith TALK 19:00, 26 February 2008 (EST)

Dejaside's Binary Examples[edit source]

these Is______ functions suggested by Dejaside (unless noted otherwise)

  • IsEmpty - checks if container is empty. - Available - If GetNumItems returns 0.
  • IsBook - checks if item is a book - DONE
  • IsSkillBook - checks if book teaches a skill
  • IsWeapon - checks if item is a weapon - DONE
    • IsMelee - checks if weapon is melee. - Available - combination of IsWeapon and GetObjectValue 103 (weapon type). All types but 4 (Bow) are Melee.
    • IsRanged - checks if weapon is ranged - Avalilable - combination of IsWeapon and GetObjectValue 103 (weapon type). If type is 4 it is ranged.
    • IsStaff - checks if weapon is a staff - Available - combination of IsWeapon and GetObjectValue 103 (weapon type). If type is 5 it is a staff.
  • IsAmmo - checks if weapon is ammo - DONE
  • IsEdible - checks if item is edible (note: the ai uses 'restore fatigue' to determine edibility) - Available - GetObjectValue 210 (food) returns true if the ingredient is edible.
  • IsIngredient - checks if item can be used in a potion - DONE
  • IsActivator - checks if object is an activator - DONE
  • IsDoor - checks if object is a door - DONE
  • IsLoadDoor - checks if door loads a new cell
  • IsContainer - checks if object is a container - DONE
  • IsAnimated - checks whether object has an animation (?)
  • IsApparel - checks if item can be worn Available - combination of IsClothing and IsArmor.
  • IsArmor - checks if item has armor rating - DONE
  • IsRing - checks if item is a ring - Available - If GetObjectValue 3 (equipment slot) returns 6 or 7 it is a ring.
  • IsAmulet - checks if item is an amulet - Available - If GetObjectValue 3 (equipment slot) returns 8 it is an amulet.
  • IsKey - checks if item is a key - DONE
  • IsApparatus - checks if item can be used to make potions - DONE
  • IsMisc - checks if item has no value beyond its value in gold


Just wondered if consolidating some suggested functions might make things easier to read. i.e., for the various isMisc, isClothing functions, wouldn't they be better served by a single getObjectType function? Don't want the list to become overwhelming, that's all. Scruggs 22:26, 1 August 2006 (EDT)
Dragoon Wraith TALK 09:35, 2 August 2006 (EDT): Yes, as mentioned in the thread, I'm going to in charge of keeping this clean. That project comes as soon as I finally finish Danger Sense for Addiktive (tonight, probably). It'll be cleaned up by the weekend.
Dragoon Wraith TALK 12:07, 2 August 2006 (EDT): See, it's cleaned up now! And it's only Wednesday!
Anyway, Dejaside's idea was that these functions would be very easy to create for the OBSE developers, and combinations of them could be more useful than a simple GetObjectType function - for example, an ingredient with Restore Health is both edible and an ingredient - GetObjectType would only return one of these pieces of information, while having these binary tests would allow you to determine both.
  • How About a "WillRespawn()" function... Save me from duplicating a great many scriptsDejunai 10:25, 1 September 2006 (EDT)


Semi-Fulfilled Wishes?[edit source]

Several of the requests on the wish list haven't been given their own specific functions but can be partially or completely solved using existing OBSE functions. I haven't deleted them from the wishlist, but maybe they should be moved down in priority? Scruggs 20:57, 17 October 2006 (EDT)

  • isBowDrawn - A boolean function to return if player has nocked an arrow. It should be usefull to give the possibility to "unnock", but even an unnock function all by itself should be very usefull. It'd be best to be able to know also if the arrow has been fully nocked or not. I'm thinking about greater powers to be used only once a day on a single thrown arrow, without having to create a new one to simulate this effect (so without giving any possibility to stock them every day).
You can do this by checking for the length of time the attack button has been held down while a bow and arrow are equipped.
  • DisablePlayerControls2 - Disables ALL controls including mouse movements for the player, but still make the TapKey, HammerKey etc. functions work as usual. --Mandrill 06:38, 14 August 2006 (EDT) - This could be done by using DisableKey on all the keys on the keyboard, as TapKey and IsKeyPressed should still work (needs testing) - An easier way to do this is to call disableplayercontrols, disable mouse, and disablekey on the console. - Dragoon Wraith TALK: IsKeyPressed does work, I haven't tried TapKey.
  • OnJump - trigger the script when the object jumps
Considering that only the player is actually capable of jumping, this can be done by detecting when the Jump key is pressed.
I've witnessed NPCs jumping in Oblivion several times, usually when trapped behind a low object. One time I even witnessed an Imperial Legion Horseman jumping his horse (or trying, anyway) over a signpost. --JT 20:03, 25 April 2007 (EDT)
  • GetStandingActor - returns ref variable for the last actor to step onto the object. Would be hugely useful for traps.
This can be done with trigger zones placed either separately from the object or incorporated into the .nif.
  • GetCellChanged request: I dont believe changing of cells actually goes on over what OB considers a single frame. Additionally what is meant by cell changes is different if you are in/crossing an interior or exterior cells. All this aside, this method is NOT necesary. A simple quest script that tracks the player position using an Xmarker can detect this easiliy with player.GetInSameCell MyXmarker and MyXmarker.MoveTo player, coupled with player.IsInInterior commands.
Dragoon Wraith TALK: See the example at GetParentCell for a script that should emulate CellChanged from Morrowind... JOG also said that it was no good, but I didn't understand why. Perhaps you could explain it? Of course, you could do it without OBSE using an Activator and GetInSameCell/MoveTo (why do you need GetInInterior?), that also works (but is less convenient, methinks).
I dont think GetParentCell gives you what you would expect [in this script]. IsInInterior is very important if you consider that you are changing cells all the time when outside and typically it isn't your intention to detect these types of cell changes.
I think JOG's gripe with GetParentCell is that, in Morrowind, CellChanged returned true when the player entered the cell containing the scripted object. It was closer to something like an OnPlayerEntry function. While that was often more annoying than useful, I can see his point (if that is in fact his point ;)), although GetParentCell along with GetInSameCell are enough for a (somewhat clunky) workaround. :shrug: Scruggs 23:24, 25 October 2006 (EDT)
Actually you can scrub my comment on GetParentCell. Without the CS in front of me I confused this with something else and didn't realize it was an OBSE command. My method does work perfectly as a non-OBSE solution. In LTC I actually track last inside and outside locations so I can have Chaotic Intervention to teleport you to the front door of a dungeon.) GuidoBot 00:08, 26 October 2006 (EDT)
  • getObjectGrabbed - use isControlPressed and getCrosshairRef. Not exactly fool proof, but works most of the time. A catch can be setup to prevent any false-positives - shademe 22:49, 22 December 2008 (EST)

Arrays[edit source]

I noticed that there is an "Arrays" wish in the language enhancements. I think a possible (and easy to use) workaround would be using a Get/SetNthVariable function on a script, where there are variables listed as elements of the array. E.g. if I create a quest with the name arrayscript, and declare 20 variables in it, then I could determine whether the 20 variables are in decreasing order or not, with using a Label+Goto loop, to check if GetNthVariable LoopCount arrayscript == GetNthVariable LoopCount+1 arrayscript in another script. Tibixe 13:05, 5 January 2007 (EST)

That could be one way, although it would be extremely tedious to write out individual variables for each element of a sizable array; and multi-dimensional arrays would require some math on the scripter's part to figure out the index required for the variable.
For what it's worth, there's a thread on the CS forum in which we've figured out how to implement linkless lists and vectors (extensible arrays) using inventories; a vector could also be used as the basis for a linked list. Discussion here: http://www.elderscrolls.com/forums/index.php?showtopic=614540 Scruggs 22:53, 5 January 2007 (EST)
This wish is being fulfilled, and is currently in Beta. See the Bethesda Forums thread "[WIP] Pluggy" for more details and discussion.

Custom Shaders[edit source]

I'm looking for a means to add new shaders to the PC camera for new nighteye-style imaging effects, psychedelic effects (drugs/spells), and reactionary effects (variants of TriggerHitShader). This would start with scripting new imaging spells for each of the effects in Heat Vision Shader for Nighteye, Nighteye Shaders, and Nighteye Shader Replacement. Then maybe expand it to supplement custom imaging for Khajiits, werewolves, vampires, liches, and various goggles (e.g. color enhanced thermal). Adding something for skooma and maybe some poisons (mushrooms) might be good too. EDIT: All natural effects would include a key binding for toggling it on/off, unnatural would use a spell. --MegaBurn 00:25, 3 July 2007 (EDT)

You're going to want to keep an eye on Timeslip's Oblivion Graphics Extender plug-in for OBSE. I believe you can find the thread on the ESF.
Dragoon Wraith TALK 09:52, 3 July 2007 (EDT)
Thanks, I replied to the OGE thread, seems like it hasn't been updated in a while though. It really sounds good, any idea when OBSE will get plug-in support? --MegaBurn 16:32, 3 July 2007 (EDT)
OBSE sort of has plug-in support. It's disabled, but you can enable it pretty easily. A couple of OBSE plug-ins have been released (a G15 keyboard plugin, an EAX plugin) with downloads of a modified version of OBSE v0011. In v0012, presumably, they will 'officially' turn on plug-in support, so that won't be necessary. As for Timeslip, I believe his style has always been to work on things for a while, checking the thread for suggestions but not commenting, and then releasing. Not one for a lot of hyping or whatever.
Dragoon Wraith TALK 03:30, 4 July 2007 (EDT)


Valid requests for fulfilled wishes[edit source]

I've read this list again and found some requests that could be done with TSFC, but could be implemented in OBSE, such as ModNthEffectItemScriptName.

Who requested it should know that it is possible, but the OBSE team should know that someone requested that feature.

What should we do about those?

Tibixe 09:47, 26 December 2007 (EST)

I think they're also working on message stuff, so it might be best to leave it. But really, the best place to ask that question would be on the OBSE thread or via PM. They check those much more frequently.--Haama 11:27, 26 December 2007 (EST)
If you implement something in TSFC, by all means move it to the TSFC section of the Wishes Fulfilled page. If someone feels a particular function belongs in the OBSE core rather than being fulfilled by a plugin, they can comment on that page or on the forums. The implementation of something like ModNthEffectItemScriptName may very well differ between TSFC and OBSE (TSFC probably would give the option of using a stringID as a parameter), but the wish is fulfilled either way, and that's one less thing on the wish list. ;) Scruggs 18:36, 26 December 2007 (EST)