Jump to content
Rpg²S Forum
  • 0

Quest Journal Help!!


Andre4e
 Share

Question

In giro x internet ho trovato questo script..però da errore di sintassi potete controllarlo??

L'errore lo da in una stringa dove efettivamente ci sono 5 parentesi aperte e 2 chiuse però anche aggiungendole da sempre errore

 

 

 

 

 

 

#==============================================================================

# Quest Journal

# Version: 1.1

# Author: modern algebra (rmrk.net)

# Date: March 24, 2008

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Description:

# Basically, this script is an objective based quest log that allows the

# user to make quests and reveal them to the characters through specified

# script calls. It is objective based, meaning that you advance the quest

# by having the player complete objectives and you can choose when to reveal

# these objectives and when to set them as complete or as failed. That being

# said, this script does not build quests, it more or less gives you a

# graphical interface for showing quest progress. It does run by script

# call, and so read the instructions carefully if you want to use this script

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Instructions:

# Basically, set up all of your quests in the module below. The Constants

# section is annotated, so read the comments near them to determine what you

# should set these constants to. As you can see, they are filled in with

# default values currently, and so that should give you an idea of what to

# do.

#

# Setting up quests can be a little bit harder. You will have to set one

# of these up for every quest that you want represented in the scene. Refer

# to the editable region inside the class Quest for further instructions

#

# Once they are setup, you can activate them at any time in the game by

# this code:

#

# $game_party.quests[quest_id]

#

# There are several methods you can call that are of relevance. Namely:

#

# $game_party.quests[quest_id].reveal_objective (objective_id)

# $game_party.quests[quest_id].conceal_objective (objective_id)

# $game_party.quests[quest_id].complete_objective (objective_id)

# $game_party.quests[quest_id].uncomplete_objective (objective_id)

# $game_party.quests[quest_id].fail_objective (objective_id)

# $game_party.quests[quest_id].unfail_objective (objective_id)

# $game_party.quests[quest_id].complete?

# $game_party.quests[quest_id].failed?

# $game_party.quests[quest_id].reward_given = true/false

# $game_party.quests[quest_id].concealed = true/false

# $game_party.quests.remove (quest_id)

#

# There are other methods that you can access, but they are irrelevant for

# the purposes of controlling quest progress. These are fairly self-

# explanatory methods, but in case they aren't, reveal_objective naturally

# allows the specified objective to appear in the Quest Journal for browsing

# by the user. complete_objective notes when an objective is complete, and

# fail_objective notes when the player has done something that fails this

# objective. complete? returns true if all primary objectives have been

# completed and failed? returns true if any primary objective has been

# failed. reward_given serves the function of a switch. You should

# essentially make the reward event look like this:

#

# @> Conditional Branch: Script: $game_party.quests[quest_id].complete?

# @> Conditional Branch: Script: $game_party.quests[quest_id].reward_given

# @> ...Thank you or whatever you want the event to say once the reward has been given

# @> Else

# @> ...Give Reward

# @> Script: $game_party.quests[quest_id].reward_given = true

# @> Branch End

# @> Branch End

#

# Later versions of this script will have an auto-reward system and also a

# Journal to which the player can write notes.

#

# You can also disable access to the Quest Log at any time with the code:

# $game_system.quest_disabled = true

#

# And you can change how it is accessed with the codes:

#

# $game_system.quest_keyaccess = true / false # ON MAP

# $game_system.quest_menuaccess = true / false # IN MENU

#

# Also, in a message, \nq[quest_id] will retrieve the name of a quest and

# print it in a message

#===============================================================================

=

# *** Quest Data

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~

# This is the configuration class for the Quest Journal

#===============================================================================

=

 

module ModAlg_QuestData

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Constants

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Editable Region

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

QUESTS_LABEL = 'Quests' # What you want Quests to be called (eg. 'Missions')

ACTIVE_QUEST_ICON = 149 # What icon signifies a quest is active

COMPLETE_QUEST_ICON = 150 # What icon signifies a quest is complete

FAILED_QUEST_ICON = 179 # What icon signifies a quest is failed

BULLET_CHARACTER = '●' # The character used for listing objectives

ACTIVE_COLOUR = 0 # The colour of a quest that is active

COMPLETE_COLOUR = 11 # The colour of a quest that is complete

FAILED_COLOUR = 18 # The colour of a quest that is failed

MENU_ACCESS = true # Can the script be accessed through the menu?

MENU_INDEX = 4 # If above is true, where in the command window?

KEY_ACCESS = false # Can the quest log be accessed by a key

MAPKEY_BUTTON = Input::L # If above is true, which button?

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Quest Data

