New account registrations are disabed. This website is now an archive. Read more here.

RPG Maker XP    Posted October 5, 2013 by Leon

Mission/Quest Menu script.

Introduction

Ok, here is a revamp of my first script. I went out strong, and kept pumping out new scripts, but this has been my most used script. It still suprises me that people request it, even though it has been created. The instructions are in the header:

Features

  • If the user doesn’t know of the mission, it doesn’t appear in the list, nor does a slot for it.
  • Completed missions are in green.
  • Number of missions. (X/Y) X is completed missions, Y can be either known missions, or your game’s total missions. Set Mission_Setup to ‘true’ if you want known missions, false for total.

The Code

License Terms

Attribution 3.0 Unported - You must attribute the work in the manner specified by the author or licensor. Commerical use allowed.

Instructions

Put it above main.

The instructions have changed a lot more than the features. Just go through
the short list below, and you’ll know. Just remember, go in order, and if you have 10
different missions in 1 spot, you must have the same number in each other segment
of the module, with the exception of the lines of text. (Yes, i made that one all the easier.)

Changing the status of the missions is different than before as well.

$game_party.mission[mission_id] = x

Mission ID: The ID of the mission, as defined in the module. In this example,
"Lost Cat" would be 0

X:
1 = they do not know the mission exists. This is optional, unless they forget a mission.
2 = they know the mission, but it is incomplete
3 = the mission is complete.

BY DEFAULT, ALL MISSIONS ARE UNKNOWN unless specified in the script before the game begins.

 

Call the script like so

$scene = Scene_MissionMenu.new

Author Notes

Do NOT post my work in any other forums without my permission, and NEVER take credit
for my work.

