10-15-2010, 09:30 PM
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.
I know nothing in the way of scripting, so any help on this would be appreciated.
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
# =============================================================================
module OMEGAS7
module QUEST
# =========================================================================
# Configuration Options.
# =========================================================================
# Exit returns to MAP or to MENU?
EXIT_TO = "MENU"
# If MENU, then, what slot will it appear on? (Counting from 0)
MENU_RETURN_SLOT = 4
# Background and HUD graphics, both in system folder.
BACKGROUND = 'QUEST BG'
HUD = 'QUEST HUD'
# Tasks prefix and icon spacing (spaces before the quest name for the icon).
TASKS_PREFIX = "> "
ICON_SPACING = " "
# Main menu quests and task lines font sizes:
QUESTS_FONT_SIZE = 13
TASKS_FONT_SIZE = 18
# Category Icon Indexes.
# [All,Completed,Incompleted]
CATEGORY_ICONS = [100,101,99]
# =========================================================================
QUESTS = [] # Don't edit.
TASKS = [] # Don't edit.
DESCRIPTIONS = [] # Don't edit.
# =========================================================================
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
attr_reader :commands
def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
@commands = commands
@empty = false
if @commands.empty?
@commands[0] = ["No quests.",false]
@empty = true
end
if row_max == 0
row_max = (@commands.size + column_max - 1) / column_max
end
super(0, 0, width, row_max * WLH + 32, spacing)
@item_max = commands.size
@column_max = column_max
self.contents.font.size = TASKS_FONT_SIZE
refresh
self.index = 0
end
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index, enabled = true)
spacing = ICON_SPACING.to_s
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.color = Color.new(255,0,0)
self.contents.font.color.alpha = enabled ? 255 : 128
if @empty == false
if @commands[index][1] == true
self.contents.font.color = Color.new(0,255,0)
draw_icon(QUESTS[@commands[index][2]][3].to_i,rect.x,rect.y)
else
self.contents.font.color = Color.new(255,0,0)
draw_icon(QUESTS[@commands[index][2]][2].to_i,rect.x,rect.y)
end
elsif @empty == true
spacing = ""
end
self.contents.draw_text(rect, spacing + @commands[index][0].to_s)
end
end
class Window_Categories_Command < Window_Selectable
include OMEGAS7::QUEST
attr_reader :commands
def initialize(width, column_max = 3, row_max = 1, spacing = 12)
super(0, 0, width, row_max * WLH + 32, spacing)
@commands = ['','','']
@item_max = commands.size
@column_max = column_max
@icons = CATEGORY_ICONS
refresh
self.index = 0
end
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
draw_icon(@icons[index],rect.x,rect.y)
end
end
I know nothing in the way of scripting, so any help on this would be appreciated.
Seriously though, the ending for Mass Effect 3 wasn't that bad, get over it.