#----------------------------------------------------------------------------

# Returns skeleton data for the quesr

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def self.quest_data (id)

# Set class variables to corresponding arguments

objectives = []

name = '??????'

description = '??????????'

icon_index = 0

case id

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * EDITABLE REGION

#------------------------------------------------------------------------

# To set up a quest, first identify it with an ID - this can be anything

# as long as it is not the same as another quest, but it is important to

# remember this ID as it is the only way to access your quest.

# In any case, the format for setting up a quest is:

#

# when <quest_id> # Give the quest an ID number

# name = '<quest_name>'

# description = '<quest_description>'

# objectives[0] = '<first_objective>'

# ...

# objectives[n] = '<nth objective>'

# prime = [<objective_id>, ..., <objective_id>]

# icon_index = <quest_icon_index>

#

# Each of these values have an importance.

# name is the name of the quest

# description is a small blurb explaining the overall goal of the quest

# objective[0..n] are short-term goals that lead to the overall goal

# primes are which objectives need to be complete before the quest is

# considered to be complete

# icon_index is the icon that represents the quest

#

# Note that any of the above values can be omitted without throwing an

# error, but for the quest to work properly you should at least set the

# name, description, and objectives. If you do omit these, the default

# values are:

#

# name = '??????'

# description = '??????????'

# objectives = []

# prime = [all objectives]

# icon_index = 0

#

# If you do want to require that all objectives must be satisfied before

# the quest is complete, then do not bother defining it. Otherwise, be

# sure to set it.

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

when 1 # Fetch

name = 'Fetch'

description = 'Martha needs someone to play with her dog'

objectives[0] = 'Find a stick'

objectives[1] = 'Throw the stick to the dog'

objectives[2] = 'Retrieve the stick from the dog'

icon_index = 79

when 4 # Cat Retrieval

name = 'Cat Retrieval'

description = 'Mrs. Bunderby has lost her cat, and she has employed you to find it.'

objectives[0] = 'Find the lost cat'

objectives[1] = 'Climb the tree and retrieve the cat'

objectives[2] = "Return a cat to Mrs. Bunderby"

# Set prime objectives in an array based on index

prime = [0, 2]

icon_index = 137

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * END EDITABLE REGION

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

end

return name, description, objectives, prime, icon_index

end

 

#============================================================================

# ** Quest

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Holds in-game data for a quest

#============================================================================

 

class Quest

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Public Instance Variables

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

attr_reader :name # The name of the quest

attr_reader :id # The ID in $game_party.quests

attr_reader :description # A blurb explaining the quest

attr_reader :objectives # An array of strings holding objectives

attr_reader :prime_objectives # An array of crucial objectives

attr_reader :icon_index # The Icon associated with this quest

attr_reader :revealed_objectives # An array of revealed objectives

attr_reader :complete_objectives # An array of completed objectives

attr_reader :failed_objectives # An array of failed objectives

attr_accessor :reward_given # A switch to ensure only one reward given

attr_accessor :concealed # A switch to show or not show the quest

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize (id)

@id = id

# Set class variables to corresponding arguments

@name, @description, @objectives, prime, @icon_index = ModAlg_QuestData.quest_data (id)

# If no primary objectives are specified

if prime.nil?

# All objectives become primary

prime = []

for i in 0...@objectives.size

prime.push (i)

end

end

@prime_objectives = prime

# Initialize non-public arrays

@revealed_objectives = []

@complete_objectives = []

@failed_objectives = []

@reward_given = false

@concealed = false

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Reveal Objective

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def reveal_objective (index)

return if index >= @objectives.size

# Add to revealed objectives

@revealed_objectives |= [index]

# Sort from lowest index to highest index

@revealed_objectives.sort!

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Conceal Objective

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def conceal_objective (index)

@revealed_objectives.delete (index)

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Complete Objective

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def complete_objective (index)

return if index >= @objectives.size

# If the objective is failed, you cannot complete it.

return if @failed_objectives.include? (index)

# Reveal the objective if it was not previously revealed

reveal_objective (index) unless @revealed_objectives.include? (index)

# Add to complete objectives

@complete_objectives |= [index]

# Sort from lowest index to highest index

@complete_objectives.sort!

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Uncomplete Objective

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def uncomplete_objective (index)

@complete_objectives.delete (index)

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Fail Objective

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def fail_objective (index)

return if index >= @objectives.size

# Reveal the objective if it has not yet been revealed

reveal_objective (index) unless @revealed_objectives.include? (index)

# Add to revealed objectives

@failed_objectives |= [index]

# Sort from lowest index to highest index

