Jump to content

Pelgar

Supporter
  • Posts

    140
  • Joined

  • Last visited

Nexus Mods Profile

About Pelgar

Profile Fields

  • Country
    United States
  • Favourite Game
    Fallout New Vegas

Pelgar's Achievements

Collaborator

Collaborator (7/14)

  • Dedicated Rare
  • First Post
  • Collaborator Rare
  • Week One Done
  • One Month Later

Recent Badges

1

Reputation

  1. With the nif open in nifskope select BSGeometry in the Block List. Scroll to the bottom of Block Details and expand Meshes. Expand Mesh 0, scroll down to Mesh Path. For example, I have Outfit_Sarah_Torso_f.nif open in nifskope. The path to this nif's geometry is 6f89b710a8601cc1e79b\b9a4813c2649254b121f. 6f89b710a8601cc1e79b is the geometry sub folder and b9a4813c2649254b121f. is the .mesh file name. Hope this helps.
  2. The companions lock the armor. The best approach I can think of would be to build a patch that list all companions, both vanilla and modded that you use. There is a keyword, ShowWornItem or ShowWornItems something like that. I'm not where I can look it up right now. Use the patch to add that keyword to each of your companions. The keyword to add to your companions is ShowWornItemsKeyword, I just looked it up.
  3. I removed the AnimFurnPraying keyword from the pew. I mentioned the condition on the FurniturePraying idle in the text but I forgot to tell you to remove it, in your copy of the idle, in the Fo4Edit instructions.
  4. I was curious as to why this was not working so I made a quick test mod to see if I could make it happen. In the CK I made a copy of NpcBenchChurchSit01 and deleted AnimFurnPraying [KYWD:00140F74] then added AnimFurnChairSitAnims [KYWD:00030BB2]. I had a settler sit on the bench in game and tried the FurniturePraying idle on her via the console. I got the exact same results you've been getting, nothing happened. I then took a look at the idle itself in F04Edit and found the problem or actually problems. The first problem was there was a condition on the idle: (Subject.CurrentFurnitureHasKeyword(AnimFurnPraying [KYWD:00140F74]) = 1.000000 AND). With the AnimFurnPraying Keyword removed from my test bench it didn't have a chance of playing. Unfortunatly adding the keyword to my bench didn't help. I continued looking at the FurniturePraying idle and found it didn't have an animation file. I don't know exactly how they get the furniture idles working so I made a copy of FurniturePraying using F04Edits Copy as new record right click menu. I did this in FO4Edit becasue it's really easy to do there and I don't have a clue how to do it in the CK. Changes I made to FurniturePraying: EDID-Editor ID: PelgFurniturePraying (Of course you should name it something that works for you) ENAM - Animation Event: dyn_activationloop ANAM - Related Idle Animations Related Idle Anamation #0 (Parent): NULL - Null Reference [00000000] (Double click then hit delete) Related Idle Animation #1 (Previous Sibling): Null Flags: Parent (Double click then check Parent) GNAM - Animation File: Actors\Character\Animations\Furniture\Pray\IdleLoop.hkx https://youtu.be/uv_gYif7Nr4
  5. I honestly don't know what may be going on here. Possibly the package that is seating the npcs is forcing the current animation especially if it has a script in the OnChange event or a forced idle attached to it. I would probably also play around with the timing of the Wait(0.3) between the two calls to PlayIdle. A value of 1.0 would give a full one second wait between playidle calls, probably overkill but should make sure that the idlestop anim is playing on the npc before playing the FurniturePraying idle.
  6. Try changing the line: WorkshopNPCScript theNPC = ActorsAll[j] as WorkShopNPCScript To: Actor theNPC = ActorsAll[j] as Actor PlayIdle runs on the actor script.
  7. I think the following modification to your code will work, maybe not elegantly. I've dabbled with forcing sitting npcs into new idles and found that it's simply not going to happen if you don't stop the current idle first. It can be a bit jerky so I added the fade to black, use it or don't totally up to you. Call with TransitionToPraying(True) if you want fade out / fade in. If you don't want fade call it with TransitionToPraying(False) Scriptname TempTest extends Quest Idle Property FurniturePraying Auto Const ObjectReference[] Property ActorsAll auto Idle Property IdleStop_Loose Auto Const Function TransitionToPraying(bool bFadeOut) ;Set true if you want fade to black int j = 0 if bFadeOut Game.FadeOutGame(True, True, 0.1, 0.1, True) EndIf While j < ActorsAll.Length WorkshopNPCScript theNPC = ActorsAll[j] as WorkShopNPCScript theNPC.PlayIdle(IdleStop_Loose) Utility.Wait(0.3) theNPC.PlayIdle(FurniturePraying) j += 1 EndWhile If bFadeOut Utility.wait(0.5) Game.FadeOutGame(False, True, 0.1, 0.1, False) EndIf EndFunction
  8. I'm not sure how you would do that with OpenWorkshopSettlementMenu(). I have a script that I've been using for a while now that places new npc's in settlement via the workshop. The settlers are added to the workshop and commendable on placement. I attach the script, along with WorkshopNPCScript, to the actor I want to place. Scriptname PelgWorkshopNPCScript extends Actor Conditional WorkshopParentScript Property WorkshopParent Auto Const Bool property bAddedToWkShop = false auto Event OnWorkshopObjectPlaced(objectreference akReference) If (!bAddedToWkShop) ;Debug.MessageBox("OnWorkshopObjectPlaced Event ran on Pelg Settler.") self.EvaluatePackage(true) self.AddKeyword(WorkshopParent.WorkshopAllowCommand) self.AddKeyword(WorkshopParent.WorkshopAllowMove) self.SetNoBleedoutRecovery(false) actor PelgSettler = Self as actor workshopnpcscript WkShpScript = PelgSettler as workshopnpcscript WkShpScript.bCommandable = true WkShpScript.bAllowCaravan = true WkShpScript.bAllowMove = true WkShpScript.bIsWorker = true WkShpScript.bCountsForPopulation = true WkShpScript.bWork24Hours = false WkShpScript.assignedMultiResource = WorkshopParent.WorkshopRatings[WorkshopParent.WorkshopRatingFood].resourceValue workshopscript workshopRef = self.getLinkedRef(WorkshopParent.WorkshopItemKeyword) as workshopscript WorkshopParent.AddActorToWorkshopPUBLIC(PelgSettler as workshopnpcscript, workshopRef, false) bAddedToWkShop = true EndIf EndEvent Hope this helps
  9. My best guess is that the script property in your actor script is not set to the quest it belongs to, this has tripped me up a few times.
  10. I finally got Jenny to using the stimpak on herself. It was quite difficult to find the right combination of functions to damage health, restore health and play nice with each other. The only problem I have with it now is the stimpak is left sticking in Jenny's wrist until she exits the furniture idle (probably nothing I can do about that). The code below is the relevant parts of a much larger quest script. I'm not asking for any help here just showing how it was accomplished. ScriptName CompJennyIntroScript extends Quest conditional ReferenceAlias Property Alias_Jenny Auto Const ActorValue Property RightMobilityCondition Auto Const ActorValue Property LeftMobilityCondition Auto Const Potion Property Stimpak Auto Const int Property JennyWaitTimerID Auto Const bool Property bJennysRevengeReady Auto conditional Function JennyStimpakSelf() Actor Jenny = Alias_Jenny.getActorReference() float fLeftMob = Jenny.GetValue(LeftMobilityCondition) float fRightMob = Jenny.GetValue(RightMobilityCondition) Debug.Trace("JennyStimpakSelf: Before damageValue LeftMobilityCondition = " + fLeftMob) Debug.Trace("JennyStimpakSelf: Before damageValue RightMobilityCondition = " + fRightMob) Jenny.damageValue(LeftMobilityCondition,100) Jenny.damageValue(RightMobilityCondition,100) fLeftMob = Jenny.GetValue(LeftMobilityCondition) fRightMob = Jenny.GetValue(RightMobilityCondition) Debug.Trace("JennyStimpakSelf: After damageValue LeftMobilityCondition = " + fLeftMob) Debug.Trace("JennyStimpakSelf: After damageValue RightMobilityCondition = " + fRightMob) Utility.Wait(0.5) Jenny.Additem(Stimpak, 1) Utility.Wait(0.5) Jenny.Equipitem(Stimpak) IF JennysRevenge.IsPlaying() JennysRevenge.Stop() EndIf StartTimer(3, JennyWaitTimerID) EndFunction Function ResetJennysHealth() IF JennysRevenge.IsPlaying() JennysRevenge.Stop() EndIf Actor Jenny = Alias_Jenny.getActorReference() Jenny.ResetHealthAndLimbs() float fLeftMob = Jenny.GetValue(LeftMobilityCondition) float fRightMob = Jenny.GetValue(RightMobilityCondition) Debug.Trace("ResetJennysHealth: After ResetHealthAndLimbs LeftMobilityCondition = " + fLeftMob) Debug.Trace("ResetJennysHealth: After ResetHealthAndLimbs RightMobilityCondition = " + fRightMob) PlayerMeetJenny.Stop() SetJennysRevenge(True) JennysRevenge.Start() EndFunction Function SetJennysRevenge(bool bReady) bJennysRevengeReady = bReady EndFunction Event onTimer(int iTimer) If iTimer == JennyWaitTimerID ResetJennysHealth() EndIf EndEvent
  11. Crippling both legs and having her equip a stimpak worked in the console. She even played the stimpak anim while siting in the furniture idle marker. Thanks Octodecoy. I'll add a couple Phases to the scene and see if I can get it to work in script.
  12. I don't know if it would work but I'll sure give it a try. When you meet Jenny in the game she is sitting on the floor, at a woundedSit Furniture marker. I've been thinking that the furniture marker was probably the reason the idle would not play. When the PC gives Jenny a stimpak she gets up, walks to the next room and shoots one to three Gunners. I'd just like for her to play a stimpak animation when the pc gives her the stimpak. It would be fine with me if the PC stimpaked her the way he does a downed companion but how to force that to happen has eluded me for about six months now. I'll try as you suggeseted, crippling her and having her equip a stimpack.
  13. The idle did not play but it had some interesting results. I tried Playidle 3rdPUseStimpakOnSelfOnGround with healthy Curie selected. The anim did not play but the console generated a line saying GetActorValue: RightMobilityCondition >> 100. This makes me think maybe the NPC would not play the anim if they are healthy. So I shoot Curie in the head and try again but the results were exactly the same. Next I tried setting RighMobilityCondition to 10 and tried playidle again. I got the same line except it reported the new (10) value. So I set RightMoblitlyCondition to 0 and try again. Now the console reports GetActorValue: LeftMobilityCondition >> 100. I then set LeftMobilityCondition to 0 and try playidle again but noting happens. The bottom line is this all leads me to believe that if I get the right condition set the idle may actually play.
  14. No I haven't but I'll give it a try now. Just to be clear, the actual name of the animation is 3rdPUseStimpakOnSelfOnGround I had to put the underscore in front of the property name because the CK will not allow a property name to start with a number. I did fill the property with 3rdPUseStimpakOnSelfOnGround Thanks for the input.
×
×
  • Create New...