Difference between revisions of "My First Shop"

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search
imported>Grosie
m (→‎Creating the AI: - Spelling Correction)
imported>Syscrusher
(→‎Merchant Container: Added note about zero-cost clutter items not being offered for sale.)
 
(5 intermediate revisions by 3 users not shown)
Line 12: Line 12:




Move around the area and look for a suitable location to place your shop, or you can follow me and use the empty space on the wall opposite the ship in the bay. Once you've picked a place, we need to find the right looking building. Expand the World Objects pane in the Object Window, and then the Static pane, then the Architecture pane, and finnaly select the ImperialCity pane.  
Move around the area and look for a suitable location to place your shop, or you can follow me and use the empty space on the wall opposite the ship in the bay. Once you've picked a place, we need to find the right looking building. Expand the World Objects pane in the Object Window, and then the Static pane, then the Architecture pane, and finally select the ImperialCity pane.  




Line 66: Line 66:




Ok, now we have to make both the basement and the quarters. The Basement is merely a formality as there is a gap underneath the stairs for a door. You can choose to forgo the basement if you wish, but the Private Quarters are critical to the shop owner's AI. Now, create two new interior cells like you did before. My two areas id's are: JGMyFirstShopQuarters and JGMyFirstShopBasement. Keep all the Lighting, Common Data and Interior Data the same as before (except the name of the area), and then load the Private Quarters cell.
Ok, now we have to make both the basement and the quarters. The Basement is merely a formality as there is a gap underneath the stairs for a door. You can choose to forgo the basement if you wish, but the Private Quarters are critical to the shop owner's AI. Now, create two new interior cells like you did before. My two areas' IDs are: JGMyFirstShopQuarters and JGMyFirstShopBasement. Keep all the Lighting, Common Data and Interior Data the same as before (except the name of the area), and then load the Private Quarters cell.




Line 78: Line 78:




Expand WorldObjects > Static > Architecture > ImperialCity > BasmentSet and then drag the following pieces into the view:
Expand WorldObjects > Static > Architecture > ImperialCity > BasementSet and then drag the following pieces into the view:




Line 113: Line 113:
'''ID:''' Type in a unique ID (eg. JGMyFirstShopOwner)
'''ID:''' Type in a unique ID (eg. JGMyFirstShopOwner)


'''Name:''' This is the name that will appear in game. You can choose to give him a title (eg. Shop Owner) or give him an actual name (eg. Bob Smith). For this tutorial im just going to give him the title of Shop Owner.
'''Name:''' This is the name that will appear in game. You can choose to give him a title (eg. Shop Owner) or give him an actual name (eg. Bob Smith). For this tutorial I'm just going to give him the title of Shop Owner.


'''Script:''' NONE
'''Script:''' NONE
Line 128: Line 128:


'''Death Item:''' NONE
'''Death Item:''' NONE
'''Auto-Calc Stats:''' Unchecked -- If this is checked, the NPC will not offer sales.


'''Check the Essential box at the bottom. This will make the NPC Invulnerable.'''
'''Check the Essential box at the bottom. This will make the NPC Invulnerable.'''
Line 135: Line 137:




Once your done with the face, goto the Inventory tab. This is what your NPC is carrying. Whichever clothes you put in here he will wear. So we need to click and drag the following items to his inventory page:
Once you're done with the face, go to the Inventory tab. This is what your NPC is carrying. Whichever clothes you put in here he will wear. So we need to click and drag the following items to his inventory page:


Items > Key > JGMyFirstShopPrivateKey
Items > Key > JGMyFirstShopPrivateKey
Line 155: Line 157:


Save the mod.
Save the mod.


== Creating the AI ==
== Creating the AI ==
Line 164: Line 164:




The things we need to be concerned with are the Buys / Sells boxes. Tick which items you wish to be able to sell to this shop. For this tutorial, im going to select Weapons and Armor. Now give him some bartering gold (1000 is good), and now we get to move onto the fun stuff.
The things we need to be concerned with are the Buys / Sells boxes. Tick which items you wish to be able to sell to this shop. For this tutorial, I'm going to select Weapons and Armor. Now give him some bartering gold (1000 is good), and now we get to move onto the fun stuff.


