Jump to content

werr92

Members
  • Posts

    251
  • Joined

  • Last visited

Everything posted by werr92

  1. Once you 'Start them dead', you can also toggle havok on and position the body. Drug them by limbs when holding Alt button.
  2. 2 a.u. are nothing for that matter. NPCs hardly ever reach exactly the spot. If Bob.GetDistance(Xmark01) < 2try to change this to: If Bob.GetDistance(Xmark01) < 256p.s. Calling Game to re-evaluate his AI stack here might be a good idea too. Bob.PathtoReference(XMark02, 0.9) Bob.EvaluatePackage()
  3. You may try two things. Register the quest to receive a remote event from dying actors (OnDying is perphaps better than OnDeath event) and inside this event you can call a certain to play. Or, if scripting doesn't ring a bell to you, you could try adding new Dying lines. But instead of his dying grunt, you will keep the sound to play there.
  4. Try to hit '2' once the primitive is selected.
  5. Learn how to code with Papyrus in the first place, it's actually all I can say. There's plenty of information with examples to it on CK wiki (pay attention to Events, States and Functions sections). All tutorials from Skyrim scripting will be valid here as well, so take a look at those too. There's so many things wrong with your code, that I don't want to mention anything in particular. It feels broken Oblivion, but not Papyrus.
  6. I had just the same issue when I was working on my mod. Eventually, I ended up with placing audio into a new sound descriptor form and launching both, the clip and the sound to play in game. But... this works. https://youtu.be/NnAzHY7YDkc?t=1317
  7. Try to use remote events, this might do it. Register your quest script or player alias script for receiving OnActivate() event from all activators, terminals included, and then run: ObjectReference.OnActivate(ObjectRererence akSender, ObjectReference akActionRef)Checking akSender's base object is terminal, while the akActionRef is Player.
  8. Apart from what Pokepunch said, a question for you: are BarrysBox (didn't provide an alias window for that), BarryTape01 and HaywoodEllery -- all newly created IDs (and used only in this quest), or is there a vanilla record somewhere? Plus, since you've created a Key Alias inside a Box Alias, the last one should come higher than Key Alias on the list of Aliases.
  9. There's no big science behind that usually. Post the screens of your quest. Quest Tab, Objectives, Stages, Alias Tab (in detail with every Alias opened), ect. Need data before anyone could tell you what to fix exactly. There's a basic set of rules on how to design quests, based on the principals the game engine operates. The majority of people skip those for some reason. Result is always perfect: if their quest is a bit more complicated that the poor Bendu Olo tutorial, it won't work. And always check/troubleshoot your file using a clean save.
  10. From what you're saying, I bet, your Aliases contain a mistake. Because of that, they are not being filled correctly, and a quest won't fire. Classic.
  11. Well, the errors, which the compiler provides, are pretty much self explanatory. Script 1: delete the line "debug.trace(...)". Honestly, I doubt that anyone in the right mind looks inside a debug file when writing scripts like these. And yes, you made a logical mistake in that line when was trying to take that bit of code from wiki. Script 2. That just doesn't make any sense. What you're doing is applying an Object Reference to the Player (which even sounds a little bit off). While what you should be doing is applying a Material Swap to the Object Reference (a button in your case). xButton01.ApplyMaterialSwap(MStoApply) P.s. and don't forget to declare an MStoApply property. That one being of MatSwap type.
  12. Well, a holotape play is actually a scene in a quest. So you can set a new stage of it or any other quest in the end of a scene (holotape). Just like you would do after a dialogue with an NPC.
  13. Oscape has difficulties generating LODs for the 0,0 cell, it's an old bug. To make it do its thing right, create a Region (obviously, your worldspace doesn't have one). Any Region will do, but it's a good trick to create a Border Region (square form, covers exactly your WS vertices: say, -16;-16 to 15;15 — 32x32 cells). Thus, you could generate landscape LOD in Oscape and trees/objects/extra landscape LOD in CK, and all of those will connect fine with each other. I see you used xLODGen. Posted this just for the sake of knowledge, so that others could look it up.
  14. There're several variations of dismembered heads (Static). I guess, you could dismember your NPCs with 'explode' option and simply use those static heads as a decoration.
  15. Perhaps you should try to create a new quest and attach a scrip to it that registers for a remote event. Like OnStageSet() or whatever, from that vanilla quest which controls the doctor thing. Just saying, I don't know for sure how this doctor-related healing works.
  16. If by "controlling a companion" you imply having someone with you, then I would approach this whole thing different. Create an alias which is "External Alias Ref -- Followers -- Companion". Mark it 'Optional' and 'Allow Reserved'. Then when you need to check something, say in a stage fragment script, I would call a function on it there (just when needed). For that I would add a script on the quest itself, where to keep custom funtions (as a library) to be called in action -- in a stage fragment, as an example above. Check, if alias contains reference first (meaning, the companion is with us) -- this is why we ticked it 'Optional', and then everything else, such as going into a STATE within script where you wait for events like OnCommandModeEnter()but for that, you must register your quest script for a remote event from this Reference Alias. For instance: Scriptname TestQuestSCR extends Quest ReferenceAlias property RA01 auto ;That ReferenceAlias, discussed earlier Actor ActorREF01 = NONE Function CheckCompanionIfAny() ;to be called from the quest fragment scripts, ect ActorREF01 = RA01.GetActorRef() if ActorREF01 != NONE RegisterForRemoteEvent(ActorREF01, "OnCommandModeEnter") GoToState("CommandModeStateCheck") endif endfunction Event Actor.OnCommandModeEnter(Actor akSender) if akSender == ActorREF01 ;do your filthy stuff UnregisterForRemoteEvent(ActorREF01, "OnCommandModeEnter") GoToState("Finished") endif endevent STATE Finished ;finished working. Waiting for the next external call of CheckCompanionIfAny() ENDSTATE
  17. He has. Stage 10 is set "Run on start". ****** 1. Since you have st 10 that starts right when the quest begins, there is no need for stage 0 in your design. 2. 'Quest Objectives' window. I strongly recommend you remove the condition. Or if you want to have it, it should be 'GetDead == 0' at least, otherwise the Target you want wouldn't be displayed on the minimap, as it is obviously alive when the quest starts (the whole idea, according to you, is to get Player to kill him). 3. LvlRaider is a vanilla record. Untick 'Reserves reference', and 'Optional'. Tick 'Allow Reserved' and, perhaps, ticking 'Protected' is a good idea too. As well as reading what each box in the Alias window means in the first place -- is also a good idea. This stuff has a meaning, you can't just mark whatever you want in there. 4. Use a fresh save file. Or simply type in 'coc EsplanadeMansion01' or similar from the Main Menu to begin testing with.
  18. Except if you work on RefCollectionAlias or remote events.I mean, in case of remote events, the syntax would be not just Event OnActivate(ObjectReference akSenderRef, ObjectReference akActionRef) EndEvent but Event ObjectReference.OnActivate(ObjectReference akSender, ObjectReference akActionRef) EndEvent and you have to register for it in the first place. Haven't dabbled with RefCollectionAlias, though. Really nice, yeah. DieFeM's way is a good one, try to implement it. I'm just gonna suggest another way around this. Very dull and straight forward. If the only thing you want to change is those doors in the Institute, why don't you simply add a script locally on every desired door in the Render Window. The script should be as follows (no need to fill the properties, though you can): Scriptname DCMGAutoCloseDoorSCR extends ObjectReference float property fTimeToWait = 2.50 auto {Time to wait before the door will automatically close} auto State Openning Event OnOpen(ObjectReference akActionRef) Utility.Wait(fTimeToWait) SetOpen(false) GoToState("Closing") endevent endstate State Closing Event OnClose(ObjectReference akActionRef) ;busy closing, do not disturb! GoToState("Openning") endevent endstate
  19. By the names for the aliases, it seems to me that you're using some vanilla characters. That's important. And... to the point. When you guys do quests, you need to understand the underlying mechanics of it. I see on the regular basis, that for some reason many people omit this part and dive right into further quest building. This leads to the sutuation, when they try to hunt down issues in the wrong place. LOGIC. When the Game loads, it initializes your quest and ALL OF THE ALIASES in it (because you have it Start Game Enabled). Then it tries to fill out the aliases stricktly in the order provided by you (top to bottom). If it fails to fill any alias, the quest won't fire and run. Thus, failure. Now, when can it fail to fill an alias? The most common reason (feels to me, this is exactly your case) is when the reference you're trying to fill this alias with, is already in use by some other quest or quests. When this happens, your quest is unable to have this reference for itself, because it is already reserved for another quest(s). Hence, it just leaves this alias unfilled and moves on to the next one. But, from the explanation above, you can get, this quest won't "just work" anymore. REASON OF FAILURE. Alias not filled. Quest not really started. Moreover, when you mark an alias as 'Optional', it simply means, the Game can leave it unfilled if no condition match. But when you tell system to show the alias on Player's map, it simply doesn't know where to place marker at, as the alias itself is empty and doesn't contain reference it could appeal to. SOLUTION. Since the reference you want to use seems vanilla (see the beginnig of this post), it most likely is already reserved by other quests. You must allow your quest to use such reserved refs. Toggle 'Allow Reserved'. Your quest is of Start Game Enabled type, this box should be grayed out. To tick it either temporary uncheck Start Game Enabled, reopen quest and tick the box, or press Shift+Ctrl+R. Good luck.
  20. The OnActivate() event has only one argument, not two.
  21. There's a step by step guide to Papyrus, simply read that. https://www.creationkit.com/index.php?title=Category:Papyrus And follow the advice Rasikko gave you.
×
×
  • Create New...