Jump to content

Photo

Proof that a player can fly in Skyrim well may be more like swimming


  • Please log in to reply
300 replies to this topic

#1
hex_ratt

hex_ratt

    Regular

  • Members
  • PipPip
  • 54 posts
For the skeptics here is youtube link:


Edited by hex_ratt, 30 September 2012 - 01:07 AM.


#2
imperistan

imperistan

    Old hand

  • Members
  • PipPipPip
  • 708 posts
So toggling TCL and changing the walking animation to the swimming animation?

#3
LoginToDownload

LoginToDownload

    Alumnus

  • Members
  • PipPipPipPip
  • 2,443 posts
Wait a second, does the Oblivion method (place a platform right under the player and angle it about) no longer work?

#4
hex_ratt

hex_ratt

    Regular

  • Members
  • PipPip
  • 54 posts

So toggling TCL and changing the walking animation to the swimming animation?


Not exactly, scripted to fly when sprinting:



#5
jimhsu

jimhsu

    Fan

  • Members
  • PipPipPip
  • 466 posts
I guess it's a simple animation swap left then?

#6
porroone

porroone

    Old hand

  • Members
  • PipPipPip
  • 596 posts
I kind of did something similar using a ring instead, when equipping it makes you fly and plays the fall iddle, I dont have any videos but here is the code if someone is interested.
Scriptname __PlyFly extends ObjectReference
import Actor

Idle property JumpFall auto
Armor property DuneFlyingRing auto
Actor property player auto

float bearing
float elevation
float speed
float posx
float posy
float posz
float move
float dtime


Event OnEquipped(actor player)
	
	RegisterForUpdate(0.01)
	player.PlayIdle(JumpFall)
	player.SetMotionType(Motion_Keyframed)
endEvent



Event OnUpdate()

	if player.IsRunning()
		
		UnregisterForUpdate()
		posx = player.GetPositionX()
		posy = player.GetPositionY()
		posz = player.GetPositionZ()
		Fly()
	else
		
	endIf
	
endEvent

function Fly()
	
	bearing = player.GetAngleZ()
	if player.GetAngleX() > 10
		elevation = -50
	elseif player.GetAngleX() < -10
		elevation = 50
	
	elseif player.GetAngleX() > -10 && player.GetAngleX() < 10
		elevation = 0
	endif
	
	speed = 10000
	
	if bearing < 90 
		posx += (bearing)*100
		posy += (90 - bearing)*100
	elseif bearing > 90 && bearing < 180
		posx +=(180 - bearing)*100
		posy +=(90 - bearing)*100
	
	elseif bearing > 180 && bearing < 270
		posx += (180 - bearing)*100
		posy += (bearing - 270)*100
		
	elseif bearing > 270
		posx += (bearing - 360)*100
		posy += (bearing - 270)*100
		
	endif
	posz = player.GetPositionZ() + (elevation * 100)
	player.PlayIdle(JumpFall)
	TranslateTo(posx,posy,posz,player.GetAngleX(),player.GetAngleY(),player.GetAngleZ(),speed,1)
	RegisterForSingleUpdate(0.01)
endFunction


Event OnUnequipped(Actor player)
	StopTranslation()
	UnregisterForUpdate()
	
endEvent

Its a bit glitchy, I dont advise using it lol, i made it mostly to check how script flight simulation worked.

Edited by porroone, 17 February 2012 - 03:59 PM.


#7
Budz42

Budz42

    Old hand

  • Members
  • PipPipPip
  • 662 posts
@porroone

You don't mind if I use that code and mod it beyond recognition, right?

#8
porroone

porroone

    Old hand

  • Members
  • PipPipPip
  • 596 posts
@Budz42 not at all, otherwise I would not had put it there ;D

#9
xyks

xyks

    Fan

  • Members
  • PipPipPip
  • 495 posts
Flight is finally happening!!!! I can't wait to see what people will do with that, thank you for sharing

#10
jimhsu

jimhsu

    Fan

  • Members
  • PipPipPip
  • 466 posts
Fall idle - now that is clever. Will also be taking that code apart ... :). Thanks.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Page loaded in: 0.968 seconds