This is like a schedule. The game will look at the NPC's schedule constantly, to check to see which ones will happen when. For now, all we need is a Sleep and OfferServices package. Right click in the empty list and press new. A blank AI package screen should appear. Do the following for each package:
This is like a schedule. The game will look at the NPC's schedule constantly, to check to see which ones will happen when. For now, all we need is a Sleep and OfferServices package. Right click in the empty list and press new. A blank AI package screen should appear. Do the following for each package:
Line 185: Line 185:
'''Month:''' -Any-
'''Month:''' -Any-
'''Date:''' -Any-
'''Date:''' -Any-
'''Time:''' This is when you want the NPC to finish offering services and goto sleep. It's also in 24 hour time. (eg. 19 = 7:00pm. Thats what i'm choosing)
'''Time:''' This is when you want the NPC to finish offering services and go to sleep. It's also in 24 hour time. (eg. 19 = 7:00pm. That's what I'm choosing)
'''Duration:''' How long to sleep for. (eg. 11. So he will wake at 6:00am)
'''Duration:''' How long to sleep for. (eg. 11. So he will wake at 6:00am)


Line 258: Line 258:
=== Owners Options ===
=== Owners Options ===


Go into the cell editing window again (where you choose lighting and interior data), and find your shop in the list (eg. JGMyFirstShop) and goto the Interior Data tab. Choose your NPC shop owner from the drop down list of Owner NPC. Also tick the Public Area tickbox and then do the same for the other 2 rooms, WITHOUT ticking the Public Area tickbox in those other areas.  
Go into the cell editing window again (where you choose lighting and interior data), and find your shop in the list (eg. JGMyFirstShop) and go to the Interior Data tab. Choose your NPC shop owner from the drop down list of Owner NPC. Also tick the Public Area tickbox and then do the same for the other 2 rooms, WITHOUT ticking the Public Area tickbox in those other areas.  


Also you may want to make the bed owned by the NPC so that no one else can sleep in it. Double click on the bed in the quarters and goto the Ownership tab. Select the owner as the NPC you made and press ok.
Also you may want to make the bed owned by the NPC so that no one else can sleep in it. Double click on the bed in the quarters and go to the Ownership tab. Select the owner as the NPC you made and press ok.


As well as the bed, you should also make the front entrance owned by the NPC. So load up the shop room and double click on the front entrance door, changing the Ownership to the shop owner. Then double click on the Basement and Quarters door making them owned, not by the NPC, but by the faction Generic Owner.
As well as the bed, you should also make the front entrance owned by the NPC. So load up the shop room and double click on the front entrance door, changing the Ownership to the shop owner. Then double click on the Basement and Quarters door making them owned, not by the NPC, but by the faction Generic Owner.
Line 267: Line 267:
=== Merchant Container ===
=== Merchant Container ===


One last thing to do is make a Merchant Container. This is where the NPC will store the things he sells and the stuff you sell to him. Expand WorldObjects > Container. Now here are a list of all the containers in the game. If you dont feel like making your own container for a shop and just want to get it done quickly, select one of the ChestVendor containers, right click and press edit. (For this tutorial, we will select ChestVendorSmithAll01).
One last thing to do is make a Merchant Container. This is where the NPC will store the things he sells and the stuff you sell to him. Expand WorldObjects > Container. Now here are a list of all the containers in the game. If you don't feel like making your own container for a shop and just want to get it done quickly, select one of the ChestVendor containers, right click and press edit. (For this tutorial, we will select ChestVendorSmithAll01).
 
When putting items into the merchant container, be aware that zero-cost items will not be offered for sale. If, for example, you need to have a merchant sell skeins of yarn, you will need to create a custom version of Yarn01 or Yarn02 (create a new form -- do not alter the original!) that costs at least one Septim. Put that into your merchant inventory instead of the worthless vanilla object.


Give the chest a unique name (eg. JGMyFirstShopMerchantChest), leave the name because no one will ever see it, make sure Respawns is checked and NONE script selected. You can then press OK or click and drag some more items to the chest. Once you've pressed OK, press yes to create a new form, then click and drag your chest into the shop area. Now drag it out of the room so that no one can get to it. It's better this way, because the Player can not tamper with it. Double click on your chest in the view and give it a unique reference ID (eg. JGMyFirstShopMerchantChestREF). Check the Persistent Reference box and then press OK. Now double click on your NPC in the room, goto the Merchant Container tab and then select your cell in the Cell drop box, and then your chest in the Reference drop box.
Give the chest a unique name (eg. JGMyFirstShopMerchantChest), leave the name because no one will ever see it, make sure Respawns is checked and NONE script selected. You can then press OK or click and drag some more items to the chest. Once you've pressed OK, press yes to create a new form, then click and drag your chest into the shop area. Now drag it out of the room so that no one can get to it. It's better this way, because the Player can not tamper with it. Double click on your chest in the view and give it a unique reference ID (eg. JGMyFirstShopMerchantChestREF). Check the Persistent Reference box and then press OK. Now double click on your NPC in the room, go to the Merchant Container tab and then select your cell in the Cell drop box, and then your chest in the Reference drop box. The merchant needs to own the chest, or belong to a faction that owns the chest, or the chest must be unowned.


