Welcome Guest ( Log In | Register )

> Renee's Modding Thread
Renee
post Feb 25 2018, 01:30 PM
Post #1


Councilor
Group Icon
Joined: 19-March 13
From: Ellicott City, Maryland



Mod-making thread basically, which focuses heavily on quest-making. The first two tutorials (How to make a fetch quest and how to make a kill quest) are very hand-holdy. They are designed for those who are just starting to learn the art of quest-making. Other tutorials get more advanced, as my wacky ideas have pushed their boundaries.

Just click on any of the links in the post below this one. smile.gif


Bethesda Units. (How distance compares in-game to real-life).

Xpadder Walkthrough page. Xpadder is a site which allows gaming controllers to mimic the key & mouse functions. Xpadder, or similar programs such as Joy to Keys, are absolutely crucial to get the most out of older games such as Arena, Daggerfall, Morrowind, and Oblivion, for those who prefer controllers. They can also be used for newer games (Fallout 3/NV or Skyrim) to provide alternate controlling scenarios during times when a game's native D-pad arrangement needs to be shut off.




This post has been edited by Renee: Apr 16 2024, 06:27 PM


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Replies
Renee
post Feb 25 2018, 01:51 PM
Post #2


Councilor
Group Icon
Joined: 19-March 13
From: Ellicott City, Maryland



The Fetch Quest, Game: TES IV: Oblivion.

So this tutorial will be about how to make one of the most basic types of quests we can find in any Bethesda game: the Fetch Quest. We've got an NPC whose valuable item was stolen, and now it's our character's job to fetch it back.

The very first quest I ever wrote, way back in 2016, was a fetch, and it's because it was one of the only quests which included a video I could watch.* I knew absolutely nothing about using the Oblivion Construction Set folks, absolutely nothing beyond renaming an item, or making a chest not respawn anymore. I mean, I'm a dummy gamer who used to put tape on my TV to simulate the compass being removed. Yet here I was, with this grand idea to start adding content to one of my character's games.

* Note, 2024: that video link got removed unfortunately. It featured a "kill" quest, not a fetch, but a lot of the same steps still applied. Only real difference is the main script which gets associated with the actor-to-kill. I have written a kill quest lesson below, for those who want it.


This tutorial assumes you have used the CS before, and have some basic knowledge about how to get around: how to use the Object, Render, and Cell windows, and how Beth has their main toolbar set up. If you've never used the Construction Set before yet want to learn, here's a video you can watch about the basics of making an NPC. It was made by a teenager, but believe me, this is one of the better ones I've found. Bethesda also provides their own starting classes, and there are also classes over at TES Alliance.

So if you've never used the CS before, I encourage you to watch and read those first, because I'm going to just jump right in, here. wink.gif Still, this tutorial does start with a few basic instructions, just because it's the very first one in this thread.

--------------------------------------

1). Open the TES4 Construction Set. Several windows should pop up: the Object window, Cell window and Render window. There is also a main window which I'll call the "main toolbar". This window/toolbar is always beneath the others, and it's the one with the typical "File", "Edit", "View" (etc.).

Go ahead and organize the Object, Cell, and Render windows to your liking. These three windows can be pulled and stretched this way and that, so that they are nicely laid out side-by-side or above/below each other, while the main toolbar window always stays beneath the others.

Left-click on File and then move your mouse pointer over where it says Data. Left-click on Data. A panel will pop up, listing Oblivion.esm (which is the vanilla game, basically), any DLC you've got, and any mods you've installed in your Data folder. Go ahead and double left-click on Oblivion.esm, and then click OK.

Now, if you've got some mod you're already working with, this process is different. In such case, you're going to double left-click on that mod (so an X shows up next to it), and then move down to the button which allows us to Activate that mod. Once the mod you're working with is Active, click OK. You can also simply double right-click upon that mod. The X should show up, and then you press OK.

It can take awhile for the Construction Set to load up. As it does so, occasional error messages usually show up. These are usually harmless, so click Yes or "Yes to All" as they pop up.


1a). OBJECT window
First thing we're going to do is make an NPC, a chest, a key, and an object to fetch. For this tutorial, I am making aaaDungeonKey, aaaDungeonChest, aaaLostAmulet, and aaaBob. aaaBob will be my starring NPC quest-giver. These names don't have to be used exactly by anyone reading this, but those are the ID names I am going to use.

For my first fetch quest, the object to fetch was an amulet. There's always someone in RPGs (not just Oblivion) who've had their precious jewelry stolen, and now it's OUR job to get it back, right? Anyway, here is what to do. I shall start with the container in which the object-to-fetch is being placed.

Tip: It's easier to edit stuff, rather than right-clicking > New into the Object window. Reason is, all the features native to the object, the container, the NPC (etc.) will be included in the edited object. So for instance, the chest will already make sounds when we open and close it, NPCs will already have a set of animations and sounds that they use, and so on.


Chest: Go into WorldObjects > Container section. Find a chest in the list. Right-click on the chest and select Edit. Change the ID name to something unique. As stated, I am calling it aaaDungeonChest.

Tip: When making items, NPCs, and so on, it's a good idea to put "aaa" in front of any name being typed for ID names or Reference ID names. So if a key gets made it can be called aaaDungeonKey, for instance. This will cause the key, or most any object or quest, to get placed at (or near) the very top of any list in the Construction Set, GECK, or Creation Kit. Makes stuff easier to find.

