Jump to content

how to tell if a bed is ok to sleep in


tonycubed2

Recommended Posts

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...