Comments (43)

  • The paragraphed method has problems with certain fonts and will squish the lettering of them. I found that aspect of the script quite… unappealing.

  • This is awesome, i can use it when i make a mmorpg. I think you should add a feature to have to do more then 1 thing to finish quest. So in quest 1, if u did this switch 1 will be put on which mean part 1 of quest one is over then part 2 is activated. You know what i'm saying?

  • I know what you are saying, but it wouldn't be easy to code, because you can't just change teh module's settings, I would have to rewrite almost all of the core of the script. Something I am not about to do. Maybe for version 3.0, but not any time REAL soon… Sorry, mate.

  • In the instructions, it says:

    Changing the status of the missions is different than before as well.

    $game_party.mission[mission_id] = x

    Mission ID: The ID of the mission, as defined in the module. In this example,
    "Lost Cat" would be 0

    X:
    1 = they do not know the mission exists. This is optional, unless they forget a mission.
    2 = they know the mission, but it is incomplete
    3 = the mission is complete.

    BY DEFAULT, ALL MISSIONS ARE UNKNOWN unless specified in the script before the game begins.

  • I'm baffled at how to use scripts overall, so excuse me for being n00bish, but for some of us your instructions are very vague.[quote]In the instructions, it says:

    Changing the status of the missions is different than before as well.

    $game_party.mission[mission_id] = x

    Mission ID: The ID of the mission, as defined in the module. In this example,
    "Lost Cat" would be 0

    X:
    1 = they do not know the mission exists. This is optional, unless they forget a mission.
    2 = they know the mission, but it is incomplete
    3 = the mission is complete.

    BY DEFAULT, ALL MISSIONS ARE UNKNOWN unless specified in the script before the game begins.[/quote]

    1) Where do I [i]put[/i] "$game_party.mission[mission_id] = x"?

    2) In regards to the menu: where do I put "$scene = Scene_MissionMenu.new"? Does it appear in the main menu?

    I have been trying to figure this out for a long time and am very annoyed.

  • I refuse to help anyone who refers to themselves as a 'noob', 'noobish', or any variant thereof. If they haven't enough self respect and self dignity to call themselves anything more than a horrible 'l33t' term, they can figure it out themselves.

    @ the staff: I apologize for the flaming here, i am just sick of this term.

  • Ok, well I will not use your scripts anymore. Not only did you not answer a single question fully that you've been asked, but your also an elitist asshole.

    I hope you understand that you just refused to help someone who was brand new to this board because of some personal agenda you have against "l33t" terms, and are therefore giving a bad first impression of the "staff" on rmxpu.

  • He's not being some elitist asshole, he's just simple refusing service from someone who can slander himself. Your just blowing this out of proportion and you need to calm down.

  • Arkbennett is right, you just need to calm down. You're spinning this out of proportion. We just don't like it when people call themselves "noob" so people can help them.
    This forum isn't anything like rmrk.net, there aren't jerks here. I can honestly say every single person here ([i]I don't know Arkbennett and I'm sure he is just as nice, but I know Leon is nice enough to help people. He was helping me.[/i]) is very sweet and always willing to help. He just thinks you shouldn't disrespect yourself for help…
    Right, Leon? Was I close? That's what I'm seeing (reading)….

  • [quote name=’Leon’ post=’24564′ date=’Jul 30 2009, 01:39 AM’]That is exactly it, Crimson. You see, people tend to give themselves an inferiority complex in hopes people assist, and this is old.[/quote]

    You would have helped if never said the word, right?
    That's how I feel when people request my help on game information or any kind of help at all -I hate helping when people think they aren't good enough to even be able to do it, so they degrade themselves. Of course, I always help though and I don't even know why. They don't even post a "Thank you for the help. It worked" They leave the site and never, ever come back T.T

  • [quote name=’j4kl1ng3r’ post=’24548′ date=’Jul 30 2009, 12:23 PM’]I'm baffled at how to use scripts overall, so excuse me for being n00bish, but for some of us your instructions are very vague.

    1) Where do I [i]put[/i] "$game_party.mission[mission_id] = x"?

    2) In regards to the menu: where do I put "$scene = Scene_MissionMenu.new"? Does it appear in the main menu?

    I have been trying to figure this out for a long time and am very annoyed.[/quote]

    Perhaps post the link to a certain topic will help clear things up, if j4kl1ng3r decides to return here:
    [url=”http://www.rmxpunlimited.net/forums/index.php?showtopic=3065″]http://www.rmxpunlimited.net/forums/index.php?showtopic=3065[/url]

    I think it's still appropriate to answer the post(whether he is serious about not using the script or not).

    I believe for both lines you use the "call script" command on the 3rd page of your event commands(in the event editor). Just paste in those lines into the text area. [code]$game_party.mission[mission_id] = x[/code]
    x can be 1, 2 or 3. As said in the instructions, 1 = they do not know the mission exists, 2 = they know the mission, but it is incomplete, 3 = the mission is complete. So you can change the status of the mission by using call script and the above line of code. mission_id is the id of the mission you're changing the status of.

    [code]$scene = Scene_MissionMenu.new[/code]
    Again use this in the call script command. This will bring up the Mission menu.

  • [quote]He's not being some elitist asshole, he's just simple refusing service from someone who can slander himself. Your just blowing this out of proportion and you need to calm down.[/quote]
    I don't think "refusing service" because someone uses a word you disagree with is a proper course of action. That, to me, is more offensive than calling yourself a n00b. Maybe, for instance, if he would have just suggested that I not use that word when referring to myself…or something along those lines…seeing as how I had only 1 post on this forum at the time…I would understand.

    Maybe if someone knew that this board had just been having a huge conversation in the Symposium about using the word n00b it wold be appropriate to not help them if they used it. But when someone comes into the site and asks for help, I think refusing to help them because they use an internet slang term is a bit elitist.

  • But, in reference to my original questions. Is there any way to get this into the main menu? Or do I simply have to call it from events on the screen?

  • I wasn't being an elitist. I was refusing service because I felt if someone didn't care enough about themselves to give themself even a touch of credit, why should I? I try to steer from quoting scripture, becuase it is a heated debate, but if someone won't help themself (even by believing in themself) then why should I?

    As to answer your question, try [url=”http://www.rmxpunlimited.net/forums/index.php?showtopic=697″]this tread.[/url]

    Furthermore, I feel we are getting off on the wrong foot here. Not even a few days before your first post here, we had a heated discussion here on this word. And to add to the situation and reaction, I was having a very bad day.

  • It's all good. I'm not upset about it (though my reaction was a little over-dramatic), and I hope you aren't either.

    I will try that tutorial, though.

    And thanks, Leon.

  • [quote name='Leon' date='03 August 2009 – 10:50 PM' timestamp='1249357834' post='25000']
    You are welcome, and I hold no ill will either
    [/quote]

    This is a very good script, I'm glad I've found it. I'm trying to see if I can get it to work with the ringmenu by dubleax, so you should keep your fingers crossed =)
    Anyway, very good work. I like this script alot. Thanks!

  • [quote name='Maulth' date='04 September 2009 – 05:07 AM' timestamp='1252055266' post='26890']
    This is a very good script, I'm glad I've found it. I'm trying to see if I can get it to work with the ringmenu by dubleax, so you should keep your fingers crossed =)
    Anyway, very good work. I like this script alot. Thanks!
    [/quote]

    If you find a way to make that work can you post your code in this thread or PM it to me?

    That'd be suuuuuuuuper

  • [quote name='j4kl1ng3r' date='04 September 2009 – 01:13 PM' timestamp='1252088028' post='26895']
    If you find a way to make that work can you post your code in this thread or PM it to me?

    That'd be suuuuuuuuper
    [/quote]

    Most definitely. I'm not amazing with Ruby, but I've been working C++ for a long time so I can kind of figure out what's going on. May take me a bit though.

  • [quote name='Maulth' date='04 September 2009 – 04:19 PM' timestamp='1252099185' post='26897']
    Most definitely. I'm not amazing with Ruby, but I've been working C++ for a long time so I can kind of figure out what's going on. May take me a bit though.
    [/quote]

    Sorry to double post, but rather than go through and edit the ring menu for compatibility, I just created a "journal" type item and gave it to my main character, and created a common event that did this:
    [code]
    $scene = Scene_MissionMenu.new
    Erase event
    [/code]
    and call the event when the item is used. I know it's not the way you wanted it done, but I am not good enough to edit the menu myself, and it will suffice for me. Hope this helps.

  • I just figured out how to use this script. It is really awesome, thank you.

    I was wondering if there was a way to separate quests into chapters of the story, or if that would make it too complicated? (If not, then maybe set the numbers back to "1" after each chapter is completed?)

  • [quote name='Thubanus' date='08 September 2009 – 10:21 AM' timestamp='1252423286' post='27009']
    I just figured out how to use this script. It is really awesome, thank you.

    I was wondering if there was a way to separate quests into chapters of the story, or if that would make it too complicated? (If not, then maybe set the numbers back to "1" after each chapter is completed?)
    [/quote]
    You could do it so that when you ended a chapter, you could call this script:

    [code] $game_party.mission[0] = 1 [/code]

    With the [0] being the ID of your mission, inside of an event, right before a cutscene, or immediately after.

  • I'm sorry to be a bother, but I'm having an issue with the script.
    I get two different errors when I try to call up
    [code]$scene = Scene_MissionMenu.new[/code]

    They are as follows:

    Calling from an item- "Name error occurred while running script. undefined local variable or method for #<interpreter:0x3980ef8>"
    ( Screenshot for reference: http://img269.imageshack.us/img269/4093/errorinitem.png )
    Calling from a sign (event) – "Script 'quests' line 305: nomethoderroroccurred. Undefined method 'keys' for nil:NilClass"
    (Screenshot for reference: http://img42.imageshack.us/img42/1696/errorinsign.png )

    Note, quests is what I named the script.
    Line 305 is [code]for i in 0…$game_party.mission.keys.size[/code] in a *Refresh part.

    Also, when I try to change event status ( by calling – $game_party.mission[1] = 2 from a mailbox [just as a test to see what would happen after the other events]) I get the following message- "Name error occurred while running script. undefined method `[]=' for nil:Nilclass"
    (Screenshot for reference – http://img193.imageshack.us/img193/9871/errorinmakingquestknown.png )

    The only things I've modified is changing Mission_setup to false and the text for mission id 0.

    I'm very, very confused since I'm new (to say the least) at working with any sort of code. I've googled the errors and gotten nothing I can decipher with my very limited understanding of scripting.

    Thank you for your time, and I hope someone could inform me what I'm doing wrong.

  • [quote name='KatReverie' date='10 September 2009 – 12:36 AM' timestamp='1252560992' post='27113']
    I'm sorry to be a bother, but I'm having an issue with the script.
    I get two different errors when I try to call up
    [code]$scene = Scene_MissionMenu.new[/code]

    They are as follows:

    Calling from an item- "Name error occurred while running script. undefined local variable or method for #<interpreter:0x3980ef8>"
    ( Screenshot for reference: http://img269.imageshack.us/img269/4093/errorinitem.png )
    Calling from a sign (event) – "Script 'quests' line 305: nomethoderroroccurred. Undefined method 'keys' for nil:NilClass"
    (Screenshot for reference: http://img42.imageshack.us/img42/1696/errorinsign.png )

    Note, quests is what I named the script.
    Line 305 is [code]for i in 0…$game_party.mission.keys.size[/code] in a *Refresh part.

    Also, when I try to change event status ( by calling – $game_party.mission[1] = 2 from a mailbox [just as a test to see what would happen after the other events]) I get the following message- "Name error occurred while running script. undefined method `[]=' for nil:Nilclass"
    (Screenshot for reference – http://img193.imageshack.us/img193/9871/errorinmakingquestknown.png )

    The only things I've modified is changing Mission_setup to false and the text for mission id 0.

    I'm very, very confused since I'm new (to say the least) at working with any sort of code. I've googled the errors and gotten nothing I can decipher with my very limited understanding of scripting.

    Thank you for your time, and I hope someone could inform me what I'm doing wrong.
    [/quote]
    Before we try and figure out anything, we need to know 2 things.
    A) Are you using a Legit copy of RPG XP, because Postality knights or w/e has a lot of problems with scripts
    B) are you using the SDK?

  • [quote name='Maulth' date='10 September 2009 – 01:02 AM' timestamp='1252562568' post='27114']
    Before we try and figure out anything, we need to know 2 things.
    A) Are you using a Legit copy of RPG XP, because Postality knights or w/e has a lot of problems with scripts
    B) are you using the SDK?
    [/quote]

    A) Well, I got it off of the official RPG maker xp site, so I'm going to assume it's legit.

    B) I'm not using the SDK. I'm just using the maker as it came aside from editing tile sets and sprites, and two scripts aside from this one. A pause script by Zeriab and "Stat Influence Script/Barehands" by Leon.

  • That's probably the problem as that happened with me when I tried this out and I fixed it by starting a new game.

    This is why the Switch and Variable Managers and the Control key are useful while play-testing!

  • Ah! Thank you so much.

    It was from a load state. I didn't realize that it could cause a problem if it was from a previously saved state. I feel rather silly now, since that makes sense.

    I just played it from a new game state (Hurray for f9 and temporary teleports placed in decorations on the first map!) and it worked. I'll be sure to test things on a new game state from now on!

    Once again, thank you so very much!

  • Hey, sorry for bumping this topic but I really need to ask a question, I hope it will be answered.

    I know completely now how to use this script, but I have one question.
    Is there a way that when I press O for example, the quest menu opens?

  • This sounds like something I did in a horrible, horrible script I made back in 2006.

    Try this:

    Add the following line to Game_Temp, around line 17(or amongst the rest of them, you'll see):
    [code]attr_accessor :quest_calling # Quest Menu calling flag[/code]

    Next, goto Scene_Map. Add the following:
    [code] #————————————————————————–
    # * If the L button(Q button) is pressed, the quest menu will appear.
    #————————————————————————–
    if Input.trigger?(Input::L)
    # If event is running, or menu is not forbidden
    unless $game_system.map_interpreter.running? or
    $game_system.menu_disabled
    # Set menu calling flag or beep flag
    $game_temp.quest_calling = true
    $game_temp.menu_beep = true
    end
    end[/code]
    Directly below(starts around line 122:
    [code] # If B button was pressed
    if Input.trigger?(Input::B)
    # If event is running, or menu is not forbidden
    unless $game_system.map_interpreter.running? or
    $game_system.menu_disabled
    # Set menu calling flag or beep flag
    $game_temp.menu_calling = true
    $game_temp.menu_beep = true
    end
    end[/code]

    Still in Scene_Map, add the following:
    [code] #————————————————————————–
    # * Makes the Quest menu appear if the player is not moving
    #————————————————————————–
    elsif $game_temp.quest_calling
    call_quest[/code]
    Directly below:(around line 167, but moved because you added the code above):
    [code] elsif $game_temp.debug_calling
    call_debug[/code]

    Next, still in Scene_Map, add the following:
    [code] #————————————————————————–
    # * Quest Call
    #————————————————————————–
    def call_quest
    # Clear menu call flag
    $game_temp.quest_calling = false
    # If menu beep flag is set
    if $game_temp.menu_beep
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Clear menu beep flag
    $game_temp.menu_beep = false
    end
    # Straighten player position
    $game_player.straighten
    # Switch to menu screen
    $game_system.se_play($data_system.save_se)
    $scene = Scene_MissionMenu.new
    end[/code]
    Directly below(around line 217):
    [code] #————————————————————————–
    # * Menu Call
    #————————————————————————–
    def call_menu
    # Clear menu call flag
    $game_temp.menu_calling = false
    # If menu beep flag is set
    if $game_temp.menu_beep
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Clear menu beep flag
    $game_temp.menu_beep = false
    end
    # Straighten player position
    $game_player.straighten
    # Switch to menu screen
    $scene = Scene_Menu.new
    end[/code]

    OR, I'll do the edits for you, and you can add the scripts into your game. But this will cause errors if you have previously edited these scripts.

    Replace Game_Temp with:
    [spoiler][code]#==============================================================================
    # ** Game_Temp
    #——————————————————————————
    # This class handles temporary data that is not included with save data.
    # Refer to "$game_temp" for the instance of this class.
    #==============================================================================

    class Game_Temp
    #————————————————————————–
    # * Public Instance Variables
    #————————————————————————–
    attr_accessor :quest_calling # Quest Menu calling flag
    attr_accessor :map_bgm # map music (for battle memory)
    attr_accessor :message_text # message text
    attr_accessor :message_proc # message callback (Proc)
    attr_accessor :choice_start # show choices: opening line
    attr_accessor :choice_max # show choices: number of items
    attr_accessor :choice_cancel_type # show choices: cancel
    attr_accessor :choice_proc # show choices: callback (Proc)
    attr_accessor :num_input_start # input number: opening line
    attr_accessor :num_input_variable_id # input number: variable ID
    attr_accessor :num_input_digits_max # input number: digit amount
    attr_accessor :message_window_showing # message window showing
    attr_accessor :common_event_id # common event ID
    attr_accessor :in_battle # in-battle flag
    attr_accessor :battle_calling # battle calling flag
    attr_accessor :battle_troop_id # battle troop ID
    attr_accessor :battle_can_escape # battle flag: escape possible
    attr_accessor :battle_can_lose # battle flag: losing possible
    attr_accessor :battle_proc # battle callback (Proc)
    attr_accessor :battle_turn # number of battle turns
    attr_accessor :battle_event_flags # battle event flags: completed
    attr_accessor :battle_abort # battle flag: interrupt
    attr_accessor :battle_main_phase # battle flag: main phase
    attr_accessor :battleback_name # battleback file name
    attr_accessor :forcing_battler # battler being forced into action
    attr_accessor :shop_calling # shop calling flag
    attr_accessor :shop_goods # list of shop goods
    attr_accessor :name_calling # name input: calling flag
    attr_accessor :name_actor_id # name input: actor ID
    attr_accessor :name_max_char # name input: max character count
    attr_accessor :menu_calling # menu calling flag
    attr_accessor :menu_beep # menu: play sound effect flag
    attr_accessor :save_calling # save calling flag
    attr_accessor :debug_calling # debug calling flag
    attr_accessor :player_transferring # player place movement flag
    attr_accessor :player_new_map_id # player destination: map ID
    attr_accessor :player_new_x # player destination: x-coordinate
    attr_accessor :player_new_y # player destination: y-coordinate
    attr_accessor :player_new_direction # player destination: direction
    attr_accessor :transition_processing # transition processing flag
    attr_accessor :transition_name # transition file name
    attr_accessor :gameover # game over flag
    attr_accessor :to_title # return to title screen flag
    attr_accessor :last_file_index # last save file no.
    attr_accessor :debug_top_row # debug screen: for saving conditions
    attr_accessor :debug_index # debug screen: for saving conditions
    #————————————————————————–
    # * Object Initialization
    #————————————————————————–
    def initialize
    @map_bgm = nil
    @message_text = nil
    @message_proc = nil
    @choice_start = 99
    @choice_max = 0
    @choice_cancel_type = 0
    @choice_proc = nil
    @num_input_start = 99
    @num_input_variable_id = 0
    @num_input_digits_max = 0
    @message_window_showing = false
    @common_event_id = 0
    @in_battle = false
    @battle_calling = false
    @battle_troop_id = 0
    @battle_can_escape = false
    @battle_can_lose = false
    @battle_proc = nil
    @battle_turn = 0
    @battle_event_flags = {}
    @battle_abort = false
    @battle_main_phase = false
    @battleback_name = ''
    @forcing_battler = nil
    @shop_calling = false
    @shop_id = 0
    @name_calling = false
    @name_actor_id = 0
    @name_max_char = 0
    @menu_calling = false
    @menu_beep = false
    @save_calling = false
    @debug_calling = false
    @player_transferring = false
    @player_new_map_id = 0
    @player_new_x = 0
    @player_new_y = 0
    @player_new_direction = 0
    @transition_processing = false
    @transition_name = ""
    @gameover = false
    @to_title = false
    @last_file_index = 0
    @debug_top_row = 0
    @debug_index = 0
    end
    end[/code]
    [/spoiler]

    Replace Scene_Map with:
    [spoiler][code]#==============================================================================
    # ** Scene_Map
    #——————————————————————————
    # This class performs map screen processing.
    #==============================================================================

    class Scene_Map
    #————————————————————————–
    # * Main Processing
    #————————————————————————–
    def main
    # Make sprite set
    @spriteset = Spriteset_Map.new
    # Make message window
    @message_window = Window_Message.new
    # Transition run
    Graphics.transition
    # Main loop
    loop do
    # Update game screen
    Graphics.update
    # Update input information
    Input.update
    # Frame update
    update
    # Abort loop if screen is changed
    if $scene != self
    break
    end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of sprite set
    @spriteset.dispose
    # Dispose of message window
    @message_window.dispose
    # If switching to title screen
    if $scene.is_a?(Scene_Title)
    # Fade out screen
    Graphics.transition
    Graphics.freeze
    end
    end
    #————————————————————————–
    # * Frame Update
    #————————————————————————–
    def update
    # Loop
    loop do
    # Update map, interpreter, and player order
    # (this update order is important for when conditions are fulfilled
    # to run any event, and the player isn't provided the opportunity to
    # move in an instant)
    $game_map.update
    $game_system.map_interpreter.update
    $game_player.update
    # Update system (timer), screen
    $game_system.update
    $game_screen.update
    # Abort loop if player isn't place moving
    unless $game_temp.player_transferring
    break
    end
    # Run place move
    transfer_player
    # Abort loop if transition processing
    if $game_temp.transition_processing
    break
    end
    end
    # Update sprite set
    @spriteset.update
    # Update message window
    @message_window.update
    # If game over
    if $game_temp.gameover
    # Switch to game over screen
    $scene = Scene_Gameover.new
    return
    end
    # If returning to title screen
    if $game_temp.to_title
    # Change to title screen
    $scene = Scene_Title.new
    return
    end
    # If transition processing
    if $game_temp.transition_processing
    # Clear transition processing flag
    $game_temp.transition_processing = false
    # Execute transition
    if $game_temp.transition_name == ""
    Graphics.transition(20)
    else
    Graphics.transition(40, "Graphics/Transitions/" +
    $game_temp.transition_name)
    end
    end
    # If showing message window
    if $game_temp.message_window_showing
    return
    end
    # If encounter list isn't empty, and encounter count is 0
    if $game_player.encounter_count == 0 and $game_map.encounter_list != []
    # If event is running or encounter is not forbidden
    unless $game_system.map_interpreter.running? or
    $game_system.encounter_disabled
    # Confirm troop
    n = rand($game_map.encounter_list.size)
    troop_id = $game_map.encounter_list[n]
    # If troop is valid
    if $data_troops[troop_id] != nil
    # Set battle calling flag
    $game_temp.battle_calling = true
    $game_temp.battle_troop_id = troop_id
    $game_temp.battle_can_escape = true
    $game_temp.battle_can_lose = false
    $game_temp.battle_proc = nil
    end
    end
    end
    # If B button was pressed
    if Input.trigger?(Input::B)
    # If event is running, or menu is not forbidden
    unless $game_system.map_interpreter.running? or
    $game_system.menu_disabled
    # Set menu calling flag or beep flag
    $game_temp.menu_calling = true
    $game_temp.menu_beep = true
    end
    end
    #————————————————————————–
    # * If the L button(Q button) is pressed, the quest menu will appear.
    #————————————————————————–
    if Input.trigger?(Input::L)
    # If event is running, or menu is not forbidden
    unless $game_system.map_interpreter.running? or
    $game_system.menu_disabled
    # Set menu calling flag or beep flag
    $game_temp.quest_calling = true
    $game_temp.menu_beep = true
    end
    end
    # If debug mode is ON and F9 key was pressed
    if $DEBUG and Input.press?(Input::F9)
    # Set debug calling flag
    $game_temp.debug_calling = true
    end
    # If player is not moving
    unless $game_player.moving?
    # Run calling of each screen
    if $game_temp.battle_calling
    call_battle
    elsif $game_temp.shop_calling
    call_shop
    elsif $game_temp.name_calling
    call_name
    elsif $game_temp.menu_calling
    call_menu
    elsif $game_temp.save_calling
    call_save
    elsif $game_temp.debug_calling
    call_debug
    elsif $game_temp.quest_calling
    call_quest
    end
    end
    end
    #————————————————————————–
    # * Battle Call
    #————————————————————————–
    def call_battle
    # Clear battle calling flag
    $game_temp.battle_calling = false
    # Clear menu calling flag
    $game_temp.menu_calling = false
    $game_temp.menu_beep = false
    # Make encounter count
    $game_player.make_encounter_count
    # Memorize map BGM and stop BGM
    $game_temp.map_bgm = $game_system.playing_bgm
    $game_system.bgm_stop
    # Play battle start SE
    $game_system.se_play($data_system.battle_start_se)
    # Play battle BGM
    $game_system.bgm_play($game_system.battle_bgm)
    # Straighten player position
    $game_player.straighten
    # Switch to battle screen
    $scene = Scene_Battle.new
    end
    #————————————————————————–
    # * Shop Call
    #————————————————————————–
    def call_shop
    # Clear shop call flag
    $game_temp.shop_calling = false
    # Straighten player position
    $game_player.straighten
    # Switch to shop screen
    $scene = Scene_Shop.new
    end
    #————————————————————————–
    # * Name Input Call
    #————————————————————————–
    def call_name
    # Clear name input call flag
    $game_temp.name_calling = false
    # Straighten player position
    $game_player.straighten
    # Switch to name input screen
    $scene = Scene_Name.new
    end
    #————————————————————————–
    # * Menu Call
    #————————————————————————–
    def call_menu
    # Clear menu call flag
    $game_temp.menu_calling = false
    # If menu beep flag is set
    if $game_temp.menu_beep
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Clear menu beep flag
    $game_temp.menu_beep = false
    end
    # Straighten player position
    $game_player.straighten
    # Switch to menu screen
    $scene = Scene_Menu.new
    end
    #————————————————————————–
    # * Quest Call
    #————————————————————————–
    def call_quest
    # Clear menu call flag
    $game_temp.quest_calling = false
    # If menu beep flag is set
    if $game_temp.menu_beep
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Clear menu beep flag
    $game_temp.menu_beep = false
    end
    # Straighten player position
    $game_player.straighten
    # Switch to menu screen
    $game_system.se_play($data_system.save_se)
    $scene = Scene_MissionMenu.new
    end
    #————————————————————————–
    # * Save Call
    #————————————————————————–
    def call_save
    # Straighten player position
    $game_player.straighten
    # Switch to save screen
    $scene = Scene_Save.new
    end
    #————————————————————————–
    # * Debug Call
    #————————————————————————–
    def call_debug
    # Clear debug call flag
    $game_temp.debug_calling = false
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Straighten player position
    $game_player.straighten
    # Switch to debug screen
    $scene = Scene_Debug.new
    end
    #————————————————————————–
    # * Player Place Move
    #————————————————————————–
    def transfer_player
    # Clear player place move call flag
    $game_temp.player_transferring = false
    # If move destination is different than current map
    if $game_map.map_id != $game_temp.player_new_map_id
    # Set up a new map
    $game_map.setup($game_temp.player_new_map_id)
    end
    # Set up player position
    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
    # Set player direction
    case $game_temp.player_new_direction
    when 2 # down
    $game_player.turn_down
    when 4 # left
    $game_player.turn_left
    when 6 # right
    $game_player.turn_right
    when 8 # up
    $game_player.turn_up
    end
    # Straighten player position
    $game_player.straighten
    # Update map (run parallel process event)
    $game_map.update
    # Remake sprite set
    @spriteset.dispose
    @spriteset = Spriteset_Map.new
    # If processing transition
    if $game_temp.transition_processing
    # Clear transition processing flag
    $game_temp.transition_processing = false
    # Execute transition
    Graphics.transition(20)
    end
    # Run automatic change for BGM and BGS set on the map
    $game_map.autoplay
    # Frame reset
    Graphics.frame_reset
    # Update input information
    Input.update
    end
    end[/code]
    [/spoiler]

    You press the Q key on the map. And I did test this, so it should work.

  • No problem

    Thanks for giving me something to do while my download finishes. I think I'll write a tutorial for this tomorrow for others who want to do the same with other scripts.

  • I've been playing around with your script but I can't get it to work somehow.
    I quickly added 3 missions and added 'Quests' to the menu.
    Whenever I try to open it through the menu I get the following error:

    Script 'Scene_MissionMenu' line 311: TypeError occurred.
    cannot convert nil into String

    [code]
    def draw_item(index)
    mis = Mission_Menu
    mission_name = @data[index]
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width – 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    if $game_party.mission[mission_name] == 3
    self.contents.font.color = Color.new(40, 250, 40, 255)
    self.contents.draw_text(x, y, 228, 32, mis::Mission_Name[mission_name])
    else
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 228, 32, mis::Mission_Name[mission_name]) #<—– It's this line over here
    end
    end
    [/code]

    I started a new game and called $game_party.mission[0] = 2

    I've tried a few things but I can't seem to solve it by myself.
    Does anyone know how to solve this problem?

  • Hmm this is a great script! Exactly what i need!

    I understand how it works (i think) but i cant get it to work.
    I got a serie of quests set up but i cant activate them. O_o

    This is what i did:
    I changed the first quest into one im gonna use.
    I created an event and in that event the player gets the quest using: a comment where is written: $game_party.mission[0] = 2
    But it still wont work Dx

    Could somebody help me out please?

Leave a Reply

Leon

  • Posted about 11 years ago

  • Engine
    RPG Maker XP
  • Category
    Window Scripts
  • License
    Attribution 3.0 Unported
  • Version
    2.0

Stats

23,328 views

43 comments

Tags

leon leon-westbrooke lizzie-s mission quest