tonycubed2 Posted July 18, 2012 Share Posted July 18, 2012 Hi gang, So in my mod Sands of Time I added some sleeping animation which is working pretty good. The Dovahkin walks over to the bed and lays down, then sleep starts. If he does not own the bed, he lays down anyways though sleep refuses to start. How would we check to see if the bed is free to sleep in? I need a check to stop the player from laying down if the bed is owned. The script is below for reference. Scriptname SOT_Bed extends ObjectReference Actor PlayerRef Actor Player Int Property restanime Auto Event OnInit() Self.BlockActivation() EndEvent Event OnActivate(ObjectReference akActionRef) if SoTSleepAnime.GetValueInt() == 0 ;debug.Notification("activated!") PlayerRef = Game.GetPlayer() Player = Game.GetPlayer() If !(player.isSneaking()) && (akActionRef == Game.GetPlayer()) float forward = 135 float xoff = (forward) * Math.sin(playerref.getAngleZ()) float yoff = (forward) * Math.cos(playerref.getAngleZ()) ;ObjectReference bed = Game.FindClosestReferenceOfAnyTypeInList(aaaBeds, playerref.getPositionX()+xoff,playerref.getPositionY()+yoff, playerref.getPositionZ(), forward) If !Self.isFurnitureInUse() Game.SetPlayerAIDriven() ObjectReference bed = Self Player.SetLookAt(bed, true) Player.PathToReference(bed, 1.0) ; Debug.Notification("bed free!") float newdeg = Self.getAngleZ() - 180 float oldx = player.getpositionx() float oldy = player.getpositiony() float oldz = player.getpositionz() float olddeg = player.getanglez() if (Self.getWidth() > 0) newdeg = newdeg + 180 endIf Game.SetPlayerAIDriven(False) player.setAngle(0, 0, newdeg) player.setPosition(Self.getPositionX(), Self.getPositionY(), Self.getPositionZ()) Debug.sendAnimationEvent(player, "IdleLayDownEnter") utility.wait(3.0) Game.EnablePlayerControls() ;Game.SetPlayerAIDriven(False) ;Self.BlockActivation(False) Self.Activate(Game.GetPlayer(), True) ;utility.wait(3.0) ;Self.BlockActivation() Else Debug.Notification("Bed Is In Use!") EndIf ElseIf (akActionRef == Game.GetPlayer()) && (player.isSneaking()) Game.GetPlayer().StartSneaking() float newdeg = Self.getAngleZ() player.setAngle(0, 0, newdeg) player.setPosition(Self.getPositionX(), Self.getPositionY(), Self.getPositionZ()) Self.Activate(Game.GetPlayer(), True) EndIf Else self.BlockActivation(False) self.activate(akActionRef, True) Self.BlockActivation() restanime = 5 endif ;end of kill switch check ; EndEvent GlobalVariable Property SotSleepAnime Auto Link to comment Share on other sites More sharing options...
Recommended Posts