Jump to content

dylbill

Premium Member
  • Posts

    1492
  • Joined

  • Last visited

Nexus Mods Profile

1 Follower

About dylbill

Profile Fields

  • Country
    United States

Recent Profile Visitors

41627 profile views

dylbill's Achievements

Mentor

Mentor (12/14)

  • Reacting Well
  • Dedicated
  • Conversation Starter
  • First Post
  • Collaborator

Recent Badges

25

Reputation

  1. To "convert" an NPC into another, just disable / delete the npc and use PlaceActorAtMe or MoveTo to replace it with another. I use resurrect in my NPC Death Alerts mod. Here's how I do it. npcdeathalerttransferchest is just an empty container base form. objectreference transferchest = npcdeathalertchestref.placeatme(npcdeathalerttransferchest, 1) armor helmet = victim.getwornform(0x00000001) as armor armor clothes = victim.getwornform(0x00000004) as armor armor gloves = victim.getwornform(0x00000008) as armor armor amulet = victim.getwornform(0x00000020) as armor armor ring = victim.getwornform(0x00000040) as armor armor boots = victim.getwornform(0x00000080) as armor armor shield = victim.getwornform(0x00000200) as armor armor circlet = victim.getwornform(0x00001000) as armor utility.wait(0.2) victim.removeallitems(transferchest, true, true) ;utility.wait(0.2) ;transferchest.activate(playerRef) utility.wait(0.75) victim.resurrect() utility.wait(0.75) victim.removeallitems() utility.wait(0.2) transferchest.removeallitems(victim, true, true) utility.wait(0.2) if helmet != none victim.equipitem(helmet) endif if clothes != none victim.equipitem(clothes) endif if gloves != none victim.equipitem(gloves) endif if amulet != none victim.equipitem(amulet) endif if ring != none victim.equipitem(ring) endif if boots != none victim.equipitem(boots) endif if shield != none victim.equipitem(shield) endif if circlet != none victim.equipitem(circlet) endif utility.wait(0.2) transferchest.disable() transferchest.delete()
  2. The user doesn't need the source files at all, they only need the .pex files in data/scripts. In your CreationKitCustom.ini, you can add this: [Papyrus] sScriptSourceFolder = ".\Data\Scripts\Source" But you will still need to copy the files from Data\Source\Scripts to there cause that's where the creation kit will have unzipped the source files to, and then re-install skse after to overwrite the .psc files. I just always make sure all source .psc files are in both folders so I don't have to worry about it.
  3. Most likely your source scripts aren’t in the right folder. In SE they changed the source folder to data/source/scripts while in le it was data/scripts/source. I just always make sure all the source .psc scripts are in both folders
  4. No problem, and yes, you can’t use skse if uploading your mod to xbox.
  5. xkkmEl is correct. I'd recommend something like this. May need to be tweaked because I'm not sure how fast crime gold is updated. no skse version Faction Property CrimeFactionWinterhold Auto Event OnActivate(ObjectReference akActionRef) if akActionRef == Game.GetPlayer() if IsLocked() int crimeGold = CrimeFactionWinterhold.GetCrimeGold() Utility.Wait(2) ;wait for lock picking menu to close int newCrimeGold = CrimeFactionWinterhold.GetCrimeGold() int diff = newCrimeGold - crimeGold if diff > 0 ;player was likely caught CrimeFactionWinterhold.SetCrimeGold(newCrimeGold + 100) ;add 100 to crime gold Endif Endif Endif EndEvent skse version Faction Property CrimeFactionWinterhold Auto int crimeGold Event OnActivate(ObjectReference akActionRef) if akActionRef == Game.GetPlayer() if UI.IsMenuOpen("Lockpicking Menu") crimeGold = CrimeFactionWinterhold.GetCrimeGold() RegisterForMenu("Lockpicking Menu") Endif Endif EndEvent Event OnMenuClose(string menuName) if menuName == "Lockpicking Menu" UnRegisterForMenu("Lockpicking Menu") Utility.Wait(2) int newCrimeGold = CrimeFactionWinterhold.GetCrimeGold() int diff = newCrimeGold - crimeGold if diff > 0 ;player was likely caught CrimeFactionWinterhold.SetCrimeGold(newCrimeGold + 100) ;add 100 to crime gold Endif Endif EndEvent
  6. I've used this tutorial to add collision to nifs before:
  7. Put a script on the display case that extends objectReference with the OnActivate event.
  8. No problem The other option is to make your own skse plugin. How I got started was Mrowr Purr's tutorials. Basic setup: https://www.youtube.com/watch?v=rTN9bAB2S9A&list=PLektTyeQhBZeDIRp2g15SsK1GX2Ig8YVW To bind functions to papyrus: https://www.youtube.com/watch?v=lBs2mhB1Abs&list=PLektTyeQhBZeDIRp2g15SsK1GX2Ig8YVW&index=9 My plugin is open source, so here's a link to those functions I added: https://github.com/Dylbill-Iroh/DbSkseFunctions/blob/main/DbSkseFunctions/src/BipedSlots.cpp
  9. Unfortunately no. Including the resource with your mod download can lead to versioning conflicts which should be avoided.
  10. Hey, coincidentally I was working on similar functions for my script resource Dylbill's Papyrus Functions, so adding that wasn't too much trouble. Relevent functions in DbSkseFunctions: GetArmorAddonRaces ArmorAddonHasRace AddAdditionalRaceToArmorAddon RemoveAdditionalRaceFromArmorAddon https://www.nexusmods.com/skyrimspecialedition/mods/65410
  11. For this I think what would work is OnStoryKillActor https://ck.uesp.net/wiki/OnStoryKillActor_-_Quest set up with the Kill Actor Event https://ck.uesp.net/wiki/Kill_Actor_Event in the story manager. Another method is if you're using SKSE you can use my mod Dylbill's Papyrus Functions that has DbSkseEvents.psc. Here's an example script: race Property giantRace Auto Event OnInit() ;register this script for when the player kills any npc DbSkseEvents.RegisterFormForGlobalEvent("OnDeathGlobal", self, Game.GetPlayer(), 1) EndEvent Event OnDeathGlobal(Actor Victim, Actor Killer) if Victim.GetRace() == giantRace ;do something ;unregister for the event if it's no longer needed DbSkseEvents.UnRegisterFormForGlobalEvent("OnDeathGlobal", self, Game.GetPlayer(), 1) endif EndEvent
  12. Gotcha. If it was me I'd write a papyrus script to speed up the process. You can check with skse and papyrusUtil. Put all the armorAddons from ks hairdos in a formlist in the ck. In papyrus cycle through the list, check each with ArmorAddon.GetModelPath(bool firstPerson, bool female) and MiscUtil.FileExists(string fileName). If it doesn't exist, Log or print the armor addon to an external file.
  13. I'm not sure what you mean by that. Do you mean there are meshes included with KS Hairdo that are not used by the mod?
  14. If you're using skse and want a search function similar to help console command, you can use my mod Dylbill's papyrus functions: https://www.nexusmods.com/skyrimspecialedition/mods/65410 It includes this function in DbSkseFunctions.psc: ;Get all forms who's name (with GetName()) match the sFormName. ;nameMatchMode 0 = exact match, 1 = name contains sFormName. ;formTypeMatchMode 1 = forms that have a type in formTypes. ;formTypeMatchMode 0 = forms that do not have a type in formTypes. ;formTypeMatchMode -1 (or if formTypes == none) = formType filter is ignored completely, get all forms regardless of type that match (or contain) sFormName. Form[] Function GetAllFormsWithName(string sFormName, int nameMatchMode = 0, int[] formTypes = none, int formTypeMatchMode = 0) Global Native Then you can use DbMiscFunctions.GetFormIDHex(Form akForm) for each form in the array to get the ids in hex format.
×
×
  • Create New...