When placing the chest in the cell, you may want to put it below the floor of the shop interior, because this will prevent it from appearing as a dot on the player's local map when they are in the cell.


=== Last things ===
=== Last things ===

Latest revision as of 01:06, 12 June 2015

This tutorial has been written to instruct modders in the creation of their first shop. It is assumed that you have a basic knowledge of how to move around the editor and create new forms (eg. Keys, Cells etc.). It is recommended you have followed the My First Dungeon Tutorial first.


Making the Place[edit | edit source]

First you'll have to find a place to put your shop. You may have made your own village/city/settlement, that would be a perfect place to make a shop. For this tutorial, we'll make a shop on the Waterfront of the Imperial City.


So, Open up the Construction Set and get the Oblivion.esm file active. Then look in the Cell list and change the World Space to Tamriel and load ICWaterfront06.


Move around the area and look for a suitable location to place your shop, or you can follow me and use the empty space on the wall opposite the ship in the bay. Once you've picked a place, we need to find the right looking building. Expand the World Objects pane in the Object Window, and then the Static pane, then the Architecture pane, and finally select the ImperialCity pane.


Click and drag the ICWaterfrontWallHouse01 into the view. Now move it into place against the wall. You don't have to worry about a couple of the rocks that are on the ground there, they will get hidden underneath the building or you can delete them if you wish. Check with the following picture to see if you placed the building in the right place:

Where to place the shop building

Now to put the front door. Expand the Door pane underneath World Objects, followed by Architecture then ImperialCity. Click and drag ICDoor04 into the view and then put the door into place. We'll deal with the specifics of the door later, for now we will continue making the building.

Click World on the toolbar and select Cells. Now change the Worldspace in the new window to Interiors. Right click in the list of cells and press New. Type in a name for the Cell. The player won't actually see this, but it's important to make it unique. I like to use my initials, followed by the name of the area (eg. JGMyFirstShop). After doing so, your new cell will join the list. Make sure it is selected and then we can alter some settings devoted to the cell. Do the following:


Common Data Tab

Keep Can't Travel From Here checked

Change the Music Type to Public

Keep Has Water unchecked

Keep Hand Changed unchecked


Lighting Change the Ambient RGB all to 25(if you are planning to place other light sources), or 100(if your not planning to place other light sources)


Interior Data Type the name you want the player to see (eg. My First Shop, Heavy Armor Store etc.)

Leave everything else for now


Press OK, and then load up your new cell from the Interior World Space. Now get back into the Static menu where we got the exterior building object from, except this time go further into ImperialCity by selecting Interior. Select ICGroundFloor08 and drag it into the view. Then place the same type of door as before at the entrance to the building, to the gap in the wall where the entrance would be. Also place another door in the gap underneath the stairs, as well as above the stairs in the other gap.


Now double click on the front door inside the interior cell and click the Teleport tab. Check the Teleport box and then select the cell ICWaterfront06 (05, 10) from the Cell dropbox. Select the ICDoor04 reference and press the OK button. Now move the yellow teleport marker out of the wall and drop it to the floor (F key). Also remember to rotate it so that the pink arrow is facing inside. Next double click on the teleport maker press Yes to view the door this is connected to. Make sure that it is the building that you made before, and then move the teleport maker out of the wall and drop it to the floor like the inside.

Might be a good idea to save now, as we move onto the next steps...


Making the other Rooms and Locks[edit | edit source]

The first thing we need to do is make two keys: A Private Quarters Key and a Store Key.


Expand the Items pane in the object window and then the Key pane. Now right click on AFightingChanceKey and press Edit. Change the ID to something unique (eg. JGMyFirstShopStoreKey), then change the name to My First Shop Store Key. Now press OK and press Yes to create a new form.


Now right click on AFightingChanceKey again and press Edit. Change the ID to something unique (eg. JGMyFirstShopPrivateKey), then change the name to My First Shop Private Quarters Key. Now press OK and press Yes to create a new form.


Ok, now we have to make both the basement and the quarters. The Basement is merely a formality as there is a gap underneath the stairs for a door. You can choose to forgo the basement if you wish, but the Private Quarters are critical to the shop owner's AI. Now, create two new interior cells like you did before. My two areas' IDs are: JGMyFirstShopQuarters and JGMyFirstShopBasement. Keep all the Lighting, Common Data and Interior Data the same as before (except the name of the area), and then load the Private Quarters cell.


