Anyone got a link to a tutorial on making Quests?
Quests Tutorial?
#1
Posté 28 février 2014 - 04:17
#2
Posté 28 février 2014 - 04:29
Or instructions on how to make a wide variety of quests?
#3
Posté 28 février 2014 - 05:09
Do you mean in terms of Journal updates?
#4
Posté 28 février 2014 - 06:21
I, basically, have no idea on how to make any type of quest in NWN2. So any and all information related to "quests", "Journals", etc would be great. I don't know what journal updates are so please explain?
#5
Posté 28 février 2014 - 07:03
The Toolset guide linked in my .sig has some basic information on Journals in volume 1. Other than that, quests are typically tracked by means of arbitrary variables set by scripts or conversations.
#6
Posté 28 février 2014 - 07:03
This one helped me when I started.
http://www.nwn2tools...rnal/quest.html
If you don't know the website, you might get hooked on it after that i tell you. Some things that are not mentioned in there and I had to "figure" on my own though.
1: The quest ID, is basically something like a local int. It is mentioned on the comment of the script gc_journal_entry that they work like that.
2: The IDs from default will be 1,11,21... but you can actually make them whatever you feel like and suit your purpose.
3: Updating it through a dialogue node, or through ga_journal is the same exact thing.
4: If you are making a lot of quests, it might be a good idea to tag them somehow identical like : qu_dr_drow. qu is for quest, dr is for Dryntal which is a city I use, and drow is the key name I want for this quest.
But all in all the guide will teach you the stuff you need to know.
#7
Posté 28 février 2014 - 07:37
I can help, or give advise, at least, though I don't think I've had time to write a tutorial on the subject. I've been working on various systems to help more easily create quests based on the breakdowns found here and there in lists of the basic quest types, such as Elysius' compilation here.
The tutorial Andy linked to above is also available in the toolset under the help menu, and refers to a prologue module that comes included with the game.
Conceptually, in this game, I prefer to make the journal the centre of all quests. The journal is a sort of spreadsheet that you can open in the game, which allows you to manage as many quests as you want, and it's always available from any module in the game, making it an ideal place to manage quests. Each quest has its own tag and multiple stages. Each stage has a description that appears to the player in the in-game journal. Some of the stages may be marked to indicate that they're the end of the quest. Quests can have multiple alternate paths and endings in a single quest tag. The quest stage (the number) is the important part. I prefer to number by 10, starting with 10, then 20, 30, etc., with 100 being the standard ending (for easy reference), 200 being an alternate ending, etc. This allows you to add stages if you decide something needs to go in between a stage, without messing up any existing numbering referred to elsewhere.
Sometimes I find numbering by 10 isn't enough, so I'll probably start numbering by 100, with 1000 being the end stage.
The second most important part for a quest, in the way I make them, is a conversation file that refers to the journal. Most quests begin and end with a conversation with someone, though they don't need to. They can alternatively start (and/or end) on acquiring an item, visiting a location, killing a creature, interacting with a placeable, etc. But conversations are nice because you can construct a quest with minimal (or no) scripting if you do it that way, using only the built-in scripts to check quest variables, items, etc.
A conversation needs several nodes, each of which checks for a different quest stage for a given quest tag. If the quest is at stage 0 (meaning you haven't started it) then the conversation will display a branch of dialogue that allows you to start it (it ends with an action script that advances that quest stage to the start, such as 10). Another branch displays if you're at stage 10 (you've started it, but haven't completed it), with the NPC offering a reminder. Another branch is for stage 20 (you've done what was asked) in which case the NPC will reward you and advance the quest to the finished stage 100.
To get to stage 20 as mentioned here, that depends on what the quest wants you to do. If it's to kill something, for instance, then you can add a death script to the targeted creature that advances the quest to stage 20. Same if it's to manipulate a placeable (put a script in the placeable's On Used slot), etc.
Those are the basics. There are many variations, combinations, and ways of elaborating that can turn these basic steps into an enjoyable, memorable quest.
- rjshae aime ceci
#8
Posté 28 février 2014 - 07:42
Also, may I recommend this short but informative PDF, which has more detailed information on journal-based questing?
http://nwvault.ign.c...ls.Detail&id=94
#9
Posté 28 février 2014 - 07:48
Thanks for all of the input so far. I'd like to start out with a (hopefully) easy quest - bounty on a creature. NPC gives player a quest to kill a particular monster (ie, Dire Boar), retrieve proof of killing the monster (Dire Boar's Tusks). Return the item to the NPC that gave the quest. Similar to that quest early in SoZ.
Now, please forgive me, but I have no clue how to do this. Please explain what I need to do, in detail (preferably through a conversation). If I can master this type of quest, we'll move on to a tougher one. Thanks again gals and guys!
#10
Posté 28 février 2014 - 07:57
Well, the way I would prefer to do it, if it's journal-based, would be to add a tag-based On Acquire script to the tusks that advances the quest to the stage at which the NPC would say "Oh, you have my tusks. Here's your reward."
However, that may be too complicated at this point for you, so a simpler way would be not to check for stage 20 (got the tusks), but to use the conversation's "check item" script to determine whether the player is carrying the tusks, and display the reward line if so.
Hopefully someone else will elaborate, as I need to go for now.
#11
Posté 28 février 2014 - 08:26
The problem I'm having right now is, I don't know what lines of conversation need what commands/ga_scripts.
#12
Posté 28 février 2014 - 08:27
or what journal entry needs to be attached to which conversation line.
#13
Posté 28 février 2014 - 09:40
Isn't there a line in the conversation where the PC accepts the quest? You could attach the activation call to that selection. It should then activate the first Journal entry in the quest sequence.
PC agrees to the quest --> first journal entry gets added.
#14
Posté 28 février 2014 - 09:46
Okay, so let's say you have a quest in the journal tagged "qu_boarslayer", which has stages 10 and 20. 10 says "NPC1 has told you about a bounty on a big boar. Bring back the boar's tusks as proof, and get your reward." Stage 20 says "You have turned in the boar tusks and gotten your reward." and it's marked as "End" Normally I would make the end 100, and stage 20 would be "You have acquired the boar tusks. Now you need to turn them in to the NPC," but to keep things as basic as possible we're going to skip that stage.
Now you have the journal. For the conversation, you have 1 node that says "Hi, how's it going?" and it has no conditions attached. This is for "just in case". Most importantly, this should go at the bottom of the node tree, or else it'll take priority over the ones with conditions.
Another node has the conditional script "gc_journal" attached (conditions are attached at the bottom of the conversation window, on the "conditions" tab), with the tag "qu_boarslayer" and the stage 0. That means it will only show that dialogue line to the player if the player has never taken the quest. The dialogue should describe the quest to the player and give the player the option to accept it. On the branch where the player accepts the quest, the Action script should be ga_journal_entry" with the tag "qu_boarslayer" and the stage 10. There are other ways to do this, but I like doing it this way, because it's easier for me to scan.
Another node has the conditional script "gc_journal" attached, with the tag "qu_boarslayer" and the stage 10. This line of dialogue should indicate that the NPC knows you've already accepted the quest, i.e. "Do you have those tusks yet?" You'll need a normal response like "Not yet," or "Never mind" (please don't write "Nevermind" unless you're talking about the Nirvana album) with no conditions, and another that says "Yes, I have them." That last line needs the conditional script "gc_check_item" attached, with the tag of the tusks as the sItem string. It will only allow the player to see (and select) that line if the player is in fact carrying the tusks.
There should be a response to that line that attaches action scripts to take away the tusks, give the reward, and advance the quest stage to 20 to end it.
Optionally, you can add another node that checks for journal stage 20, which says something like, "Hey, it's the boarslayer. Good to see you again."
- rjshae aime ceci
#15
Posté 28 février 2014 - 10:08
What Tchos says is generally how I control my quests. Generally, to create a conversation with an NPC who is only interested in the quest is easy. You just need to control his greeting nodes by conditional scripts. gc_local_int, gc_journal_entry, gc_check_item some of them.
When I started building, I also had no idea how these scripts were called, but the search field on top of the list proved helpful. I just needed to enter some keyword related to what I wanted to do. I still use it sometimes, when I know of a function I need, but don't know if a ga_ or gc_ scripts already exists in the globals.
For me the "tough" part was/is NPCs with multiple quests, general dialogue, kill-able and recruit-able all at the same time.
#16
Posté 28 février 2014 - 11:55
Can you please explain a little more about the numbering? 10, 20, 100 ?
#17
Posté 01 mars 2014 - 12:29
Can you please explain a little more about the numbering? 10, 20, 100 ?
Here's what they mean:

The column on the far right, Entry ID.
Each quest is listed, and underneath each quest are the steps necessary to complete it. Each step in the quest MUST have an Entry ID, and each Entry ID must be unique for that quest. So you can see the quest, "Potions Delivery", has three steps, and the Entry ID's are 1, 11, and 21. Those are the default ID's generated by the toolkit each time you add a new line to the quest.
Each quest also has to have a unique TAG, which is the middle column, and I have highlighted it.
And as you can see from the screenshot, each step in a quest can be marked with a checkbox if that step is an Endpoint - a final step in the quest.
This is how you setup your quests in your Journal. From here, you can make checks in conversations with the gc_ functions. What you are checking is the Entry ID for a quest.
In a conversation, I can make a check like gc_journal_entry("q_potions_delivery", 11), to determine if the player has really delivered the potions or not. If they have, that check will return true, which tells me that the player has completed the 2nd step in the quest, or the step with Entry ID = 11. That is why each Entry ID in the Journal must be unique, so you can make checks against them.
Make sense?
#18
Posté 01 mars 2014 - 12:33
This is what I generally model my quest structure as. Look at the table at the bottom of this page:
http://www.uesp.net/...Journal_Entries
You can see there the numbering and description of the various quest stages, as well as marks for the stages that end the quest (numbered 100 and 200, with 200 being the alternate ending). It doesn't matter what the numbers actually are, but I recommend picking a standard and sticking with it. Starting the quest at 1 means that if you end up wanting to have some other condition happen before what you chose as stage 1, you'll need to renumber some stages in order to insert an earlier stage. So start with 10, at least.
You'll generally want to have a quest stage for everything that might be done in your quest, including things that are optional, or alternative paths. The player will not need to see all of them -- only the ones that occur on a single playthrough.
Also, I recommend each stage's description contain a summary of everything that came before, because sometimes there's important information that the player may need to complete the quest, which was only shown in a previous entry.
#19
Posté 01 mars 2014 - 12:43
Thanks for the help! I'm headed to bed right now, but tomorrow I'll give it a go. Thanks again everyone!
#20
Posté 01 mars 2014 - 01:55
Ok, I'm having a little trouble. This is my Conversation:
Would you do me a favor?
- Sure what do you need? [ga_journal] [Boar_Bounty_001] [EntryID: 1]
- - I need some Boar Tusks.
- - - I'll be back when I have them.
- Nope. Goodbye.
I see you have the tusks. Fantastic! [ga_journal] [Boar_Bounty_001] [EntryID: 0]
[ga_take_item] [Boar_Tusks_001] [Quantity: -1]
The conversation never goes to the "I see you have the tusks..." part. What am I doing wrong?
#21
Posté 01 mars 2014 - 01:57
On the "I see you have the tusks...", I tried entryID: 11 also, and it did not work.
#22
Posté 01 mars 2014 - 02:04
My Journal Entries:
Boar Bounty
- A dwarf asked for some Boar Tusks [1]
- You got the tusks [11]
- The dwarf was happy he got the tusks [21]
#23
Posté 01 mars 2014 - 02:23
briefly, ( others can answer these questions better )
you have to put the last dialog node first. And do a check/condition for it w/ [gc_journal_entry][Boar_Bounty_001][11]
#24
Posté 01 mars 2014 - 03:30
I don't understand what you mean, "last dialogue node first"? Can you make an example with the conversation I posted plz?
#25
Posté 01 mars 2014 - 03:40
I see you have the tusks. Fantastic! [gc_journal_entry] [Boar_Bounty_001] [EntryID: 11] < not Action, do a Condition instead.
[ga_journal] [Boar_Bounty_001] [EntryID: 21] < NPC takes tusks, says Thanks. ( send journal to Finished quests page )
[ga_take_item] [Boar_Tusks_001] [Quantity: -1]
Would you do me a favor?
- Sure what do you need? [ga_journal] [Boar_Bounty_001] [EntryID: 1]
- - I need some Boar Tusks.
- - - I'll be back when I have them.
- Nope. Goodbye.
Modifié par kevL, 01 mars 2014 - 03:50 .





Retour en haut






