Jump to content

Ghaunadaur

Supporter
  • Posts

    796
  • Joined

  • Last visited

Everything posted by Ghaunadaur

  1. If you're unsure whether the script is firing or the variable is changed correctly, add a line for debugging to the script. debug.messagebox(Da13TellMeMore.GetValue()) Possibly it's not working because the quest is already started when testing, at least that's my assumption. Instead of adding the dialogue to the original quest, you can also move it to a new quest. That should work for sure. The quest would then be started from the dialogue script (TIF__00089984) and of course you need to add a property that points to your quest. Da13TellMeMore.SetValueInt(1) DA13New.Start() (Also possible to set the quest to 'Start game enabled', but then you'll need to create a .seq file to make the option show up.)
  2. I'm not using MO or MO2, so I can't really tell. But I heard about issues with that. Maybe it's not a bad idea to start CK from the DataSkyrim folder. I can't think of another way that wouldn't require adding or changing scripts. Even if you modify the quest stages, the problem still persists.
  3. That's really strange, I've never seen this before. If it says the file is in use, maybe restarting the computer could help? Sorry, but I'm running out of ideas. If all fails, you can still open the script in the script editor, paste the line for the property manually and try to compile from there.
  4. Not sure what went wrong there. On your screenshot it looks like the script has been created and the property button is not greyed out anymore. I did this myself now and it's working fine. The script should have the following content: (without Property) ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname TIF__00089984 Extends TopicInfo Hidden ;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE ; ;END CODE EndFunction ;END FRAGMENT ;END FRAGMENT CODE - Do not edit anything between this and the begin comment I'd suggest to remove the script and delete both the .pex and .psc files. Then restart CK and try again.
  5. I don't think it will work that way. Better use a fragment script. To add a property to that, you need to compile the script first (yes, it's weird). Just add a comment to the box and hit the compile button. Then close and reopen the quest, and add the property by using the 'Property' button.
  6. Events can't be added to script fragments. The event is 'pre-defined' so to say. In case of dialogue the script code will run when the dialogue line is spoken, either on begin or end. What topic/info are you referring to exactly?
  7. I believe the wiki is still the best documentation available. And to be fair, it's not the responsibility of the developers to add information about third party tools or functions. Everyone can add to the wiki, if they see things are missing. Very few do it, because it takes time and effort. The mix of LE an SE documentation can be confusing indeed, it happened to me as well. But now things and games are hopefully separated, let's go back to topic. The condition for the button should look similar to that:
  8. This is for Fallout. There's no IsPluginInstalled function in Game.psc from SKSE. If it has been added to another script, I may have missed it. Also, this is the forum for classic Skyrim.
  9. As far I can tell, there's no function like IsPluginInstalled(), instead you can use GetModByName(). Check on game load, if the plugin is loaded and set a global variable accordingly. This script needs to be on a player alias. GlobalVariable Property PluginA_Loaded auto Event OnPlayerLoadGame() if Game.GetModByName("PluginA.esp") == 255 PluginA_Loaded.SetValueInt(0) ;plugin not loaded else PluginA_Loaded.SetValueInt(1) ;plugin loaded endif EndEvent The global variable can be used for the condition on the message button with GetGlobalValue function.
  10. I'm posting this for reference, in case someone still needs a script for WRDoorCastleSecret01. Scriptname WRDoorCastleSecret01Script extends ObjectReference auto State Closed Event OnActivate(ObjectReference akActionRef) GotoState("Busy") PlayGamebryoAnimation("Forward", true) Utility.Wait(4.5) ;wait until animation finished GotoState("Open") EndEvent EndState State Open Event OnActivate(ObjectReference akActionRef) GotoState("Busy") PlayGamebryoAnimation("Backward", true) Utility.Wait(4.5) GotoState("Closed") EndEvent EndState State Busy ;do nothing EndState
  11. You need to unpack the strings files from the BSA archive. What is the actual error message before it crashes?
  12. This is how you can catch when the player is activating a load door: 1. Create a new perk, make it hidden and non-playable. 2. Add a perk entry of type entry point 'Activate' like in the picture below 3. Add the follwing script code to the perk entry. You will need powerofthree's papyrus extender to distinguish between load doors and other doors, like maxarturo suggested (see his post for the link) Script code for perk entry: if PO3_SKSEFunctions.IsLoadDoor(akTargetRef) debug.messagebox("Load Door activated") ; do stuff here endif 4. Finally, you'll need to find a way to add the perk to player. This can be done with a quest that starts game enabled and a little script attached to the quest. Example: Scriptname _TestScript extends Quest Perk Property _TestPerk auto Event OnInit() game.GetPlayer().AddPerk(_TestPerk) EndEvent
  13. prid 000E4EF9 disable ;disable start marker prid 000E4EC8 disable ;disable alchemy lab prid xx004274 enable ;enable child room (where xx is the index of Hearthfires.esm in your load order, usually 03) I have to say that this is a dirty method, most likely you will not be able to adopt any children for Breezehome. Edit: You can try the following console commands to work around this: SetPQV BYOHRelationshipAdoptable BYOHAdoption_HasChildBedroom_Whiterun True SetPQV BYOHRelationshipAdoptable BYOHAdoption_HasChildBedroom_Any True (Not tested)
  14. Game time can't be negative, so the first condition will never be true. If the sound should play between 4:00 and midnight try GetCurrentTime >= 4.00
  15. It seems the author used his own versions of some of the vanilla scripts. You need the files caravanscript.psc and dlc1_npcmentalmodelscript.psc from the unofficial patch to compile this.
  16. I'm glad to help, credits are not necessary. :smile:
  17. Add conditions to the message buttons, in order to only show up, if the corresponding xMarker is disabled. Like so: I'm also suggesting some changes to the script. The Themes array is then filled within the properties window, this way you don't need the additional ObjectReference properties and the script doesn't need to be changed if you want to add more markers to the array later on. ObjectReference[] Property Themes Auto ; Themes[0] = Vanilla ; Themes[1] = Dragonborn ; Themes[2] = Werewolf ; Themes[3] = Vampire Message Property MyMessagebox Auto Event OnActivate(ObjectReference akActionRef) Int aiButton = MyMessagebox.Show() int i = 0 While (i < Themes.Length) if i == aiButton Themes[i].Enable() else Themes[i].Disable() endif i += 1 EndWhile EndEvent
  18. If the duration time is negative, the effect will continue to play until told to stop. In the following example, the effect will be applied when the actor is loaded, and stopped when unloaded. This is, to prevent the effect from being applied multiple times / stacked. Scriptname StinkingRatScript extends Actor EffectShader Property StinkingRatFX auto Event OnLoad() StinkingRatFX.Play(self, -1) EndEvent Event OnUnload() StinkingRatFX.Stop(self) EndEvent
  19. EffectShaders can be applied with Play function. Example EffectShader Property myFX auto Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, \ bool abBashAttack, bool abHitBlocked) myFX.Play(self, -1) EndEvent Event OnDeath(Actor akKiller) myFX.Stop(self) EndEvent
  20. Just make a duplicate of the form and use that in your mod. If the references you already added are still present in your .esp you can replace them with CTRL+F. Creation Kit has the habit to remove references if the base form is missing, so there's a chance they might be lost and you need to place again.
  21. The first script will only move the ReturnMarker to the current location and teleport to the DestinationMarker. The second script is supposed tp bring the player back, but it looks like it's made for some sort of activator. If you want to use it for a spell, you should perhaps add a condition, so there's a check whether the player is in the 'Home' location. Scriptname AnotherName extends ActiveMagicEffect Actor Property Player Auto ObjectReference Property ReturnMarker Auto VisualEffect Property FX Auto Location Property Home Auto ;Return script Event OnEffectStart(Actor AkTarget, Actor AkCaster) if AkCaster == Player && Player.IsInLocation(Home) FX.Play(Player) Utility.Wait(1.0) Game.EnableFastTravel() Game.FastTravel(ReturnMarker) Utility.Wait(3.0) FX.Stop(Player) else debug.trace("Not at home") endif EndEvent Again it's not tested, don't have the time for that, but *in theory* it should work. :tongue:
  22. I've made some modifications to the script, so it will compile now. But not tested. Scriptname SomeName extends ActiveMagicEffect Actor Property Player Auto ObjectReference Property ReturnMarker Auto ObjectReference Property DestinationMarker Auto VisualEffect Property FX Auto Location Property Home Auto ;Teleportation script for the spell Event OnEffectStart(Actor AkTarget, Actor AkCaster) if AkCaster == Player if Player.IsInLocation(Home) Debug.Notification("I'm already home.") else ReturnMarker.MoveTo(Player) FX.Play(Player) Utility.Wait(1.0) Game.EnableFastTravel() Game.FastTravel(DestinationMarker) Utility.Wait(3.0) FX.Stop(Player) endif endif EndEvent As zeroCore already mentioned, make sure to fill in the property values.
  23. GetInCurrentLoc is a condition function. For Papyrus script you need to use GetCurrentLocation or IsInLocation .
×
×
  • Create New...