Hannes821
Traveler to Atmora
soon done!
Posts: 4,663
|
QUESTS
Sept 6, 2016 20:55:38 GMT 1
Post by Hannes821 on Sept 6, 2016 20:55:38 GMT 1
|
|
Hannes821
Traveler to Atmora
soon done!
Posts: 4,663
|
QUESTS
Sept 11, 2016 19:46:57 GMT 1
Post by Hannes821 on Sept 11, 2016 19:46:57 GMT 1
German for the CK-wiki pages walkthrough
ENGLISH
|
|
Hannes821
Traveler to Atmora
soon done!
Posts: 4,663
|
QUESTS
Sept 11, 2016 21:37:41 GMT 1
Post by Hannes821 on Sept 11, 2016 21:37:41 GMT 1
Setting the next quest stageSetObjectiveDisplayed(x) ... x must be the numerical value of the next stage, that you also used for Objective naming conventions SetQuestStage(x) ... x must be the numerical value of the stage you want to go forGetOwningQuest().SetStage(z) ...when a conversation shall automaticly proceed to the next quest stage; example: "thank you" after the player hands in the quest item as requested. GetOwningQuest will automatically get the questID of the response, z is the numeric value of the stage you want to jump to. fail quest if you kill a NPC Event OnDeath(Actor killer) If(!y.IsCompleted()) y.SetStage(z) endif EndEvent ...y is the name of the quest, ! means negation (no), z is the numerical value of your "fail stage"
Setting Questmarkers ON Dungeons: go to the exterior cell, entrance of dungeon map marker; then, open yQuest/Stages/yourstage/property/add/objectReference/DungeonMarker -> ok / edit -> pick in Reference window -> ok
Stage/Scripts: DungeonMarker.AddToMap() -> compile
Disabling things before the quest stage is activecheck the "initially disabled" box when clicking on the concrete object in render window. go in Quest/aliases/yourQuestobject/ check "Allow Disabled". go in Quest/Stage/Scripts/Alias_yourObject.GetReference().Enable() -> compile ...this will enable the object, once the player will be in the same cell AND has the quest stage
Giving Dialogue only on proper quest stage new/condition/GetIsID/yourDialoguePartneroftheQuest new/condition/GetStage/stageyouwanttostart Next quest stage after you kill an enemy Scriptname enemyscript extends object Reference Quest Property questname Auto Event OnDeath(Actor killer) questname.SetStage(z) End Event
Next quest stage after taking an item in player inventory Event OnContainerChanging(ObjectReference newContainer, ObjectReference oldContainer) if (new container == game.Getplayer()) questname.SetStage(z) End If End Event
Giving an item from player inventory to NPC SetObject.Completed(z) ...z is StageAlias_Actor.GetReference().AddItem(Alias_youritem.GetReference) -> compile
Add an item to player inventory, example gold coins properties/MiscObject/Gold001/ -> ok
Game.GetPlayer().Additem(Gold001,Alias_youritem.GetReference().GetGoldValue()*2) ...will give the player 2 times the gold value of "youritem"
Making youritem a Quest Item (cannot trade / throw away from inventory) Quest/Aliases/youritem/ -> check "Quest Object"
GenericDialogue for yourqueststage go in your MISC dialogue -> make a new branch like "hello for mystage (you again? or Who are you?)" -> use condition GetStage is value z (numeric as you like)
this is WiP... i will update by time to get a "standard library of scripts" for our most urgent situations. NOTE: all scripts can be found if searching at www.creationkit.com/fallout4/index.php?title=Category:Papyrus
|
|
Hannes821
Traveler to Atmora
soon done!
Posts: 4,663
|
QUESTS
Sept 12, 2016 4:47:49 GMT 1
Post by Hannes821 on Sept 12, 2016 4:47:49 GMT 1
If you get this error, it is possibly because MO doesnt allow access on editing Steam/data. i will try the usual workaround like with VA, to copy that script folder into MO. By the way, this error message was cause of a wrong missassumption of me against you rhod, sorry.
|
|
Hannes821
Traveler to Atmora
soon done!
Posts: 4,663
|
QUESTS
Jan 30, 2017 16:54:31 GMT 1
Post by Hannes821 on Jan 30, 2017 16:54:31 GMT 1
Making a Courier Quest
0) Preparation: - make "AletterOfAFriend" as a note, with the needed text.
1) new quest AtmoraCourierQuest: GENERAL SETUP - start game enabled - priority 60 (50 is standard) - type none (for now) - if you test: not "run once" - if starting on event: change location event
STAGES (CONCEPT) 0 check "start up" -> Alias "Letter" activated, here to create a letter in a box of the courier, which will automatically start the vanilla script and send the courier to you after you change location ingame via script "WICourierScript" (running outside the AtmoraCourierQuest tab in WICourierQuest) when he gives you the letter: Objective: "read!" (something like =player.container) -> SetStage(10)
10 after the courier talked to you -> you want "read the letter" displayed; after reading the letter -> SetStage (20)
20 . Show instructions "Find two the two brothers the letter talks about". start MQ "An Expedition to Atmora". Check "end quest"
QUEST ALIASES
new: create Reference Object - Name "AletterOfAfriend" - check optional - check use stored text - check stores text - create in: pCourierContainer - level: easy
2 WICourierScript DIALOGUE VIEWS
choose a fitting response, and add as condition: "GetItemCount" "AletterOfAFriend" >= 1.0 OR (change the previous text to OR, if there is only an AND! Boolean logic!)
finishing: needs a Seq file, because of editing dialogue.
Back to AtmoraCourierQuest:
QUEST OBJECTIVES Index 10 -> "Read the letter." Index 20 -> "Find two the two brothers the letter talks about"
STAGES
0 add new log. write this script in Stage 0:
; purpose is detecting that the letter is in player inventory and then SetStage(10) i assume the letter is already created by the ALIAS tab "Letter" options set in the Courier inventory successfully debug.notification("Courier has the letter") Event OnContainerChanging(ObjectReference newContainer, ObjectReference oldContainer)
if (new container == game.Getplayer())
questname.SetStage(10)
End If
End Event
OR via script in the letter: -> addscript "defaultSetStageOnPLayerAcquire" (extendsAlias; set properties, name of your quest, SetStage(10))
10 add new log. write this script in Stage 10:
;purpose is to SetStage(20) after reading. debug.notification("Player has the letter")
OR via script in the letter: -> addscript "defaultOnReadSetQuestStage" (extendsAlias, set properties: name of quest, SetStage(20))
20 add new log. Start Main Quest (SetStage(0)?). End Quest.
I think i have some errors in the structure! thx for discussing
|
|
Hannes821
Traveler to Atmora
soon done!
Posts: 4,663
|
QUESTS
Jan 30, 2017 17:05:46 GMT 1
Post by Hannes821 on Jan 30, 2017 17:05:46 GMT 1
also, it would be possible to play the teaser voice by michael allen when the player is reading...
|
|
Hannes821
Traveler to Atmora
soon done!
Posts: 4,663
|
QUESTS
Apr 12, 2017 8:51:53 GMT 1
Post by Hannes821 on Apr 12, 2017 8:51:53 GMT 1
from a bs discord post: " Essentially, most people don't really have a very full understanding of the Skyrim quest system. This is understandable, because Bethesda built an incredibly powerful set of tools with Skyrim and then woefully underutilised them - and also because the definition of 'quest' in the Creation Kit/game data is very different than the player-facing definition of a 'quest'
Essentially, a quest in the Creation Kit is a record that contains numerous pieces of data, including quest stages with associated log entries and Papyrus fragments (which are basically self-contained pieces of scripting that fire as soon as that quest stage is set), dialogue (which themselves also have attached Papyrus fragments you can run scripting through), and scenes (pieces of data that essentially comprise NPC actions and dialogue in a play-like stucture divided into phases)
Quests also contain a lot of other things, but those are the basic concepts
This is important, because it means that lots of invisible quests exist to run cleanup and other functions behind-the-scenes
Rather than turning this into Babby's Introduction to Quests, though, I just wanted to touch on a few things, specifically aliases and the Story Manager, since it's important that there is at least a basic understanding of those systems among the team - writers, quest designers etc - as content starts to be created, since that knowledge may influence how you create content from the ground-up
Essentially, an alias is what a quest uses to 'point at' things, whether it be an actor, an object, or a location(edited) The things these aliases point at can be either pre-set by the designers, or they can instead be defined via a set of conditions
Aliases are always filled when the quest first starts
Quests can either be start-game enabled, meaning the aliases get filled as soon as the game starts, or triggered through some other means(bearbeitet) redguard1 The Story Manager is a very little-understood thing in the game engine that essentially churns through reams of data as you play the game
The Story Manager has a set of hard-coded 'events'. Whenever one of these events happens, the Story Manager begins to churn through everything under the relevant node
The Story Manager itself is a branched list of nodes. When an event fires, it churns through those branches from top to bottom until it finds a branch whose conditions are valid. Once it does, it starts one of the quests nestled under that node
Possibly the most basic example of a Story Manager event is ChangeLocationEvent
This event is processed every time the player moves from one location to another
This is a very powerful thing, because it enables you to do things like automatically start a quest whenever the player enters a certain location, or a certain set of locations as defined by you
A very basic use case example of this are ambient conversations when you enter a dungeon - these can be accomplished by running a quest through the SM ChangeLocationEvent node and conditioning it to only fire when the player enters the relevant dungeon location
However, you can imagine more complex possibilities that this system affords One of those possibilities is the courier system from vanilla Skyrim
The courier system is actually a quest nestled under a ChangeLocationEvent node that is conditioned to only fire whenever the player enters a location with the Habitation keyword
When this quest fires, as it does whenever you enter a town or village (since, if configured correctly, level designers will be setting them up with the appropriate Habitation keyword), the quest itself tries to fill one of its aliases, which searches for an xmarkerheading (a type of invisible marker) with the LocationCenterMarker reftype
Another alias points at the Courier actor, who is actually hidden away in a dummy interior cell that is inaccessible in-game The quest has a stage 0, its startup stage, which means the quest automatically sets this stage when it is started
This stage has a fragment script attached to it which runs a MoveTo script command on the Courier actor and places him at the newly-defined CenterMarker
And the quest also defines an AI package attached to his alias that causes the Courier to approach the player of his own volition and initiate dialogue
(The dialogue itself is also obviously defined in here, with script fragments of its own to handle the delivery and stuff, but that's not relevant for the point I'm making here)
So, yeah, that's an example of how the Story Manager works. It essentially gives you a lot of control over how and when content fires behind the scenes, as well as allowing you to set up a lot of emergent world interactions
The sky is the limit with this, and it's something that Bethesda really underutilised in vanilla Skyrim
The Story Manager can produce some incredibly cool reactive content if used correctly, and I hope you'll keep its possibilities in mind when building out your narrative/quest content
(Again, a full writeup for all BS provinces will be coming later, once I have the time to sit down and write it in a clean/good-looking way)"
|
|
|
QUESTS
Apr 12, 2017 14:52:33 GMT 1
Post by anathem7x on Apr 12, 2017 14:52:33 GMT 1
Really well explained, it clears up any leftover confusion one might have in regards to the basics from the Beth tutorials. Looking forward to this writeup
|
|
|
QUESTS
Dec 30, 2021 2:38:12 GMT 1
Post by pinupcasino777 on Dec 30, 2021 2:38:12 GMT 1
Игровые автоматы pin-up-casino.cyou/ Казино имеют официальную лицензию и стабильно выплачивают игрокам их выигрыши!
|
|