...Conversely, some folks prefer to start ID names with ZZ, which automatically puts these items towards the bottom of most lists. Well truthfully, everyone's got their own methods. When tearing into other peoples' mods though, sometimes it can be challenging to find any content they've modified or added, if this content isn't located at the top or the bottom.

... A lot of modders will tag their content in such a way that it's always in a particular section of the alphabet. MMM's creatures all have ID names which start with (you guessed it) MMM, like MMMWolf02, and so on.


1b). Remove anything you don't want in the chest, by right-clicking these items and selecting Delete (or left-clicking and pressing Delete on your keyboard). Sometimes though, I like leaving stuff in there.

1c). Remove any scripts, if the container actually has a script (most containers don't). The script area is a drop-down menu next to the button with three dots on it (literally this button looks like [...] If the scroll-down already says NONE, that is perfect, as this means the container hasn't got a script. If it says anything else, scroll upwards until NONE is found.

1d). Click OK, and when it asks if we want to save as a New Form, choose Yes.

Note: As these items are being created, editing from stuff already in the game, the CS will ask if we'd like to save each each object as a New Form? Always click "Yes." This will create these objects as unique items, rather than overwriting stuff already in the game. You definitely DON'T want to be overwriting things which are already in the game, as this can cause problems.

SAVE from the main toolbar. Get into the habit of saving often, as the Construction Set can occasionally crash, just like the game can. Now that the mod is being saved you'll be given a chance to name it! "YourMod.esp" is what'll show in the game's Data folder, with 'YourMod' being whatever it was just named.


And now that the .esp has been named, copy it and save it into a separate folder. Always a good idea to get into this habit, as well. Sometimes I find myself making mistakes while modding, and the only choices then are to start all over from the beginning, or copy/pasting the backup which hasn't got those latter mistakes!

1e). Go into the Object window's Items section, and find Key. Repeat the same steps: 1a through 1d, while editing a key. Obviously, 1b can get skipped, since keys do not hold inventory. Anyway, these steps can be repeated for the object-to-fetch as well, except that amulets can be found in the Items > Jewelry section. Or maybe it's Items > Clothing. I forget.

1f).
NPC: Go into Actors > Actor > NPC. Making people is a bit trickier than making other objects.

NOTE: and this is very important. When editing a Bethesda NPC, make sure to edit someone found in the base game, NOT Shivering Isles. Editing a Shivering Isles NPC will confuse the game's engine, making any text written for that NPC not show up in the game! If there's any confusion about whether an NPC is from the base game or not, go to www.UESP.net and find that NPC. Make sure he or she is not from SI. Some NPCs from Shivering Isles start their ID names with "SE", when viewed in the Object window.


... It is also important to edit a named NPC, such as Samuel Bantien, rather generic one, such as a marauder or a bandit. Editing generic people is okay if making another generic, but if you're making somebody who is named (and therefore unique) it's less work to begin with somebody who is named.

Get rid of any AI, Factions, or scripts associated with your edited NPC. For instance, if you've edited a guy whose everyday life has him walking, sleeping, and eating in the Imperial City, that's exactly what the edited NPC will try to do if you don't get rid of his/her AI. When you find the guy in-game, he'll probably be walking out of the cell he's been placed into!

... So, click on the edited NPC's AI button, then right-click on any AI packages found in the AI Package List. Delete all of these. Also, look at the NPC's Aggression rating. For most ordinary town-dwelling people, this rating is going to be set at 5. If, for some reason, Aggression is set much higher than this, if it is over 40 for instance, change this to 5.

... To get rid of Factions, click on the Factions tab (which is right between Stats and Inventory). Right-click and Delete any factions listed. We can also add factions, if we want our NPC to be allowed into certain restricted areas, but that's for another tutorial.

....Getting rid of scripts has already been discussed while making the Container. Do this now, or wait until later during step 10b, assuming the NPC (or any other object being edited) actually has a script. Not all NPCs do, but scripts are found more often on people than they are on containers or keys.

In a moment, I'm going to go into more details about the items we're going to need.


2a). CELL + RENDER windows
Select a dangerous cell where the chest shall get placed. Or, you can opt to choose a non-dangerous cell, if you'd just like to see the quest work, without needing to deal with combat & exploration. Either way, choose a cell in the Cell window's left panel, so that it shows up in the Render window. The cell being chosen will probably be too far away to see. To get a closer look, double left-click on any item in the right side of the Cell window, a barrel or a wall or whatever.

2b). Left-click anywhere into the Render window, then tap A on the keyboard to see better!

For anyone who's not sure how to navigate around the Render window, a good description of mouse & keyboard commands can be found here, in the box right under "Introduction."

2c). Find the chest edited earlier in the Object window > WorldObjects > Container section and drag the chest into the Render window. Find a spot where you'd like the chest to be, then press F so that it falls to the floor, or some other surface like a table. >> Though it might seem like this chest is going to be easy to find, since we're the one putting it in some dungeon, oftentimes once we're back in-game we might be surprised how often our own content might take some searching for!

Note: Working in the Render window can take lots of practice. For those who're having trouble selecting the chest, rather than a wall or some other dungeon feature, sometimes it helps to get really close to the chest (or any object you'd like to move) with the cursor. Use the mouse wheel to do this. Double-click on the item until its Reference panel pop up.

