Difference between revisions of "OBSE Wishes Fulfilled"

8,198 bytes added ,  11:40, 6 January 2010
Moved a lot of stuff from the wishlist
imported>Scruggs
(add stuff)
imported>Shademe
(Moved a lot of stuff from the wishlist)
Line 140: Line 140:


==OBSE 0018 (forthcoming) ==
==OBSE 0018 (forthcoming) ==
Some of the requested functionality is already present in the current stable release.
*'''setPackageTarget''' - like addScriptPackage, except it takes a reference as a parameter which then serves as the target of the package.
*'''setPackageTarget''' - like addScriptPackage, except it takes a reference as a parameter which then serves as the target of the package.
*'''SetDebugMode''' - This function currently accepts the mod index to enable debugging on, and a boolean value as to whether debugging should be enabled or disabled.  Changing the boolean value to an integer would provide greater functionality, such that 0 = turn off debugging, 1 = debug to console only, 2 = debug to log file only (see below), and 3 = debug to console and log file.  In short, it would provide the ability to write mod-generated debug text to a log file.  Perhaps the log file could be called "OBSE<ModIndex><Date><Time>.log", and would be created in the OBSE subdirectory of the Oblivion\Data\ folder, but these are just suggestions, this format can and should be altered to meet with OBSE standards and conventions.  Also, each entry in the log file should have a timestamp written before each line.
: Can be implemented as an user function. Use [[:Category:ConScribe|ConScribe]] for text logs.
*'''messageNoDelay''' - causes the to be displayed immediately, even if another message is currently being displayed.
: Use [[printToConsole]] instead.
*'''GetPlayerCameraAngle''' - Like GetAngle Z except detects the angle the player is looking instead of the angle the horse is heading when the player is on horseback.
: ''player.getHeadingAngle horseRef'' could be useful here.
*'''GetDisease''' - Return if the calling actor gets diseased.
: Can be ascertained by using [[:Category:Magic Functions - Active Effect (OBSE)|Active Effect functions]].
*'''Activate2''' - Exactly like Activate but with an unlimited nesting limit (currently only 4-5 scripts started with '''Ref.Activate player, 1''' will run at once while there is no limit on result scripts)
* '''CastByPlayer'''/'''Cast2''' - combine a [[Cast]] call with [[SetPlayerProjectile]] call on the projectile fired by the Cast, to avoid having to loop through references to find the projectile cast.
: Use '''getProjectile'''.
*'''GetModVersion/fModVersion''' - fModVersion is a variable that is available uniquely to any mod, and can be set from any script in that mod (thinking along the lines of fQuestDelayTime for quest scripts).  Then, any mod (including the original) can call GetModVersion, passing the esp ID or the mod's filename, to return the version of that plugin (though it's artificial; the modder explicitly sets the version by defining the fModVersion variable).  This would greatly aid in creating mods that are meant to be compatible with multiple versions of another mod.  If fModVersion is too difficult to implement, SetModVersion could be a function that has the same effect as setting fModVersion manually.
: Use '''getFormFromMod''' to pick an object that stores version info.
*'''GetUnusedLabel''' - Return an unused label number. If we run out of label numbers, return -1. Looping is absolutely great, but when using ''label'' & ''goto'' in stage functions, I found it would be a problem that I had to specify the label number. I couldn't assure that label numbers I used were unused. So I think it'd be helpful to this kind of situation.
: Use While .. Loop control structures instead.
*'''GetMouseX/GetMouseY''' - Returns current mouse position.
: Use '''getCursorPos'''.
*'''MagicItemHasEffectAndActorValue(/Code/Count/CodeCount)''' - Returns whether the magic item has the specific effect and actor value (i.e., the magic item has "Fortify Intelligence", rather than the magic effect "Fortify Attribute"). Also accepts 256/No Actor Value.
: Can be ascertained by using [[:Category:Magic Functions - Magic Item (OBSE)|Magic Item functions]].
*'''CopyName for Magic Effects''' - Copies the name of the magic effect unto an item. Might also be able to get around this by making a function that returns the reference of the magic effect, and feeding that reference to the standard CopyName.
: Use '''getMagicEffectName'''.
*'''Console functions'''
: Use '''runScriptLine'''.
*'''PlayMusic''' - [[StreamMusic]] is horribly buggy. A cleaner version which overrides combat music would be ideal.
:'''StopMusic''' - stops a mp3 file played with the above or with [[StreamMusic]].
:'''GetMusicPlaying''' - returns the filename of the currently playing track?
:: Use the '''Enhanced Music and Control/SoundCommands''' OBSE plugin.
*'''PlayEffectSound Effect SoundType''' - Plays the sound effect of a spell effect. SoundType is an integer that determines if it plays the cast, bolt, hit, or area sound.
: Use [[playSound]] with '''getMagicEffectHitSound'''.
*'''getCaster''' - in a scripted spell, returns a reference to the object or actor which cast the spell.
: Use [[getNthActiveEffectCaster]].
*'''getCurrentAnim''' - Returns the currently playing animation.
: Use '''animPathIncludes'''.
*'''changeAnimFilepath''' - Changes the filepaths used for the player anims by script effect, so he/she e.g. floats like a lich always when a "Lichdom"-effect effects him/her.
: Use '''toggleSpecialAnims'''.
*'''setCameraDistance''' - In third person view, adjusts the camera's distance from the player.
: Use [[setNumericGameSetting]] to modify the appropriate GMST.
*'''fadeIn/fadeOut''' ''duration'' - Fades the screen to or from black over the given duration.
: Use the '''Oblivion Graphics Extender''' OBSE plugin.
*'''closeMenu''' - Closes all open menus.
: Use '''closeAllMenus'''.
*'''TriggerShader''':  Adds a shader to the PC camera, the shader could be defined in an INI or via another function (see talk: Custom Shaders).
: Use the '''Oblivion Graphics Extender''' OBSE plugin.
*'''PlayAnimationSourceFile''': Plays animations directly from a source file on the specified actor.
: Set up idles and use [[pickIdle]].
*'''GetFirstRefInContainer''' - Like GetFirstRef, but returns a reference to first item in a container.
: Use [[getInventoryObject]].
*'''getNearest ''integer'' ''type'''''  - Returns a reference to the nearest object to the calling reference.  ''Type'' specifies which type of reference - Actor, Activator, etc.  So, for example, ''player.getNearest 6 NPC'' will return the sixth closest NPC to the player.
: Use '''getFirstRef/getNextRef''' with [[getDistance]].
*'''getTelekinesisRef''' - Returns reference of the object player is currently targeting with telekinesis.
*'''GetTeleportMarker''' - Return teleport marker associated with the door that called the function
: Use '''getTeleportCell''' instead.
*'''IsStill''' - Returns true if the actor is not moving any of its body parts - providing that it has body parts - by itself at all (e.g. standing still, flying still, jumping still, swimming still, falling still, being crashed or limbs moved by only other actors - not the actor himself, etc).
: Use '''isAnimGroupPlaying'''.
*'''GetIsSummon''' - Returns true if the calling actor is a summoned creature (a normal summon associated with one of the "Summon" spell effects). This would allow scripters to avoid issues where the reference is destroyed when the spell effect ends or creature is killed.
: Use the [[isSummon]] user function.
*'''GetActorMagicEffectMagnitude [Effect]''' - Returns the total magnitude of a particular magic effect from all spells/abilities/etc affecting an actor.
: Use [[getTotalActiveEffectMagnitude]].
*'''GetTextFromDialog''' - retrieve dialog text, manually entered text, or the answer options that the user can choose /this would make only sense if we had string manipulation routines, too, such get Trim(), Substr(), Compare(), Catenate()/. Would be great for some puzzles...
: Use '''getMenuStringValue'''.
*'''Get/Set/ModWaterHeight''' - change the height of water in an Interior cell
: Use '''setCellWaterHeight'''.
*'''IsPCUnderArrest''' - return a boolean indicating whether the player is chased by any guard.
: Use '''getFollowers'''.
*'''GetGameDifficulty''' - Returns current game difficulty.
*'''GetPoison''' - Returns the poison applied to the calling weapon reference.
: Use '''getEquippedWeaponPoison'''.
*'''SetCurrentCharge''' - Sets the charge of the calling reference (getcurrentcharge already exists)
*'''SetCurrentHealth''' - Sets the health of the calling reference - for objects,not actors (getcurrenthealth already exists)
Anonymous user