0 of 0

File information

Last updated

Original upload

Created by


Uploaded by


Virus scan

Safe to use



View as plain text

IFPV 2.8+ Configuration Documentation

1. How configuration file works.
2. Variables.
3. Profiles.
4. Conditions.
5. Commands.
6. List of all variables.
7. List of all conditions.
8. List of all commands.

1. How configuration file works.

Configuration is a text file located in "Data/SKSE/Plugins/FirstPersonPlugin.txt". This file is loaded
when Skyrim is first started but it can also be reloaded any time. The file contains a list of profiles,
conditions for profiles and commands to run. A profile itself is just a bunch of commands to run when entering
profile and/or when exiting. File can have comments when a line starts with ; or # character. All commands,
conditions, profiles and variables are NOT case-sensitive.

2. Variables.

Variables can be used to control how the mod works but also to add conditions to profiles. There are four types
of variables: boolean (on or off), integer (negative or positive value without fractions), float (negative or
positive value with fractions) and string (text). First letter of variable is either b, i, f or s, this says
which type of variable it is just like in INI files of Skyrim. Variables are also divided into two categories:
one is game variables that automatically update and one are user set variables. For example FOV is a user set
variable but a value saying whether character is swimming is a game variable and can't be modified by us.

3. Profiles.

Profile is a set of commands and conditions. Profiles are selected automatically based on their conditions and
priority (how high they are in the configuration file). There are two types or profiles, one is exclusive, only
one profile of this type can be active at a time, this is which ever is the highest and matches all conditions.
The other type is not exclusive, any amount of these profiles can be active at a time. Exclusive profile names
are surrounded by [ and ], non-exclusive profile names are surrounded by { and }. If a profile has no conditions
then it will not be activated automatically and must be done manually by us through a keybind or running a command.

4. Conditions.

Profile can have conditions that must be satisfied before we select this profile. A conditions is declared with
( and ) symbol. For example a condition could be (bSwimming==true) so that we can create a profile that only
activates when character is swimming. A profile can have multiple conditions and all must be true before we can
select that profile. If a profile has no conditions then it will not be automatically selected.

5. Commands.

A profile itself is a collection of commands. When a profile is selected then it runs commands on entering profile
(activating) and when leaving profile (deactivating). Commands that start with + (or no symbol) are run when
entering profile. Commands that start with - are run when leaving profile. Commands can also start with ! when
outside of all profiles, these commands are run when the configuration is first loaded, this is good for example to
set default values or initialize key binds.

6. List of all variables.

User set (you can modify):
bEnabled - Is mod enabled or not.
bActivated - Is IFP view currently activated or not (camera is overrided).
iDebug - Debug level, set 1 to see debug messages in console. For example it shows when profiles are switched.
bHeadtrack - Enable or disable character headtracking. If true then character will turn head to crosshair.
fPositionOffsetHorizontal - Horizontal (left, right) position offset of camera in game units. Negative is left.
fPositionOffsetVertical - Vertical (down, up) position offset of camera in game units. Negative is down.
fPositionOffsetDepth - Depth (back, forward) position offset of camera in game units. Negative is back.
fRotationFromHead - Ratio of rotation to add from head. If 0 then rotation of camera is only from where you are
pointing, if 1 then rotation of camera is equal to rotation of head. 0.5 would be in between those two.
If you want camera to roll with somersault you would need value of 1.
fNearClip - This is same setting as in INI file. Setting this low will disable clipping nearby objects, but
distant terrain and objects will start to flicker.
fFOV - FOV of camera. Same as in game INI file except that we can modify it in real time. Don't set FOV at all
to just use game's value.
fTimeScale - Speed of game time. Slow time shout changes this value for example. 1 is normal speed and 0.5 is half
speed, 2 is double speed.
fRestrictAngleHorizontal - Restrict viewing too far left or right. This prevents camera from viewing too far
so that you couldn't look yourself in the eye.
fRestrictAngleVertical - Restrict viewing too far up or down. It is not recommended to set higher than 80 because
camera angle will get messed up if you look too far up.
fUpdateProfileInterval - Update profile selection every this many seconds.
bBlockFadeOut - Don't allow player model to fade out when camera is too close. This is essential when IFP view is enabled.
iFaceCrosshair - Force player to face crosshair. 0 means let game decide, -1 means free look no matter what, 1 means
camera jumps back to player center, 2 means player faces crosshair. -2 means don't face crosshair unless you are moving or aiming or attacking.
bZoomIntoIFPV - When you zoom in, instead of going to vanilla first person, activate IFPV.
bToggleIntoIFPV - When you toggle perspective with key, instead of going to vanilla first person, activate IFPV.
fExtraRotationFromCamera - Ratio of how much extra rotation to add from camera.
fCameraViewOffsetHorizontal - Horizontal offset of camera from where character is facing. You can modify it as well
but it can have some weird effects when starting to move after.
fCameraViewOffsetVertical - Vertical offset of camera from where character is facing. 0 is current character's X rotation
and not horizon! If you look down and start to move then new 0 will be where you looked last, can be a bit confusing that way.
iUnused1 - Goes up to iUnused10, you can use these internally in your configuration (as condition and such).
bDisableVATS - You can disable VATS cinematic camera. Killmoves are still allowed to happen if VATS is disabled.
fExtraRotationMouse - Add extra rotation to camera from mouse movement alone even if camera wouldn't move. This is
here only for allowing looking around during killmove but you might be able to do something with this.

