http://skyrim.nexusmods.com/mods/19668/
I'm pasting the description from the Nexus. If anybody has any ideas on how to make this work better, I'm very willing to listen. The script sources are included in the mod, but I'll paste them here as spoilers:
INITIALIZATION SCRIPT
Spoiler
Scriptname DeathlessSJinit extends Quest
int property DEAsprint auto
int property DEAforw auto
int property DEAjump auto
int counter
int switch
Quest property DEAjumpit auto
;===========================================
Event OnInit()
RegisterForSingleUpdate(0.1)
EndEvent
;===========================================
Event OnUpdate()
if switch < 4
RegisterForSingleUpdate(0.01)
EndIf
if switch == 0 && (!Utility.IsInMenuMode())
switch = 1
Debug.MessageBox("Keep your Sprint key pressed and click OK, then wait for a confirmation message before releasing the key")
EndIf
if DEAsprint == 0
counter = counter + 1
if counter > 265
counter = 0
EndIf
if input.IsKeyPressed(counter)
DEAsprint = counter
counter = 0
Debug.Notification("Sprint key captured!")
EndIf
Else
if switch == 1 && (!Utility.IsInMenuMode())
switch = 2
Debug.MessageBox("Keep your Forward key pressed and click OK, then wait for a confirmation message before releasing the key")
EndIf
if DEAforw == 0
counter = counter + 1
if counter > 265
counter = 0
EndIf
if input.IsKeyPressed(counter)
DEAforw = counter
counter = 0
Debug.Notification("Forward key captured!")
EndIf
Else
if switch == 2 && (!Utility.IsInMenuMode())
switch = 3
Debug.MessageBox("Keep your Jump key pressed and click OK, then wait for a confirmation message before releasing the key")
EndIf
if DEAjump == 0
counter = counter + 1
if counter > 265
counter = 0
EndIf
if input.IsKeyPressed(counter)
DEAjump = counter
counter = 0
Debug.Notification("Jump key captured!")
switch = 4
DEAjumpit.Start()
EndIf
EndIf
EndIf
EndIf
EndEvent
;===========================================
int property DEAsprint auto
int property DEAforw auto
int property DEAjump auto
int counter
int switch
Quest property DEAjumpit auto
;===========================================
Event OnInit()
RegisterForSingleUpdate(0.1)
EndEvent
;===========================================
Event OnUpdate()
if switch < 4
RegisterForSingleUpdate(0.01)
EndIf
if switch == 0 && (!Utility.IsInMenuMode())
switch = 1
Debug.MessageBox("Keep your Sprint key pressed and click OK, then wait for a confirmation message before releasing the key")
EndIf
if DEAsprint == 0
counter = counter + 1
if counter > 265
counter = 0
EndIf
if input.IsKeyPressed(counter)
DEAsprint = counter
counter = 0
Debug.Notification("Sprint key captured!")
EndIf
Else
if switch == 1 && (!Utility.IsInMenuMode())
switch = 2
Debug.MessageBox("Keep your Forward key pressed and click OK, then wait for a confirmation message before releasing the key")
EndIf
if DEAforw == 0
counter = counter + 1
if counter > 265
counter = 0
EndIf
if input.IsKeyPressed(counter)
DEAforw = counter
counter = 0
Debug.Notification("Forward key captured!")
EndIf
Else
if switch == 2 && (!Utility.IsInMenuMode())
switch = 3
Debug.MessageBox("Keep your Jump key pressed and click OK, then wait for a confirmation message before releasing the key")
EndIf
if DEAjump == 0
counter = counter + 1
if counter > 265
counter = 0
EndIf
if input.IsKeyPressed(counter)
DEAjump = counter
counter = 0
Debug.Notification("Jump key captured!")
switch = 4
DEAjumpit.Start()
EndIf
EndIf
EndIf
EndIf
EndEvent
;===========================================
POLLING SCRIPT
Spoiler
Scriptname DeathlessSprintJump extends Quest
Quest property DEAJSinit auto
DeathlessSJinit property externals
DeathlessSJinit Function Get()
If !GetData
GetData = http://forums.bethsoft.com/topic/1393054-rel-deathless-sprint-jump/True
ReturnVal = (DEAJSinit) as DeathlessSJinit
EndIf
return ReturnVal
EndFunction
Function Set(DeathlessSJinit NewValue)
If !SetData
SetData = http://forums.bethsoft.com/topic/1393054-rel-deathless-sprint-jump/True
ReturnVal = NewValue
EndIf
EndFunction
Endproperty
Bool GetData = http://forums.bethsoft.com/topic/1393054-rel-deathless-sprint-jump/False
Bool SetData = http://forums.bethsoft.com/topic/1393054-rel-deathless-sprint-jump/False
DeathlessSJinit ReturnVal
int myjump
int mysprint
int myforw
int flagger
;===========================================
Event OnInit()
mysprint = externals.DEAsprint
myforw = externals.DEAforw
myjump = externals.DEAjump
if myjump != 0
debug.MessageBox("Sprint & Jump Initialized")
RegisterForSingleUpdate(0.1)
endif
EndEvent
;===========================================
Event OnUpdate()
if Game.GetPlayer().IsSprinting()
if input.IsKeyPressed(myjump)
input.ReleaseKey(mysprint)
input.ReleaseKey(myjump)
flagger = 0
endif
endif
if input.IsKeyPressed(mysprint) && !Game.GetPlayer().IsSprinting() && input.IsKeyPressed(myforw) && flagger == 0
input.TapKey(myjump)
flagger = 1
endif
if input.IsKeyPressed(mysprint) && !Game.GetPlayer().IsSprinting() && input.IsKeyPressed(myforw) && flagger == 1
input.HoldKey(mysprint)
flagger = -1
endif
RegisterForSingleUpdate(0.01)
EndEvent
;===========================================
Quest property DEAJSinit auto
DeathlessSJinit property externals
DeathlessSJinit Function Get()
If !GetData
GetData = http://forums.bethsoft.com/topic/1393054-rel-deathless-sprint-jump/True
ReturnVal = (DEAJSinit) as DeathlessSJinit
EndIf
return ReturnVal
EndFunction
Function Set(DeathlessSJinit NewValue)
If !SetData
SetData = http://forums.bethsoft.com/topic/1393054-rel-deathless-sprint-jump/True
ReturnVal = NewValue
EndIf
EndFunction
Endproperty
Bool GetData = http://forums.bethsoft.com/topic/1393054-rel-deathless-sprint-jump/False
Bool SetData = http://forums.bethsoft.com/topic/1393054-rel-deathless-sprint-jump/False
DeathlessSJinit ReturnVal
int myjump
int mysprint
int myforw
int flagger
;===========================================
Event OnInit()
mysprint = externals.DEAsprint
myforw = externals.DEAforw
myjump = externals.DEAjump
if myjump != 0
debug.MessageBox("Sprint & Jump Initialized")
RegisterForSingleUpdate(0.1)
endif
EndEvent
;===========================================
Event OnUpdate()
if Game.GetPlayer().IsSprinting()
if input.IsKeyPressed(myjump)
input.ReleaseKey(mysprint)
input.ReleaseKey(myjump)
flagger = 0
endif
endif
if input.IsKeyPressed(mysprint) && !Game.GetPlayer().IsSprinting() && input.IsKeyPressed(myforw) && flagger == 0
input.TapKey(myjump)
flagger = 1
endif
if input.IsKeyPressed(mysprint) && !Game.GetPlayer().IsSprinting() && input.IsKeyPressed(myforw) && flagger == 1
input.HoldKey(mysprint)
flagger = -1
endif
RegisterForSingleUpdate(0.01)
EndEvent
;===========================================
I have always found it incredibly annoying how the sprint feature in Skyrim doesn't allow you to jump while sprinting. It just makes no sense.
This mod right now allows you to jump without releasing the sprint key. I'd like the jump to be longer if you do it during a sprint, but right now I think this is impossible to accomplish.
The jump height and length can be changed through the game's console, but right now there's no way to do it with a script that I know of.
I can just hope console functions will get introduced to Skyrim Script Extender to allow me to do this. Or even better, a function to directly change game settings, which is probably on the way.
So this mod just allows you to sprint, make the usual anol-retentive jump while you're sprinting and then keep on sprinting. There will be a small delay between your jump key press and the actual jump, this is due not only to script lag (a particular SKSE event type is on the way which should make things better), but also to the way the game blocks your jump unless you've completely finished sprinting (it's hard coded).
My advice is to get your timing right, press the key a little bit early and keep it pressed for a fraction more than usual while you're sprinting, so you can be sure the script will receive your input.
The first time you start the game after installing the mod, an initialization procedure will begin where you'll have to follow instructions on screen. Basically, you'll need to keep the required key pressed, click Ok while keeping it pressed and wait for confirmation before releasing it. This is done to tell the script which keys you are using for jumping, moving forward and sprinting. I plan to make this procedure much smoother if Skyrim Script Extender will get updated with functions similar to OBSE's getcontrol() functions.
REQUIREMENTS:
Skyrim 1.6.89, SKSE 1.5.9
INSTALLATION:
Use NMM or just install manually the usual way.
UNINSTALLATION:
Again, use NMM or manually delete the files, including the scripts.
COMPATIBILITY:
This mod is compatible with anything else, load order doesn't matter.
Thanks to all the guys who have helped me transition from Oblivion scripting to Skyrim scripting, ThomasKaira from TESAlliance in particular.

)