Other user's assetsAll the assets in this file belong to the author, or are from free-to-use modder's resources
Upload permissionYou are not allowed to upload this file to other sites under any circumstances
Modification permissionYou must get permission from me before you are allowed to modify my files to improve it
Conversion permissionYou are not allowed to convert this file to work on other games under any circumstances
Asset use permissionYou are allowed to use the assets in this file without permission as long as you credit me
Asset use permission in mods/files that are being soldYou are not allowed to use assets from this file in any mods/files that are being sold, for money, on Steam Workshop or other platforms
Asset use permission in mods/files that earn donation pointsYou are allowed to earn Donation Points for your mods if they use my assets
Author notes
The mod is fully open source, feel free to look at the source and lift stuff you want for your own plugin. Just don't reupload the whole thing please, and if you lift features 1/1 some credit would be nice
File credits
This author has not credited anyone else in this file
Donation Points system
Please log in to find out whether this mod is receiving Donation Points
Better Third Person Selection - BTPS (SE) Russian Translate
Changelogs
Version 0.8.1
fixed: coc from main menu instead of pressing new game/load/continue not enabling the selection widget until reloading
changed: object overrides (previously objectFilterList) are now in a separate folder, allowing to add custom override files, as with filters. If you've made any changes to the file previously called ObjectFilterList.toml or ObjectFilterList_Default.toml, those should be moved to the "Overrides" folder, into a .toml file of your choosing
added: moreHUD compatibility code again. Seems stable. If you still get stability issues, try disabling moreHUD compatibility in the MCM and see if issues persist
changed: more accurate screen clamp for DebugAPI. Shouldn't really be relevant
reenabled old QuickLoot (RE/EE) hooks. Probably still not compatible (switch to QuickLootIE), but should at least not flicker erratically
fixed: widget/selection not updating for beastForm or followerCommand (should disable selection and 3D widget temporarilly, which wasn't working previously)
Version 0.8.0
theoretically improved stability by significantly improving thread safety. Might fix threading related CTDs
added: 3D widget fading (fading in/out)
added: a few manual collision overrides to improve 3D widget positioning (such as Helgen gate and 'missives' board)
improved screen clamping algorithm for 3D widget to be less disorienting when running past objects
MoreHUD compatibility is disabled for now while I fix issues with it and figure out how to make it thread safe. You can still use MoreHUD without issues, the UI widget just won't move with the BTPS 3D widget.
fixed: widget flickering in some configurations
removed: deprecated QuickLoot compatibility hooks. Should work better with newer versions of QuickLootIE
added: new filter functions for value per weight, to make it easier to filter misc stuff you actually want
Version 0.7.1
compatibility with QuickLootIE
fixed: filter function LocationHasKeyword not working as intended if no location exists for some reason
fixed: 3D widget position for minedoorload01.nif
Version 0.7.0
fixed: ignoring collision boxes and some other edge cases. Should fix a whole bunch of false positives (such as the door in the starting room for Alternate Start)
fixed: mousewheel not being disabled while cycling selection
changed: now, multiple filter preset files can be created. Please be aware though, that the location of the filter files has changed. If you have custom filters, you need to move your files to the "Filters" folder.
fixed: rotation for custom collision objects. Should fix weird selection on cupboard
fixed: some double doors that had 3 activators (left, right and one in the center; removed the center one.) There's probably still more, though
changed: 3D widget is now displayed above, instead of below, for horses
Version 0.6.1
added full compatibility with QuickLoogEE-NG (thank you, Faen)
added priority setting for NPCs, making it easier to select NPCs instead of items. Especially useful when trying to select vendors across shop counters
Possibly fixed a CTD related to Scaleform logger allocation (?)
fixed a minor issues with some filter functions not inverting correctly with '!' under specific circumstances
Version 0.5.8
Most likely fixed random freezes some people were experiencing
fixed: ash piles and similar objects without collision node having invalid 3D widget position
fixed: MoreHUD compatibility on ultrawide resolutions, overlapping icons should now look a lot better
fixed: 3D widget position on amethyst claw door keyhole
Version 0.5.7
hotfix that should enable support for versions other than 1.6.640
Version 0.5.6
Updated to current AE version, now using CommonLibNG, so a single dll should work for SE/AE (thank you for the merge request mikewhy!)
fixed: wrong MCM description for WidgetSizeMin
fixed: AutoLoadDoors display (the 2D text before changing cell, such as entering a cave)
fixed: rare CTD
fixed: tons of 3D widget position for individual objects (mostly various doors)
fixed: made cupboards easier to be interacted with. To make this possible, a new feature allows to add custom collision objects on a per model basis to finetune the selection even further
slightly improved 3D widget position on some creatures, such as horses
added filter function "IsEmptyContainer"
fixed: book filter functions not working
fixed: claw door 3D widget positioning on languages other than English
hotfix that should enable support for versions other than 1.6.640
Version 0.5.5
added compatibility for QuickLootEE
possibly fixed a rare CTD some people get
added a workaround for issues with MoreHUD compatibility on non-standard aspect ratios. You can disable BTPS moving around MoreHUD widgets at all through the BTPS MCM now. Requires a restart to reset the MoreHUD widgets
fixed: accidentally overridden file "ObjectFilterList_default.toml" - which undid a bunch of optimizations I did to 3D widget positions and interaction points (such as claw doors)
fixed: selection cycling being a bit unreliable in some instances
fixed: some rare cases where objects cannot be selected by looking at them directly with the crosshair (caused issues with claw doors for example)
Version 0.5.2
optimized raycasts so a lot less of them will have to be performed most of the time
added MCM option to change the z (up/down) offset of all widgets - separate option for first person if you want to use BTPS selection in first person
added MCM option to enable/disable BTPS filters for native crosshair selection
fixed: filters MCM page clearing some data (such as filter descriptions) and not properly working anymore after 10 seconds
improved log output in a few places - among others, BTPS always output it had detected MoreHUD even when it hadn't
fixed: placement of 3D widget on various doors and other objects
fixed: rare UI CTD
fixed: selection widget not showing if using coc from main menu instead of loading game or starting new game
fixed: filters sometimes being able to override eachother when they shouldn't. Makes using multiple filters at the same time that filter/restore the same object types more reliable
added new filter preset: "Stealing Only While Undetected" - filters all stealable objects if the player is detected by somebody
Version 0.5.1
fixed: broken MCM due to trailing comma in the json - sorry about that
Version 0.5.0
added: FilterPresets - big feature that allows user-created elaborate filters, such as disabling certain object types while a key is pressed, or filtering objects by value. See BTPS wiki for more info
added: ObjectOverrides - allows making edits to some of the BTPS selection values and 3D widget position on a per object basis. This system also has been used to fix a few objects such as chests with multiple activation spots and improved some 3D widget positions such as dragon claw doors. Can be configured by user. See BTPS wiki for more info
improved: UI performance
added: plugin API
updated TrueHUD / True Directional movement API - if you had issues with the new TDM version, this should fix it
fixed: some overlapping NPC names with TrueHUD - thank you to Ersh for adding the required function to the TrueHUD API!
changed: filter 'Stealing requires Sneaking' now filters all containers, even with QuickLootRE installed
added: default filter preset to hide furniture while sneaking
added: default filter preset to hide stealable objects while sitting
improved: hold to dismount - now takes a minimum hold time so the proress circle doesn't immediately appear
fixed: CTD due to garbage collection
fixed: widget flickering if using 3D widget with native selection algorithm
fixed: harvested plants being accepted by native crosshair selection causing plants to be awkward to pickup if placed very close to eachother
fixed: BTPS widget still being enabled in some circumstances where player controls are disabled - there may be more
fixed: various issues with non 16/9 resolutions
fixed: 2D widget not showing for empty containers with QuickLootRE installed
added compatibility: Immersive First Person View (requires IFPV detector plugin on IFPV download page)
changed: selection cycle modifier key is now optional. If unbound via MCM, selection cycle works without it
improved modifier key detection - should be a little more reliable
fixed: selection widget "flickering" when changing/clearing selection
fixed: MoreHUD displaying rectangles when there are MoreHUD icons present
fixed: with TDM and TrueHUD installed, combatant names on 2D widget being disabled while in combat
fixed: some rare objects without name not being interactable. Only works using native crosshair selector
fixed: some things that shouldn't be interactable (such as companions werewolf cave entrance)
Version 0.4.0
added Anniversary Edition build
improved compatibility with mods altering the activation text, such as "Just Do It" etc.
improved hiding widgets for combat participants to avoid overlaps with True Directional Movement
fixed: missing location text for auto load doors
fixed: missing item info when using the telekinesis spell
reloading ObjectFilterList.toml when leaving MCM to allow quicker configuration
minor optimizations
changed: clamping 3D widget to the screen to avoid it being hard to see on large objects
fixed stealing requires sneaking for some missing object types
Version 0.3.3
added: filter to hide stealable objects if not sneaking
fixed: various triggers and markers that should be invisible. Did I catch all of them? Nobody knows
fixed: with QuickLootRE installed, locked containers weren't showing a display name while in 2D widget mode
fixed: being able to feed multiple times and pick up items while in beast form. I disabled the custom object selection (but not the 3D widget) in beast form
fixed: CTD for objects without BSX flag
changed: some UI refactoring, with some minor fixes
added: compatibility for MoreHUD, as long as neither SkyHUD nor NordicUI is installed. The latter mess with the screen rect in a way I haven't been able to figure out yet
Version 0.3.2
added: disabling widget and selection when controls are disabled or during TFC
UI fixes: fixed: widget not being hidden when some menues are opened, some issues with widget flickering etc.
fixed: npcs being selectable in combat with native crosshair selector
added: german MCM translation
improved sub object detection a bit for some objects. Works better for dessicated corpses for example
fixed: activate button sometimes being visible if no activate text is supplied
added: hiding MoreHUD icons (such as the book read "eye" icon) for now. Moving those icons in the correct position is planned
Version 0.3.1
I dun goofed. I uploaded an older file for 0.3.0. This one should work...
Version 0.3.0
added: compatibility with lots of UI mods, including Simple Activate and People are Strangers that change the activate text
fixed: issues where some UI events would be canceled by hiding/showing selection widget menu - such as commanding companions by using the dialog option
fixed: selection widget being shown in some menus and on top of message boxes
fixed: some editor triggers still being displayed. This time hopefully for real
added: MCM debug option to display some furniture markers
fixed: selection widget being displayed while player controls are disabled
changed: disabling custom object selection and 3D widget while commanding follower
Version 0.2.6
derp - quick fix for invisible marker on ore mines
Version 0.2.5
added: MCM option to hide item info (such as weight and value)
added MCM options to disable custom object selection or 3D widget in combat or with weapon drawn
fixed (hopefully): showing triggers that should be invisible
fixed: selection widget not showing immediately when starting a new game
fixed: obscure bug where dismounting from a horse, then - still with the horse as selection target - going into the pause menu and saving would cause the character to mount the horse again
Version 0.2.4
added: continuous object cycling. If enabled, will cycle over the last object and start at the beginning again
fixed: 3D widget rendered in wrong location for reanimated corpses
fixed: ash piles and ghostly remains not being recognized by object selection
fixed: ore mines showing an invisible marker called "This should not be visible"
probably fixed: some markers from DyndoLOD being selectable that are supposed to be invisible. Names like that can now be filtered by being added to "MCM\config\BetterThirdPersonSelection\ObjectFilterList.toml"
fixed: some potential issues with HUD elements not showing. If it still doesn't work, the log file should now be a lot more informative, so send me that if the widget doesn't show up
fixed: a bunch of CTDs
Version 0.2.3
fixed: not being able to pick up fired projectiles
fixed: widget not being hidden in some menues, including dialog menu, which meant in first person mode, two separate widgets would overlap
added a few nullchecks in the UI to possibly avoid CTDs in some unlikely cases
compiled with debug info so I can actually make sense of future crash logs without having to reverse engineer my own code...
Ever since Skyrim was first released, I was annoyed with its 3rd person mode. As somebody who loves 3rd person RPGs most out of every game genre, It's underwhelming to say the least.
Now with the advent of mods like True Directional Movement and SmoothCam, 3rd person is finally starting to be fully playable and enjoyable. But in my quest to play Skyrim without ever going into first person again, I still noticed one glaring issue: selecting objects from 3rd person can be incredibly annoying - the smaller the object, the more annoying it gets.
The game's crosshair selection was developed with first person gameplay in mind, and in 3rd person it just feels clunky and annoying.
Cue... Better Third Person Selection!
What does it do exactly?
With Better Third Person Selection, selecting objects works more like in true 3rd person RPGs. Instead of aiming directly at an object, you just have to aim in the general direction of it and BTPS will choose an object for you. It then seamlessly ties the result back into the native game code to ensure maximum compatibility with other mods.
This makes it much easier to select small objects, such as gold coins in dark environments, or arrows in high grass. It's also a lot easier to use with a controller.
Skyrim has tons of clutter that can be picked up by the player. Most third person RPGs avoid this, because it makes it more difficult to precisely pick up the objects you want.
With BTPS I had to come up with a few things to improve this; obviously I can't just remove all the clutter items. Alongside camera angle and distance, here are a few more factors BTPS uses to determine the selection target, all of which are fully configurable in the MCM:
Object Type: misc items are focused less likely
Object Value: depending on the gold value of an item, selection is favored
Native Selection: this can be used to favor whatever object the native game's selection came up with. In case BTPS fails with a specific item, it will still take into account what the base game came up with - this way you don't end up with things that just can't be interacted with for whatever reason. If you raise this to the maximum, BTPS will always select what's under the crosshair, if present.
Another thing to improve precision is the ability to cycle between all objects in range, using (default:)shift + mousewheel. This will cycle between objects based on their priority determined by the selection algorithm. Basically, if you press shift and scroll up once, it will select whatever object BTPS would've selected if the currently selected object didn't exist.
Showcase
3D widget
To make it more clear which object is currently selected, BTPS provides a 3D selection widget. It will hover over whatever object is currently selected. This can be enabled separately from the selection algorithm in the MCM.
Horseback support
While I was at it, I enabled my new object selection algorithm when on horseback. You can now pick up objects, loot containers, talk to people or catch butterflies all without dismounting your trusty steed. The MCM provides various settings specific to gameplay on horseback.
To make dismounting less annoying with lots of objects closeby, by default Hold To Dismount is enabled, which requires you to hold the dismount button for a little before dismounting. It will display a progress circle that fills up the longer the dismount button is held down.
Horseback interaction showcase
Customization
BTPS allows for extensive user configuration, either through the MCM for the more simple configuration and through config files for advanced customization.
Filter Presets
Since version 0.5.0 BTPS supports elaborate user created filters for the object selection through Filter Presets. Filter presets allow hiding objects or object types under configurable conditions, such as hiding furniture while sneaking, or hiding objects below a certain gold value if a certain key is pressed. For more info, the BTPS wiki has a detailed guide:
> Q: my game crashes on startup > A: make sure you have all the requirements installed. Also, update your SKSE and AddressLib. I've had reports that the game crashes if attempted to be used with SKSE version 2.017 and lower. Same for older versions of AddressLib. Nothing I can do about that, you'll just have to update
> Q: I get CTDs during gameplay (and I'm 100% sure it's caused by BTPS) > A: make 100% sure you're on the latest version of BTPS, SKSE and AddressLib. If you still get CTDs, I will need two things: 1) a way to reproduce the crash, 2) a full crashlog, which can be generated using .NET Script Framework for example. If you can only provide one of those two things, chances for me to fix the crash are severely reduced. If you don't provide either, there is nothing I can do :/ I will also need to know if you're using the anniversary version of Skyrim (1.6.x) or not
> Q: there are weird, floating markers in area <insert area> / when I do <insert action>, that shouldn't be selectable > A: make sure BTPS is updated to the latest version. If the markers still remain, open a bug report on Nexus or GitLab with detailed instructions on how to find the markers + screenshot. If the marker comes from a mod, I'm going to need to know which mod that is, otherwise I can't fix it.
In the mean time, there's a fix for this: open Data\MCM\config\BetterThirdPersonSelection\ObjectFilterList.toml with a text editing program of your choice, then add the name of the object that shouldn't be selectable into the ignore list (all lowercase, or it won't work!). Add the name between the two brackets. The name needs to be wrapped in quotation marks. Entries need to be separated by a comma
example: ignore = [ "somemarker", "someothermarker", ] If you enable Reload Filters on the debug page, you just have to open and close the BTPS MCM to reload the filters - no need to restart the game.
> Q: do I need to make a new save when installing/uninstalling/updating? > A: no, just add/remove/update the files and your save will be fine. The mod is basically script free: the only papyrus BTPS utilizes are a few lines for the MCM. Load order therefore also doesn't matter.
Compatible with caveats SkyHUD (and derivatives) If used alongside MoreHUD, MoreHUD's UI elements might be misaligned if SkyHUD's fActivatePrompt scaling is set to anything other than 1. To solve this, set fActivatePrompt to 1 in skyhud.txt Purchaseable Store-Display-Items not compatible with BTPS 'stealing requires sneaking' filter - if the filter is enabled, items can't be purchased. You could disable the filter on button press though - see the BTPS wiki on Filter Presets for more info Immersive First Person View compatible for BTPS versions 0.4.1+, requires IFPV detector plugin (under optional files on the IFPV mod page) Convenient Horses Hold To Dismount doesn't work with Convenient Horses' dismount features
This mod was built using Ryan McKenzie's CommonLib, without which none of this would be possible. Specifically I'm using PowerOf3's fork
wSkeever: for the much better logo. Thank you! Ersh from True Directional Movement: helped me out a ton with questions and with the TDM source code mwilsnd from SmoothCam: for making SmoothCam open source and one of the go to references for CommonLib development! OsmosisWrench: for helping me with the Scaleform/Flash side of things AiD72 aka Noah from the Skyrim Discord: for helping me get started with CommonLib KernalsEgg: for helping me a bunch with understanding Reverse Engineering stuff, especially virtual functions Shad0wshayd3: for helping me with Reverse Engineering stuff!