Jump to content

FuryoftheStars

Members
  • Posts

    48
  • Joined

  • Last visited

Everything posted by FuryoftheStars

  1. Took a bit of a hiatus. :tongue: Here's my (current) final version of the script that seems to be working. If interested, let me know if you see anything in there that sticks out as maybe needing to be changed. Thanks for all your help on this!! Edit: Aaaand I should probably make sure to take out all the Debug.Trace lines (delete or comment out) for the actual packaged mod. :P
  2. While I do not have a direct answer to your question, perhaps a suggestion to deal with having so many followers with you: use a mod like NFF or MHIYH to assign them to your homes and (mentally) treat it as though you hired them to guard your homes while you are away.
  3. You could specify that the player needs to pull out their own items first, if you wanted. Just make sure to put that warning in nice, large lettering on the mod page. :P
  4. Most mods I've seen do something like this just add in the new objects they want, then instruct the player to build the appropriate wing, not build anything in there (in fact, just disable the workbench and use the console to select & disable anything they already have built), and then install/enable the mod. If you want to put in the work to make it dynamic/able to be installed even if the player has already built things in there and then the player builds your objects... I believe each room has a form ID list with all objects for their room. You may be able to run through the list in a script that will check for and disable all of these items (I do not recommend deleting... just disable). Note that many objects in the rooms will have an Enable Parent of one of the other objects. You won't be able to disable these directly, but disabling their Enable Parent will cause them to in turn disable (but if you're running down the form ID list, you should be good as these objects won't be on that list, anyway). You can also potentially script something to disable the store room's workbench and enable your own workbench with just your objects for the player to build (if you wanted to go that route). I don't know how easy it would be to change the Steward's dialog options and I know nothing on the NPC conversation/animation bit. I'm still learning much of this myself. I actually have a pretty ambitious mod idea in my head where I'm going to take over the building scripts for the wings from the vanilla ones and allow 2 things: 1) any wing can be built on any of the 3 sides, and 2) allow removing a wing so you can change it to something else if you like. Right now I'm working on helping someone else update an Oldrim to SSE conversion mod, but it's helping me learn a great deal. :smile:
  5. And now the end table and book are no longer seen as None in the script for the old existing save I had. I have no idea what I've done to do this, or if this has permanently fixed it or if someone else may experience the issue. :confused: :facepalm:
  6. Yeah, that was what I was using, but I had the CK open in the background for most of the day, closing and reopening seldomly, so I don't know if that could have interfered somehow (I reported the issue to the SSEScript mod page and the author responded saying his software still uses the game's compiler for actually compiling). Ok, so I did some testing on these objects that are coming back None. If I start a new game, they don't do this. I'm wondering if this is related to these objects not being persistent previously and thus, if you haven't built the mannequin yet, don't actually exist yet? Even though they get flagged persistent by this mod now, I don't think it takes effect until they're enabled (or a new game is started). Additionally, I can't actually enable/disable these objects directly even when they do exist. The Enable Parent setting seems to override this, so I have to enable/disable the mannequin instead. Not a huge deal, I was able to work through that by adding another array (that I populate in the CK with the object's Enable Parent, if there is one) and duplicating the main working part of the code with the minor changes of enabling/disabling the object specified by the new array, while performing the TranslateTo on the object in the original array. Are there search tools/features I can make use of in the script? Maybe once I enable the mannequin and the table and book are created, I can search the cell for them and then do the needed work? Or, assuming that once created the table and book keep the same ref id # as visible in the CK, I can pass their id #s themselves to the script (rather than the object reference) and somehow pull their object reference with that? I don't know what's available to me at this point, but I feel like there's gotta be something (the HF script is somehow able to enable its objects with just a part id # being passed to it rather than an object reference).
  7. Ok, I'll try some testing at some point to see if I can figure that out. I'm pretty sure it's not the HF script that's causing issues as it's the same script as used by the chandeliers and horker head. Only thing that's really different is that the book and end table are enabled via a set Enable Parent (pointing to the mannequin), and that there is no Reference Editor ID name filled in (it has a hex ref id, just not a plain text one). Filling something into this does not solve it on an already existing save, though. I'll try a couple bouts with it on new play throughs and see what I get. And the i+=1 thing, yeah, I dunno. It seems to work today for some reason. May have been some kind of weird bug in the CK/compiler? Maybe if I'd shut the CK down and retried it would've worked? *shrug*
  8. Woohoo, everything most things seem to be working so far. :) Course, I forgot to put in a "i += 1" into my while loops, so it was kind of funny seeing the first chandelier just flickering in and out of existence. :P (Annnnd there seems to be a bug with the compiler software I'm using. Won't compile "i += 1", though it will compile "i =+ 1", even though that syntax doesn't actually work. Oh well. Writing out the full thing of "i = i + 1" for now.) And this... If False && NeedsUpdating && ConfirmationMessage.Show() == 1 ...still resulted in the message box showing, so I guess that answers that question. :) Oh well, multi-line it is! Ok, another hurdle! (In case you can't tell, I'm writing this post as I go and try things and encounter new issues, then fix them....). The end table and book under the wall mounted horker head on the 2nd floor of the main hall... they're enabled via the mannequin next to them rather than directly like the chandeliers and horker head. In the CK, I can add them as objects to the script and everything looks fine there, but when the script actually runs, it's saying the object is "None" and (expectedly given no object) throws errors when attempting to do anything with them. What gives?
  9. Thanks. Yeah, I realized the mistake I was making and ended up doing this (by the way, how do you do spoiler tags in these forums?): bool NeedsUpdating = False int i = 0 While i < ObjectArray.Length && !NeedsUpdating If ObjectArray[i].GetPositionX() != XCoordArray[i] || ObjectArray[i].GetPositionY() != YCoordArray[i] || ObjectArray[i].GetPositionZ() != ZCoordArray[i] NeedsUpdating = True EndIf EndWhile Oh, one more question. If statements with multiple conditions. Does papyrus evaluate all of the conditions regardless, or will it shortcut out if the first condition it evaluates false? IE: If NeedsUpdating && ConfirmationMessage.Show() == 1 If "NeedsUpdating" is False, will it still attempt to evaluate the next condition (causing the message box to show), or will it shortcut out and skip the message box? I've seen both ways between the languages I've used.
  10. Thanks! (EDIT: Bleh, nevermind on the below. I suppose it'd still be good info to know, but I'm realizing at the moment that the usage of the array where I'm trying to use it is actually over complicating things, so I'm switching methods.) So I'm working through this and went ahead and bit the bullet to learn arrays and looping with papyrus (I still need the xyz coords as I want to do a quick check to see if the objects are already in their correct positions. If they are, there's no sense in popping the message to the player or doing anything else). One question I have on them: can you assign the full array of values to the variable in one go? Rather than writing out individual If checks on each object's xyz coords, I'm popping them into an array defined in script during runtime and then looping on it real quick with a bool to break early if need. This is what I have at the moment that'll compile (this is just a snippet): float[] xyzCoords = new float[3] xyzCoords[0] = ObjectArray[i].GetPositionX() xyzCoords[1] = ObjectArray[i].GetPositionY() xyzCoords[2] = ObjectArray[i].GetPositionZ() In other languages, this is doable in one line, though I suppose due to the nature of just declaring the array I can't do that in papyrus. But can I combine the 3 assignments into one line? Again, in other languages, I could do something like this: float[] xyzCoords = new float[3] xyzCoords = {ObjectArray[i].GetPositionX(), ObjectArray[i].GetPositionY(), ObjectArray[i].GetPositionZ()} However, this won't compile for papyrus. I've tried wrapping the values in {}, [], and (). Do I need to use something other than a comma? Or am I stuck with having to assign each element on their own line?
  11. Is there a trigger condition for quests for when you enter certain cells? A bit of experimentation reveals that if I wait until I'm inside of the hearthfire home before popping my message (for now, I'm just setting a 30 sec delay to give me time to get inside with the current save I have), then enable the object, TranslateTo will work. I can also check the object's enable condition and save this to a bool prior to enabling it for the move, that way once I'm done moving it, I can re-disable it (and actually, I'm noticing I need to disable/re-enable anyway to update the collision box, so really, I'm disabling regardless, then checking the bool to see if I should re-enable). MoveToMyEditorLocation still does not work and in fact I just noticed it's throwing an error of "cannot be moved" into the papyrus log for that method. I did notice in SSEEdit that the chandeliers and horker head are flagged as persistent, which lead me to googling around and finding some posts by Arthmoor on the AFK Mods forums talking about different levels of persistence and that in some cases of "fully" persistent objects, even script methods of moving objects wouldn't work. *shrug* https://www.afkmods.com/index.php?/topic/3669-overhauling-the-weapon-rack-scripts/page/21/&tab=comments#comment-148158 (Note that in that quote snippet, it's movement via the CK and mods Arthmoor is talking about except where specifically mentioning scripts.) Anyway, if quests can trigger by the player entering a certain cell, then I can just split this into 3 quests, 1 for each home, then run down the list of objects using the technique I detailed above. I'd considered looking into arrays and papyrus's equivalent to for loops so I could cut down on the number of property vars I need to write into the script (and hopefully avoid having to edit the script any time a change is made where another object's location needs to be updated or one no longer needs it), but in order to do that, I'd also need to create a matrix array for the xyz coords (to feed into TranslateTo) and I'm not sure if I want to go down that road, yet (assuming papyrus can even do that)....
  12. Like, when you start aiming in 3rd person it auto switches to 1st? I donât recall seeing one, but you can press F (default key to switch between 1st and 3rd on PC) while aiming and itâll switch.
  13. Ok, actually, I think Iâve thought of a way to solve the âis this being installed mid play throughâ. Just check the xyz coords of the objects. If theyâre not correct, then prompt the player.
  14. Could I still have this main quest with the confirmation dialog and use it to populate a global var with the playerâs response, and then use a reference alias quest for the individual objects whoâs scripts check this var? In this way I can still move the objects (including the ones that arenât firing any of the normal objectreference events) and only have it done if the player confirms this is what they want. Iâm also wondering if thereâs any way to differentiate between a player adding this mod mid play through vs starting a new game?
  15. Yes, sorry, properties are filled on the script, too.
  16. Ok, so I got the quest itself working, dialog message pops and I can confirm that it's running through the pieces to move the object (via Debug.Trace messages)... but the object doesn't move (and I'm running this against one of the chandeliers which did work with the script attached directly to it). I've tried MoveToMyEditorLocation, SetPosition, and TranslateTo. I've also tried enabling the chandelier, first. Do I have to wait until the chandelier is actually loaded? IE, I need to be in the cell so it loads the 3d object?
  17. Ok, thanks! I did try MovetoMyEditorLocation previously, but it didn't seem to work (even for the chandeliers, which TranslateTo did work for). I'll give it another go, though. It's possible it just didn't work under the context of the script I was working with? Edit: Oh, as there's a way to tell if the object has been deleted... is there a way to undelete the object? For the horker head and other items by it, it's not a big deal, but I imagine the chandeliers would be.
  18. Ok, thanks! I hadnât really thought much about the message box angle cause I havenât done anything with em yet and wasnât sure how itâd work. Will SetPosition or something work if an object hasnât been enabled, yet (if the player hasnât âbuiltâ the object via the hearthfire system)? It would make things easier if I could put everything in the same quest.... Also, in the off chance that someone has used the console to disable/markfordelete some of these objects, will this cause errors when I attempt to use SetPosition and is there some kind of check I can make before hand or some other kind of error handling in Papyrus I can use (like ON ERROR GOTO NEXT for vbs)? (Edit: Annnd these forums really do not like the apostrophe from my phone. Sorry about the random stuff it puts in their place. :/ )
  19. Actually, new thought. So the point behind this was for those that are running/adding the mod mid play through, right? I'm already moving the objects in the CK as well, so those on a new play through don't need the scripts to update the object locations. Could I move the scripts into a separate mod (and use the quest idea), one meant purely for those that 1) are installing/running the main mod mid play through, 2) don't have any other mods installed that move these same objects, and 3) want to have their objects moved to the new locations? Players could thus install this optional mod and run the game, causing the quests to trigger and move the objects to their new locations. And then (I'm hoping this next part won't cause any problems), they can save & exit, and uninstall the optional mod. (If that does cause problems, then this idea forces them to use another mod slot... though maybe this optional mod can be made into an esl flagged mod? Sorry, I almost feel like I'm making this up as I type.) Do you think that could work?
  20. Hmm, ok. Still not sure I want to take that approach for this mod for the purpose of relocating items. There are 6-7 items per hf home (x3) and it'd force any other mods touching the same items to create a patch to overwrite the quests from this one if they needed the items to be moved to a different location. I'd rather let load order take care of that.
  21. Whoops! Nope, OnInit does NOT run for the horker head, either. I thought it did, but was accidentally picking up entries in the log from other items I had the script attached to. At this point, I'm starting to try different random events to see if I can find one that actually fires for it. EDIT: Welp, I've gone through all events listed here (https://www.creationkit.com/index.php?title=ObjectReference_Script#Events) that are available to ObjectReferences and none of them trigger for the wall mounted horker head when enabled via the hearthfire's building system. Ah, to heck with it. I guess I'll just have leave those 3 objects in the corner that don't seem to be working as just moved in the CK. Those that start a fresh game will see them moved. Those that don't will still have to use the console and/or another mod like the Decorator Helper mod.
  22. Yes, I am aware of those things. Sorry, I'm not trying to say "you're wrong", cause I know you're right. I'm merely stating that I have never done that. I hadn't even considered that use of the Alt Life mod (I personally have never used it). I personally have encountered the bugged wagon ride (for which there is a patch mod for and works for me), and recently ran into the unable to move bug when entering the keep. Not 100% sure what caused that, cause repeated attempts at restarting did not fix it (I think I finally got past it with a console command to re-enable player controls), but subsequent playthroughs have not encountered the issue despite more mods being added to my load out (I think I was around 200 mods at the time I encountered this). I did remove some mods, though, so it's entirely possible a bugged mod or even a bad load order is what caused that for me.
  23. If you are confident that all your mods are stable, you can fire the game up with all of them active. Just make sure you are using Alternate Start Live Another Life so that you are in an area where you can just chill and let all those mods do their start up thing. If you are not going to use an alternate start mod but rather go through the opening Helgen sequence, only apply the mods needed to create your character. Everything else can probably be added to the game as early as getting your hands freed just inside Helgen Keep or just after exiting the Helgen cave. Oh, I've never done this. :tongue: I've always just let it run through the initial start with them all loaded. Over 300 plugins for myself. *shrug*
  24. Ok, so OnInit does run for the wall mounted horker head (EDIT: Nope, it doesn't... whoops!), but I'm still unable to get it to move. TranslateTo and MoveTo both fail to actually move it. I even tried disabling it first, ran the move operation, then re-enabled it. OnInit also seems to run before actually enabling it through the build system (so I don't know if that makes a difference). It seems like it should be moveable, though. I've successfully used the Decorator Helper mod to move it in game and, as near as I can tell, they only use the TranslateTo command throughout their scripts to accomplish this.
  25. Yes, the original mod author (and myself) both did that, but for those installing the mod in an active play through were not seeing these objects move to the updated positions. Hence why the original mod author just threw in new replacement objects and put instructions in the mod description to then not build the originals. The originals were getting their locations baked into the save (and it seemed like it was happening even before building the house. I tested going all the way back to just after purchase of the house and yet everything tried staying in their original place).
×
×
  • Create New...