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?)
You could do it so that when you ended a chapter, you could call this script:
$game_party.mission[0] = 1
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
$scene = Scene_MissionMenu.new
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.images...errorinitem.png )
Calling from a sign (event) - "Script 'quests' line 305: nomethoderroroccurred. Undefined method 'keys' for nil:NilClass"
(Screenshot for reference: http://img42.imagesh...errorinsign.png )
Note, quests is what I named the script.
Line 305 is
for i in 0...$game_party.mission.keys.size
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.images...gquestknown.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.
KatReverie, on 10 September 2009 - 05:36 AM, said:
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
$scene = Scene_MissionMenu.new
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.images...errorinitem.png )
Calling from a sign (event) - "Script 'quests' line 305: nomethoderroroccurred. Undefined method 'keys' for nil:NilClass"
(Screenshot for reference: http://img42.imagesh...errorinsign.png )
Note, quests is what I named the script.
Line 305 is
for i in 0...$game_party.mission.keys.size
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.images...gquestknown.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.
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?
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?
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.
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!
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):
attr_accessor :quest_calling # Quest Menu calling flag
Next, goto Scene_Map. Add the following:
#--------------------------------------------------------------------------
# * 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
Directly below(starts around line 122:
# 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
Still in Scene_Map, add the following:
#--------------------------------------------------------------------------
# * Makes the Quest menu appear if the player is not moving
#--------------------------------------------------------------------------
elsif $game_temp.quest_calling
call_quest
Directly below:(around line 167, but moved because you added the code above):
elsif $game_temp.debug_calling
call_debug
Next, still in Scene_Map, add the following:
#--------------------------------------------------------------------------
# * 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
Directly below(around line 217):
#--------------------------------------------------------------------------
# * 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
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
#==============================================================================
# ** 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
Replace Scene_Map with:
Spoiler
#==============================================================================
# ** 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
You press the Q key on the map. And I did test this, so it should work.
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.
Hey Im new and umm im never incorporated scripts before
so i have no knowledge on the subject could someone here help me out
or direct me to a tutorial. I just made a basic quest off of youtube:
alright thats the quest I made so now how do I incorporate that into you script or if its easier from a new project or a demo.
thank you
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
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
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?
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