Jump to content

IsharaMeradin

Premium Member
  • Posts

    9173
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by IsharaMeradin

  1. Nexus stance has traditionally been, if there is no specific language indicating use permission then one should not use those particular assets. There is nothing stopping you from utilizing the assets locally for your own purposes on your own computer. That said, uploading modifications using assets without permission can get you in trouble. Especially here at the Nexus. Now if the Bethesda.net links still worked, you might have been able to check on permissions for the original mod within the release forum thread. But sadly, those were removed.
  2. For your second example, since you are working with an array, use Find to get the index with the matching value and then do something. If csbmagellanquest04locations.isrunning() Int index = SavedText.Find(CorrectReplacmentText) Debug.Trace("CorrectReplacementText has been found at index "+index+" of the SavedText array.") If index >= 0 ;a match has been found ;do something since they match Else ;do smething else since there was no match EndIf EndIf
  3. I cannot help you as I know nothing about the C++ side of SKSE. However, I have to ask, why are you using SKSE to try and copy a script from one record to another? Why can you not assign the script to the desired record(s) in the Creation Kit?
  4. Here was my approach to working around an item in the potion / food / ingredient categories that get consumed on use: I created a single effect with a short duration with an attached script that used the OnEffectFinish event to re-add a new instance of the object. The White Phial on the other hand utilizes two separate quest scripts, one which is told by the player what effect it will be using, adds the pre-defined version of the white phial with that effect. The effect uses OnEffectStart to call the second quest script which adds the empty version of the phial and registers for an update. After which, the first quest script once again adds the pre-defined version, and the process can repeat as much as possible. The difference in the two approaches: My approach will show the item leaving the inventory and returning only after the player has exited the inventory and the effect duration completes. The White Phial approach will show the full item leaving with the empty version appearing almost immediately. My approach works best for an item flagged as a quest item that cannot leave the player inventory (at least manually). The White Phial approach will also work wherever the phial might be placed (container or ground) as it is also designed to track its location.
  5. This information was not found in the Creation Kit. I did look at the CRO6 quest in xEdit and saw the scripts that were attached to the quest. I then looked those up in File Explorer and opened them with Sublime Text. When I saw that CR06QuestScript was calling a function on its parent script, I looked to the ScriptName declaration to see what script was being extended. I then found that script and opened it up. I looked for the function that was called there and found where the map marker was being added to the map. Perhaps this will be informative: https://ck.uesp.net/wiki/Extending_Scripts_(Papyrus)
  6. Parent in a special pre-defined variable within the Papyrus system. It always refers to the script that the current one extends. In this case CR06QuestScript extended CompanionsRadiantQuest.
  7. It is done via script. I don't see where the function is initially called. Bethesda developer comments state that the function is called when the quest is accepted. If we just go with that, then the local quest script calls the overarching companion radiant quest script which is where the map marker actually gets added to the map. CR06QuestScript Function Accepted() BossChest.GetReference().GetParentCell().Reset() BossChest.GetReference().AddItem(Gewgaw.GetReference()) parent.Accepted() EndFunction CompanionsRadiantQuest ; called when player accepts quest Function Accepted() ; Debug.Trace("CRQ: Accepting " + self + ".") (ParentQuest as CompanionsHousekeepingScript).AcceptRadiantQuest(Questgiver.GetActorReference(), QuestgiverComesAlong) if ( (MapMarker != None) && (MapMarker.GetReference() != None) ) MapMarker.GetReference().AddToMap() endif IsAccepted = True SetStage(10) EndFunction
  8. People who run across this thread at a later date when looking for information regarding a similar issue, may appreciate the resolution being shared as well.
  9. Probably unwise to do the approach you have described. Not even sure that the name field alone would allow that many characters. It finally dawned on me that the problem with your initial approach is that SetName (an SKSE function) applies to the base object and not to any one specific instance. Thus when you change the name via SetName, you are changing it for all instances. And that is why your first letter gets updated to the new data on the second letter. This may be the case where the object itself needs to be edited. Sometimes trying to do things so that they will be as compatible as possible also makes it more complicated and difficult to track down issues.
  10. The difference then must be in the approach to filling the data. I haven't had much experience in this aspect to be honest. I just knew (where to look up) the basics of how the quest worked. I would guess that you would need to try the same approach as was done originally. Not sure how feasible that might be for compatibility purposes.
  11. Not a mod. It has happened in the unmodded base game for both LE and SE. All it is, is a sign that your game has a bottleneck and struggling to swap from LOD to closeup textures. It happens to me after some time playing. Saving, exiting and reloading solves the problem for the next little while. I have a personal threshold where if this type of thing crops up within, I look at culling some mods until this issue appears later than the designated threshold.
  12. While a bounty quest is active, there will be no other instances of that bounty quest offered in any hold. The current quest must be completed. If the hold in question has multiple locations for that bounty type, it may be possible to get a second bounty quest of the same type. Otherwise, it will not be possible to get the same bounty quest for the same location until the same bounty type has been completed for a different hold. The letter itself contains placeholder text which gets filled with the appropriate alias data. The text string that gets replaced with the alias data is to be considered more of a variable that holds the assigned value rather than something that has to re-acquire the data every time it is loaded. And because the letter is created anew for each quest, every bounty letter is its own separate instance of the base object holding its own specified variable text. End result, one can have in their inventory one bounty letter for an active quest to kill a bandit leader and multiple bounty letters for completed quests to kill bandit leaders.
  13. The wiki page I linked in the earlier post, lists the body part numbers along with their typical usage. It also gives instructions on how to change the body slot number in the NIF file, the armor record and the armor addon record.
  14. NIF files are not imported or uploaded to the Creation Kit. The CK merely accesses them as it does with any other file type assigned to an object record. That said, you've assigned the mesh to an object record and you're crashing when the render window or a preview window tries to display the object? And if not, what steps are you doing that is leading up to the crash? I, personally, cannot help you solve any potential issues with the mesh itself. However, the answers to these questions may certainly help others to understand your issue and hopefully provide you with some insight.
  15. Body slots did not change between LE and SE. The following should be helpful: https://wiki.nexusmods.com/index.php/Skyrim_bodyparts_number
  16. Any issue regarding the number of scripts would be in relation to the number of active scripts. However, even the unmodified game will have a lot of active scripts. So, this may not be a good indicator. Rather, you should see if there are multiple instances of the same script running. While there are valid reasons for the same script to be running multiple times (i.e. re-used on multiple objects), there is usually not a good reason for that number to reach into the thousands. There has been discussion about the number of data strings having a limit and exceeding that can cause issues. Scripts are a source of additional data strings and so there could be a connection between the two in a given system. In a nutshell, I do not know, with any certainty, the information you seek and hope that someone can provide good sound and solid information that will answer your questions.
  17. When you write a function, you can establish what parameters are passed into that function. The function will then work with those parameters. FormList Property myList Auto Function myF(Form myForm) Int index = myList.Find(myForm) If index != -1 ;do something EndIf EndFunction And to trigger the function NameOfControllerScript Property myCS Auto ReferenceAlias Property myAlias Auto ;inside function or event myCS.myF(myAlias.GetReference() as Form) But you did mention vanilla quests (aka stock quests) and for compatibility reasons may not wish to modify any scripts and / or records associated with said stock quests. Without specifics on what you are doing and examples of what you are doing, we can only speculate in possibilities. *************** If you are willing to use or are using SKSE the following might be a possibility but may need work to fit within your needs (it is theoretical untested code): FormList Property myItems Auto Quest[] Property myQArray Auto String[] Property myANames Auto ;index match the quest and string arrays Function myF() Int ix = myQArray.length While ix >= 0 ix -= 1 If myQArray[ix].IsRunning() Int idx = myItems.Find(myQArray[ix].GetAliasByName(myANames[ix]).GetReference()) If idx != -1 ;reference item exists and is in the array ;do something EndIf EndIf EndWhile EndFunction
  18. Use a parameter in your function that takes the reference alias from the given quest. i.e. Function F(Quest Q, ReferenceAlias RA) Thus, when you call your function from the other quest you can pass in the quest as well as the alias reference used on that particular quest. It will theoretically work. I personally have not tried it.
  19. Why the wasted real estate at the top to the right of the profile picture? Is something planed for there that has not yet been shared? If not, couldn't the endorsements given, profile views and kudos be stacked vertically to the right of the profile picture? It would bring the rest of the content a little closer to the top as well. I know the space isn't for ads as I logged out to see how the layout would be with ads present. The content gets pushed down with ad space between the profile and the NexusMods dropdown ribbon. Also a banner pops up over the content in the center bottom. Effectively blocking the initial view of what bits of content can be seen. It should be noted that I zoom in at 125% so that I do not need to switch glasses and move my head about in order to read through a small portion of my progressive lenses. So that may play a factor in some of the appearance.
  20. At what point is it failing? Is it not getting the enchantment? Is it not getting the base enchantment? Is it not determining if the player knows the base enchantment?
  21. The update registrations apply to the object itself. This means that any script attached to the object will be able to receive the OnUpdate event. It may be possible that the mod in question was designed to interact with something else. It may be possible that there was an OnUpdate event at one point that has since been removed and the registrations forgotten about. It is also possible that they were copied from an example without understanding what it was meant to do. Who knows at this point. If the mod works without them, no need to include them. FYI - pretty sure that the OnKeyUp event would be better than using a while loop with IsKeyPressed. Use OnKeyDown to start playing, then OnKeyUp to end playing.
  22. An armor replacer with assets from other mods. Are you replacing existing base game meshes / textures? If yes, you just need to place the loose files (meshes & textures) and make sure that the necessary armor and armor addon records are pointing to the correct meshes. If you do not want to edit the NIF files to ensure that they point to the correct textures, texture sets can be created in the Creation Kit to override anything assigned to the mesh file. If you're doing something else, you'll need to be more specific. This will be a good read: https://wiki.nexusmods.com/index.php/Creating_an_armour_for_Skyrim._Part_2. Yes, the wiki was written for LE. But it is still valid for SE. If anything, read the Add the armour to the game sections for both the _0 and _1 mesh files.
  23. I was at work tonight. So no, I was not 'here'. So... this boils down to not knowing the full intention. In most scenarios, one would want to disable anything not associated with the current thing. That is how this is set up. It sounds as if you are relying on all the previous "piles" still being present. If that is the case, remove every instance of the myActive variable that I had added. The script would then enable any "pile" that is lesser than the value and disable any "pile" that is greater.
  24. Add some debug statements to see how far things are going in the script.
  25. Are you testing on a new game or one that has not seen the mod you are working on? If the object that the script is attached to is already loaded and stored in the save file, not all script changes will be recognized. Without actually seeing the setup and how everything hooks together, I cannot begin to speculate where it might be failing. The script itself is sound.
×
×
  • Create New...