Jump to content

dylbill

Premium Member
  • Posts

    1502
  • Joined

  • Last visited

Everything posted by dylbill

  1. Hey, after changing sounds, or anything about a spell / magick effect, you may have to remove the spell and add it back to your player for the changes to take effect. Or load a save where you don't have the spell yet, and add it to your player fresh. I noticed this while testing my alternate wabbajack staff mod.
  2. For Menus and Sub Menus I prefer to use functions. That way, you can specify which menu to go to and when. Example script:
  3. Maybe instead you can use GetStage ? That only works for checking one quest at a time though. If you need to check all radiant quests, maybe you can use RegisterForTrackedStatsEvent() along with Game.QueryStat("Misc Objectives Completed") or something to that effect. https://www.creationkit.com/index.php?title=RegisterForTrackedStatsEvent_-_Form https://www.creationkit.com/index.php?title=QueryStat_-_Game
  4. Instead, you can use Spell.Cast() :https://www.creationkit.com/index.php?title=Cast_-_Spell and if you're using skse you can use SetNthEffectDuration: https://www.creationkit.com/index.php?title=SetNthEffectDuration_-_Spell. I would only use that on custom spells you make yourself though, because that will cause the duration of the spell to change for everyone. If not using skse, you could make multiple spells with multiple durations and cast the applicable spell for the right circumstance.
  5. Every MCM quest is supposed to have a player alias on it per the guidelines, with the SKI_PlayerLoadGameAlias script attached to it. I'm saying also attach your player alias script to it. I've done it before and it's worked for me.
  6. Did you fill the PlayerRef property in the creation kit? Also I think it should be: akAggressor.DoCombatSpellApply(DamageHealth05Spell, PlayerRef)
  7. Two things I notice off the bat. You don't need to do If random == 0 at the end of the script, as there's no function in that condition. Also, instead of using game.GetPlayer(), define the player as a property by doing Actor Property PlayerRef Auto, and filling it in the creation kit, it's faster than using .GetPlayer a bunch of times.
  8. Hello, I've also had some problems with getting a player alias script to work in the past. I've found, if your quest has more than one alias, it can cause problems with your player alias for some reason. If you're using an MCM, try putting your script the MCM playerAlias, or, create a completely new quest and have the only thing that's on the quest be the player alias.
  9. That's, strange, to say the least that you can fill properties from other esp's. Are you using them as a dependency? To fill your script property, you have to choose the object reference that your other script is on. Or, you can fill it with a function:
  10. Thanks NexusComa for the input. I also like seeing different perspectives on coding style, and the reasons why things are done. Your post was very insightful. I also agree with foamyesque that the script / effect should only be active when it needs to be. If the script is only supposed to work on a specific actor, you could put a condition on the ability's magic effect GetDistance ActorRef < 5000. That way the effect is only active if you're around the actor.
  11. I think you can simplify it a bit. You could just use a function to check if the aggressor has the item, and to get another item if they don't. Also, I would use a formlist instead of individual items, because that way you can add or remove items easily later. I love my formlists. Something like This:
  12. Hey, if you don't mind using SKSE, you could use Player.GetNumItems() and Player.GetNthForm. Something like this:
  13. I'm not sure why they wouldn't be showing up, but I would always add items to vanilla lists or chests with a script, because it ensures maximum compatibility. Example script:
  14. No problem. And yes that's correct. You can only use functions inside events. Properties can be defined outside of events.
  15. Hey yeah, you need to use the function in your script, it's already defined in the Papyrus Extender script. So you would do: scriptname dz_papyrus_test extends ObjectReference ;import po3_papyrusextender64 ;import PO3_SKSEFunctions Form[] EquippedItems Actor Property PlayerRef Auto Event OnTriggerEnter(ObjectReference triggerRef) If triggerRef == PlayerRef EquippedItems = PO3_SKSEfunctions.AddAllEquippedItemsToArray(PlayerRef) debug.messagebox("Length of list is " + EquippedItems.length) EndIf EndEvent
  16. Hey diziet, to access properties from other esp's, even scripts, you can use the GetFormFromFile function: https://www.creationkit.com/index.php?title=GetFormFromFile_-_Game . The downside of this though, is if the form ID's change from what's expected in your script, the property won't be filled. Form ID's can change when converting an esp to esl flagged for instance. But, as you're accessing your own esp's properties, you can just tell users not to do that. Example to access another script from another esp: MyScriptOnMagicEffect MagicEffectScript = ((Game.GetFormFromFile(<formID>, "SomeEsp.esp") As MagicEffect) as MyScriptOnMagicEffect)Edit: I actually don't think that instance will work because a script on a magicEffect extends ActiveMagicEffect which aren't the same thing. It would work for other things like Quests though. Also you could just use your spell property like such: Spell Myspell = (Game.GetFormFromFile(<formID>, "SomeEsp.esp") As Spell)
  17. In the magic effect, change the casting type to Constant Effect. Then make a new spell. Type: Ability, Casting: Constant Effect, Delivery: Self, and put the magic effect on it. Then add the spell to your follower. If they have the spell, they'll get the effect. If you remove the spell, the effect will be removed.
  18. Have you tried Debug.ToggleAI() ? That toggles all AI processing where as EnableAI(False) is for individual actors.
  19. Hey KainThePheonix, I'm really sorry to hear about your Mom and Dog. Someone I know is going through something similar right now, and it's really awful and heart wrenching. Even as an outsider looking in it's really hard. I wish I could help make your dog in game, but I'm really not good at texturing or modeling. As far as making a memorial in game, you could try using Bury The Dead SE: https://www.nexusmods.com/skyrimspecialedition/mods/11805/ or Clean up your Corpses: https://www.nexusmods.com/skyrimspecialedition/mods/24026 which both allow you to bury dead actors with tombstones. Along with jaxons renamer https://www.nexusmods.com/skyrimspecialedition/mods/14694 I think you could make a nice memorial yourself in your game. Anyway, sorry again and hang in there!
  20. What maxaturo said. I would advise though making two versions of your mod. An SKSE version and a None SKSE version. You can put them both up on your mod page under main files and direct users to use one or the other. That way you don't need to add checks in your scripts. Good luck with the mod though!
  21. Hey, the fastest way to get equipped items on an actor would be to use Papyrus Extender: https://www.nexusmods.com/skyrimspecialedition/mods/22854 which has: Form[] function AddAllEquippedItemsToArray(Actor akActor)I remember suggesting this for getting equipped ammo, and I did test it. The function is really fast. You could still put a check for skse and Papyrus Extender, and use the function if it's installed.
  22. I forgot to add, if you're going to use the GetDead condition, make sure your magic effect has the No Death Dispel box checked.
  23. Hey, no problem. With using the ability spell, you shouldn't need to use update events or the onHit event. As a fail safe, you could put the condition GetDead == 1 as well. So, you add the spell ability to your boss, put the condition GetActorValuePercent Health < xx, Or GetDead == 1. Then put a script on your magic effect, and use OnEffectStart. The effect will start when the boss's health percent is below what you set, or it is dead.
×
×
  • Create New...