+- Save-Point (https://www.save-point.org)
+-- Forum: Games Development (https://www.save-point.org/forum-4.html)
+--- Forum: Code Support (https://www.save-point.org/forum-20.html)
+--- Thread: Slight problem with Omega Quest script. (/thread-44.html)
Slight problem with Omega Quest script. - Boot - 10-15-2010
Been getting to grips with this script and i'm liking it quite a lot, only problem is that it doesn't seem to dispose of this screen before exiting back to the menu. Here's a couple of screenshots to try and explain. You can still see the quest screen in the back of the bottom two screenshots, it should show a blurred image of the map instead.
I'm also using Yanfly Engine Melody, so i'm not sure if that would cause this, here's the Omega Quest script.
Content Hidden
Code:
# =============================================================================
# Omegas7's Ultimate Quest System Script.
# =============================================================================
# Author: Omegas7.
# Version: 3.0 (Final).
# My Site: baseomega.forumer.com
# =============================================================================
# This final version comes loaded with a better looking layout,
# a more customizable configuration area, etc...
# =============================================================================
# Features:
# > Easy to create quests in the script.
# > A quest works with a variable, no switches!
# > Unlimited tasks for each quest! (Scroll Function)
# > Incomplete and Complete icons.
# > Set Background and HUD graphics for your own menu style!
# > You can use pictures for each quest!
# > Descriptions of each quest.
# > Variable support! Display variables values for complex quests!
# > Categories for ALL, COMPLETE, and INCOMPLETE quests.
# > Automatically adds "Quest Completed" unlike older versions.
# > Change Font sizes.
# > Lots of customization options, check below.
# =============================================================================
# Instructions: (First time? Better read them)
#
# Thanks for using this script.
# It is quite an useful system, take your time reading the next:
#
# First of all, let's create a new quest for our game.
# Below, in the configurations area, you will find the
# [QUEST CREATION AREA]. To create your own quest, you will
# need to add some code. Here is the basic template:
#
# QUESTS[ID] = ['Name',VAR,IconA,IconB,'Image']
# TASKS[ID] = ['Do this','And this','And this']
# DESCRIPTIONS[ID] = ['This is an awesome','quest for noobs']
#
# ID will be your quest ID number.
# So if you got 20 quests, your new quest ID would be 21.
# 'Name' is... The name lol. Make sure it to be inside quotes ' '.
# VAR is the variable ID which controls this quest.
# IconA is the incomplete icon index number.
# IconB ia the complete one.
# 'Image' will be the picture displayed on top of your quest.
# You can disable it by putting 'nil' (no quotes).
#
# TASKS will be the array containing all the To-Do stuff of the
# quest. Each task is a string, inside quotes ' '.
# Each task, is separated by a comma.
# You can have unlimited tasks (the window will become scrollable).
# You can put \v[id] for showing variables in your tasks!
#
# DESCRIPTIONS is like TASKS. Just that it will be the description
# being shown in the main menu for the quest.
# Each element is a text line.
#
# Look at the demo if you need help.
# For further help, let me know. My site is:
# baseomega.forumer.com
# =============================================================================
QUESTS[0] = ['A day on the farm.',1,99,101,nil]
TASKS[0] = ['I must grab the sacred blade on the table.',
'I think I got the right Blade. Go talk with the master.',
'Now I have to purify 4 crystals. \v[2] so far.',
'It is better I report back to my master about the crystals.',
'I should turn the switch. Something might happen.',
'Go and kill the bad guy.']
DESCRIPTIONS[0] = ['My master has a few easy tasks','for me, he is so awesome.']
QUESTS[1] = ['Example',2,99,101,'lol']
TASKS[1] = ['1st task...','2nd task...','3rd task...']
DESCRIPTIONS[1] = ['The second quest is always harder','than the first one.']
end
end
class Omega_Quest < Scene_Base
include OMEGAS7::QUEST
def initialize
@index = 0
@mode = 0
@empty_list = false
create_background
create_quest_list
create_quest_commands
create_quest_description
create_category
create_information
end
def create_background
@background = Sprite_Base.new
@background.bitmap = Cache.system(BACKGROUND.to_s)
@background.z = 50
@hud = Sprite_Base.new
@hud.bitmap = Cache.system(HUD.to_s)
@hud.z = 60
end
def create_quest_list
@list = []
@list[0] = []
@list[1] = []
@list[2] = []
for i in 0...QUESTS.size
if $game_variables[QUESTS[i][1].to_i].to_i > TASKS[i].size
@list[0][i] = [QUESTS[i][0].to_s,true,i]
@list[1][i] = [QUESTS[i][0].to_s,true,i]
elsif $game_variables[QUESTS[i][1].to_i].to_i > 0
@list[0][i] = [QUESTS[i][0].to_s,false,i]
@list[2][i] = [QUESTS[i][0].to_s,false,i]
end
end
@list[0].compact!
@list[1].compact!
@list[2].compact!
@list.compact!
if @list[0].empty?
@empty_list = true
end
end
def create_quest_commands
create_quest_list
@command_window = Window_Quest_Command.new(250,@list[@mode])
@command_window.y = 90
@command_window.x = 12
@command_window.opacity = 0
@index = @command_window.index
end
def create_quest_description
@window_description = Window_Base.new(280,80,250,170)
@window_description.contents.font.size = QUESTS_FONT_SIZE
@window_description.opacity = 0
refresh_description
end
def refresh_description
@window_description.contents.clear
if @list[@mode][@command_window.index][2] != nil
for i in 0...DESCRIPTIONS[@list[@mode][@command_window.index][2]].size
txt = DESCRIPTIONS[@list[@mode][@command_window.index][2]][i].to_s
@window_description.contents.draw_text(0,18*i,260,18,txt.to_s)
end
end
end
def update
@command_window.update
@category.update
if @mode != @category.index
@mode = @category.index
@command_window.dispose
create_quest_commands
refresh_description
end
if @index != @command_window.index
@index = @command_window.index
refresh_description
end
if Input.trigger?(Input::C) && @list[@mode][@command_window.index][2] != nil
@background.dispose
@hud.dispose
@command_window.dispose
@window_description.dispose
@category.dispose
@information.dispose
$scene = Omega_Quest_View.new(@list[@mode][@command_window.index][2])
elsif Input.trigger?(Input::C) && @list[@mode][@command_window.index][2] == nil
Sound.play_buzzer
end
if Input.trigger?(Input::B)
finish
end
end
def create_category
@category = Window_Categories_Command.new(180)
@category.opacity = 0
@category.x = -6
@category.y = 40
end
def create_information
@information = Window_Base.new(544-250,416-120,250,120)
@information.opacity = 0
@information.contents.font.size = 16
if @empty_list == true
@information.contents.draw_text(0,0,250,24,"Current Total Quests: 0")
else
@information.contents.draw_text(0,0,250,24,"Current Total Quests: " + @list[0].size.to_s)
end
@information.contents.font.color = Color.new(0,255,0)
@information.contents.draw_text(0,24,250,24,"Completed Quests: " + @list[1].size.to_s)
@information.contents.font.color = Color.new(255,167,0)
@information.contents.draw_text(0,48,250,24,"Incomplete Quests: " + @list[2].size.to_s)
end
def finish
@background.dispose
@hud.dispose
@command_window.dispose
@window_description.dispose
@category.dispose
@information.dispose
case EXIT_TO
when "MENU"
$scene = Scene_Menu.new(MENU_RETURN_SLOT)
when "MAP"
$scene = Scene_Map.new
end
end
end
class Omega_Quest_View < Scene_Base
include OMEGAS7::QUEST
def initialize(id)
@font_size = 16
@line_height = 18
@id = id
@limit_y = 0
draw_picture if QUESTS[@id][4] != nil
set_tasks
create_window
refresh_window
end
def draw_picture
@picture = Sprite_Base.new
@picture.bitmap = Cache.system(QUESTS[@id][4].to_s)
@picture.x = (544/2) - (@picture.width/2)
@picture.z = 250
end
def set_tasks
@tasks = []
for i in 0...TASKS[@id].size
if $game_variables[QUESTS[@id][1]].to_i >= i + 1
@tasks[i] = TASKS[@id][i].to_s
end
end
if $game_variables[QUESTS[@id][1]].to_i > TASKS[@id].size
@tasks.push('Quest Completed!')
end
end
def create_window
height = @line_height * @tasks.size + 32
y = 0
if @picture != nil
y += @picture.height
@limit_y = @picture.height
end
@window = Window_Base.new(0,y,544,height)
end
def refresh_window
@window.contents.clear
@window.contents.font.size = @font_size
@display = []
for i in 0...@tasks.size
@display[i] = @tasks[i].clone
@display[i].to_s.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
@display[i].to_s.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
@window.contents.draw_text(0,i * @line_height,500,@line_height,TASKS_PREFIX.to_s + @display[i].to_s)
end
end
def update
if Input.press?(Input::DOWN) && ((@window.y + @window.height) > 416)
@window.y -= 3
elsif Input.press?(Input::UP) && (@window.y < @limit_y)
@window.y += 3
end
if Input.trigger?(Input::B)
@picture.dispose if @picture != nil
@window.dispose
$scene = Omega_Quest.new
end
end
end
class Window_Quest_Command < Window_Selectable
include OMEGAS7::QUEST