@failed_objectives.sort!

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Unfail Objective

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def unfail_objective (index)

@failed_objectives.delete (index)

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Complete?

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def complete?

# Check if all prime objectives have been completed

return (@complete_objectives & @prime_objectives) == @prime_objectives

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Failed?

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def failed?

# Check if any prime objectives have been failed

return (@failed_objectives & @prime_objectives) != []

end

end

end

 

#==============================================================================

# ** Ellipse

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Stores an ellipse object.

#==============================================================================

 

class Ellipse

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Public Instance Variables

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

attr_reader :a # The width of the oval

attr_reader :b # The Height of the oval

attr_reader :x # the top left x position

attr_reader :y # the top left y position

attr_reader :h # The x position of the origin

attr_reader :k # The y position of the origin

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

# x : the top left x position

# y : the top left y position

# a : the width of oval from origin to the side

# b : the height of oval from origin. If nil, then a is radius of circle

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize (x, y, a, b = nil)

@x = x

@y = y

@a = a

@b = b.nil? ? a : b

@h = x + a

@k = y + @b

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Within?

# x : the x coordinate being tested

# y : the y coordinate being tested

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def within? (x, y)

x_square = ((x - @h)*(x - @h)).to_f / (@a*@a)

y_square = ((y - @k)*(y - @k)).to_f / (@b*@cool.gif)

# If "radius" <= 1, then it must be within the ellipse

return (x_square + y_square) <= 1

end

end

 

#==============================================================================

# ** Bitmap

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# This adds the methods fill_ellipse, outline_ellipse, and fill_rounded_rect

#==============================================================================

 

class Bitmap

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Outline Ellipse

# ellipse : the ellipse being drawn

# width : the width of the bar

# colour : the colour of the outline

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def outline_ellipse (ellipse, colour = font.color, width = 1, steps = 0)

# For neatness, define local variables a and b to the ellipse variables

a, b = ellipse.a, ellipse.b

# Use Ramanujan's approximation of the Circumference of an ellipse