...Once the chest selected, this panel will list the chest's name in its Base Object slot. Use the mouse wheel to zoom in and out, to get closer or farther. To move the entire cell, hold down the mouse wheel while moving the mouse. This will to cause the entire dungeon to move. Do this until finding the correct cursor position, where it can grab the chest properly. Once you've got the chest selected, the cursor will turn into a + sign, with pointers on it. Left-click on the chest and hold the left mosue button down to move the chest around by itself.

The set of mouse & key commands I just linked to really helps with object movement; here is that link again. When accidentally moving something you shouldn't move (like an entire wall or floor!), click ctrl + Z. This will get whichever object back to where it should be.


Note 2: If you've got any mod in your game which change dungeons (such as Snu's Dungeons), there's always a chance that any content being added or changed won't necessarily conflict with others such as Snu's, but it's possible to find some odd things happening back in the game, and in that dungeon. I once modified a cave, added my own enemy into this cave, only to find that enemy was dead by the time we got there. Why? Because a plug-in I've got called Fighters Guild Quests added about fifty mudcrabs into that same cave!


3). Once the chest is in its proper cell, double left-click on it in the Render window. This will open up the chest's Reference panel. Now click on the Edit Base button, and drag the object to fetch, whether its's an amulet or something else, from the Object window into the chest's inventory window. Make sure the darn thing (the chest) doesn't respawn, by making sure Respawn is not toggled.

Click OK.

4). Now we're back to looking at the Reference panel for the chest. There should be four visible tabs on this panel: 3D Data, Enable Parent, Ownership, and Lock. Go to the Lock tab, and toggle 'Locked' on. Make the lock's Level whatever is desired, from "Very Easy" (one tumbler) to "Needs a Key." We can have the NPC we made give us the key we made, and make it so that it will fit this chest (optional)*. Toggle the Key bar, and search for the Key that just made, aaaDungeonKey, or whatever. THIS KEY will open this chest.

* All of this key stuff is optional, because sometimes it doesn't make sense for the quest-giver to magically have the exact key that opens some chest far away! But not everything needs to make sense in the world of Tamriel, right? .... we're just learning here.


5). CELL window
Place the NPC in a friendly cell, such as Bravil's Silverhome-on-the-Water (which will be called BravilSilverhomeOnTheWater in the Cell window).

> An optional step is to give him or her appropriate AI packages, Faction, Class, etc, following steps found in this Beth tutorial. We don't absolutely need to add AI, but if we don't, the NPC will simply stand wherever he or she was placed, hardly able to move. This might be okay for our purposes now of course, but in the future, all these things can be added to make people more dynamic.

Go to the CS's main toolbar and click on the SAVE icon. Keep saving, too. Always a good idea, and I'm going to keep repeating this idea because it is that important.

6). Click on the Q button (on the Construction Set main toolbar). This is the Quest window, where quests get made. Since most of these tutorials deal with quests, I'll be clicking on this button a lot! wink.gif

7a). QUEST DATA tab
Right-click on the Editor window, and give the Quest a unique name. For this tutorial I am calling my quest aaaFetchQuest1, though you can call yours whatever you'd like. Also, give the quest an actual name in its Quest Name slot. This name is what will appear in the game's quest journals.

7b). Priority can be medium-high. 60 is good for now, though for other quests this number can vary quite a lot. Those with higher priority (such as the quest which causes arrest) are going to take precedence over those with lower priority, such as Generic Dialog-type quests.

Toggle "Start Game Enabled" on, if it's not already toggled.

7c). Now, look toward the center of the Quest Data page, where the Quest Conditions box is. Right-click > New into the main white portion of this box, or click the New button at the bottom-left. By default, the CS will display the GetDisposition function, but we don't need GetDisposition.

7d). Go to the scroll-bar next to the New button, and search for (or type in) GetIsPlayableRace. As you type, the CS will fill in what it thinks you're looking for, saving some time.

7e). Ignore Function Parameters, but make sure Comparison is ==, and Value is 1. So altogether, in the Quest Conditions window it will say GetIsPlayableRace NONE == 1. This is what the game uses to make sure only playable races (wood elves, Khajiit, Redguards, etc.) can receive this quest in the first place.

7f). Follow all the steps from 7c to 7e, except this time add GetPlayerInSEWorld NONE == 0. This function makes sure the player/character is not in Shivering Isles, which the CS refers to as SE World for some reason.

Again, here is what you should see in the Quest Conditions box...

GetPlayerInSEWorld NONE == 0.00 AND
GetIsPlayableRace NONE == 1.00



8a). QUEST STAGES tab.
Right-click in the Index window, and select New. The number 0 will show up. Just leave it like that.

8b). Now right-click > New four more times, but type numbers for each of these four. Altogether, I am choosing 0, 10, 20, 30, and 100. These numbers don't have to be exactly 0, 10, 20, 30, and 100, you can use whatever numbers you'd like, but always make sure there is some numerical space between whatever numbers being added. Don't just put 1, 2, 3, 4, etc.. Doing this makes it impossible to add content in between these stages, which can get problematic at times. Because sometimes when writing quests, all the sudden we'll think of more content which should go between any two stages, see?

Anyway, three of these five indexes will include text which will show up in our Current Quests journal as the quest updates, making that drum sound. *Doooon!*

8c). Don't touch Stage 0 at all. It is more like a pre-stage, which exists as soon as the game starts up.

8d). Click on Stage 10, and right-click > New into the top Log Entry box. Doing so will open up the box below it (which is also called Log Entry). This is where all those nifty in-game quest updates get written. But don't do anything else. There should be the word EMPTY in the top Log Entry box. Just leave it like this.