Game set (can't modify):
bWalking - Character is walking.
bRunning - Character is running.
bSwimming - Character is swimming.
bSprinting - Character is sprinting.
bWeaponOut - Character has weapon, fist or magic out.
bDead - Character is dead.
bKillMove - Character is in killmove.
sRace - Editor ID of character's race. For example "DarkElfRace".
bWereWolf - Character has "werewolf" in race editor ID.
bVampireLord - Character has "vampirebeast" in race editor ID.
bDialogue - Character is in dialogue.
bMounted - Character is mounted.
bSneaking - Character is sneaking.
bCrafting - Character has crafting menu open.
bSitting - Character is sitting.
bJumping - Character is jumping or falling.
bAimMagic - Character is aiming with magic (button is held).
bAimMagicLeft - Character is aiming with magic in left hand.
bAimMagicRight - Character is aiming with magic in right hand.
bAimBow - Character is aiming with a regular bow (button is held).
bAimCrossbow - Character is shooting a crossbow (button is held).
bAttackAnyHanded - Character is attacking with a weapon (button is held).
bAttackAnyHandedLeft - Character is attacking with a weapon in left hand.
bAttackAnyHandedRight - Character is attacking with a weapon in right hand.
bAttackOneHanded - Character is attacking with a one handed weapon.
bAttackOneHandedLeft - Character is attacking with a one handed weapon in left hand.
bAttackOneHandedRight - Character is attacking with a one handed weapon in right hand.
bAttackTwoHanded - Character is attacking with a two handed weapon.
iCameraState - Current camera state. (0 - first person;1 - auto vanity;2 - VATS;3 - free;4 - iron sights;5 - furniture;6 - transition;7 - tweenmenu;8 - third person 1;9 - third person 2;10 - horse;11 - bleedout;12 - dragon)
bMounting - Character has just started to mount.
bDismounting - Character has just started to dismount.
bIsInIFPV - Camera is currently in IFPV state (active and position is overwritten).
bIsActive - Camera is active from configuration. It is possible we are not overwriting camera position now.
bIsTargetOverwritten - Camera target is overwritten by us using AttachCamera command.

7. List of all conditions.

Most conditions will just be value checks. Following operators can be used in a condition:
== equals
!= not equals
> greater
>= greater or equal
< less
<= less or equal
& contains (with string or collection)
~ not contains (with string or collection)


There are also few more conditions:
Faction - character is in faction (rank >= 0), argument is form ID with mod index
Perk - character has perk (rank >= 0), argument is form ID with mod index
Keyword - character has keyword, argument is form ID with mod index OR string.
WornHasKeyword - character is wearing equipment with given keyword.
MagicEffectKeyword - UNTESTED! (may crash game). Character has magic effect with keyword.
Value is form id with mod index or string.

8. List of all commands.

Below is a list of commands where < > means required argument and [ ] means optional argument.

set - add value overwrite from this profile, higher profiles will overwrite lower profile values. e.g. set fFOV 90
modify - add value overwrite based on current value, e.g. modify fFOV -10
return - remove value overwrite created in this profile. e.g. return fFOV
enable - enable mod if it was disabled, does nothing otherwise.
disable - disable mod if it was enabled. Don't use these two, use activate and deactivate instead.
activate - activate IFP view if possible.
deactivate - deactivate IFP view.
gothirdperson - switch to third person mode if possible, this means in game, if IFP is activated then
it switches to IFP instead of third (since IFP overwrites third person camera).
gofirstperson - switch to vanilla first person mode if possible.
returnperson - switch to whatever view was active when we first entered this profile.
setprofile [forced fTime] - set profile manually, this still checks conditions on profiles,
if fTime is zero (or no argument) then no forced time is set, profile could be left immediately if
automatic switch decides to do so. If negative then force this profile until further notice. If positive
then force this profile for that many seconds. e.g. setprofile "My sneak profile" 3
runprofile - run commands of a profile without leaving current profile, this runs both activate
and deactivate commands in that order. e.g. runprofile "My sneak profile"
inhibit - inhibit a profile for fTime seconds, that means this profile is not allowed
to be selected until time runs out. e.g. inhibit "my sneak profile" 3
bindkey [forced fTime] - bind setprofile command to a key event.
if you prefix keycode with + or no symbol then keydown event is used, if you prefix with - then keyup event
is used. modifiers: 0 - no modifiers, 1 - ctrl, 2 - shift, 3 - ctrl+shift, 4 - alt, 5 - ctrl+alt, 6 - shift+alt
7 - ctrl+shift+alt. only ONE bind can exist per event, for example F keydown event and F keyup event are
separate but if you bind F keydown again then the previous one will be removed and new one will overwrite it,
modifiers don't matter when checking for that. list of virtual keycodes can be found here:
e.g. bindkey 0x22 0 "My profile" - bind page down to set "My profile" on key down.
It is allowed to bind a key that is already being used by game (or mouse button), then both actions will happen.
bindkey2 [forced fTime] - same as previous but this one runs all
actions of a profile without switching to that profile.
unbindkey - unbind a previously bound key. Prefix with - to unbind keyup.
reload - reload configuration file.
skip - skip current profile from automatic check. means current profile will not be selected automatically even
if it has conditions. This is useful if you want to make conditional key bind but not have profile be selected
disable - disable current profile from loading. it is just ignored like it wasn't there.
attachcamera - attach camera on current crosshair target (must have the name show up). if no valid target or
re-using on same target then detach camera and go back to player.
detachcamera - detach camera and return to player if it's attached somewhere by us.
rotatex [fTime] - rotate camera horizontally by some amount over fTime (0 by default).
rotatey [fTime] - rotate camera vertically by some amount over fTime (0 by default).
sendanimevent - send animation event to current actor. same as "SAE" console command.
nothing to do with first person itself, just added it so it's possible to bind animation to hotkey.