steps = Math:tongue.gifI*(3*(a + cool.gif - Math.sqrt((3*a + cool.gif*(a + 3*cool.gif)) if steps == 0

radian_modifier = (2*Math:tongue.gifI) / steps

for i in 0...steps

t = (radian_modifier*i) % (2*Math:tongue.gifI)

# Expressed parametrically:

# x = h + acos(t), y = k + bsin(t) : where t ranges from 0 to 2pi

x = (ellipse.h + (a*Math.cos(t)))

y = (ellipse.k + (b*Math.sin(t)))

set_pixel (x, y, colour)

end

# Thicken the line

if width > 1

ellipse = Ellipse.new (ellipse.x + 1, ellipse.y + 1, ellipse.a - 1, ellipse.b - 1)

outline_ellipse (ellipse, colour, width - 1, steps)

end

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Fill Ellipse

# ellipse : the ellipse being drawn

# colour : the colour of the outline

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def fill_ellipse (ellipse, colour = font.color, steps = 0)

# For neatness, define local variables a and b to the ellipse variables

a, b = ellipse.a, ellipse.b

# Use Ramanujan's approximation of the Circumference of an ellipse

steps = Math:tongue.gifI*(3*(a + cool.gif - Math.sqrt((3*a + cool.gif*(a + 3*cool.gif)) if steps == 0

radian_modifier = (2*Math:tongue.gifI) / steps

for i in 0...(steps / 2)

t = (radian_modifier*i) % (2*Math:tongue.gifI)

# Expressed parametrically:

# x = h + acos(t), y = k + bsin(t) : where t ranges from 0 to 2pi

x = ellipse.h + (a*Math.cos(t))

y = ellipse.k - (b*Math.sin(t))

fill_rect (x, y, 1, 2*(ellipse.k - y), colour)

end

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Fill Rounded Rectangle

# rect : the rectangle being drawn

# colour : the colour of the outline

# w : the number of pixels to cover by rounding

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Used to fill a rectangle with rounded corners

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def fill_rounded_rect (rect, colour = font.color, w = 8)

# Draw Body of the rectangle

fill_rect (rect.x + w, rect.y, rect.width - 2*w, rect.height, colour)

# Draw Left Vertical Rect

fill_rect (rect.x, rect.y + w, w, rect.height - 2*w, colour)

# Draw Right Vertical Rect

x = rect.x + rect.width - w

fill_rect (x, rect.y + w, w, rect.height - 2*w, colour)

# Make a circle

circle = Ellipse.new (0, 0, w)

for i in 0...w

for j in 0...w

# Upper Left Corner

set_pixel (rect.x + i, rect.y + j, colour) if circle.within? (i, j)

# Upper Right Corner

set_pixel (rect.x + rect.width - w + i, rect.y + j, colour) if circle.within? (i + w, j)

# Bottom Left Corner

set_pixel (rect.x + i, rect.y + rect.height - w + j, colour) if circle.within? (i, j + w)

# Bottom Right Corner

set_pixel (rect.x + rect.width - w + i, rect.y + rect.height - w + j, colour) if circle.within? (i + w, j + w)

end

end

end

end

 

#==============================================================================

# ** Window_VarySizeHelp

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# This window is the same as Window_Help, but with variable size

#==============================================================================

 

class Window_VarySizeHelp < Window_Help

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize (h_x = 0, h_y = 0, h_width = Graphics.width, h_height = WLH + 32)

super ()

self.x, self.y, self.width, self.height = h_x, h_y, h_width, h_height

contents.dispose

self.contents = Bitmap.new (h_width - 32, h_height - 32)

end

end

 

#==============================================================================

# ** Game_System

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Summary of Changes:

# new instance variables - quest_disabled, quest_keyaccess

# aliased method - initialize

#==============================================================================

 

class Game_System

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Public Instance Variables

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

attr_accessor :quest_disabled # Can you access quest journal at this time

attr_accessor :quest_keyaccess # Is it accessible by key?

attr_accessor :quest_menuaccess # Is it accessible through the menu

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_qst_jrnl_system_init_quests initialize

def initialize

# Run Original Method

modalg_qst_jrnl_system_init_quests

# Initialize new variables

@quest_disabled = false

@quest_keyaccess = ModAlg_QuestData::KEY_ACCESS

@quest_menuaccess = ModAlg_QuestData::MENU_ACCESS

end

end

 

#==============================================================================

# ** Game_Party

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Summary of Changes:

# new instance variable - quests

# aliased method - initialize

#==============================================================================

 

class Game_Party

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Public Instance Variables

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

attr_reader :quests

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_qst_jrnl_party_init_quests initialize

def initialize

# Run Original Method

modalg_qst_jrnl_party_init_quests

# Initialize @quests

@quests = Game_Quests.new

end

end

 

#==============================================================================

# ** Game_Quests

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# This class handles Quests. It is a wrapper for the built-in class "Hash".

# The instance of this class is accessed by $game_party.quests

#==============================================================================

 

class Game_Quests

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize

@data = {}

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Get Quest

# quest_id : the ID of the quest

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def [] (quest_id)

@data[quest_id] = ModAlg_QuestData::Quest.new (quest_id) if @data[quest_id] == nil

return @data[quest_id]

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Get Quest List

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def list

quest_list = @data.values

quest_list.each { |i| quest_list.delete (i) if i.concealed }

return quest_list

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Get Completed Quest List

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def completed_list

complete_quests = []

list.each { |i| complete_quests.push (i) if i.complete? }

return complete_quests

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Get Failed Quest List

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def failed_list

failed_quests = []

list.each { |i| failed_quests.push (i) if i.failed? }

return failed_quests

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Get Active Quest List

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def active_list

return list - failed_list - completed_list

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Revealed?

# quest_id : the ID of a checked quest

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def revealed? (quest_id)

return @data[quest_id] != nil

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Remove Quest

# quest_id : the ID of a checked quest

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def remove (quest_id)

@data.delete (quest_id)

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Clear

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def clear

@data.clear

end

end

 

#==============================================================================

# ** Window_Command

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Summary of Changes:

# new instance variable - disabled_commands

# aliased method - initialize, draw_item

#==============================================================================

 

class Window_Command

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Public Instance Variable

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

attr_reader :disabled_commands

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Initialize

# width : window width

# commands : command string array

# column_max : digit count (if 2 or more, horizontal selection)

# row_max : row count (0: match command count)

# spacing : blank space when items are arrange horizontally

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_quest_jrnl_intlz initialize

def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)

# Initialize new instance variable

@disabled_commands = []

# Run Original Method

modalg_quest_jrnl_intlz (width, commands, column_max, row_max, spacing)

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Draw Item

# index : item number

# enabled : enabled flag. When false, draw semi-transparently

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_quest_jrnl_itm_drw draw_item

def draw_item (index, enabled = true)

# Run Original Method

modalg_quest_jrnl_itm_drw (index, enabled)

enabled ? @disabled_commands.delete (index) : @disabled_commands.push (index)

end

end

 

#==============================================================================

# ** Window_Message

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Summary of Changes:

# aliaed method - convert_special_characters

#==============================================================================

 

class Window_Message

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Convert Special Characters

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_quest_jrnl_spec_char_convert convert_special_characters

def convert_special_characters

@text.gsub! (/\\NQ\[(\d+)\]/i) { $game_party.quests[$1.to_i] } # Name Quest

# Run Original Method

modalg_quest_jrnl_spec_char_convert

end

end

 

#==============================================================================

# ** Window_QuestLabel

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# This window signifies that this is a quest list

#==============================================================================

 

class Window_QuestLabel < Window_Base

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize

super (0, 0, 160 + WLH, 32 + WLH)

create_contents

contents.font.color = system_color

contents.draw_text (0, 0, contents.width, WLH, ModAlg_QuestData::QUESTS_LABEL, 1)

end

end

 

#==============================================================================

# ** Window_QuestCategory

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# This window displays which category is being viewed

#==============================================================================

 

class Window_QuestCategory < Window_Base

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize

super (0, WLH + 32, 160 + WLH, 64)

create_contents

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Refresh

# category_index : icon to highlight -

# 0 => All, 1 => Active, 2 => Complete, 3 => Failed

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def refresh (category_index = 0)

contents.clear

# Retrieve Icon Bitmaps

bitmap = Cache.system("Iconset")

icon_index = ModAlg_QuestData::ACTIVE_QUEST_ICON

active_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)

icon_index = ModAlg_QuestData::COMPLETE_QUEST_ICON

complete_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)

icon_index = ModAlg_QuestData::FAILED_QUEST_ICON

failed_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)

# Combine the three icons for the All Icon

all_icon = Bitmap.new (40, 32)

all_icon.blt (0, 0, bitmap, complete_rect)

all_icon.blt (20, 0, bitmap, failed_rect)

all_icon.blt (8, 10, bitmap, active_rect)

distance = (contents.width - 112) / 3

x = 0

# Draw the 'All' Icon onto the window

contents.blt (x, 0, all_icon, all_icon.rect, category_index == 0 ? 255 : 128)

x += 40 + distance

# Draw the 'Active' Icon onto the window

contents.blt (x, 4, bitmap, active_rect, category_index == 1 ? 255 : 128)

x += 24 + distance

# Draw the 'Complete' Icon onto the window

contents.blt (x, 4, bitmap, complete_rect, category_index == 2 ? 255 : 128)

x += 24 + distance

# Draw the 'Failed' Icon onto the window

contents.blt (x, 4, bitmap, failed_rect, category_index == 3 ? 255 : 128)

end

end

 

#==============================================================================

# ** Window_QuestList

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# This window displays the list of quests

#==============================================================================

 

class Window_QuestList < Window_Selectable

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize (category_index = 0, index = 0)

super (0, 64 + (WLH + 32), 160 + WLH, Graphics.height - 64 - 2*(WLH + 32))

@data = []

@column_max = 1

refresh (category_index)

self.index = index

self.active = true

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Quest

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def quest

return @data[self.index]

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Refresh

# category_index : List to show -

# 0 => All, 1 => Active, 2 => Complete, 3 => Failed

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def refresh (category_index = 0)

font = Font.new

@data.clear

self.index = 0

# Get the quest list to be drawn

case category_index

when 0

@data = $game_party.quests.list

when 1

@data = $game_party.quests.active_list

font.color = text_color (ModAlg_QuestData::ACTIVE_COLOUR)

when 2

@data = $game_party.quests.completed_list

font.color = text_color (ModAlg_QuestData::COMPLETE_COLOUR)

when 3

@data = $game_party.quests.failed_list

font.color = text_color (ModAlg_QuestData::FAILED_COLOUR)

end

@item_max = @data.size

unless contents == nil

# Clear Contents

contents.clear

return if @data.empty?

contents.dispose

end

# Create Contents

self.contents = Bitmap.new (width - 32, WLH*@data.size)

contents.font = font

# Draw the Quest Names

for i in 0...@data.size

quest = @data

# If all, distinguish between quest types by colour

if category_index == 0

if quest.complete?

contents.font.color = text_color (ModAlg_QuestData::COMPLETE_COLOUR)

elsif quest.failed?

contents.font.color = text_color (ModAlg_QuestData::FAILED_COLOUR)

else # Active

contents.font.color = text_color (ModAlg_QuestData::ACTIVE_COLOUR)

end

end

draw_icon (quest.icon_index, 0, i*WLH)

# Draw the name of the quest

contents.draw_text (24, i*WLH, contents.width - 24, WLH, quest.name)

end

end

end

 

#==============================================================================

# ** Window_QuestInfo

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# This window displays the information on the quest being viewed

#==============================================================================

 

class Window_QuestInfo < Window_Base

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize

super (160 + WLH, 0, Graphics.width - (160 + WLH), Graphics.height - (32 + WLH))

create_contents

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Refresh

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def refresh (quest = nil)

contents.clear

return if quest == nil

# Draw the name of the Quest, centred

contents.font.color = normal_color

contents.draw_text (0, 0, contents.width, WLH, quest.name, 1)

# If the font has set width characters

if contents.text_size ('w').width == contents.text_size ('i').width

formatter = Paragrapher::Formatter_2.new

else

formatter = Paragrapher::Formatter.new

end

# Format the description

desc_bitmap = Bitmap.new (contents.width - 16, (2.4*WLH).to_i)

desc_bitmap.font.size -= 4

formatted_desc = formatter.format (quest.description, desc_bitmap)

# Draw the Description Box

box_height = [WLH*(formatted_desc.lines.size + 1), 3*WLH].min

rect = Rect.new (2, (1.5*WLH).to_i, contents.width - 4, box_height)

contents.fill_rounded_rect (rect, system_color, 10)

rect.x, rect.y = rect.x + 2, rect.y + 2

rect.width, rect.height = rect.width - 4, rect.height - 4

contents.fill_rounded_rect (rect, Color.new (0, 0, 0, 0), 10)

tw = contents.text_size ('Description').width

# Draw the description signifier

contents.fill_rect (32, (1.5*WLH).to_i, tw + 2, 2, Color.new (0, 0, 0, 0))

contents.font.color = system_color

contents.draw_text (33, WLH, tw, WLH, 'Description')

# Paragraph Artist

artist = Paragrapher::Artist.new

# If bitmap is too large

if formatted_desc.lines.size < 2

formatted_desc.bitmap = Bitmap.new (contents.width - 16, formatted_desc.lines.size*WLH)

formatted_desc.bitmap.font.size -= 4

end

bmp = artist.draw (formatted_desc)

# Centre within the box

y = rect.y + 4 + (rect.height - bmp.height) / 2

contents.blt (8, y, bmp, bmp.rect)

bmp.dispose

y = 2*WLH + rect.height + 4

# Draw Objectives Signifier Text

contents.font.color = system_color

tw = contents.text_size ('Objectives').width

contents.draw_text (32, y, tw, WLH, 'Objectives')

y += WLH

quest.revealed_objectives.each { |i|

# Get the correct color

contents.font.color = quest.complete_objectives.include? (i) ?

text_color (ModAlg_QuestData::COMPLETE_COLOUR) : quest.failed_objectives.include? (i) ?

text_color (ModAlg_QuestData::FAILED_COLOUR) : text_color (ModAlg_QuestData::ACTIVE_COLOUR)

# Get objective

objective = quest.objectives

# Draw Bullet

tw = contents.text_size (ModAlg_QuestData::BULLET_CHARACTER).width

x = 8

contents.draw_text (x, y, tw, WLH, ModAlg_QuestData::BULLET_CHARACTER)

x += tw + 4

# Format the objective

obj_bitmap = Bitmap.new (contents.width - x, 2*WLH)

obj_bitmap.font = contents.font

obj_bitmap.font.size -= 4

formatted_obj = formatter.format (objective, obj_bitmap)

# Draw Objective

bmp = artist.draw (formatted_obj)

contents.blt (x, y + 4, bmp, bmp.rect)

# Modify the Y accordingly

y += WLH*([formatted_obj.lines.size, 2].min)

}

end

end

 

#==============================================================================

# ** Scene_Map

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Summary of Changes:

# aliased method - update

#==============================================================================

 

class Scene_Map < Scene_Base

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Frame Update

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_quest_journal_map_upd_key_access update

def update

modalg_quest_journal_map_upd_key_access

# If the quest log can be accessed by key and is not empty or disabled

if $game_system.quest_keyaccess && !$game_system.quest_disabled && !$game_party.quests.list.empty?

$scene = Scene_Quest.new if Input.trigger? (ModAlg_QuestData::MAPKEY_BUTTON)

end

end

end

 

#==============================================================================

# ** Scene_Menu

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Summary of Changes:

# aliased methods - initialize, create_command_window, update_command_selection

#==============================================================================

 

class Scene_Menu < Scene_Base

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Object Initialization

# menu_index : command cursor's initial position

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_quest_jrnl_init initialize

def initialize(menu_index = 0)

modalg_quest_jrnl_init (menu_index)

return unless $game_system.quest_menuaccess

if @menu_index == 'Quest'

@menu_index = ModAlg_QuestData::MENU_INDEX

elsif @menu_index >= ModAlg_QuestData::MENU_INDEX

@menu_index += 1

end

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Create Command Window

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_quest_journal_menu_cmmnd_win_create create_command_window

def create_command_window

modalg_quest_journal_menu_cmmnd_win_create

# If accessed through map, then don't add it to the menu

return unless $game_system.quest_menuaccess

c = @command_window.commands

c.insert (ModAlg_QuestData::MENU_INDEX, ModAlg_QuestData::QUESTS_LABEL)

width = @command_window.width

disabled = @command_window.disabled_commands

@command_window.dispose

@command_window = Window_Command.new(width, c)

@command_window.index = @menu_index

# Disable all of the old commands as well

disabled.each { |i|

i += 1 if i >= ModAlg_QuestData::MENU_INDEX

@command_window.draw_item (i, false)

}

if $game_system.quest_disabled || $game_party.quests.list.empty? # If Quest Journal disabled

@command_window.draw_item (ModAlg_QuestData::MENU_INDEX, false)

end

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Update Command Selection

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_quest_journal_menu_cmmnd_select_upd update_command_selection

def update_command_selection

if $game_system.quest_menuaccess

changed = false

if @command_window.index == ModAlg_QuestData::MENU_INDEX && Input.trigger? (Input::C)

if $game_system.quest_disabled || $game_party.quests.list.empty? # If Quest Journal disabled

Sound.play_buzzer

else

# Open Quest Window

Sound.play_decision

$scene = Scene_Quest.new

end

return

end

# If the command index is greater than it ought to be, make sure

if @command_window.index > ModAlg_QuestData::MENU_INDEX

@command_window.index = (@command_window.index - 1) % @command_window.commands.size

changed = true

end

end

modalg_quest_journal_menu_cmmnd_select_upd

return unless $game_system.quest_menuaccess

@command_window.index = (@command_window.index + 1) % @command_window.commands.size if changed

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# * Update Actor Selection

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

alias modalg_quest_jrnl_actor_selection_upd update_actor_selection

def update_actor_selection

changed = false

if $game_system.quest_menuaccess && @command_window.index > ModAlg_QuestData::MENU_INDEX

@command_window.index = (@command_window.index - 1) % @command_window.commands.size

changed = true

end

modalg_quest_jrnl_actor_selection_upd

return unless $game_system.quest_menuaccess

@command_window.index = (@command_window.index + 1) % @command_window.commands.size if changed

end

end

 

#==============================================================================

# ** Scene_Quest

#------------------------------------------------------------------------------

# This class performs the quest screen processing.

#==============================================================================

 

class Scene_Quest < Scene_Base

#--------------------------------------------------------------------------

# * Object Initialization

# menu_index : command cursor's initial position

#--------------------------------------------------------------------------

def initialize(category_index = 0, quest_index = 0)

@category_index = category_index

@quest_index = quest_index

end

#--------------------------------------------------------------------------

# * Start processing

#--------------------------------------------------------------------------

def start

super

create_menu_background

# Create Windows

@label_window = Window_QuestLabel.new

@category_window = Window_QuestCategory.new

@category_window.refresh (@category_index)

@list_window = Window_QuestList.new (@category_index, @quest_index)

@info_window = Window_QuestInfo.new

@info_window.refresh (@list_window.quest)

@help_window = Window_VarySizeHelp.new

@help_window.y = Graphics.height - @help_window.height

@help_window.set_text ('Use Horizontal Arrow Keys to change categories', 1)

end

#--------------------------------------------------------------------------

# * Termination Processing

#--------------------------------------------------------------------------

def terminate

super

dispose_menu_background

@label_window.dispose

@category_window.dispose

@list_window.dispose

@info_window.dispose

@help_window.dispose

end

#--------------------------------------------------------------------------

# * Frame Update

#--------------------------------------------------------------------------

def update

super

update_menu_background

# Since the only possible activity is from @list_window, put it here

@list_window.update

if Input.trigger?(Input::cool.gif # If Button B is pressed

Sound.play_cancel

# If Returning to Menu

if $game_system.quest_menuaccess

$scene = Scene_Menu.new ('Quest')

else # Returning to Map

$scene = Scene_Map.new

end

elsif Input.trigger? (Input::C) # If C button is pressed

# Open Journal (eventually)

elsif Input.trigger? (Input::LEFT) # If Left direction pressed

# Play Cursor SE

Sound.play_cursor

# Refresh Category Window

@category_index = (@category_index - 1) % 4

@category_window.refresh (@category_index)

@list_window.refresh (@category_index)

@info_window.refresh (@list_window.quest)

elsif Input.trigger? (Input::RIGHT) # If Right direction pressed

# Play Cursor SE

Sound.play_cursor

# Refresh Category Window

@category_index = (@category_index + 1) % 4

@category_window.refresh (@category_index)

@list_window.refresh (@category_index)

@info_window.refresh (@list_window.quest)

# If scrolling through quests

elsif Input.trigger? (Input::DOWN) || Input.trigger? (Input::UP)

# Refresh Info Window

@info_window.refresh (@list_window.quest)

end

end

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://files.nireblog.com/blogs4/narutozorro9kolas/files/firma-naruto-y-yondaime.gif

 

 

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

puoi dirmi la stringa esatta??

Non posso provarlo purtroppo

Per qualsiasi motivo non aprite questo spoiler.

 

 

Ho detto di non aprirlo !

 

 

Se lo apri ancora esplode il mondo.

 

 

Aaaaaa è un vizio.

 

 

Contento? Il mondo è esploso, sono tutti morti

per colpa della tua curiosità .

 

 

Vuoi che ti venga anche il morbillo, la varicella e l'AIDS???

 

 

O bravo ora sei un malato terminale e nessuno

ti puo curare, sono tutti morti !

 

 

Se clicchi ancora una volta il PC esplode.

 

 

E dai smettila !!

 

Uff!! Hai cliccato tante volte che ho dovuto sostituirlo con un codebox.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://s8.postimg.org/yntv9nxld/Banner.png

http://img204.imageshack.us/img204/8039/sccontest3octpl3.gif

Link to comment
Share on other sites

  • 0

Ci sono due cose che non vanno in quello script.

 

1) E' per VX e non per XP . . .

 

2) E' pieno di "codici" di faccine, come questa :Ok: , per il maledetto vizio di non inserire gli script nei tag

 quando li si posta . . .

E si creano bug che in origine non ci sono . . .

 

PS: Lo so che quando hai postato lo script c'erano già da prima, perchè altrimenti nel tuo post sarebbero appunto apparse le relative faccine . . .

Usare il tag [code] permette agli altri di aiutare più facilmente, tra l'altro . . .

 


SCRIPT RGSS (RPG Maker XP) VINTAGE LIBRARY [2018+]


Breaking (in ogni senso) News: "Treno deraglia per via del seno di Sakurai Aoi . . ." - Info nello spoiler !!

 


http://afantasymachine.altervista.org/_altervista_ht/NOOOOOOOOOilMIOtreninooooo_500.gif


Non riesco a smettere di essere affascinato da immagini come questa . . .

http://anime.vl-vostok.ru/art/photos2011/17/78049800/wall_VladAnime_WWA_1885-1680x1050.jpg


Alcuni wallpapers che faccio ruotare sul mio vecchio PC . . .


http://afantasymachine.altervista.org/_altervista_ht/gits_window.jpg

http://afantasymachine.altervista.org/_altervista_ht/madoka_group01.jpg
http://afantasymachine.altervista.org/_altervista_ht/arisu_picipici_01.jpg
http://afantasymachine.altervista.org/_altervista_ht/phantom_wp01_einzwei.jpg


La parte più spassosa della mia vita è quando gli altri cercano di spiegarmi i miei pensieri . . .


BBCode Testing


Typeface & Size



Link to comment
Share on other sites

  • 0

Strano xk da dove lho preso c'era scritto che era x l'xp! Boh!

comunque la stringa era la 256

Edited by Andre4e

 

 

http://files.nireblog.com/blogs4/narutozorro9kolas/files/firma-naruto-y-yondaime.gif

 

 

Link to comment
Share on other sites

  • 0
Mi dispiace andre ma non posso fa nulla visto che è per il VX e io non so convertirlo....

Per qualsiasi motivo non aprite questo spoiler.

 

 

Ho detto di non aprirlo !

 

 

Se lo apri ancora esplode il mondo.

 

 

Aaaaaa è un vizio.

 

 

Contento? Il mondo è esploso, sono tutti morti

per colpa della tua curiosità .

 

 

Vuoi che ti venga anche il morbillo, la varicella e l'AIDS???

 

 

O bravo ora sei un malato terminale e nessuno

ti puo curare, sono tutti morti !

 

 

Se clicchi ancora una volta il PC esplode.

 

 

E dai smettila !!

 

Uff!! Hai cliccato tante volte che ho dovuto sostituirlo con un codebox.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://s8.postimg.org/yntv9nxld/Banner.png

http://img204.imageshack.us/img204/8039/sccontest3octpl3.gif

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...