> During Stage 10, the NPC greets our character, and will be telling us about his/her missing item, laying it all out there. If the player decides they don't want to hear the NPC's speil (in other words, if the player backs out of conversation during, or just right after the NPC greets us), it would be silly for the quest to update. We should be able to back out of greetings without quest updates, otherwise it feels like the quest is railroading us.

Note: (Better Cities quests are famous for railroading!)

8e). The next stage (which I'm calling 20) will be a true quest update that will put information into the in-game Current Quests journal. This update pops up only if the player clicks on the NPC's Lost Item topic though, after we have listened to the NPC's initial greeting, and decided to help him or her. We haven't written this topic yet, but we will.

So go ahead and right-click into the top Log Entry box. Now left-click into the central Log Entry box, and start typing the update. "I have met a desperate man who seems to have lost his amulet"... etc.

8f). The next index (30 in this case) will need some text explaining that the lost item has been found. "I have found the item that was stolen from Bob"... etc.

8g). The final Index (100) can have text stating what has happened altogether, now that the entire quest is over. "I have found the magic amulet stolen from Bob, and have returned it to him," or whatever. Make sure to toggle Complete Quest on for this one.

8h). Add a script into Stage 100's Result Script box, which says ...

StopQuest aaaFetchQuest1

If this doesn't get added, the game's engine will try to read any scripts associated with this quest over and over forever, which causes unnecessary bloat. cake.gif


9a). TOPICS tab.
The Topics tab is where the bulk of PC/NPC dialog gets written. Other tabs (Conversation, Service, Detection, etc.) only get used for specific types of dialog. Anyway, right-clik into the Editor ID window and select Add Topic. Look for and left-click GREETING, and press OK. The slot for Topic Text will now also say GREETING. Do not change this.

...Notice I skipped over the Quest Targets tab. This is the tab in which we can add (guess) Quest Targets, which show up green or red on the magical compass back in game. I never use targets, personally. I'd rather search around and not be hand-held, when it comes to missing items and such. Map markers can also be added too, which I use more often. But for now let's skip this tab.

9b). Now, make a second Topic, give this one a unique name, such as aaaLostItem. Right-click into the Editor ID window, select Add Topic. Next, right-click > New into the Select Topic panel. Type in a unique ID name .. aaaLostItem,* or whatever. Click OK.

In the Topic Text slot it will now say whatever's been typed. So if you did type aaaLostItem, this is what it will say in the Topic Text slot. Go ahead and change this to plain English: Lost Item instead of aaaLostItem. The reason is, the words in this slot are what we're going to see in-game, alongside other topics such as Bravil, Rumors, etc.

* If you've already named an amulet, or ring, or any other item "aaaLostItem", the CS will inform that we can't make multiple objects have the same name. It'll then automatically rename the topic aaaLostItemDUPLICATE, instead. This is fine. The topic will still work, its ID name will just be not very aesthetically-pleasing, here in the Construction Set.

9c). Click on GREETING in the Editor ID. Now, in the Info window (right beside the Editor ID window), right-click, and select New. A dialog panel will pop with a bunch of features on it, but we're only going to use the very top box for now, which is called Response Text. This box is where we can type an NPC's dialog. So now's the time to get creative, and add some text.

Something like "Hey, you look like a capable adventurer. I need your help to find my missing item," or whatever.

9d). Optional: change the Emotion Type scroll-bar from Neutral to any of six other emotions. And there's also Emotion Value, which defaults on the number 50. This is what changes the look on the NPC's face as he/she is speaking. Zero means there is no real difference from Neutral, while 100 will make his/her face look extremely sad, extremely happy, and so on. Numbers in between 0 and 100 can be chosen so that the NPC looks somewhat happy, sort of fearful, etc.

9e). Click OK. The panel will close, making any typed dialog appear in the central box, which is called Response Text.

>> The cool thing about adding our own words? Us modders can go into as much, or as little, detail as we'd like. We can eventually add our character's name directly into dialog, too. smile.gif If we run out of space while adding text, just Click OK, and then right-click > New into the Response Text box (where our first block of text has now been added). An empty Dialogue panel will pop up, so more dialog can be added.

9f). Look to the middle-right of the Topics page, where the Add Topics window is. Should be right above Choices. Right-click into the Add Topics window, and find aaaLostItem, or whatever unique ID got added before. Select this, and click OK.

9g). Now we're going to use the Conditions window, located near the bottom of the Topics page. Conditions get used a LOT while making quests and dialog. Right-click > New into this window.

By default, GetDisposition shows up in the Condition Function scroll-bar. Click onto this scroll-bar and search for GetIsID. This is probably the most popular function of all, because it's what the game uses to search out of thousands of people. GetIsID will narrow this search down to just one NPC, so that only this unique NPC will say the things he/she's supposed to say.

Left-click on the Function Parameters button, which currently says INVALID. A panel will pop up. Find the name of the NPC who was created earlier in this tutorial. For me, this was aaaBob (ha ha). Click OK.

Comparison should be == and Value should be 1. So altogether, this condition will be GetIsID "aaaNPCname" == 1, with aaaNPCname being the name of your quest-giver.

9h). Right-click > New into the Conditions window again, follow all the steps in 9g, but this time, search for GetStage in the Condition Function scroll-bar. Left-click on the Function Parameters button again, and look for the ID name of the quest itself, aaaFetchQuest1, or whatever. Comparison should be < and Value should be 10. We'll need to type in that value of 10. So overall, it will say GetStage "aaaFetchQuest1" < 10.