Expand the WorldObjects > Static > Architecture > ImperialCity then select Interior. Now click and drag ICDTopFloor10 into the view. Now place the same door as always into the gap.


Now we need to place a bed. You can choose to place more decorations if you wish (strongly recommended) but for now we only need the basics. Expand the WorldObjects > Furniture > Furniture > MiddleClass and then click and drag MCDoubleBed02LR into the view and drop it to the floor. Place it against the wall and your bed is set for now.


Now load up your basement cell. We're going to make a very basic basement. You can choose to expand it as much as you like.


Expand WorldObjects > Static > Architecture > ImperialCity > BasementSet and then drag the following pieces into the view:


ICBasement1Way

ICBasementCorner01

ICBasementStairs01

ICBasementDoorWay01


Now piece them together so that the doorway is at the top of the stairs, and the corner at the bottom leading into the one way. Now place the same door as always into the gap. The door won't perfectly fit, but move it until it looks convincing if you're passing by.


Now load up your shop interior and make each door teleport to their respective area and door. Remember to move the teleport markers out of the wall and onto the floor.


Also, when editing the Private Quarters door to make it teleport to the quarters room. Go to the Lock tab and check the Locked box. Now turn turn the level to Average and select the Private Quarters key you made before in the Key drop box. Do the same for the Basement but select the Store key instead. Also, put a lock on the main entrance for the Store Key, but turn the Level up to Hard.


The Level is how hard the lock will be to pick if you don't have the key and the key is...well...the key that unlocks the door.


Now save and move on to...


Making the NPC Shop Owner[edit | edit source]

Expand Actors > NPC. Now right click in the list of NPCs and press New. The NPC window should pop up. Follow these instructions:


ID: Type in a unique ID (eg. JGMyFirstShopOwner)

Name: This is the name that will appear in game. You can choose to give him a title (eg. Shop Owner) or give him an actual name (eg. Bob Smith). For this tutorial I'm just going to give him the title of Shop Owner.

Script: NONE

Class: Merchant Summonable: Unchecked

Level: 1 PC Level Offset: Unchecked

Race: Put the race you want the character to be. For this tutorial he will be an Imperial.

Female: Unchecked (Unless you want the NPC to be a female).

Combat Style: DEFAULT

Death Item: NONE

Auto-Calc Stats: Unchecked -- If this is checked, the NPC will not offer sales.

Check the Essential box at the bottom. This will make the NPC Invulnerable.


Now click the Face Tab. Select which hair and eyes you want at the bottom of the window. And then move the sliders to make the NPC's face and skin change, or you can randomly generate by pressing the Generate button. You can get into the advanced face changing if you wish by clicking on Face Advanced tab.


Once you're done with the face, go to the Inventory tab. This is what your NPC is carrying. Whichever clothes you put in here he will wear. So we need to click and drag the following items to his inventory page:

Items > Key > JGMyFirstShopPrivateKey

Items > Key > JGMyFirstShopStoreKey

Items > Clothing > MiddleClass > MiddleShoes01

Items > Clothing > MiddleClass > MiddleShirt01

Items > Clothing > MiddleClass > MiddlePants01


Once they're in the Inventory, press OK

Now find him in the list of NPCs then drag him into the shop, then place him where you want him to stand when he is serving you.


Save the mod.

Creating the AI[edit | edit source]

Having the NPC and shop is great and all, but you need him to actually work and sleep in the right place. So double click your NPC in the NPC list, then press the AI button.


The things we need to be concerned with are the Buys / Sells boxes. Tick which items you wish to be able to sell to this shop. For this tutorial, I'm going to select Weapons and Armor. Now give him some bartering gold (1000 is good), and now we get to move onto the fun stuff.

This is like a schedule. The game will look at the NPC's schedule constantly, to check to see which ones will happen when. For now, all we need is a Sleep and OfferServices package. Right click in the empty list and press new. A blank AI package screen should appear. Do the following for each package:


For the Sleep Package:[edit | edit source]

ID: Unique ID (eg. JGMyFirstShopOwnerSleepPack)

Package Type: Sleep

Flags: No Flags ticked

Door Flags: No Door Flags ticked


Schedule Tab:

Day of Week: -Any- Month: -Any- Date: -Any- Time: This is when you want the NPC to finish offering services and go to sleep. It's also in 24 hour time. (eg. 19 = 7:00pm. That's what I'm choosing) Duration: How long to sleep for. (eg. 11. So he will wake at 6:00am)


