Jump to content

SMB92

Premium Member
  • Posts

    2304
  • Joined

  • Last visited

Everything posted by SMB92

  1. If it is listed with a magnitude then yes you can increase the value.
  2. And you installed F4SE and Looksmenu etc?
  3. How long are we talking about? 5 minutes? After a while if play, 1 minute load screens aren't that uncommon
  4. Yeah that is bizarre. Have you been in that cell before now though?
  5. I can't find the mod now, but there is a mod out there that makes settlers venture out farther and go up higher that seems to be the solution for this problem. I just need to find out what the mod is (I will know it when I see it). Yeah its a simple mod that ups the sand box zone from 1000 to 10000. I added it to my patch recently, ill find it when I'm at my PC Theres a recent mod that makes the radio towers better to build on too
  6. I'm curious to know, have you tested your interior when it has been filled with objects? How is performance without building objects? I'm just interested to know how you went about setting up your cells, because many don't consider the new precalc system when building these sorts of mods. Maybe I'll find some time to have a looksy over the weekend :)
  7. The problem I'm having now is that the Spawn() function starts the SpawnEnemyActors() function, but in my testing it goes straight to the Quests version of it, so it doesn't use the Objects version of it like it would a child script. This is what I'm currently investigating. Maybe I'm a little confused about this too, but I've made the ActorTypeStruct[] a "private" variable on the Quest. But all the contents in it are properties of the script, so I'm thinking I should be able to pass those as parameters to the SpawnEnemyActors() function even if it is on another script? I'm at work for a few more hours, but I ws gonna try making an extension script and attachingthat to the object as well, and try some casting techniques but I'm not sure how that would play out. Looking at the wiki earlier, I wrote down these notes regarding what I was thinking, based on its example:
  8. Lol. I guess I have to figure out now how to pass down the parameters (as full properties) to the object script, the way it is written now I don't think it can be done. You can go up the chain but not back down....
  9. Correct. And then some ;) I was going to have faction spawns in with the random enemy spawns, however I am very much considering splitting them off onto their own spawn points. In fact that's pretty much a definite. Same amount of control over them o0f course, but I see that it would be too likely for you to end up with just a faction group spawn and nothing else, which is kinda boring in my opinion (I sorta got sick of seeing faction groups everywhere without any enemies, but in saying that its still good to have, just have to find the balance).
  10. PROBLEM SOLVED. Guess I needed the 8 hours away from this to see the blatant mistake. Compiled now :) Just have to test what comes out the other end in game. Note To Self: When moving functions to another script and renaming them, REMEMBER TO RENAME THEM IN THE DEPENDANT SCRIPTS!! (Can't find Spawn() in Questscript, because it is renamed SpawnR1() rofl) (Proceeds to chastise) Thanks vkz for confirming :)
  11. Soz thats just a spelling mistake the ASC. Vs ASC_ in my example. It simply not working in this way, maybe the script has to be in an alias. The casting as technique is mentioned a few places but WOTC makes ample use of it. Basically it goes Scriptname TempVariable = QuestProperty as Scriptname. I have the property prefilled on the object script when trying to compile. Always errors that its not a function. Even when I uncomment the original function on the object script, so it definitely recognizes/is trying to pull the function from the quest script. As mentioned the quest is setup and its script compiled. Seems very strange to me. I bet theres some small technicality to it
  12. Hi again folks, I'm having a seriously hard time trying to move some functions from my Object script to my Master quest script, and access those functions from the object. I was up until 3am this morning scouring Google for examples and what not and I can't see what I am doing wrong here. I'll post some simple examples of what I have tried, and further below I'll post the full script. So we have ASC_MasterRandomQuest with ASC_MasterRandomQuestScript attached and we have ASC_SP_Random (an XmarkerHeading duplicated and reformed) with ASC_SP_RandomScript attached. I am trying to move one of the preliminary functions to the Quest script, because that functions needs to see the dynamic array of structs on the Quest, and return parameters to the Object scripts function, if that makes sense. Here's what I tried so far Simplified example of quest script: Attempts at grabbing function from quest script: I might not have covered every combination of things I have tried to cast, but I believe I have tried everything. None of the casting methods I have seen (apart from LinkedRef and using an Alias etc etc which I have not tried because I thought this should work?). Surely this has to be a simple error or oversight on my part? Anyhow here is the Quest script (Yes it is compiled in CK and all properties filled in it's current state) And here is the Object script (which still reflects the insane attempt at casting from my examples above, have not fixed yet but all the same lol) Any pointers here is much appreciated :) I can revert back to using a full property for the array of struct, but I am attempting to make the mod a bit more dynamic.
  13. Trosski- First off, thanks for your tutorial! It has really helped me overcome the fear of making worldspace edits and not mucking things up. Previous attempts ended in dismal failure, so thank you. I recently ran into the same issue you described making a patch for my Overboss Hideaway player home and BT Interiors. The abandoned house across the street from the player home that BT interiors opens up has a table and refrigerator that have texture flickering with the patch active. Apparently these items are being rendered twice, once from mod, once from the patch. I assumed deleting them from the patch or mod would resolve it, but never bothered to fix it because you can't notice it unless you stand right next to the two objects which isn't going to happen very often. See my post directly above yours ;)
  14. Remember the page file trick too even if you do have lots of RAM. Once I set up a 16GB page file, CK was quite happy to generate 11 ugrids worth without crashing :smile: Took an hour but lol One thing worth watching out for as well is some mods (like Beantown) use multiple models of buildings in the Layers for designing multi story buildings and stuff (easier to work with in CK). What you can end up with is a single building with multiple combined models and this seems to load slower when entering a cell, and in some occasions cause a fair amount of Z-fighting. Good to check the layers on some mods for optimization before combining as well, and disable (not delete) said extras.
  15. You can load both mods as ESMs into CK and generate a new precoms esp with both mods (after removing all precoms data from both first and doing any hand edits in the render). Thats how I generate mine.
  16. I can think of a mod that might cause that, drive-able motorcycles. Especially if you have the throttle going and you're moving fast. I know I can move faster than the objects can load. For example, I can get to the Diamond City gate for the first time when meeting Piper and the gate and her haven't loaded yet and it takes a couple of seconds for them to appear. So when traveling fast enough via the mod, a player might be able to cross several grids much faster than would otherwise be possible. Just thought I'd mention that as that could cause an issue from what you're saying. This is a good point in a sense, but I won't be accommodating for this kind of thing :D. I wouldn't use it myself, vanilla would probably crash with it (I have tried the mod though). I will look at failsafes for when players are in Vertibirds however, that is a big one from WOTC people had a problem with (and there are some vanilla random spawns, believe it or not) I'm excited about this ApplyToRef() function kitcat81 mentioned, I'd like to see what I can do that
  17. Thanks for following the thread :). Personally I quite like it the way it is. But I guess one reason for that is I haven't fully figured out how to run the function from the quest on the marker properly :D. But I still just like it how it is anyway :P. You could say I like a mix of the Quest + script. The quest now contains all the timers and Formlist events, first install stages and uninstall stages as well, and I am thinking to dynamically fill the array of structs now if that's possible (to achieve only having what's allowed to spawn to be present there). I also like being able to copy and replace in the marker script, for variations etc. That is perfect. I'll look into it asap. If this works I can just assign them on spawn like the way they get linked to a patrol marker and unlinked on unload.
  18. Another thing that crosses my mind here, seems the OnCellAttach/detach works within the ugrids range, I have not implemented anything in the case that you happen to "pass by" a cell very quickly. I think in WOTC, a lot of CTDs happen when the player moves across a lot of cells and the script isn't keeping up, and by the time it elects a place to MoveTo the spawned actors, they're out of the loaded area (probably why I see up to 5 "could not find navmesh with MoveToNearestNavmeshLocation function before most regular crashes). I think my script is a bit faster though and from what I can see (given I don't intend on having any more than 2 points per cell mostly) it will be finished before that could happen. Just thoughts based on what I have seen anyway On an entirely separate note, it's in the back of my head that if I set up a patrol marker network, this will be persistent. I wanted to set it up so that other modders could also use it, a bit of a convenience feature, as well as to address the problem that WOTC sees with it's patrol AI packages and the fact I don't want to modify/have too many custom ActorBases/LvlNPCs (for cross compatibility). But for shiz and giggles I was looking at how it could be possible to dynamically give each NPC a "patrol" package. Apparently the only way to do this is ForceRefTo() a reference alias and assign the package (maybe having to force with EvaluatePackage()). I wonder though, if I had a single Ref Alias on the quest, and I kept forcing NPCs in and out of it and assigning them the package, would that work for the way things are set up (possibly multiple "spawnpoints" sending NPCs to the RefAlias, will they keep package after they are out of it, how to remove the very last NPC fro mthe RefAlias when they've all been through etc etc) Just reading that back to myself, I'll stay with the patrol marker network lol. Just curious how far I can "rev the engine" lol. On that note, I kinda thought of a way to make them non-persistent using an uninstall script. If my whole network is linked from one end of the CW to another, I could do some code that specifically starts at one of them, and keeps getting the next linked ref and setting it to none. Until they are all unlinked in that savegame, so users can have peace of mind. Suppose that would take some very careful placement though, but hey at least I think this way :)
  19. Thanks for the optimization. From my testing, the cells detach fairly close (inline with ugrids settings), I could see this with the debug note when testing that before. I couldn't use OnUnload I think due to some parts of it still being persistent and never getting the event. Unless I never walked far away enough for it to get the event :P I guess the idea behind the IsInCombat check and the initial 10 second timer, I have seen in WOTC some enemies being "cleaned up" when I've only been out of the cell for a few seconds. And it could be possible for the player to engage combat with another group while backing away from one group etc, and end up crossing 10 cells or so. So in my mind it was the lesser evil to have the check. The 10 seconds timer, I was thinking to make a Global for it as well, so users can decide said timer. That was the intentions anyway. I added a new item to the struct as well, ASC_Ez_Lvl, and an array on the quest of all the EZ's I have made. Also because I wasn't sure about the "script stalling" a made a new function that could rearm the point if nothing actually happened
  20. Interesting. Can't say I think much of that DLC. Spent about 15 minutes in there, haven't been back since. Talk about "Improvised" lol. Gave up on this business for now, busy building new spawn mod :)
  21. @BnF - Just wanted to ask one thing before I go to sleep. In the Spawn() function you mentioned that there might have to be something in the else block if both the first blocks returned none/false Function Spawn() int iNumSpawnTypes = (ASC_MasterRandomQuest as ASC_MasterRandomQuestScript).ActorTypesR1.Length ; how many types of spawning actors can we support int iWhoToSpawn = Utility.RandomInt(1,iNumSpawnTypes) ; changed to use the size of our array of actor types ActorTypeStruct spawnDetails = (ASC_MasterRandomQuest as ASC_MasterRandomQuestScript).ActorTypesR1[iWhoToSpawn] if (spawnDetails.ASC_Allowed.GetValueInt() == 1) SpawnEnemyActors(spawnDetails.ASC_Max_Allowed.GetValueInt(), spawnDetails.ASC_Chance.GetValueInt(), spawnDetails.LvlActorBase, spawnDetails.ASC_Allowed_Boss.GetValue() as Bool, spawnDetails.ASC_Max_Allowed_Boss.GetValueInt(), spawnDetails.ASC_Chance_Boss.GetValueInt(), spawnDetails.LvlActorBossBase) elseif (spawnDetails.ASC_Allowed.GetValueInt() == 0) && (spawnDetails.ASC_Reroll_Allowed.GetValueInt() == 1) ;Reroll for another spawn once, if elected group is not allowed as per user settings RerollCheck(spawnDetails.ASC_Reroll_Chance.GetValueInt()) else ;Not sure what to do here to stop script from stalling endif EndFunction Would you just link that to another bogus function that just does something for the sake of it (or nothing) just to complete the code? Or something specific? BTW here is a more polished up version now:
  22. Just wanted to post a special thanks to users BigandFlabby, kitcat81 and TheDungeonDweller for their help with scripting, without them the system would have been built with sticks (so to speak) but now it can be built with steel and concrete! This notice is also reflected in the OP. Thanks again folks!
  23. Â You're gonna want to remove the line import ASC_MasterRandomQuestScriptfrom the ASC_Random script. You're already importing the struct. There's no need to import the quest script. Doing so will give a duplicate array. Won't hurt anything as long as you don't try to use it inadvertently.Cheers, I'll do that.
  24. Cool, I'll have a play with that as well!
  25. Just thought about your mention to move SpawnEnemyActors to the quest script. While you can do that, as it is it doesn't really matter either way. You'd need to make sure to add an argument to the function so you can pass the marker ObjectReference. Then in the SpawnEnemyActors function change the self in the uses of self.PlaceActorAtMe to the argument variable. My problem with that is, I want to store the array of spawned actors on the local script, so I can clean them up or do other things with them later. As mentioned above though, if it is better to have the Spawn() function on the Quest, I could do that, but I'm not sure what changes would have to be made for the SpawnEnemyActors function on the local script so that all the parameters etc would still be passed etc, or maybe I don't have to do anything at all? So visually (because I'm crap at explaining things lol) the script would look like this? And the quest like this If this just works like this than that's great, but the wikis give me the impression I need to do something else for everything to work properly?
×
×
  • Create New...