So there should be two conditions now....

GetIsID "aaaNPCName" == 1 AND
GetStage "aaaFetchQuest1" < 10


...and these conditions will ensure that only the quest-giver can deliver the opening greeting, and he/she can ONLY do this if the quest's stage is below 10.

9i). Time to type the second script (yaah fun!) into the Result Script box. Left-click into this box, then type ...

Player.SetStage aaaFetchQuest1 10

What this means: once our character is greeted by the quest-giver, the game's engine will be commanded to move the entire quest from Stage 0 to Stage 10. By doing this, it means the NPC won't keep giving us the same "Hey you look like an adventurer" greeting over and over, every time we initiate a new conversation with him or her.

Tip: It's now a good idea to click OK (closing the quest window) and save. Don't close the Construction Set itself, though. Go into the game, and make sure JUST THIS part of the quest is working. Though it can get tedious to keep going back and forth into the game like this, this is the best way to ensure everything works as it should.

9j). Reopen the Quest window if it was closed eariler, and select the Topics tab. Go back to the tall, rectangular Editor ID box, and click on GREETING. Let's add a couple more GREETINGS: one which will show up if we go back to this NPC, but don't have his / her lost item yet ("You're back, but where is my amulet?"), and one which will show up after the item has been found ("I knew you could do it! Huzzah!"). Both responses should have the same GetIsID as the first GREETING, but the second GREETING should have GetStage "aaaFetchQuest1" == 20, and the third should be GetStage "aaaFetchQuest1" == 30.

The third greeting (when the lost item has been found, and returned to the NPC) should also have a Result Script which says ...

player.SetStage aaaFetchQuest1 100

... which is the final stage of the Fetch. Type that into the Result Script box.


9k). Now go to the unique topic created earlier, highlight it, and then right-click > New into its Info box. Type in something like "Yes, I lost my valuable amulet, and I have reason to believe it is in X location..." Use the Emotion toggles to make the NPC look ultra sad or disgusted when this gets said! mad.gif

9l) In the Result Script box, add Player.SetStage aaaFetchQuest1 20. If we want to have the NPC give a key at this moment, press Enter after adding the SetStage script, and then type player.AddItem aaaDungeonKey 1 right below the SetStage script. (This assumes the key was named aaaDungeonKey of course. If it was cnamed something else, this ID should be typed exactly.)

The number 1 denotes the number of keys the quest-starter gives at this moment. So one key get get added, five keys, ten keys....and so on. Only one is needed though, of course. whitewizardsmile.gif It's never good to bloat the game with unnecessary content.

9m). Again, the Conditions for aaaLostItem's dialog should be the same GetIsID used before, but also add GetStage "aaaFetchQuest1" == 10.


Tip: In the future to make this process simpler, go back to the very first GREETING, right-click anywhere in its Conditions box, and then select Copy All Conditions. Now go to the aaaLostItem topic, right-click into its Conditions box, and select Paste. All that's needed now is make sure to change the GetStage comparison, which is <, to == so we've got GetStage "aaaFetchQuest1" == 10 instead of GetStage "aaaFetchQuest1" < 10.

It's possible to keep pasting those same conditions over and over again, which is mighty convenient, but don't get into the habit of rushing. It's important to go slow. Pay attention to which stage you're trying to match dialog for, and make sure Comparison matches up with what you're trying to accomplish. Once you're back in the game, let's say you KNOW your NPC should say certain things at certain times, but he or she is not saying them. Oftentimes it'll be a simple mistake made with Conditions, Comparisons, and so on. The dialog will be in the CS for instance, but the NPC is being commanded to say this dialog before Stage 10, when he should say it during Stage 10.

9n). Now go back to the second GREETING. This is the greeting the NPC says if we return to him or her, before finding his/her amulet, yet. The Conditions here will be

GetIsID "aaaNPCname" == 1 AND
GetStage "aaaFetchQuest1" == 20


If we want our NPC to be extra pissed during this moment, make his Emotion Angry or Disgusted. Toggle Goodbye and Say Once on, so that he or she won't say anything further, until we've got that stupid amulet back!

9o). Now to the final GREETING, which the NPC says after we have fetched the item, and returned to him or her. "Oh, you've got my amulet! You are so wonderful!!!..... bla bla bla." The Stage is 30 when this happens in my example above.

Type Player.SetStage aaaFetchQuest1 100 into the Result Script box, so the quest moves from Stage 30 to the final stage of 100. It's also possible to add or remove whatever's desired at this point. An example: you can add gold, and remove the lost item at this moment. Here's what goes into the Result Script box for Stage 30, if so.

Player.SetStage aaaFetchQuest1 100
Player.RemoveItem aaaLostAmulet 1
Player.AddItem Gold001 1000


Those scripts will bump the quest to Stage 100, remove the amulet (or other lost item), and award the character with a thousand gold. Neat, eh? Another option: those last two scripts (the RemoveItem and AddItem) can instead be placed into the Quest Stages tab's final Stage of 100, in its Result Script box. Cut those two scripts from the Topics tab, swap to the Quest Stages tab, and paste them into Stage 100's Result Script box. Doing it this way is actually better, because the item being removed and gold being added will get removed and added after the NPC finishes this final dialog, rather than during this dialog. The whole scene is less distracting this way.

9q). Click OK, closing out the Quest window, and save all work.


