Jump to content

Hoamaii

Premium Member
  • Posts

    1033
  • Joined

  • Last visited

Everything posted by Hoamaii

  1. Well the thing is you need script fragments are the easiest way to advance quest stages - of course, you can also advance stages by using the "SetStage" function when some object is activated, like read a book for instance, by attaching a simple script to a custom book, like: Quest Property MyQuest Auto AutoState Unread Event onRead() If MyQuest.GetStage() == 10 MyQuest.SetStage(20) GoToState(Done) EndIf EndEvent EndState State Done EndState But doing it this way may return false on occasions - take a look at the discussion tab of that CK page about that: https://www.creationkit.com/index.php?title=SetCurrentStageID_-_Quest. Can't say if it's reliable or not to try and advance a quest this way, personally I've never done it and woudn't try it (quests are buggy enough as it is ;)) Other than dialogues, forcing actors to do do something, creating scenes, making sure the player does things in the proper order, collects everything, kills the boss, etc., the main advantage of quest is they stay in your logs so you can keep track of your progress, know where it starts and when you're finished. If you're 100% sure you don't need any of that, you could always try to script objectReferences to get your quest progressing. But you may find out it's going to be a little bit more complex than you expected, if only to make sure that your quest progresses as expected and your objects, triggerboxes or activators don't get activated several times. I've done this in one of my mods which is a playerhouse (Clearsky Hideout) - hundreds of objects to activate in there which trigger or enable other stuff in series: objects to build, hidden room or containers to discover, mysteries to solve, etc... Heck, even finding the key was a puzzle!.. It ended up being so complicated building it that I had to write a "walkthrough" which even I use now when I play it years later!.. It probably would have been less fun using quests, but it undoubtedly would have been easier to script. The only reason I could do without any quest at all is it did not matter in which order you advanced, I did not need dialogues or scenes, there was no boss and it was obvious when you had reached your goal. But then again, I never tried to create a quest AND avoid fragments.
  2. Honestly, take a look at DarkFox127's YouTube's channel, he's very good at teaching you the CK step by step: https://www.youtube.com/channel/UCtYB2iX9_52X_DNtSIJXyWg You can also check Doughamil's videos:
  3. The Skyrim LE CK won't do that. Really? I coud have sworn I did it several times creating extensions to my own mods in my oldRim CK - but I'll take your word against mine anytime, IsharaMeradin :) Thanks for correcting me! @ myrrhmyrrh: sorry if I've misleading you in any way, that was an honest mistake, but a mistake nonetheless.
  4. Don't do that with Xedit, load your required .esp in the CK, create your mod, save it and the CK will automatically make the first one a requirement for your mod to load. The CK is actually much easier to deal with than Xedit if you're new at all this.
  5. Nope it can't - a reference is a variable, and all namings need to be completely unique or else the game will never know which is which!.. Within a script though, as long as it's not a property you can rename it whatever you want provided you don't use the same "MyVar" name for 2 different references. Keep in mind it's just a renaming convenience which may spare you to always have to repeat "Galadriel_TestA.GetActorReference()" whenever you want that ReferenceAlias to do something. Stating "MyVar = Galadriel_TestA.GetActorReference()" at the beginning of a script is like telling Papyrus "now whenever I type 'MyVar', we'll both be talking about the same reference". It keeps things tidier in long scripts. But anyway, with the many modders out here, the best way to ensure that all your namings are completely unique is to create your personal naming system. Using your name is a good way to do that. For instance, I prefix all my .esp's and custom folders with "Hoamaii-Something" (then my SleepingBags become "Hoamaii_SleepingBags" for instance, which ensures it cannot be overwritten by some other "sleepingBags" esp's). And in the CK, I also prefix all my forms and refs with an "_H" followed by 2 other letters to remind me which mod that is attached to. All forms and refs for my sleepingBags are prefixed with "_HSB_" (for "Hoamaii Sleeping Bags") followed by whatever describes best the related form, ref, script, quest, spell, armor, etc. DarkFox127 prefixes his with "DF127_". We all do that, it helps a lot finding our mods' assets more easily in the CK. Start now, it's a good habit to take!.. ;) Have fun!
  6. It's a bit of a blind hunt in the quest tab, I'll admit, not easy to figure out which quest does what in the CK... Becoming Thane and buying houses are named "Favor" followed by a number. "Favor253" for instance is making you Thane of Whiterun and letting you buy Breezehome, giving you the key to access it and enabling Lydia and her guestroom's furniture. That will trigger the "HousePurchase" quest - and if you take a look at that one, you'll find that "WhiterunDoor" for instance is a ReferenceAlias there, with a script attached to it that completes Breezehome's purchase "onActivate(...)". So to answer your question, yeah, that's a script, not attached to the door itself, but to its ReferenceAlias in the related quest. And the message you receive when you first enter Breezehome is the "SetObjectiveDisplayed" in the fragment script in Quest stage 10. It all sounds a bit intimidating at first trying to understand how quests are built but there are lots of great tutorials available - try watching Darkfox127's youTube series - he's here on the Nexus and his videos are really great to help you get more familiar with how the game works and how to mod it. But if you're thinking of creating a custom house, you really don't need quests for that... Good luck! :)
  7. Oooh... thanks a lot for the heads up, Max!.. I guess I'll be testing my textures the old fashion way then: exit game, change my textures in the date folder, reload game... ;)
  8. You need a ReferenceAlias Property, your script extends "ReferenceAlias", not "Alias". Try this: ReferenceAlias Property Galadriel_TestA Auto then replace your non-compiling function with this: Galadriel_TestA.GetActorReference().MoveTo(XMarkerGaladriel_1) https://www.creationkit.com/index.php?title=Quest_Alias_Tab: 99% of the time, we use ReferenceAliases, not Aliases, it's a bit confusing the way it's set in the CK, I know...
  9. Thank you both for trying to help, guys! :) Seems I've found where my issue comes from: I use "Skin Tint" as Shader Type (type 5) in the BSLightingShaderProperty in my Nifskope settings - and it seems that the game reserves the "5" shader type to always fetch predefined Skin Textures, so that shader type will ALWAYS override whatever textures are specified in all of my "fake armor" meshes by the default skin texture. (source: Perraine's post in https://forums.nexusmods.com/index.php?/topic/660282-how-to-stop-skyrim-which-seems-to-override-custom-body-texture). I suppose I could change the ShaderType to default but that would mean loosing my character's skin tint, and probably create awful neck seams which sort of defeats my purpose of using other body meshes/textures as armors. You're right, Max, theoratically it is feasable, and probably the easiest way would be to create one specific Race for each set of my BodyMesh/TextureSet and change my PC's race everytime I want to switch bodytypes. Other solutions involve swappingTextureSets with Skse scripts - feasable too but sort of far fetched when my sole purpose was to be able to test my various body textures in game without having to quit game, tweak my Actors' data and load game again each time. Yep, I completely relate to the "modding burnout" which can hit you when you've spent endless hours and days on the same mod - happened to me this winter after spending months on new custom animations and scripts. That mod's still unreleased but I'll get there... eventually ;). Thanks again! Cheers :)
  10. Hey thanks Max for replying so fast!.. :) And yeah, not trying to change faces, it's just different bodies (and hands - as "gloves") that I'm trying to equip as armors (or clothes) to test them. Not trying to assign these to any NPC, just as alternate equipable bodies for the player. I guess I must be doing something wrong then - could it be the fact that I created these as "armors" in the CK? (can't see why tho' because when you equip any armor, you still equip a body with it) Or something as stupid as keeping my "0 NiNode" named "MaleBody_1"?.. Yeah, you're right, too late to persist tonight ;) Thanks again!
  11. Hi guys, Silly question from someone who's been modding for years and should know better, but... Do body meshes and textures absolutely need to be placed in the Actors\Character\CharacterAssets folders to display properly in game? I've been creating different texture sets and adding them to a few different meshes (same skeleton) which I've added as "armors" in the CK - just for testing purposes, to be able to quickly compare in game which look ok and which don't. But they never display in game - my character's body textures never change. As for the moment, I've placed all meshes and textures in custom folders, I'm wondering if that was the wrong choice. If I place one of these meshes in the characterAssets folder however, I can add the new mesh to my inventory and equip it like an armor no matter what it's named. But of course, if all diffuse need to be named "malebody_1.dds", that sort of defeats my (naive?) idea to be able to change body textures like your change armors... Any idea from someone who's more experienced than I am in this matter? Thanks a bunch in advance! :)
  12. I really don't mean to burst your bubble, but if you're new to modding Skyrim, I'd suggest you learn to work your way inside the CK and Papyrus first before you use an outside API, if only to make sure your external code doesn't conflict with the game system. If you're a coder, Papyrus is pretty easy to get used to, you may start with DarkFox127's tutorials (here on the Nexus) if you're interested. What you have in mind can actually be done with Papyrus and skse, it'd probably be a very long script, considering the many ingredients combinations the game offers, but it is feasable I'd think... Good luck to you!
  13. Seems likely that your problem is with you seq file. My experience is its need to be generated again each time you make a change to your dialogue - just for safety, I re-generate mine every time I edit my quest. How do you generate it? With Tes5Edit? And where did you place it in your data files?
  14. @ Dshaggyman116: you're welcome! :) @ dylbill: was a loooOOOoong time ago that I created this thread, can't remember everything I tried but if I remember correctly "Reset()" did not work for that mesh. It would only reset when the whole cell did - besides, resetting would only restore it to its initial "closed" mesh, it never played its animation in reverse. If havok anims work anything like other .hkx, it would need to be reversed in 3DS or Blender. I'm fine working with character animations, but know nothing about havok anims. If anyone can point in the right direction to load havok anims in 3DS, that would sure help! :)
  15. You will need "AND" if you want all 3 to be conditions to acquire your perk. I'm assuming that's what you're asking but be aware that as it is, what you're doing is only conditioning your new perk (meaning, that perk can only be acquired IF all these values equal one), you're not boosting any of these values from what I can see here.
  16. Sure. The function I used to open it is: DweRepository01.PlayAnimationAndWait("Trigger01", "Done") If you only use "DweRepository01.PlayAnimation("Trigger01")", the animation will loop forever instead and never stop. As it is in the CK, that activator cannot be activated directly by the player. So you need to either link it to a scripted activator (like a button for instance) or trigger box to make it activable, or add a keyword to your DweRepository reference (like "WerewolfCanActivate" for instance). It all depends on how you wanna use it. Still haven't found a way to reverse the animation though - truth is I've stopped looking!.. ;)
  17. Yeah, if it's for Fallout4, you need to create an InputEnableLayer variable first before you can disable controls. Would go like this: InputEnableLayer NoWeaponLayer = InputEnableLayer.Create() NoWeaponLayer.DisablePlayerControls(false, true, false, false, false, false, false) You will also need to use this variable to restore player's controls when the player exits your cell: If NoWeaponLayer NoWeaponLayer.Delete() Utility.Wait(0.1) NoWeaponLayer = None EndIf The door may not be the best object to script though as you'd need to consider both enter and exit sides of that door. If your cell has only one door, I'd suggest placing a TriggerBox around both the DoorMarker and the COCheadingMarker inside your cell instead, and add this script to it: InputEnablelayer NoWeaponLayer Auto State WaitingForPlayerToEnter Event OnTriggerEnter(ObjectReference akTriggerRef) If akTriggerRef == Game.GetPlayer() NoWeaponLayer = InputEnableLayer.Create() NoWeaponLayer.DisablePlayerControls(false, true, false, false, false, false, false) GoToState("WaitingForPlayerToExit") EndIf EndEvent EndState State WaitingForPlayerToExit Event OnCellDetach() If NoWeaponLayer NoWeaponLayer.Delete() Utility.Wait(0.1) NoWeaponLayer = None EndIf GoToState("WaitingForPlayerToEnter") EndEvent EndState
  18. @ SurfSide & @ Max: Yeah, I'm in some sort of uncharted territory with the current mod I'm working on using custom furniture for custom anims... :yes: See, there's yet another issue with furnitures: some will skip at least one of the acyclic _Enter and _Exit animations the first time they're loaded, and that seems to mess up SitStates at times. That's true for every custom furniture animation, but that's also true for some Vanilla furnitures which were created for NPCs only: "woodPickup" is one for sure, but there are others, just can't remember which right now (been 5 years since I played around with them... :ohdear:) But yeah, conditions around SitState 2 should be fine for most cases though :sweat:
  19. yeah, pretty good idea, CumbrianLad, it sure would help me for some other mods I've been working on. However yes, if the author's not around anymore, resgistering will be hard to get for the vast majority of mods unless someone volunteers to check these mod's edits in Tes5Edit. In my opinion, it'd be interesting to pair this with a "cleaned with Tes5Edit" stamp - there are still way too many mods out here (including very popular ones) with dirty edits. Listing cells edited by a mod is a very good idea, but it'd still be incomplete if accidental dirty edits in other celles are not accounted for, don't you think?
  20. Hey guys, In case it helps, here's the "counting" side script I've been using to try and understand what's going on - only used with the player so far: Int Property Count = 0 auto Event OnActivate(ObjectReference akActionRef) If Count == 0 Debug.Notification("Count 0, SitState " + Game.getPlayer().GetSitState()) Count = 1 ElseIf Count == 1 Debug.Notification("Count 1, SitState " + Game.getPlayer().GetSitState()) Count = 2 ElseIf Count == 2 Debug.Notification("Count 2, SitState " + Game.getPlayer().GetSitState()) Count = 3 ElseIf Count == 3 Debug.Notification("Count 3, SitState " + Game.getPlayer().GetSitState()) Count = 0 EndIf EndEvent Here's what I get on direct player activation: - when activating to enter the furniture: "Count 0, SitState 2" - when pressing "E" or "forward" to exit furniture: "Count 1, SitState 4" - when the _Exit animation plays after pressing "E": Count 2, SitState 4" (note: this never fires if exiting pressing "forward") Here's what I get when using the same furniture running a Sit package on the player: - when entering furniture when the package completes: "Count 0, SitState 0" - when furniture plays the Sit_Idle: "Count 1, SitState 3" - none on _Exit animation. In this case, I was using my non-looping script (a few posts up above) to trigger the package, only directly activating the furniture once in game to launch the script. I also used "Trace" instead of "Notification" in an attempt to get time stamps, but that did not give me any usable info. - "Count 0, sitState 0" occurs exactly when the package completes and when _Enter animation starts playing - and despite the fact that I don't call "self.activate" in my "Waiting" State. - "Count 2, SitState 3" occurs at the end of _Enter animation, when the Sit_Idle animation kicks in. In my above script, that was happening in the "Sitting" state, when registering for control "Activate", and despite the fact that there is no "onActivate" event in that state. - no activate event received onControlDown(...) - even when I was calling Self.Activate(...) onConrolDown(...) instead of SAE. Notice how direct activation only received SitStates 2 and 4, and package activation only received SitStates 0 and 3. I have absolutely no explanation for that inconsistency. I'm kind of at a loss of other functions to use to try and figure that out atm - RegisterForAnimationEvent and onAnimationEvent do not work on much else than "IdleFurnitureExit" from my experience. My best guess is procedures do not use the same activation system as the targeted furniture's. But if you're not gonna use a package on your furniture, Max, I'd think using SitStates as SurfSideNaturals suggests is a good place to start for you. I'd test it a bit further though as I'm not sure how this "SitState/Activation count" plays for NPCs - we know NPCs' activation system differs from the player's BUT that also varies with the type of furniture used (that much I remember from my extensive use of Vanilla furniture in Clearsky). In case they're using a package, at this state of my furniture testings, I have no idea which SitState they'd be in when the furniture's onActivate event fires. I'll post more info if I figure that out.
  21. Thanks guys for taking the time to look at this!.. @ ReDragon2013: thanks a lot for your help - if I understand you correctly, after disabling player's controls, any further onActivate(...) event the furniture might receive would return false if "akactionRef != Game.GetPlayer()". And not accounting for potential onActivate events in my "Sitting" state was the culprit? Is that what you're saying? See, when I added my "ActivationCounting" script to my furn and realized it was receiving an activate event in the sitting state, I added an empty "onActivate(...)" event to that state - which made no difference whatsoever, it was still looping. Should I have conditioned that event even though at this stage of my testing, only the player can use that furniture? Sorry about that but English is not my native language, so I'm not sure I understand what you mean by "Every code after wait() is paused, until object will be closed or player has left them". What do you mean by "object will be closed"? What exactly is an "object" here? The line of code, is that it? Or something else? My understanding was Wait(5.5) pauses the script for 5.5" (and the state you're in as well), to resume the stack on the next line of code after that (thought that duration is not very precise in game, I know). So I was assumingt my script would remain in the same state as long as wait() was not done, pretty much like using a "while" loop will pause your code until one condition returns false - am I missing something here? Thanks again for your help, ReDragon2013!.. @Maxarturo: yep, had exactly the same issue you had when I was working on my Clearsky mod. Turned out some furniture receive 2 activate events when activated by the player, one on enter and one on exit (and even yet a 3rd one if you exited pressing "E" instead of forward) - and only one activate event when used by NPCs. So if they're designed to work for both, they need to be scripted. If I remember correctly, I used a bool to get my script working for both, but same logic as yours: adding conditions. That's what I started to do first with my looping script but that did not stop it from looping anyway... Then suddenly, one stupid version worked!.. That's when I decided I needed help... ;) Thanks Max!
  22. Guys, I need a set of fresh eyes to help me figure out why exactly one script loops indefinitely while a fairly similar one doesn't... Here's the script I attached to a custom furniture in my test cell: ;============================ LOOPING SCRIPT ================================================================== Quest Property _HBT_PlayerPackageQuest Auto Actor Property PlayerRef Auto Event OnLoad() Self.BlockActivation(true) GoToState("Waiting") EndEvent State Waiting Event OnActivate(ObjectReference akActionRef) If akActionRef == PlayerRef Game.DisablePlayerControls(abMovement=true, abFighting=true, abCamSwitch=true, abLooking=false, abSneaking=true, abMenu=true, abActivate = true, abJournalTabs=true) Game.SetPlayerAIDriven(True) _HBT_PlayerPackageQuest.Start() GoToState("Sitting") EndIf EndEvent EndState State Sitting Event OnBeginState() RegisterForControl("Activate") Utility.Wait(1.5) GoToState("Exiting") EndEvent EndState State Exiting Event OnControlDown(String Control) If Control == "Activate" UnRegisterForControl("Activate") Self.Activate(PlayerRef, true) ; it loops whether I call self.activate here, or don't call it and then exit pressing forward _HBT_PlayerPackageQuest.Stop() Game.SetPlayerAIDriven(false) Game.EnablePlayerControls() Utility.Wait(5.9) ; time for the exit animation to play Debug.SendAnimationEvent(PlayerRef, "IdleForceDefaultState") Utility.Wait(3.5) GoToState("Waiting") EndIf EndEvent Event OnEndState() UnregisterForAllControls() UnregisterForAllKeys() Debug.Notification("back to waiting") EndEvent EndState ;========================= END LOOPING SCRIPT ===================================================================== This loops indefintely - no matter what other object I activate after that will trigger this script to run again in endless loops. In an attempt to figure out why, I added a side script to the same furniture to count "activations" - that script traces 3 activations each time the looping script runs: "count 0" when my package "Sit" procedure activates the furn, "count 1" when my script goes to "Sitting" state, and "count 2" OnControlDown(...) in the "Exiting" State. No idea what triggers activation in the "Sitting" state. The multiple calls for "UnregisterForControl" and "UnregisterForAllControls" are due to the fact that I first thought my script did no properly Unregister, and the strange thing is my log never complained about them when it should have. And obviously, the "onEndState" event runs because I do get my notification to show in game. Now this slight variation of the same script does not loop: ;============================ WORKING SCRIPT ================================================================== Quest Property _HBT_PlayerPackageQuest Auto Actor Property PlayerRef Auto Event OnLoad() Self.BlockActivation(true) GoToState("Waiting") EndEvent State Waiting Event OnActivate(ObjectReference akActionRef) ; counts for activate 0 in count side script If akActionRef == PlayerRef Game.DisablePlayerControls(abMovement=true, abFighting=true, abCamSwitch=true, abLooking=false, abSneaking=true, abMenu=true, abActivate = true, abJournalTabs=true) Game.SetPlayerAIDriven(True) _HBT_PlayerPackageQuest.Start() GoToState("Sitting") EndIf EndEvent EndState State Sitting ; strange: I get an activate count here too - count 1 Event OnBeginState() RegisterForControl("Activate") Utility.Wait(1.5) GoToState("Exiting") EndEvent EndState State Exiting Event OnControlDown(String Control) ; if I don't self.activate here, I get a count 3 when pressing forward to exit If Control == "Activate" UnRegisterForControl("Activate") ; Self.Activate(PlayerRef, true) ; loops again if I keep the self.Activate here, need to press forward to exit if I remove it. Debug.SendAnimationEvent(PlayerRef, "_HBr_BedrollFurn_Exit") ; remove the need to press forward which seems to feed the loop _HBT_PlayerPackageQuest.Stop() Game.SetPlayerAIDriven(false) Game.EnablePlayerControls() Utility.Wait(5.9) ; time for the exit animation to play Debug.SendAnimationEvent(PlayerRef, "IdleForceDefaultState") UnRegisterForControl("Activate") RegisterForSingleUpdate(3.5) EndIf EndEvent Event OnUpdate() UnregisterForUpdate() GoToState("Waiting") EndEvent Event OnEndState() UnregisterForUpdate() UnregisterForAllControls() UnregisterForAllKeys() Debug.Notification("Package stopped - back to waiting") EndEvent EndState ;========================= END WORKING SCRIPT ===================================================================== The only difference between this and the looping script is I use a "SingleUpdate" instead of calling "Wait(...)" - and I remove the "self.activate(...)" onControlDown(...) to replace it with an SAE event (but that never was enough to keep my first script from looping). Notice I still make multiple calls to Unregister for controls and keys - my log still does not complain about them either, and the reason I'm keeping them is I have no idea which call finally does the job!.. I have a hard time figuring out why my first script loops - or even why the scond script does not loop!.. My best guess is functions are running way faster than activations are registered and any activation in the Exiting state (either pressing the activate key or pressing "forward" which counts as an activation for furnitures) resulted in being simultaneously interpreted as activation in the "Waiting" state... And possibly calling "onUpdate" rather than "wait" stalls the script long enough to prevent that. Still, that doesn't explain why with the looping script, my PC could still exit the furniture and wander freely until activating any other random chair would cause the quest to start again... Nor why should pressing "forward" be interpreted as "activate" when I did not register for that control?!... Or why, when using console while the script is running, pressing the "enter" key after any command is also interpreted as activation... Feels like "DisablePlayerControls(...)" and RegisterForControl(...) are not really doing their jobs... It may also be worth mentioning that this is all tested in a test cell I coc to. Could anybody with better coding experience enlighten me about what I'm obviously missing here?.. Many thanks in advance!.. PS. On a side note: these scripts' only use is to test my custom furniture's direct in-game activation against package-induced activation - I don't intend to use any of this in the final mod.
  23. Well, the positioning issue when running a package definitely looks like it is caused by collision interferences between the furniture's collision shape and its entry points positioning. Here's how I explain the difference in player positioning between activating the custom furniture directly in game or activating it with a package so far: 1. when using direct in game activation, collision is immediately disabled, the player is teleported to the entry point before the animation starts => player enters animation in the exact position of the Entry Point. 2. when using a package, the "Travel", "Sandbox" or "Wander" procedures do acknowledge surrounding objects' collisions. Collision is still accounted for when the player attempts to position on the Entry Marker: If that Entry Point somehow covers the furniture's collision object, that collision object will try to push away the actor before activating the furniture - thus causing misalignments before the "Sit" procedure starts running. When the "Sit" procedure finally completes package, the actor is never teleported to the Entry Point: as a consequence, "Enter" animation starts playing from wherever the entering actor has been positioned by preceding procedures and that may cause serious offset. Occasionally, IF, and only if, the "Travel" procedure is somehow blocked by some other object or a navmesh island, the actor may eventually teleport to the "Sit" Entry Point and end up starting the "Enter" animation in the expected position - or never completing his package. Procedures being hard-coded and not much documented, that's only a hypothesis of course, but very consistent with all my testing. As far as I can tell, this is also true for Vanilla furnitures when used with packages, which could possibly explain NPCs occasionally sitting in mid-air some units away from the furniture's mesh (I saw that happen a lot in Solstheim). Custom furnitures for custom animations being not much documented, I'll create a new thread about them once I've gathered all my testing results about: - Nifkskope settings and flags for custom furniture - Collision settings - Entry Points settings and positioning - Heading settings - Activation - Reservation system - Limitations of custom animations use with furnitures and possible workarounds.
  24. Well thanks, guys, that's very useful to know indeed!.. :smile: I managed to successfully create and export collision shapes from 3DS - but transforming collision meshes directly in Nifskope would probably be way faster. 3DS collision exports give me a "bhkConvexVerticesShape", same as the ones you moved around in the Draugr armor .go. And Nifskope's notes about "bhkConvexVerticesShapes" goes: "A convex shape built from vertices. Note that if the shape is used in a non-static object (such as clutter), then they will simply fall through ground when they are under a bhkListShape." No idea what a "bhkListShape" is or does. Do you?
  25. @ PoorMan65: "The mod that I am overriding simply places a boat load of female actors in the world to use as followers, wives, companions... " "Simply" followers, wives, companions?!... And you're only saying this now? :facepalm: Gosh, PoorMan65, PLEASE, don't do it!.. Forget everything I said, I thought that was only one actor placed in some cell to just sweep the floor endlessly or something!.. You never checked these actors "info", did you? Of course they're used in quests, not just custom quests, very likely Vanilla quests too!.. The original mod author would kill me... :pinch: You should retitle this thread "How to butcher and bug a perfectly fine mod"!.. I'm not kidding and I'm saying this with the friendliest intentions, if you don't know what you're doing, don't do it. You're going to bug your game. @ Agerweb: yeah, disabling them might work if it was juts a "sweep the floor" actor like I thought, but only if you're absolutely sure the game won't call them later in some scripts and/or quests. Depending how these are built, coded and conditioned, you could end up stalling a quest or a script forever. The only way to cleanly edit any mod is to fully understand how that mod works first. In other words, we need to be able to build it ourselves before we try to take any mod apart. @ Cumbrianlad: yeah, you could also build some sort of containment structure to put them in, but that'd still have to be in their origin cell as far as I know (the DweFarmInt is pretty good to do that). And yes, navmeshed or not, if they're being called to do something, the game will try to teleport them where they're being called - a "DoNothing" package could prevent that (basically it keeps an actor restrained and waiting forever as long as that package runs) unless of course some high priority quest calls "EvaluatePackage" and overrides it. In that case, you'd need to edit that quest too to prevent this from happening.
×
×
  • Create New...