Jump to content

porroone

Members
  • Posts

    237
  • Joined

  • Last visited

Everything posted by porroone

  1. Yes there is but it doesnt return the x-plane so you can only move in one plane.
  2. I made an official release of the ring, with the hope somebody works out a proper animation, here is the link if you are interested: http://skyrim.nexusmods.com/downloads/file.php?id=11464
  3. Sure, its pretty much the same as yesterday with 1 addition: Scriptname _DragonFly extends Actor Actor property Player auto import utility import form import game import debug import ObjectReference float Ride float bearing float elevation float speed float posx float posy float posz auto State Idle Event OnActivate(ObjectReference akSelf) Utility.SetIniFloat("fInAirFallingCharGravityMult:Havok",0) Player = Game.GetPlayer() Ride = 1 self.SetMotionType(self.Motion_Fixed) if Ride == 1 Fly() GoToState("Deactivate") endIf endEvent endState function Fly() while Ride == 1 SendAnimationEvent(Player,"HorseEnter") self.SetAngle(Player.GetAngleX(),0,Player.GetAngleZ()) if Player.IsRunning() || Player.IsSprinting() posx = Player.GetPositionX() posy = Player.GetPositionY() posz = Player.GetPositionZ() bearing = Player.GetAngleZ() elevation = Player.GetAngleX() if Player.IsSprinting() speed = 2000 else speed = 1000 endIf if bearing < 90 posx += (bearing)*speed posy += (90 - bearing)*speed elseif bearing > 90 && bearing < 180 posx +=(180 - bearing)*speed posy +=(90 - bearing)*speed elseif bearing > 180 && bearing < 270 posx += (180 - bearing)*speed posy += (bearing - 270)*speed elseif bearing > 270 posx += (bearing - 360)*speed posy += (bearing - 270)*speed endif posz = Player.GetPositionZ() - (elevation*(speed*2)) Player = Game.GetPlayer() Player.SplineTranslateToRefNode(self, "SaddleBone",speed, speed*20,1) self.TranslateTo(posx,posy,posz,elevation,0,bearing,speed,1) Player.TranslateTo(posx,posy,posz,elevation,0,bearing,speed,1) else Player.SplineTranslateToRefNode(self, "SaddleBone",speed, speed*2,1) self.StopTranslation() endIf endWhile endFunction State Deactivate Event OnActivate(ObjectReference akSelf) Debug.MessageBox("sup") self.StopTranslation() Player.StopTranslation() Ride = 0 endEvent endState its still a bit jumpy but its better than nothing.
  4. Try calling the other functions before the translate function, so make the checks, is trigger box yea, then we dont translate anymore. I encountered this kind of problem with my current project while trying to translate the player to the dragon's saddlebone seems like I need to call 3 translate functions, one to move the player to the saddlenode, another to move the dragon, and another to move the player along the dragon fixed on the saddlebone. Funny thing it works, I finally got a flyable riding dragon, but animation events f*** the translate function, and im just lost, so please if anybody knows of any way to do this, I would really appreciate any help, im very close here.
  5. You should take a look at this thread: http://forums.nexusmods.com/index.php?/topic/568891-proof-that-a-player-can-fly-in-skyrim-well-may-be-more-like-swimming/page__p__4610279__fromsearch__1#entry4610279 We already made a flying script that works quite good, and there are some examples on how the translate function works.
  6. Well I actually got it working, now I just need to figure out a way to play animations without the animations taking over my movement, I think i need a custom animation or I dont know there has to be a way to do this, I refuse to belive it cant be done.
  7. Yea that reflects what my code basically does, it was a good idea and maybe there is even a way to do it, but its enough for today.
  8. What for? the script should be more than enough, just make a passive actor with a custom dragon race, that doesnt flies or anything like that, if you want I could upload the skeleton.nif with the saddlebone.
  9. Its not like he's showing any proof of that, maybe he is just showing off, I actually got something on the riding dragon process, found out something peculiar. In my early attemps of trying to make the dragonmount I found out how to make it rideable, adding a saddlebone to the skeleton with nifskope. Well thing is there is a function called SplineTranslateToRefNode, turns out with this function I can create my own riding system without having to set the dragon as ActorHorse, so on Activate I tell the player to play the ride horse animation and Translate to the SaddleBone of the dragon, it actually works, you fly with the dragon, but its a bit jumpy, here is the code, maybe somebody could tell me why. Scriptname _DragonFly extends Actor Actor property Player auto import utility import form import game import debug import ObjectReference float Ride float bearing float elevation float speed float posx float posy float posz auto State Idle Event OnActivate(ObjectReference akSelf) Utility.SetIniFloat("fInAirFallingCharGravityMult:Havok",0) Player = Game.GetPlayer() Ride = 1 self.SetMotionType(self.Motion_Fixed) if Ride == 1 Fly() GoToState("Deactivate") endIf endEvent endState function Fly() while Ride == 1 SendAnimationEvent(Player,"HorseEnter") self.SetAngle(Player.GetAngleX(),0,Player.GetAngleZ()) if Player.IsRunning() || Player.IsSprinting() posx = Player.GetPositionX() posy = Player.GetPositionY() posz = Player.GetPositionZ() bearing = Player.GetAngleZ() elevation = Player.GetAngleX() if Player.IsSprinting() speed = 2000 else speed = 1000 endIf if bearing < 90 posx += (bearing)*speed posy += (90 - bearing)*speed elseif bearing > 90 && bearing < 180 posx +=(180 - bearing)*speed posy +=(90 - bearing)*speed elseif bearing > 180 && bearing < 270 posx += (180 - bearing)*speed posy += (bearing - 270)*speed elseif bearing > 270 posx += (bearing - 360)*speed posy += (bearing - 270)*speed endif posz = Player.GetPositionZ() - (elevation*(speed*2)) Player = Game.GetPlayer() Player.SplineTranslateToRefNode(self, "SaddleBone",0, speed,1) self.TranslateTo(posx,posy,posz,elevation,0,bearing,speed,1) else Player.SplineTranslateToRefNode(self, "SaddleBone",0, speed,1) self.StopTranslation() endIf endWhile endFunction State Deactivate Event OnActivate(ObjectReference akSelf) Debug.MessageBox("sup") self.StopTranslation() Player.StopTranslation() Ride = 0 endEvent endState So basically what im doing here is use my flight code to move the dragon around while at the same time I tell the player to translate to the SaddleBone of the dragon, but its very jumpy, I think it doesnt handle 2 translate at once properly, so my idea is to play them at the same time, I just dont know how.
  10. there are a few animations that could work with hovering, this one for example "IdleT02AscendMale" its very cool, and even plays a nice sound, but locks the player controls, but something you guys said spark something in my head, how about if a play that animation and do a SetPlayerControls(true,true,true,..), Ill tell you how that goes. Conclussion: it does not work as I expected lol. EDIT2: seems like the function does nothing at all, COOL.
  11. Yea I dont think they had flying rideable dragons either, they just show a scene where a player is riding a dragon, so far I can do that aswell, problem comes when you try to control those animations since the animations arent just plain animations, they define the movement aswell. When you do SendAnimationEvent(Dragon,"FlyStartCruise") to put an example, the dragon starts flying around in a 500 radius, and yea you are mounted, but you are far from controling it, its actually kind of fun if you think about it, you are riding your dragon which goes around killing ppl, if at least you could control it.
  12. One thing that I forgot to ask jimhsu is what compiler do u use? I havent work that much with c++, and the assembler include format is something I havent work with before.
  13. That would be perfect, only I look into it, and you need to rename the damn bones in 3dsmax, plus most of those animations dont allow running, most of them dont, the only ones I found that let me run / sprint is "HorseEnter", "JumpFall" and some other, I tried also with the Whirlwind Sprint animation, that didnt work either, I just dont know what to do anymore.
  14. I just want a cool animation damned, otherwise I would had release it long time ago, right now I think its nothing else than a scripted TCL, I dont think its worth releasing, but if the community wants it, feel free, the code is open for modifications, applying it to other mods, anything, I posted that code so we could make it better togheter, and we did, now we just need an animator to join us and make us a couple of cool animations, one for taking off and another to fly around.
  15. Here is my latest flying code, im using it as a magic effect now so its a bit of a structural change, but nothing important. Scriptname __PlyFly extends activeMagicEffect Action property ActionJump auto Idle property flyAnim auto Idle property JumpStart auto Armor property RingFF auto Actor property Player auto import utility import form import game import debug import ObjectReference float bearing float elevation float speed float posx float posy float posz Event OnEffectStart(Actor Player, Actor Caster) Player = Game.GetPlayer() if Player.IsEquipped(RingFF) Utility.SetIniFloat("fInAirFallingCharGravityMult:Havok",0) while Player.IsEquipped(RingFF) Fly() endWhile endIf endEvent function Fly() SendAnimationEvent(Player,"JumpFall") if Player.IsRunning() || Player.IsSprinting() posx = Player.GetPositionX() posy = Player.GetPositionY() posz = Player.GetPositionZ() bearing = Player.GetAngleZ() elevation = Player.GetAngleX() if Player.IsSprinting() speed = 2000 else speed = 1000 endIf if bearing < 90 posx += (bearing)*speed posy += (90 - bearing)*speed elseif bearing > 90 && bearing < 180 posx +=(180 - bearing)*speed posy +=(90 - bearing)*speed elseif bearing > 180 && bearing < 270 posx += (180 - bearing)*speed posy += (bearing - 270)*speed elseif bearing > 270 posx += (bearing - 360)*speed posy += (bearing - 270)*speed endif posz = Player.GetPositionZ() - (elevation*(speed*2)) Player = Game.GetPlayer() Player.TranslateTo(posx,posy,posz,Player.GetAngleX(),Player.GetAngleY(),Player.GetAngleZ(),speed,1) else Player.StopTranslation() endIf endFunction Event OnEffectFinish(Actor Player, Actor Caster) Player.StopTranslation() Utility.SetIniFloat("fInAirFallingCharGravityMult:Havok",1.35) endEvent Here is something else, maybe somebody can help me with the math.. Scriptname _DragonFly extends Actor Action property ActionJump auto Idle property flyAnim auto Idle property JumpStart auto idle property Hover auto Armor property RingFF auto Actor property Player auto import utility import form import game import debug import ObjectReference float Ride float bearing float elevation float speed float posx float posy float posz float dposx float dposy float dposz auto State Idle Event OnActivate(ObjectReference akSelf) Utility.SetIniFloat("fInAirFallingCharGravityMult:Havok",0) Player = Game.GetPlayer() Ride = 1 self.SetMotionType(self.Motion_Fixed) SendAnimationEvent(self,"GetUpBegin") Player.SetVehicle(self) if Ride == 1 Fly() GoToState("Deactivate") endIf endEvent endState function Fly() while Ride == 1 SendAnimationEvent(Player,"HorseEnter") self.SetAngle(Player.GetAngleX(),0,Player.GetAngleZ()) if Player.IsRunning() || Player.IsSprinting() posx = Player.GetPositionX() posy = Player.GetPositionY() posz = Player.GetPositionZ() dposx = self.GetPositionX() dposy = self.GetPositionY() dposz = self.GetPositionZ() bearing = Player.GetAngleZ() elevation = Player.GetAngleX() if Player.IsSprinting() speed = 2000 else speed = 1000 endIf if bearing < 90 posx += (bearing)*speed posy += (90 - bearing)*speed dposx += (bearing)*speed dposy += (90 - (bearing))*speed elseif bearing > 90 && bearing < 180 posx +=(180 - bearing)*speed posy +=(90 - bearing)*speed dposx +=(180 - (bearing))*speed dposy +=(90 - (bearing))*speed elseif bearing > 180 && bearing < 270 posx += (180 - bearing)*speed posy += (bearing - 270)*speed dposx += (180 - (bearing))*speed dposy += ((bearing) - 270)*speed elseif bearing > 270 posx += (bearing - 360)*speed posy += (bearing - 270)*speed dposx += ((bearing) - 360)*speed dposy += ((bearing) - 270)*speed endif posz = Player.GetPositionZ() - (elevation*(speed*2)) Player = Game.GetPlayer() Player.TranslateTo(dposx,dposy,posz + 200,Player.GetAngleX(),Player.GetAngleY(),Player.GetAngleZ(),speed,1) self.TranslateTo(posx,posy,posz,Player.GetAngleX(),Player.GetAngleY(),Player.GetAngleZ(),speed,1) else self.StopTranslation() Player.TranslateTo(self.GetPositionX(),self.GetPositionY(),self.GetPositionZ() + 200,0,0,0,2000,1) endIf endWhile endFunction State Deactivate Event OnActivate(ObjectReference akSelf) Debug.MessageBox("sup") self.StopTranslation() Player.StopTranslation() Ride = 0 endEvent endState So basically what im trying to do here is translate 2 objects at the same time, one being the player playing the ride animation (which works amazing for flying) and the other being a dragon, the issue is since the dragon is bigger than the player, when I turn around the z angle gets messed, so what I need is a way to compare both angles and extrapolate a difference for the player to follow.
  16. I actually found out something amazin and im back on the flying rideable dragon QUEST hehe, basically what im doing right now is create my own ride system, where the player controls the dragon and not the other way around, what program u guys use to record a video?
  17. perfect as in collisions? Nop, not sure how to do that without using C++.
  18. Well, after hours of trying to get a proper animation to work, I belive I surrender, my ring works perfect now it just lacks a proper animation, I was hoping if somebody could port a couple things from oblivion, one being the Wings of archangel from midas magic, and the sky dive animation, with those 2 my mod will be complete, else I better start learning 3dsmax lol.
  19. Always buy the 70 series of Nvidia, 470, 570. They are always the fastest ones, I can run bf3 at max settings including antialiasing, problem is I dont have ambient oclusion :/
  20. I have been playing with uGridsToLoad=9 for months, no issues yet, I guess it depends in the memory interface of your graphic card, I have a gtx 470 with 384bits memory interface which I think allows me to play at that level, note that if you have a 560gtx for example, the memory interface is much lower so if the game cant get all the data through fast enough it will probably CTD, I got to this conclusion trying to up the ugrids, for me it became unstable at 13, but still could play for a few hours without CTD with a decent framerate.
  21. All of it is to move forward, moving sides is not defined there, if you only want to move sides, you will only be able to move one side, since only IsRunning works as input.
  22. Yes, it almost completly ignore collisions, I dont even think we are supposed to use that function anyways, If you take a look at the bottom of the Actor script there are some interesting functions, with a commented message on top the which says: ; **** For Debugging Movement Animations (not in release builds) **** And we can see this functions.. Function ForceMovementDirection(float afXAngle = 0.0, float afYAngle = 0.0, float afZAngle = 0.0) native Function ForceMovementSpeed(float afSpeedMult) native Function ForceMovementRotationSpeed(float afXMult = 0.0, float afYMult = 0.0, float afZMult = 0.0) native Function ForceMovementDirectionRamp(float afXAngle = 0.0, float afYAngle = 0.0, float afZAngle = 0.0, float afRampTime = 0.1) native Function ForceMovementSpeedRamp(float afSpeedMult, float afRampTime = 0.1) native Function ForceMovementRotationSpeedRamp(float afXMult = 0.0, float afYMult = 0.0, float afZMult = 0.0, float afRampTime = 0.1) native Function ForceTargetDirection(float afXAngle = 0.0, float afYAngle = 0.0, float afZAngle = 0.0) native Function ForceTargetSpeed(float afSpeed) native Function ForceTargetAngle(float afXAngle = 0.0, float afYAngle = 0.0, float afZAngle = 0.0) native Function ClearForcedMovement() native Wouldnt it be nice if they included those ones in the official release? Edit: Also an update on the key press thing, you can actually define a variable as "Action property ActionJump auto", then go to properties and get the ActionJump action, which basically is triggered every time you jump or you either try to jump, im not sure what conditional function to use tho, ill keep trying see if I come with something.
  23. Yea I figured that much like 5 days ago, thats why I made a flying ring instead, you cant get the x-plane while mounted, if you do find a way I promise ill make a religion out of your person. Well, when the player is riding the horse, the direction of where the game camera is facing determines the direction of the horse. Here is a video to inspire you guys on with the dragon mount. Bethesda may have a flying dragon mount but we have a flying horse mount. Those videos prove my point exaclty, he only gets the horse to change direction on the Z-Plane. And about script dragon I thought of that, but how are you planning on implementing it with papyrus ? Because from my point of view you either make your mod with scriptdragon or make it with papyrus.
×
×
  • Create New...