...So, we've bumped from Stage 0 to Stage 10 via dialog. We've also bumped from Stage 10 to Stage 20 using the NPC's words, and from 30 to 100. But.... how do we get from Stage 20 (where dialog left off) to Stage 30 (when the NPC gets his treasure back)?


10a). OBJECT window > Items
Find the lost item made during step 2, whether it was an amulet or a ring or whatever. Right-click > Edit on it, so its information panel opens up.

10b). Three selections down on the left side of this panel is Script. When editing an item which does not have a script, it should say NONE in the script's scroll-bar, which is perfect. Go to Step 10d if this is so. If the item has a script, go ahead and move the scroll-bar all the way upwards, so that it says NONE. Continue to 10c, which is the very next step.

10c). Click OK, closing the item's panel. Now, reopen the item. If the item previousy had a script, now it should be gone.

10d). So now let's have some fun, and add our own script. hubbahubba.gif Click on the [...] button. Literally, this is a button with three dots on it, which is right next to the Script scroll-bar. The script editor opens. Like most windows, this one's got its own little tool bar.

Left-click on Script, and select New.. This allows us to type into the script editor box, opening up all kinds of scripting fun. Anyway, type in the following...


scriptname aaaFetchQuest1Script

Begin OnAdd Player

End


10e). From this point, you can either click on the script editor's Save icon, or try to close the script by pressing X in the script window's upper-right corner. If you try to close it out without saving, the CS will then ask Do you want to save your script? .... And of course the answer is usually Yes.

If any odd messages show up, the script will not save or close. Usually this is due to something not being spelled correctly, or not being written in a proper way. "Begin On Add" for instance, instead of "Begin OnAdd". Don't get frustrated; mistakes like this happen all the time. Correct this, and try saving (or closing) again.

10f). Click OK, closing the item's panel. Next, reopen it. Find the script just created in the Script scroll-bar, and click OK again. Reopen the item. Make sure the script is now attached to the item.

All of this closing and reopening can seem redundant, but this process is necessary to make sure the script gets added to the item properly, without annoying error messages!

10g). Now it's time to flesh out the rest of the script, by adding...


if (player.GetStage aaaFetchQuest1 == 20)
SetStage aaaFetchQuest1 30

Endif

... between the OnAdd and End functions. Overall, the script should look like this....


scriptname aaaFetchQuest1Script

Begin OnAdd Player
if (player.GetStage aaaFetchQuest1 == 20)
SetStage aaaFetchQuest1 30

Endif

End


Again, if everything got typed okay, there should be no problem / the script panel will close. If something did not typed propertly, there will then be some weird message, screaming any mistakes. mad.gif I've been there, zillions of times. If this happens, something in the script is obviously wrong. The script editor will try to point us in the correct direction, by pointing which line has some erroneous data. It's often something small and easy to miss: a missing parenthesis bracket, or a period (full stop for your Brits) missing between Player and GetStage. Or a space between Set and Stage. rolleyes.gif Or an If statement, without a corresponding EndIf.

For anyone who wants to know more about Ifs, EndIfs, OnAdds, and zillions of other checks and functions work, the Construction Set wiki linked above explains all this stuff in great detail, in its gigantic Scripts tutorials.

Once the script is saved and ready to go, THIS collection of words, symbols, and numbers is what will wind up moving the quest from Stage 20 to Stage 30, when we fetch that lost item.

One final thing can get added to this Fetch quest. This is entirely optional, and has to do with our character getting a point of Fame for delivering that amulet. This is a little silly of course, but necessary for learning. And maybe it's not so silly. Maybe Bob tells all his friends, half the population of Bravil, about our character's exploits. Sir Bob of Bravil makes our character a little more famous.

Just open up the Quest window again, go to Quest Stages, and in the final stage of 100. Type the following into the Result Script box...

ModPCFame 1

... right above the StopQuest script. Altogether, you might be seeing all of these scripts in Stage 100's Result Script box by now, assuming you've removed that lost item, added some gold, and added a point of Fame...


Player.RemoveItem aaaLostAmulet 1
Player.AddItem Gold001 X
ModPCFame 1
StopQuest aaaFetchQuest1


12). Click OK, closing the Quest window, and then close the Construction Set, choosing Yes if you want to save.

13). A good idea now is to go into the game's Data folder. Find the .esp file just made, and immediately make a copy of it. Paste this copy in a safe place, maybe a separate hard drive if you've got one. This is a really good habit to get into, for obvious reasons.

14). Get in the game, and play! If anything is wrong, just be patient. Go back into the CS, and fix it. You're alpha-testing your own material now, which in my opinion can be the most aggravating part of quest-making. I usually turn my TV all the way down (so that I'm not actually roleplaying anymore) if I begin to get frustrated.

But I almost always figure it out, whatever it is I'm trying to accomplish, and so can you.


Conclusion: You may notice that this fetch quest boils down to maybe a minute or two of actual gameplay in total (not including travel, exploration of lairs, battles with enemies, etc.). And maybe you've spent hours designing it with this guide. This may seem like a heck of a lot of work for not much playtime. Eventually though, all of the steps mentioned in this first tutorial will become second-nature for those who decide to keep at it. You'll be able to fly through these steps much more quickly. goodjob.gif

