Stores and store items have a whole new set of rules. Documentation for building stores can be found in the FTP as well as the staff website. I will provide you with a few other bits of information, but be sure to use the guides too.
First of all, a store requires a room, or multiple rooms if you desire. This could be a building of some type, a tent, a wagon, or something like these. Stores may be permanent or may come from travelling merchants, etc., so use whatever would be appropriate. We typically use wagons, tents, or other makeshift or moveable structures for merchants and festivals which are essentially a collection of such merchants. Stores in game would be permanent structures of some type.
Flag the store room(s) indoors and peaceful. Do not flag it as janitor proof. The store should be flagged load/unload because a lot of objects will be contained within that we won't need loaded in the game memory all the time. Consider that the store will remain as a room in-game all the time but players won't be in it all the time. We greatly reduce resource usage on the game by not forcing these objects to be loaded up in memory full time! ;) Since the items will not be loaded when noone's in the room, and the janitor doesn't come while someone's in the room, there is no need for both flags.
Always make an exit that leads out. You may create a GO exit in addition, which is typically a good idea if there's one that leads in, but we want to have OUT as an option of any interior rooms in game (of course there are always exceptions but that's the general rule).
Most of the time a catalog will be created that lists the items and their prices in full; you will be helped on catalog creation when the time comes. If you are comfortable with doing this yourself, you should do so, and present the file to your Game Director. (Otherwise you should present a list of your items for sale and their prices to them instead.) The file will then be approved by Systems and placed online in the server. You should create an object named catalog (or menu, or board, or whatever) to place somewhere visible to the player as a clue to let them know. For example, you could lay a catalog on a counter which the clerk stands behind. The creation process of your catalog data for the script is detailed in the document in our FTP.
A room data item needs to be created and dropped in the room: this handles the buy and get mechanics, including what the the shopkeeper says to the player when they buy or check prices (by using GET <item>). Each room of the store must have its own catalog and room data. This is detailed in the document in our FTP.
In addition to having these things, the store must contain the actual items which will be for sale. Typically what we do is make these objects and set them to invisible and manip. invisible and then drop them on the ground of the store (this is one reason why the store must be janitor proof). The player will be able to read the catalog to see what's for sale, and they will use the BUY verb to make a purchase. They may also use CHECK to be sure they're buying the right item. TAP will work but CHECK is the correct verb to use in a store. Notes such as these may be indicated on the catalog pages for the player.
Store items do not need to have janitor proof or even temp janitor proof flag turned on. If they do the player will buy them in this state! This would not be appropriate. Temp. janitor proof items can cause issues too: a good example is crossbow quarrels. If they only buy them and load them up, they never actually picked them up, so the flag is still on the object (the flag gets turned off the first time someone picks the item up). If they shoot the crossbow the quarrel falls to the ground and voila, it's (temporarily) janitor proof until someone comes and picks it up. Wow, what a mess that could create, huh? That's one good example of why you don't use this flag ;)
To sell items in a store, the value should be set to the item's selling price, or what the player will have to pay to buy it. If store items are not given a value, they cannot be bought. Data3/value1 must be 23. The pickup flag must be on (if it's not, a player won't be able to ever pick up the item if they set it down or put it in a container). The store mechanics will prevent players from grabbing any items that have this value in place (in other words, using GET will not allow them to simply pick up a store item). Also be sure to set the wear flag as appropriate to where you'd wear this item like chest, wrist, etc (consult the last page of the GM Orientation guide first for these or and go to the bottom of the page). The item type needs to be correct for item (worn things set as misc worn, etc) in the last tab.
In addition to the catalog listing, we commonly create a "display" item to place on a shelf, etc. All you need to do is make a copy of your item (DUPLICATE_OBJECT <object name>) and put it on your rack, etc. It should still be buyable, as well as be otherwise identical to the ground item, except that you must turn invis and manip. invis OFF. Otherwise when they look on the rack, they won't be able to see them.
You have two options with a store. The items you place on a shelf, rack, table, etc., may be purchased but the player would have to type out the full command like buy red hat on shelf, etc. Usually in this case we will create an identical duplicate object and place it on the ground so it'll work if they simply type buy red hat. If you do not place the duplicate items on the ground, you need to place a note on a sign somewhere that they must specify the additional verbage. It's up to you what method to use, but it must be "user-friendly" whatever you decide. If they can't see the items and have no catalog to read, for example, they would not know they could buy anything! You can view example stores in rooms: 1805 (not using any duplicates), 4003 (buyable duplicates are both on the ground as well as on the cart. Player can buy OR buy on cart).
Normally I personally would just create duplicate items, one of each invis/manip. invis on the ground and one visible on the "display" item. One good example where I had to NOT create duplicate invisible items on the ground was when I created a custom mask store (1077). I had a great number of possible options and having them all on the ground would make it impossible to buy the correct mask. Until the new parsing system changes are applied to store verbs, buy tenth red mask will only work up to tenth. Buy eleventh mask will therefore be an invalid command. So since I had more than this I had to organize them into multiple rooms, or just put the sellable items on top of other containers. As you can see, I had options, and just had to be creative and come up with the choice that worked for me AND the store.
Always create a GO exit named store and store despite any others you add. Many people will always try these first, out of habit.