Conditions Tab:

Do nothing here


Location Tab:

Tick the Location check box, and then the In Cell circle. Choose the Private Quarters cell (eg. MyFirstShopQuarters)


Target Tab:

Do nothing here


Now press OK, then make another package for Offering Services


For the Offer Services Package:[edit | edit source]

ID: Unique ID (eg. JGMyFirstShopOwnerOfferServicePack)

Package Type: Travel

Flags: Continue if PC near, Must Reach Location, and Offers Services

Door Flags:

When At Location - Unlock Doors

At Package End - Lock Doors


Schedule Tab:

Day of Week: -Any- Month: -Any- Date: -Any- Time: 6 Duration: 13


Conditions Tab:

Do nothing here


Location Tab:

Check Near Editor Location circle and keep Radius at 0


Target Tab:

Do nothing here


Now press Ok. Make sure in the Package list that the Sleep package comes BEFORE the offering service package. If it isn't, click the sleep package and press the arrows pointing left above the list. This should move it above the offering service package. Press Save, and then OK.


Now would be a very good time to save...

Loose Ends[edit | edit source]

Your almost at the end but there are some more things to do here.

Owners Options[edit | edit source]

Go into the cell editing window again (where you choose lighting and interior data), and find your shop in the list (eg. JGMyFirstShop) and go to the Interior Data tab. Choose your NPC shop owner from the drop down list of Owner NPC. Also tick the Public Area tickbox and then do the same for the other 2 rooms, WITHOUT ticking the Public Area tickbox in those other areas.

Also you may want to make the bed owned by the NPC so that no one else can sleep in it. Double click on the bed in the quarters and go to the Ownership tab. Select the owner as the NPC you made and press ok.

As well as the bed, you should also make the front entrance owned by the NPC. So load up the shop room and double click on the front entrance door, changing the Ownership to the shop owner. Then double click on the Basement and Quarters door making them owned, not by the NPC, but by the faction Generic Owner.


Merchant Container[edit | edit source]

One last thing to do is make a Merchant Container. This is where the NPC will store the things he sells and the stuff you sell to him. Expand WorldObjects > Container. Now here are a list of all the containers in the game. If you don't feel like making your own container for a shop and just want to get it done quickly, select one of the ChestVendor containers, right click and press edit. (For this tutorial, we will select ChestVendorSmithAll01).

When putting items into the merchant container, be aware that zero-cost items will not be offered for sale. If, for example, you need to have a merchant sell skeins of yarn, you will need to create a custom version of Yarn01 or Yarn02 (create a new form -- do not alter the original!) that costs at least one Septim. Put that into your merchant inventory instead of the worthless vanilla object.

Give the chest a unique name (eg. JGMyFirstShopMerchantChest), leave the name because no one will ever see it, make sure Respawns is checked and NONE script selected. You can then press OK or click and drag some more items to the chest. Once you've pressed OK, press yes to create a new form, then click and drag your chest into the shop area. Now drag it out of the room so that no one can get to it. It's better this way, because the Player can not tamper with it. Double click on your chest in the view and give it a unique reference ID (eg. JGMyFirstShopMerchantChestREF). Check the Persistent Reference box and then press OK. Now double click on your NPC in the room, go to the Merchant Container tab and then select your cell in the Cell drop box, and then your chest in the Reference drop box. The merchant needs to own the chest, or belong to a faction that owns the chest, or the chest must be unowned.

When placing the chest in the cell, you may want to put it below the floor of the shop interior, because this will prevent it from appearing as a dot on the player's local map when they are in the cell.

Last things[edit | edit source]

Your shop is up and running now (should be anyway) but there are a few things you should do before you release it to the world. Your shop is going to be very dark and empty, so I would suggest, either increasing the Ambient lighting or placing some lights around the room. Also it might be a good idea to decorate the room with items that the shop keeper might be selling. Remember to make them owned by the shop owner so that it will be counted as stolen if you pick them up.


Testing your Shop[edit | edit source]

Save your mod and then launch Oblivion. Select Data Files and then look for your mod file in the list. Check it and press Ok. Now launch the game.

Travel to the Waterfront district and visit your store. If it's past 7:00pm and before 6:00am, the store will be shut and the owner asleep. If its after 6:00 but before 7:00 the shop will be open.

Test this by waiting until midnight and then breaking into the store. The owner should be asleep in bed!

Well done, you've made your first Shop. Hopefully this will help you if you decide to make more, and maybe you might be able to fool around with the AI of the character (eg. adding an eating package, etc.).