Here is a fairly easy to use Mission Select script that I created.

Version 2.0! Woo!
Now you don't absolutely need to use switches unless you want different events to display different missions!

Screenshot

What does this script do?
Well, it will allow you to create a screen where a user can choose from a set of different missions. Each mission can have a short name that will be displayed in the list on the left, and then a Header, and several lines of text and/or an image that will be displayed in the large window on the right.

How to use this script:
Well, first you should download the ZIP file through the link below.

http://www.mediafire.com/?zjzzhn2zjxt

The ZIP contains an editable Demo utilizing the script, as well two separate text files containing both parts of the script itself.

Just insert the scripts before Main in your game's script list.

First you'll need to create an event that the user can walk up to and use the action button on. In the list of event commands, set a switch (that will later be used to tell the script which set of missions it will display) to ON, and then insert a script (it's on the number 3 tab) that reads:
$scene = Scene_MissionSelect.new
This little bit of script will call the Mission Select script into being.

Since Scene_MissionSelect is the part you'll be looking at the most, I'll cover its usage first.

The first part of the script you'll see is the initialization.
Beneath the comment that says #Mission set 1, you'll see:
if $game_switches[0001] == true
Replace the 0001 with the ID of whatever switch you turned on in the event that was previously created.
This bit will allow you to have several different sets of missions, each viewable from a different event.
If you plan on only having one set of missions, you can forget about the switches and just delete this part and the return and end lines at the end of the group of missions.

Next, you'll see two more lines:
$game_missions
and
$mission_board
$game_missions sets the number of missions that will be displayed. There's not really any limit, but if you try to display more than 150 missions at once, the game's frame rate will start to drop. If you need more than that, 200 is the absolute max I'd recommend using.

$mission_board lets you change the header that will displayed at the top of the screen.

After that, you'll see several ## Mission Number ## Each of these section defines the various text parts that will be displayed for each mission.
The first part defines the text that will appear in the list on the left side of the screen. The next part defines the text that will appear as the header in the window on the right side of the screen. The rest defines the lines of text that appear under the header. Think of them as the description of the mission. You don't have to use all the lines, all you need to do is delete everything in between the quotation marks, but don't delete the quotation marks themselves, otherwise the game will throw errors at you when you start it up. You can also add extra lines rather easily, but I'll get to that later.
If you want to add more missions, just copy & paste a block of code and then change the numbers (ie. change $mission18name to $mission19name).

Scroll down further and you'll find the Main Processing section. The only thing you can do here is change the window skin, on the first line after def main, just enter the file name of the skin as it appears in the Material base in between the quotation marks.

Scroll down until you find the Frame Update (when command window is active) section. This section dictates what happens when the action and cancel button are pressed.
Below where it says # If B button was pressed, you'll see a small section with # Switch all the switches off, this is where you turn off the switches that are turned on by the events. So replace the 0001 with the ID of whatever that switch was.

Next find the # Branch by command window cursor position section, each part where it says when (number) corresponds to one of the selections you can make on the list. There are extra comments that will let you know which mission it is, in case you need some extra help.
This section is where you tell the script what it should do when the player presses the action button on each selection that can be made.
Here's a sample (from the Demo) of how you can use this for quests:
when 0 #Mission 1
# Checks which mission set is active
# If mission set 1 is active
if $game_switches[0001] == true
# Checks to see if the mission has not been completed
if $game_switches[0004] == false
#P lay confirmation SE
$game_system.se_play($data_system.decision_se)
# Starts the mission
$game_switches[0003] = true
# Switch to map screen
$scene = Scene_Map.new
else
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
end
end


Now, if you want to display completed quests in a different color, you'll need to go into Window_MissionSelect and down to where the the mission names are displayed in the menu, and use a couple of if statements to check if a mission has been completed. Basically, you'd have to replace the line with the draw_text command with something like this (a sample form the demo)
# Checks which mission set is active
# If mission set 1 is active
if $game_switches[0001] == true
# Checks if mission 1 has been completed
if $game_switches[0004] == true
# Disables the mission if it has been completed
self.contents.font.color = disabled_color
self.contents.draw_text(4,0,640,32,$mission_1)
self.contents.font.color = normal_color
else
self.contents.draw_text(4,0,640,32,$mission_1)
end
self.contents.draw_text(4,64,640,32,$mission_3)
end


Now, for Window_MissionInfo.
You really don't need to do much here, but if you find you need some extra lines, here's an example for if you wanted to add them just to the first mission:
First you need to add more lines like so,
self.contents.draw_text(0,132,640,32,$mission1text6)
self.contents.draw_text(0,152,640,32,$mission1text7)
And so on and so forth. Just be sure to add 20 to the second number, and to go back to Scene_MissionSelect and add
$mission1text6 = "Text"
$mission1text7 = "Text"

in equal numbers to each ## Mission number ## section, otherwise you'll get errors thrown at you.

It should be noted that I have no clue how to display pictures yet, when I figure it out though, I'll be sure to post an extra section on it here.


All right, I think that's everything.
If you have trouble with the script, or if my instructions were confusing (which I won't be too surprised at, since I've never really had to explain how to edit code before, or explain how to use a script, for that matter), let me know and I'll try to help you. Though I really, really do suggest looking at the Demo and poking around in there a bit first.