Been trying to make my own cloud chest setup. I see you went with the Darkfox 127 setup. Easy enough. Problem is, the chests don’t animate. I’m currently searching for a way to make a chest animate, then access cloud, then close.
Yes, I was disappointed with the lack of animation as well even though I could add "opening sound" to the container activator. Maybe add both open and closed chest models atop each other with the open model disabled until activated, then swap closed chest to disabled and then reverse the process when closed? The issue there I think is the activator is "one-way"... maybe there is a built-in method to check when activation was finished. hadn't really dug that deep into it to be honest, just dipping my toes into some light scripting.
After getting the chest anim to open late yesterday (PST) without swapping closed and open form, I slept on it and this is what I came up with this morning:
Scriptname TestAnimScript extends ObjectReference {Test script for animation effects} ObjectReference Property closedChestObject auto Float gameTimePaused = 0.0 ; OnActivate Event, do something here... Event OnActivate(ObjectReference akActionRef) gameTimePaused = Utility.GetCurrentGameTime() closedChestObject.PlayGamebryoAnimation("open") ; animation in the nif gameTimePaused = Utility.GetCurrentGameTime() getLinkedRef().activate(akActionRef) ; the 'dummy' chest script action ;gameTimePaused += 0.0005 ; buffer for delay is arbitrary, might be necessary playtest yourself ; 'pause' the script While(Utility.GetCurrentGameTime() <= gameTimePaused) Utility.Wait(1) ; yeah, wish this could go to decimal, but only slight 'in game' delay EndWhile closedChestObject.PlayGamebryoAnimation("close") ; animation in the nif closedChestObject.Reset() ; Seems to be required after succesive play animation calls EndEvent
; NOTES: ; this script placed on the activator - use of DUMMY container script is not required only this script ; Your game must not eliminate any in-game menu pauses, specifically inventory-related screens ; Should be good on _any_ container .nif that contains 'gamebryo' anims (examine nif for controller and keywords) ; Free to use/patch/modify. ; I will consider patching this into the mod at some point, but have other stuff to do right now ; prob best way to patch my mod - place this script over the three static chests, pass chest as ref, ; remove 'dummy' script, could probably all be done in SSEDIT... but idk. ; Enjoy -DaveR1971
This tested on a freshly placed chest in my test cell. Animated, but unsure if there are any sounds yet as I did not place in the overworld and my boss chest was opening/closing in test cell with sound. I am thinking the "play sound" events or sounds can be added to the static in CK where it asks "play sound when anim"... I think it is properties, or edit base...
A patch for my mod will be coming at some point --- just not this week, and hopefully no later than last week in May.
Hey man just wanted to respond to your work. Thank you so much I’m finally getting some time off tomorrow and I’ll play around with this and hopefully be able to implement it to my years long (on and off) vanilla homes overhaul mod.
Scripting just isn’t my thing and I’m always grateful to those who are for their help.
So this script gets placed on the activator. Is there some requirement to link it to the local static chest that it sits over? I’m just curious how it knows which static to animate. Or am I misunderstanding.
is the closedChestObject auto where I select the static chest in the properties?
UPDATE: yea it works pretty good in recognizing the cloud storage. Only thing is the animation seems jittery. Also I think I need to add a utility.wait before the the animation but before the inventory opens in order to better sync the chest animations.
Scriptname HBMCCSLinkedDummyChestVFXSFX extends ObjectReference {Adds Visual and Sound effects to the linked dummy chest.} ObjectReference Property dummyChestAnimObject auto Float gameTimePaused = 0.0 Sound Property openChestSFX Auto Sound Property closeChestSFX Auto ; OnActivate Event, do something here... Event OnActivate(ObjectReference akActionRef) gameTimePaused = Utility.GetCurrentGameTime() dummyChestAnimObject.PlayGamebryoAnimation("open") ; animation in the nif openChestSFX.Play(dummyChestAnimObject) ; sound effect gameTimePaused = Utility.GetCurrentGameTime() getLinkedRef().activate(akActionRef) ;gameTimePaused += 0.0005 ; buffer for delay is arbitrary, might be necessary ; 'pause' the script While(Utility.GetCurrentGameTime() <= gameTimePaused) Utility.Wait(1) ; yeah, wish this could go to decimal, but only slight 'in game' delay EndWhile dummyChestAnimObject.PlayGamebryoAnimation("close") ; animation in the nif closeChestSFX.Play(dummyChestAnimObject) dummyChestAnimObject.Reset() ; Seems to be required after successive play animation calls EndEvent
Agreed that the animation is not as smooth nor timed perfectly. I also renamed my static chest object... but his was scripted before reading your response in this thread.
There will be an optional patch for my mod with the animations and sound effects uploaded soon.
What about instead of using an activator we use an actual chest that is linked but insert a line Scriptname TobiasCloudChestScript extends ObjectReference
I'm not sure if the coding is correct but essentially I'm trying to block the default activation of the local inventory, wait while animation plays then access the linked cloud chest.
So what happens is this: you open the chest, it accesses your cloud chest but the animation is from closed to an instant open. No smooth normal chest crack open like you’d expect. Then an instant close. The sound effects are there however.
I haven't downloaded yet. I'm just asking to make sure I understand correctly, because you used terms I'm not familiar with. But since this mod is based on Hearthfire, I'm guessing it must be related to the Hearthfire homes.
Were talking about the quests that have to do with the Hearthfire homes? Like, the one where you have to talk to the Jarl in Falkreath or the one connected to the burnt down house in Morthal. If the answer is correct. Does it start the moment we accept those quest from the Jarl or the moment you read the letter from the Jarl?
Yes, sorry for the confusion, and delay in responding as I have been away for work this week.
This mod is for the three "Build Your Own Homes" (BYOH) added by Heathfire DLC that require the use of building materials. These are specifically the Lakewood Manor, Heljarchen Hall and Windstad Manor homes.
All three "BYOH" are heavily scripted and can start in different ways. In my playthroughs, I usually buy the home from the Jarls' steward before getting the letter from the Jarl... but that option exists. The Hearthfire scripting is written so that you can buy the home even though the courier has been dispatched with the letter. My mod does not change any of the base scripts... I only reference the current stage in each of the BYOH scripts to determine if the "base loot" provided in the "native" BYOH chests should be added to the cloud storage.
The BYOH quests technically start at Stage 10 for each house, with the letter from the courier being stage 30, but the "purchase action" is also seen in the script (scriptname: BYOHHouseScript.pex) when the land is purchased (from the source file):
function BuyProperty() ; set flag for owning property bOwnProperty = true ; remove gold Game.GetPlayer().RemoveItem(Gold001, BYOHHPCost.GetValueInt()) ; tell master quest BYOHHouseBuilding.BuyProperty(iHouseIndex) ; enable basic building site SiteEnableMarker.Enable() ; map marker HouseMapMarker.Enable() HouseMapMarker.AddToMap() ; give player some logs to start with (since they can't be taken from chest) Game.GetPlayer().AddItem(BYOHMaterialLog, 20, true) endFunction
You can see in this part of the script, when the land is purchased, the "SiteEnableMarker" is turned on and the building site with the drafting table, chest, workbench and anvil become visible in the overworld and the map marker is also added with the specific BYOH map marker appearing and in the Miscellaneous quest section the "Visit your new property (or whatever)" quest appears. You also get the logs -- so this is where I matched quest stage for the provisioning of the base chest materials to the cloud storage.
For my current playthrough (both developing and testing this mod), I never received the letter from the Jarl, so my Stage 30 is incomplete for all three BYOH quests.
11 comments
-DaveR1971
-DaveR1971
After getting the chest anim to open late yesterday (PST) without swapping closed and open form, I slept on it and this is what I came up with this morning:
Scriptname TestAnimScript extends ObjectReference
{Test script for animation effects}
ObjectReference Property closedChestObject auto
Float gameTimePaused = 0.0
; OnActivate Event, do something here...
Event OnActivate(ObjectReference akActionRef)
gameTimePaused = Utility.GetCurrentGameTime()
closedChestObject.PlayGamebryoAnimation("open") ; animation in the nif
gameTimePaused = Utility.GetCurrentGameTime()
getLinkedRef().activate(akActionRef) ; the 'dummy' chest script action
;gameTimePaused += 0.0005 ; buffer for delay is arbitrary, might be necessary playtest yourself
; 'pause' the script
While(Utility.GetCurrentGameTime() <= gameTimePaused)
Utility.Wait(1) ; yeah, wish this could go to decimal, but only slight 'in game' delay
EndWhile
closedChestObject.PlayGamebryoAnimation("close") ; animation in the nif
closedChestObject.Reset() ; Seems to be required after succesive play animation calls
EndEvent
; NOTES:
; this script placed on the activator - use of DUMMY container script is not required only this script
; Your game must not eliminate any in-game menu pauses, specifically inventory-related screens
; Should be good on _any_ container .nif that contains 'gamebryo' anims (examine nif for controller and keywords)
; Free to use/patch/modify.
; I will consider patching this into the mod at some point, but have other stuff to do right now
; prob best way to patch my mod - place this script over the three static chests, pass chest as ref,
; remove 'dummy' script, could probably all be done in SSEDIT... but idk.
; Enjoy -DaveR1971
This tested on a freshly placed chest in my test cell. Animated, but unsure if there are any sounds yet as I did not place in the overworld and my boss chest was opening/closing in test cell with sound. I am thinking the "play sound" events or sounds can be added to the static in CK where it asks "play sound when anim"... I think it is properties, or edit base...
A patch for my mod will be coming at some point --- just not this week, and hopefully no later than last week in May.
Hope that is something you can work with.
-DaveR1971
Scripting just isn’t my thing and I’m always grateful to those who are for their help.
is the
closedChestObject auto
where I select the static chest in the properties?
UPDATE:
yea it works pretty good in recognizing the cloud storage. Only thing is the animation seems jittery. Also I think I need to add a utility.wait before the the animation but before the inventory opens in order to better sync the chest animations.
This is what I am "settling on" for now:
Scriptname HBMCCSLinkedDummyChestVFXSFX extends ObjectReference
{Adds Visual and Sound effects to the linked dummy chest.}
ObjectReference Property dummyChestAnimObject auto
Float gameTimePaused = 0.0
Sound Property openChestSFX Auto
Sound Property closeChestSFX Auto
; OnActivate Event, do something here...
Event OnActivate(ObjectReference akActionRef)
gameTimePaused = Utility.GetCurrentGameTime()
dummyChestAnimObject.PlayGamebryoAnimation("open") ; animation in the nif
openChestSFX.Play(dummyChestAnimObject) ; sound effect
gameTimePaused = Utility.GetCurrentGameTime()
getLinkedRef().activate(akActionRef)
;gameTimePaused += 0.0005 ; buffer for delay is arbitrary, might be necessary
; 'pause' the script
While(Utility.GetCurrentGameTime() <= gameTimePaused)
Utility.Wait(1) ; yeah, wish this could go to decimal, but only slight 'in game' delay
EndWhile
dummyChestAnimObject.PlayGamebryoAnimation("close") ; animation in the nif
closeChestSFX.Play(dummyChestAnimObject)
dummyChestAnimObject.Reset() ; Seems to be required after successive play animation calls
EndEvent
Agreed that the animation is not as smooth nor timed perfectly. I also renamed my static chest object... but his was scripted before reading your response in this thread.
There will be an optional patch for my mod with the animations and sound effects uploaded soon.
-DaveR1971
Scriptname TobiasCloudChestScript extends ObjectReference
Event OnActivate(ObjectReference akActionRef)
BlockActivation(true)
Utility.wait(1)
getLinkedRef().activate(akActionRef)
EndEvent
I'm not sure if the coding is correct but essentially I'm trying to block the default activation of the local inventory, wait while animation plays then access the linked cloud chest.
Thoughts?
The mod does not include the sound and animation fix yet, correct?
you open the chest, it accesses your cloud chest but the animation is from closed to an instant open. No smooth normal chest crack open like you’d expect. Then an instant close. The sound effects are there however.
Were talking about the quests that have to do with the Hearthfire homes? Like, the one where you have to talk to the Jarl in Falkreath or the one connected to the burnt down house in Morthal. If the answer is correct. Does it start the moment we accept those quest from the Jarl or the moment you read the letter from the Jarl?
Yes, sorry for the confusion, and delay in responding as I have been away for work this week.
This mod is for the three "Build Your Own Homes" (BYOH) added by Heathfire DLC that require the use of building materials. These are specifically the Lakewood Manor, Heljarchen Hall and Windstad Manor homes.
All three "BYOH" are heavily scripted and can start in different ways. In my playthroughs, I usually buy the home from the Jarls' steward before getting the letter from the Jarl... but that option exists. The Hearthfire scripting is written so that you can buy the home even though the courier has been dispatched with the letter. My mod does not change any of the base scripts... I only reference the current stage in each of the BYOH scripts to determine if the "base loot" provided in the "native" BYOH chests should be added to the cloud storage.
The BYOH quests technically start at Stage 10 for each house, with the letter from the courier being stage 30, but the "purchase action" is also seen in the script (scriptname: BYOHHouseScript.pex) when the land is purchased (from the source file):
function BuyProperty()
; set flag for owning property
bOwnProperty = true
; remove gold
Game.GetPlayer().RemoveItem(Gold001, BYOHHPCost.GetValueInt())
; tell master quest
BYOHHouseBuilding.BuyProperty(iHouseIndex)
; enable basic building site
SiteEnableMarker.Enable()
; map marker
HouseMapMarker.Enable()
HouseMapMarker.AddToMap()
; give player some logs to start with (since they can't be taken from chest)
Game.GetPlayer().AddItem(BYOHMaterialLog, 20, true)
endFunction
You can see in this part of the script, when the land is purchased, the "SiteEnableMarker" is turned on and the building site with the drafting table, chest, workbench and anvil become visible in the overworld and the map marker is also added with the specific BYOH map marker appearing and in the Miscellaneous quest section the "Visit your new property (or whatever)" quest appears. You also get the logs -- so this is where I matched quest stage for the provisioning of the base chest materials to the cloud storage.
For my current playthrough (both developing and testing this mod), I never received the letter from the Jarl, so my Stage 30 is incomplete for all three BYOH quests.
Hope that helps to explain things.
-DaveR1971