This post has been edited by Renee: Feb 13 2024, 08:23 PM


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Posts in this topic
Renee   Renee's Modding Thread   Feb 25 2018, 01:30 PM
Lady Saga   [color=green]Tip: For Oblivion, Always use [url=ht...   Feb 25 2018, 01:35 PM
ghastley   The problem with the YouTube tutorials is that the...   Feb 25 2018, 04:25 PM
Renee   Awesome, ghastley. The problem with the YouTube...   Feb 25 2018, 05:18 PM
SubRosa   Excellent fetch tutorial Renee! I will probabl...   Feb 25 2018, 05:41 PM
Renee   Thank you. I tend to write up everything I do step...   Feb 25 2018, 11:40 PM
Renee   [color=green]The Kill Quest, Map Markers, and X ma...   Mar 2 2018, 11:16 PM
Turija   Great thread. I will have to think about what I c...   Mar 7 2018, 11:58 PM
Renee   Sweet Turija! See, I just learned a few new th...   Mar 8 2018, 02:53 AM
Renee   [b]How to repair Hair, Game: TES IV: Oblivion Thi...   Mar 13 2018, 02:27 AM
Renee   [color=#FF6600]How to make an NPC Vendor & Mec...   Mar 18 2018, 06:29 PM
Renee   [color=white]How to fix "Missing flowchartx32...   Mar 25 2018, 05:20 PM
ghastley   FWIW, you CAN paste into the command prompt window...   Mar 26 2018, 03:06 PM
Renee   Okay thanks, ghastley. I'll see if this works ...   Mar 29 2018, 05:18 PM
Renee   How to make a Fetch Quest (with multiple items). G...   Mar 31 2018, 11:36 PM
Renee   Each exterior cell is 4096 units by 4096 units or ...   Apr 3 2018, 02:56 PM
ghastley   At some time in the past I did a tutorial on how t...   Apr 10 2018, 07:33 PM
Renee   That'd be great. :)   Apr 10 2018, 08:15 PM
Renee   [color=#009900]Making a weather-changing item. Gam...   Apr 24 2018, 12:19 AM
Renee   [color=#996633]Faction-changing Armor and Clothing...   May 13 2018, 07:53 PM
Renee   Making an NPC Follower Game: Fallout 3 Note: this...   May 29 2018, 01:25 AM
Renee   Timer Scripts. Game: TES IV: Oblivion or Fallout 3...   Jun 10 2018, 11:53 PM
Renee   [b]Making a house for sale or rent. Game: TES IV: ...   Jun 24 2018, 03:37 AM
Renee   Cripes, it's been since JUNE since I've ad...   Aug 12 2018, 04:13 PM
Renee   [color=#CC9933]Gun Tutorial Game: Fallout 3 This ...   Aug 26 2018, 08:52 PM
SubRosa   Ignores Normal Weapon Resistance is a holdover fro...   Aug 26 2018, 08:59 PM
Renee   Thanks. I changed the info in my previous post. ...   Sep 2 2018, 12:55 PM
Renee   Another tip for making these bounty quests: I like...   Sep 29 2018, 06:50 PM
Renee   This post goes with the one above, and is going to...   Oct 12 2018, 02:41 AM
Renee   [color=green]Lizard Men! -- Game: TES IV: Obli...   Oct 25 2018, 10:59 PM
Lopov   Nice! :goodjob: I'll be using this mod whe...   Oct 25 2018, 11:25 PM
Renee   So it's possible to encounter them in Lake Ru...   Oct 26 2018, 12:04 AM
Renee   Making an NPC Vendor / Repairist. Game: TES IV: Ob...   Oct 28 2018, 02:08 AM
Renee   [b]SEQ Files, Game: TES V: Skyrim Requires the TE...   Oct 29 2018, 12:17 AM
Renee   [color=#996633]Making FOMODs through Fallout Mod M...   Nov 11 2018, 04:32 PM
Renee   ` Making an NPC follower Game: TES V: Skyrim ...   Dec 1 2018, 06:40 PM
Renee   [b]Making an NPC Vendor Game: TES V: Skyrim [b]1...   Dec 5 2018, 02:59 AM
Renee   Making a Book bump a quest stage Game: TESV: Skyri...   Dec 15 2018, 02:39 AM
Renee   [b]Skyrim Quest Tutorial (WORK IN PROGRESS, do no...   Dec 17 2018, 12:02 AM
Renee   Repeatable Bounty Quests II (innkeeper involvemen...   Dec 29 2018, 04:04 PM
mALX   This is an Awesome thread, Renee!!!   Jan 14 2019, 07:56 PM
Renee   Awesome, thanks so much. :) --------------------...   Jan 19 2019, 08:25 PM
Renee   Setting up a gamepad controller Game: Elder Scroll...   May 15 2019, 12:53 AM
mALX   Awesome! You got it working! By the wa...   May 15 2019, 01:55 AM
Renee   Awesome, thanks. I have noticed there's TONS o...   May 15 2019, 01:05 PM
Renee   Game: Fallout 3, How to use Zone Triggers to set q...   Jun 19 2019, 02:28 AM
Renee   How to transfer saves from Xbox to PC, Games: Obli...   Jun 26 2019, 12:10 PM
Renee   Making a generic NPC Enemy, [color=white] Game: TE...   Oct 29 2019, 10:53 PM
Renee   Repeatable Bounty Quests Game: [color=white]TESV: ...   Jan 5 2020, 05:47 AM
Renee   Repeatable Bounty Quests, How to add new locations...   Jan 29 2020, 01:46 AM
mALX   These are awesome tips! Thanks Renee!   Jan 5 2020, 06:26 PM
SubRosa   Wow. That is amazing.   Jan 5 2020, 07:54 PM
Renee   aw, well thanks. I appreciate your encouragement,...   Jan 5 2020, 10:48 PM
Renee   SetActorOwner https://www.creationkit.com/index.p...   Apr 1 2020, 11:43 PM
SubRosa   You can use this at the console. It is a great way...   Apr 2 2020, 12:28 AM
Renee   You can use this at the console. It is a great wa...   Apr 2 2020, 12:33 AM
Renee   USE THIS idea for Fallout3_Jail.esp. We're goi...   May 31 2020, 05:11 PM
Renee   Adding a Jail and enhancing Fallout's Crime Sy...   Jun 4 2020, 08:25 PM
Renee   Making a Patrol package. [color=#993300]Game: Fall...   Jun 20 2020, 04:55 PM
Renee   Horse Rentals. Game: [color=#006600]TES IV: Oblivi...   Jul 26 2020, 06:07 PM
Renee   Getting an Xbox controller to work on PC. Game: [c...   Jun 11 2021, 12:47 AM
Renee   [color=#996633]Trigger Zones, Game: Fallout 3 Fal...   Sep 27 2020, 12:47 AM
Renee   https://www.youtube.com/watch?v=wj6qGCT4isg...nnel...   Sep 28 2020, 02:55 PM
Renee   https://web.archive.org/web/20130429160307/...Obje...   Oct 29 2020, 11:17 PM
Renee   I have found a really good Daggerfall tutorial whi...   Nov 28 2020, 03:00 AM
Renee   More Dynamic NPCs! Game: [color=#663366]TES II...   Jun 24 2021, 02:36 AM
Renee   Getting the Take All button to work, Game: [color=...   Aug 20 2021, 06:40 PM
Renee   Setting fallback cell (instead of Tiber Septim) h...   Sep 1 2021, 01:12 PM
Pseron Wyrd   https://web.archive.org/web/20200218144220/...a-s...   Sep 1 2021, 04:32 PM
Renee   I agree, Wyrd. Now that I know why random stuff sh...   Sep 2 2021, 01:58 AM
Renee   Random Console Commands, Game: TES V: Skyrim This...   Jan 23 2022, 03:36 PM
Renee   How to make a ForceGreet. Game: [color=white]TES V...   Jan 23 2022, 07:24 PM
Lena Wolf   I thought this thread was for Oblivion? ;) Never m...   Jan 25 2022, 03:57 PM
Acadian   I thought this thread was for Oblivion? ;) ... P...   Jan 25 2022, 05:30 PM
Lena Wolf   Well, there are of course a lot of similarities be...   Jan 25 2022, 05:41 PM
Renee   Lena has a point. Maybe this thread can be moved t...   Jan 25 2022, 06:12 PM
Acadian   Okay, the mod projects forum is simply a collectio...   Jan 25 2022, 07:22 PM
Renee   Thanks, paladin!   Jan 25 2022, 08:44 PM
Renee   How to use the PC's face for an NPC. [color=wh...   Mar 13 2022, 10:11 PM
Renee   How to add a bounty to the Player via script. Gam...   Apr 1 2022, 01:21 AM
Renee   How to add the Player or NPC into a Faction via sc...   Apr 3 2022, 02:39 AM
Renee   How to fix "failed to load snowflake: Meshes...   Nov 27 2022, 04:20 PM
Renee   Installing Morrowind from Scratch Recently I had ...   Dec 3 2022, 02:53 AM
macole   Those Intervention scrolls sure come in handy. I ...   Dec 3 2022, 07:59 AM
Renee   Oops, I screwed up. :whistle: Was cleaning the nex...   Dec 3 2022, 02:26 PM
Renee   Get a Job! Game: [color=white]TES V: Skyrim I...   Dec 11 2022, 11:41 PM
Renee   Traveling with an NPC. Game: TES V: Skyrim Here...   Jan 21 2023, 07:32 PM
Renee   Traveling with an NPC, Additional Locations. Game:...   Feb 10 2023, 03:07 PM
Renee   Traveling with an NPC, Additional NPCs. Game: [col...   Feb 13 2023, 01:58 AM
Renee   Dialog Speech Checks Game: [color=#FFFFFF]TES V: S...   Mar 3 2023, 03:58 AM
Renee   Map Marker Tutorial, Game: Fallout 3 Firstly, wit...   Mar 19 2023, 05:52 PM
Renee   Repeatable Enemy Raids, Game: Fallout 3 I love ge...   Mar 26 2023, 07:31 PM
Renee   Repeatable Enemy Raids, Additional Locations. Game...   Apr 2 2023, 06:36 PM
Renee   Gray Face bug. Game: [color=#FFFFFF]TES V: Skyrim ...   Apr 23 2023, 01:50 AM
Renee   Script Fragments. Game: [color=white]TES V: Skyrim...   May 19 2023, 06:54 PM
Renee   Fixing the Sideways Glasses Bug, Game: [color=#663...   May 26 2023, 10:29 PM
Renee   Nexus Mod Manager - installing and uninstalling Y...   Jun 8 2023, 08:02 PM
Renee   Breton Magic Resistance Tweak, Game: [color=#66333...   Jun 21 2023, 12:03 PM
Renee   Manipulating Leveled Lists Here is how to change ...   Jun 24 2023, 07:29 PM
2 Pages V  1 2 >


Reply to this topicStart new topic
4 User(s) are reading this topic (4 Guests and 0 Anonymous Users)
0 Members:

 

- Lo-Fi Version Time is now: 20th April 2024 - 05:39 AM