Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Sign in to follow this  
Tenoukii

CMS

Recommended Posts

Howdee..

I have a somewhat lengthy request for a CMS. I'll start with the layout:

skvv3s.jpg

Basically just this :)

And now onto the features!

Status

Exactly the same as it is in the default menu.

Backpack

I would like this to be a dropmenu with these subcatagories:

  • Basic
  • Quest
  • Gems

Basic items is just stuff like your potions etc, Quest is the items you collect on your quest that can't be sold/given away etc, Gems is the gems you attach to weapons. (This should be quite simple to set the items as Basic/Quest/Gems aswell pleeeease :])

Quest

I would like this to be just a quest screen. Something similar to Zeriabs quest script if possible with the icons and stuff.

Options

Just things like the bog standard options you find in most of the CMS's I've seen with the Load/Save options too

Achievements

That big section down the side I'd like filled with http://forum.chaos-project.com/index.php/topic,3330.40.html <this (or something similar). I don't want any callable windows that display the achievements, just that side section that displays the icons in something like 3 columns.

Hunger/Thirst

I'd just like http://www.rmxpunlimited.net/forums/topic/7025-hungerthirst/ <this script integrated there with the meters.

 

So that means that it needs to be compatible with/have the following scripts integrated:

 

#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
# Hunger/Thirst 
# Author: ForeverZer0
# Date: 5.14.2010
# Version: 1.0
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
#
# Features:
#   - Easy to use
#   - MUCH less complicated than many other similar scripts, yet it has more
#     features and less code
#   - Can have hunger and thirst decrease by time intervals or by steps walked
#     by the player
#   - Ability to have each character's 'Max Hunger' increase so that they can go
#     longer in between food and drinks as they gain in power
#   - Can use script calls to easily change hunger/thirst values, and to disable
#     the system for long cutscenes, etc. so that nothing decreases while the
#     player does not have control
#   - Automatically added states if hunger/thirst is at specific rates.
#
# Compatibility:
#   - If using Zero Add-On Collection, place this script below it. There is a
#     minor issue with the Chemist Class script, but placing this script below
#     it will solve the problem.
#
# Instructions:
#   - Place script below debug, and above main (below Zer0 Add-Ons, if present)
#   - All configuration is below and described fully in its respective section
#   - The following script calls can be used in game:
# 
#    ?  Zer0.hunger_system(true/false)  
#       - If false, hunger/thirst rates will not decrease. Good for long scenes
#         where the player is not in control, etc. The system will remain ON/OFF
#         until it is changed.
#
#    ?  Zer0.set_hunger(ACTOR_ID, AMOUNT)
#    ?  Zer0.set_thirst(ACTOR_ID, AMOUNT)
#       - Sets the hunger/thirst of actor in your database with ACTOR_ID to the
#         number specified by AMOUNT
#
#    ?  Zer0.set_max_hunger(ACTOR_ID, AMOUNT)
#    ?  Zer0.set_max_thirst(ACTOR_ID, AMOUNT)
#       - Sets the MAX hunger/thirst of actor in your database with ACTOR_ID to
#         the number specified by AMOUNT
#
#    ?  Zer0.recover_hunger(ACTOR_ID)
#       - Will recover all hunger/thirst to actor with ACTOR_ID. If you omit the
#         ( ) at the end of the script call, it will recover the entire party.
#
#    ?  Zer0.actor_hunger_id(ACTOR_ID)
#       - Returns the current hunger of actor with ACTOR_ID
#
#    ?  Zer0.actor_thirst_id(ACTOR_ID)
#       - Returns the current thirst of actor with ACTOR_ID
#
#    ?  Zer0.actor_hunger_pos(POSITION)
#       - Return the current hunger of actor at party POSITION
#         (0 is the leader, 1 is actor 2, etc)
#
#    ?  Zer0.actor_thirst_pos(POSITION)
#       - Return the current thist of actor at party POSITION
#         (0 is the leader, 1 is actor 2, etc)
#
#    ?  Zer0.hunger_debugger
#       - Displays info on-screen of each characters hunger/thirst, current 
#         count for steps and time, and shows which features are currently ON.
#
# Special Thanks:
#   - kukusu, whose request gave me the inspiration for the script
#   - SBR*, for pointing out a stupid error I made with the stepcount
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:


#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
#                          BEGIN CONFIGURATION
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:

module Zer0

 DEFAULT_HUNGER = 100           
 DEFAULT_THIRST = 100          
 # Default max hunger/thirst players will begin with. This can be increased as
 # the player becomes more powerful, through items, etc. if desired.

 BY_TIME   = true
 BY_STEPS  = true
 # There are two ways hunger and thirst can be calculated; one by just how many
 # seconds pass, and the other by how many steps have been taken. You can use
 # both if you like, but I would suggest that if you do to try to keep it more
 # skewed to one or the other as the main method of decreasing, and use the
 # other as a minor added dynamic.

 STEPS_HUNGER_DOWN = 100  
 STEPS_THIRST_DOWN = 80
 # Only if using 'BY_STEPS', otherwise ignore these. These are the amount
 # of steps before hunger/thirst decrease.

 SECS_HUNGER_DOWN = 120 
 SECS_THIRST_DOWN = 120
 # Only if using 'BY_TIME', otherwise ignore these. These are the amount
 # of seconds before hunger/thirst decrease.

 LVL_UP_INCREASE = true
 # If true, will increase max hunger/thirst at each level up, the amount of 
 # increase is defined just below. 
 LVL_UP_AMOUNT = 5
 # This will be added to the actor's max hunger/thirst at each level up, only
 # if LVL_UP_INCREASE is true.

#-------------------------------------------------------------------------------
# Food/Drink Items:
# 
#   Set up your food/drink items recovery rates here. Food and drink are each in
#   their own section. Use this syntax to set them up:
#
#     when ITEM_ID the return RECOVERY_AMOUNT
#
#   For example, in the first example below, it means that the item in your
#   database with ID(1) will cure hunger by 15. If RECOVER_BY_PERCENT (below) is
#   set to true, it will recover 15% of that actors MAX hunger/thirst.
#
#   You can also create items that have negative effects by making the
#   RECOVERY_AMOUNT a negative number. DO NOT have food/drink items do anything
#   other than recover hunger/thirst and/or add/remove states. Anything else, 
#   such has HP/MP recovery, will have no effect.
#
#-------------------------------------------------------------------------------

 RECOVER_BY_PERCENT = true
 # Recovery can be by either absolute value, or by percent. Setting this to
 # true will make it by percent.

 def self.food(item_id)
   case item_id
   when 1 then return 15
   when 2 then return 25
   when 3 then return 35
   when 4 then return 50
   when 5 then return 75
   when 6 then return 100
   end
 end

 def self.drink(item_id)
   case item_id
   when 1 then return 15
   when 2 then return 25
   when 3 then return 35
   when 4 then return 50
   when 5 then return 75
   when 6 then return 100
   end
 end

#-------------------------------------------------------------------------------
# Hunger/Thirst States
#
#   Set up states that will be applied when an actors hunger/thirst fall within
#   a defined range, such as 'Starvation', 'Dehydration', etc. 
#   Configure like this:
#
#   when MIN..MAX then return STATE_ID
#
#   If actor's hunger/thirst is equal to or between MIN and MAX, the state with
#   STATE_ID will be applied. This method is refreshed everytime the system
#   decreases hunger/thirst. 
#
#   Keep in mind that these states will NOT be automatically cured if the actor's
#   hunger/thirst rise above. Create your food/drink items to cure these states.
#
#-------------------------------------------------------------------------------

 def self.hunger_states(current_hunger)
   case current_hunger
   when 0 then return 1
   when 1..9 then return 2
   when 10..15 then return 3
   end
 end

 def self.thirst_states(current_thirst)
   case current_thirst
   when 0 then return 1
   when 1..9 then return 2
   when 10..15 then return 3
   end
 end

#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
#                             END CONFIGURATION
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:

 def self.hunger_system(value)
   $game_party.hunger = value
   return true
 end

 def self.set_hunger(actor_id, amount)
   $game_party.actors.each {|a| a.hunger = amount if a.id == actor_id}
 end

 def self.set_thirst(actor_id, amount)
   $game_party.actors.each {|a| a.thirst = amount if a.id == actor_id}
 end  

 def self.set_max_hunger(actor_id, amount)
   $game_party.actors.each {|a| a.max_hunger = amount if a.id == actor_id}
 end

 def self.set_max_thirst(actor_id, amount)
   $game_party.actors.each {|a| a.max_thirst = amount if a.id == actor_id}
 end   

 def self.actor_hunger_id(actor_id)
   $game_party.actors.each {|a| return a.hunger if a.id == actor_id}
 end

 def self.actor_thirst_id(actor_id)
   $game_party.actors.each {|a| return a.thirst if a.id == actor_id}
 end

 def self.actor_hunger_pos(pos = 0)
   return $game_party.actors[pos].hunger if $game_party.actors[pos] != nil
 end

 def self.actor_thist_pos(position = 0)
   return $game_party.actors[pos].thirst if $game_party.actors[pos] != nil
 end

 def self.recover_hunger(actor_id = nil)
   $game_party.actors.each {|actor|
     if actor_id == nil
       actor.hunger = actor.max_hunger
       actor.thirst = actor.max_thirst
     elsif actor.id == actor_id
       actor.hunger = actor.max_hunger
       actor.thirst = actor.max_thirst
     end
   }
 end

 def self.hunger_debugger
   sys = "System ON: #{$game_party.hunger}\n\n" +
         "By Time: #{BY_TIME}\n" +
         "By Steps: #{BY_STEPS}\n\n"
   actors = ''
   $game_party.actors.each {|actor| actors += 
     "#{actor.name}\nHunger: #{actor.hunger}\\#{actor.max_hunger}\n" + 
     "Thirst: #{actor.thirst}\\#{actor.max_thirst}\n\n"}
   ht = "HungerTime: #{$game_party.time_hunger/40}\\#{SECS_HUNGER_DOWN}\n"
   tt = "ThirstTime: #{$game_party.time_thirst/40}\\#{SECS_THIRST_DOWN}\n" 
   hs = "HungerStep: #{$game_party.steps}\\#{$game_party.step_hunger}\n"
   ts = "ThirstStep: #{$game_party.steps}\\#{$game_party.step_thirst}\n"
   print(sys + actors + ht + tt + hs + ts)
 end

end

#-------------------------------------------------------------------------------
# ** Game_Actor
#-------------------------------------------------------------------------------

class Game_Actor < Game_Battler

 attr_accessor :hunger
 attr_accessor :max_hunger
 attr_accessor :thirst
 attr_accessor :max_thirst

 alias zer0_hunger_setup setup
 def setup(actor_id)
   zer0_hunger_setup(actor_id)
   @hunger = @max_hunger = Zer0::DEFAULT_HUNGER
   @thirst = @max_thirst = Zer0::DEFAULT_THIRST
   if Zer0::LVL_UP_INCREASE && @level > 1
     increase = Zer0::LVL_UP_AMOUNT
     @hunger = @max_hunger = (@level - 1) * increase + Zer0::DEFAULT_HUNGER
     @thirst = @max_thirst = (@level - 1) * increase + Zer0::DEFAULT_THIRST
   end
 end

 alias zer0_hunger_level_up exp=
 def exp=(exp)
   level = @level
   zer0_hunger_level_up(exp)
   if Zer0::LVL_UP_INCREASE && level != @level
     lvls = @level - level
     @max_hunger += (Zer0::LVL_UP_AMOUNT * lvls)
     @max_thirst += (Zer0::LVL_UP_AMOUNT * lvls)
   end
 end  
end

#-------------------------------------------------------------------------------
# ** Game_Battler
#-------------------------------------------------------------------------------

class Game_Battler

 alias test item_effect
 def item_effect(item)
   food_item = false
   hunger_plus = Zer0.food(item.id)
   thirst_plus = Zer0.drink(item.id)
   if hunger_plus != nil
     if Zer0::RECOVER_BY_PERCENT
       hunger_plus = (self.max_hunger * (hunger_plus * 0.01)).ceil
     end
     self.hunger += hunger_plus 
     self.hunger = [[self.hunger, self.max_hunger].min, 0].max      
     food_item = true
   end
   if thirst_plus != nil
     if Zer0::RECOVER_BY_PERCENT
       thirst_plus = (self.max_thirst * (thirst_plus * 0.01)).ceil
     end
     self.thirst += thirst_plus
     self.thirst = [[self.thirst, self.max_thirst].min, 0].max
     food_item = true
   end
   if food_item
     states_plus(item.plus_state_set)
     states_minus(item.minus_state_set)
     return true
   end
   test(item)
 end
end

#-------------------------------------------------------------------------------
# ** Game_Party
#-------------------------------------------------------------------------------

class Game_Party

 attr_accessor :hunger
 attr_accessor :time_hunger
 attr_accessor :time_thirst
 attr_accessor :step_hunger
 attr_accessor :step_thirst

 alias zer0_hunger_system_init initialize
 def initialize
   zer0_hunger_system_init
   @hunger = true
   @time_hunger = @time_thirst = 0
   @step_hunger = Zer0::STEPS_HUNGER_DOWN
   @step_thirst = Zer0::STEPS_THIRST_DOWN
 end

 def check_hunger_states
   @actors.each {|actor|
   state_id = Zer0.hunger_states(actor.hunger)
   actor.add_state(state_id) if state_id != nil}
 end

 def check_thirst_states
   @actors.each {|actor|
   state_id = Zer0.thirst_states(actor.thirst)
   actor.add_state(state_id) if state_id != nil}
 end

end

#-------------------------------------------------------------------------------
# ** Scene_Map
#-------------------------------------------------------------------------------

class Scene_Map

 alias zer0_hunger_map_upd update
 def update
   zer0_hunger_map_upd
   if $game_party.hunger
     update_hunger
   end
 end

 def update_hunger
   if Zer0::BY_TIME
     $game_party.time_hunger += 1
     $game_party.time_thirst += 1
     if $game_party.time_hunger == (Zer0::SECS_HUNGER_DOWN * 40)
       $game_party.actors.each {|actor| 
         actor.hunger -= 1 unless actor.dead? || actor.hunger == 0}
       $game_party.check_hunger_states
       $game_party.time_hunger = 0
     end
     if $game_party.time_thirst == (Zer0::SECS_THIRST_DOWN * 40)
       $game_party.actors.each {|actor| 
         actor.thirst -= 1 unless actor.dead? || actor.thirst == 0}
       $game_party.check_thirst_states
       $game_party.time_thirst = 0
     end
   end
   if Zer0::BY_STEPS
     if $game_party.steps == $game_party.step_hunger 
       $game_party.actors.each {|actor| 
         actor.hunger -= 1 unless actor.dead? || actor.hunger == 0}
       $game_party.check_hunger_states
       $game_party.step_hunger = $game_party.steps + Zer0::STEPS_HUNGER_DOWN
     end
     if $game_party.steps == $game_party.step_thirst
       $game_party.actors.each {|actor| 
         actor.thirst -= 1 unless actor.dead? || actor.thirst == 0}
       $game_party.check_thirst_states
       $game_party.step_thirst = $game_party.steps + Zer0::STEPS_THIRST_DOWN 
     end
   end
 end
end

 

 

#==============================================================================
# Scene Tutorial
# Version 1.0
# Author: modern algebra (rmrk.net)
# Date: September 15, 2008
# Modified by Jimmie for RMXP, 14 of August 2009
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Description:
# This script allows you to freeze user input for a scene and run a special
# common event that controls input. Effectively, this allows you to run a 
# scene and direct a tutorial to that scene that explains what the scene is.
# So, if you ever wanted to give the players to your game a tutorial on
# using the Menu scene, then this is the script for you.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Instructions:
# Okay, this script can be slightly difficult to use, so you have to pay 
# careful attention to the instructions.
#
# To start a tutorial, you must use a call script with this code:
#
# $tutorial.start (scene, common event id)
#
# where scene is the name of the scene to call, (like Scene_Menu or
# Scene_Battle) and common event ID is the ID of the common event that 
# controls the tutorial. Now, that's the easy part. Setting up the controller
# common event will be tricky at first, but once you get the hang of it, 
# you'll be fine. Now, read the instructions very carefully:
#
# The Standard Wait Variable - You set what Variable this will be at line
# 200. The value of this variable determines how many frames to wait for 
# after each command.
#
# The controller common event is similar to a regular common event in some 
# ways but many of the commands will be unavailable to you while others will
# be irrelevant and others still will have a different effect than you would
# expect. In the instructions, I will go over the functions of what will be
# the most important commands in making a scene tutorial, but I just wanted
# to warn you that many commands will not work as you expect them to. (For
# instance, pictures, screen tone etc... will only work in a battle or map
# tutorial). So, depending on how the scene is built, some things are 
# possible while others are not. Note, however, that in a number of cases, 
# you can simulate the effect that is not possible. That being said, it can 
# get quite convoluted, but that was as far as I was willing to go with this 
# script. I apologize for the difficulty.
#
# Anyway, there are a couple of specialized commands that have their function
# changed from what they would normally do. These are:
#
# Control Variable
# Set Move Route
#
# These have been changed so that rather than do what they would normally, 
# they instead interpret input. Since player input is frozen during a 
# tutorial, scene movement is handled by you, the game creator. It is done
# through these two commands. This can be rather non-intuitive, but for each
# value of 0 through 19, a button is attached. It is similar for Set Move
# Route, but let's go over the variable way of setting input first.
#
# To set it, it must be a single variable set to a constant. If any other
# option is chosen, then the Control Variable command will function normally.
# Also, the control variable command will behave normally if the variable you
# choose is the one you choose for setting standard wait time. Anyway, here 
# is the list of values and their effects:
#
# 0 - Down Cursor
# 1 - Left Cursor
# 2 - Right Cursor
# 3 - Up Cursor
# 4 - Button A
# 5 - Button B
# 6 - Button C
# 7 - Button X
# 8 - Button Y
# 9 - Button Z
# 10 - Button L
# 11 - Button R
# 12 - SHIFT
# 13 - CTRL
# 14 - ALT
# 15 - F5
# 16 - F6
# 17 - F7
# 18 - F8
# 19 - F9
#
# If you want to wait some frames, the Wait command will work normally.
#
# Set Move Route has a similar set of moves attached. They are:
#      Move Down             - Down Cursor
#      Move Left             - Left Cursor
#      Move Right            - Right Cursor
#      Move Up               - Up Cursor
#      Move Lower Left       - Button A
#      Move Lower Right      - Button B
#      Move Upper Left       - Button C
#      Move Upper Right      - Button X
#      Move at Random        - Button Y
#      Move Toward Player    - Button Z
#      Move Away from Player - Button L
#      One Step Forward      - Button R
#      One Step Backward     - SHIFT
#      Jump                  - CTRL
#      Wait                  - Waits for however many frames
#      Turn Down             - ALT
#      Turn Left             - F5
#      Turn Right            - F6
#      Turn Up               - F7
#      Turn 90 Left          - F8
#      Turn 90 Right         - F9
#
# So basically, using those commands will make the scene react as if the 
# corresponding button had just been pressed. 
#==============================================================================
# *** Input
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Summary of Changes:
# aliased method - trigger?, press?, repeat?
#==============================================================================

module Input
 class << self
   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   # * Frame Update
   #````````````````````````````````````````````````````````````````````````
   #  Updates tutorial as well if it exists. It does it in Input as all scenes
   # update Input every frame
   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   alias modalg_tutorials_update_9rt update
   def update
     $tutorial.update if $tutorial != nil && $tutorial.active?
     # Run Original Method
     modalg_tutorials_update_9rt
   end
   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   # * Trigger?
   #````````````````````````````````````````````````````````````````````````
   #  If Tutorial is running, freezes input and accepts only tutorial input
   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   alias modalg_tut_frz_inpt_trig_dj5 trigger?
   def trigger? (key)
     return $tutorial.button == key if $tutorial != nil && $tutorial.active? && !$tutorial.upd_input
     # Run Original Method
     modalg_tut_frz_inpt_trig_dj5 (key)
   end
   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   # * Repeat?
   #````````````````````````````````````````````````````````````````````````
   #  If Tutorial is running, freezes input and accepts only tutorial input
   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   alias modalg_rpt_tutorial_upd_8fn repeat?
   def repeat? (key)
     return $tutorial.button == key if $tutorial != nil && $tutorial.active? && !$tutorial.upd_input
     # Run Original Method
     modalg_rpt_tutorial_upd_8fn (key)
   end
   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   # * Press?
   #````````````````````````````````````````````````````````````````````````
   #  If Tutorial is running, freezes input and accepts only tutorial input
   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   alias modalg_tut_prs_frz_inpt_9nfg press?
   def press? (key)
     return $tutorial.button == key if $tutorial != nil && $tutorial.active? && !$tutorial.upd_input
     # Run Original Method
     modalg_tut_prs_frz_inpt_9nfg (key)
   end
 end
end
#==============================================================================
# ** Tutorial Guide
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# This class handles the interpretation of the common event for a tutorial
#==============================================================================

class Game_TutorialGuide < Interpreter
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Constant
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # STANDARD WAIT VARIABLE is the ID of the event variable that holds a 
 # standard wait between input commands. Basically, if this is set to 2, 
 # then Variable with ID 2 will control the wait between actions. So, if
 # Variable with ID 2 is set to 4, then it will wait four frames before 
 # executing the next command in the common event
 STANDARD_WAIT_VARIABLE = 2
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Object Initialization
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def initialize
   super
   @wait_frames = 60
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Control Variable
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def command_122
   if @parameters[3] == 0 || @parameters[0] == STANDARD_WAIT_VARIABLE 
     command_input (@parameters[4] + 1) 
   else
     super 
   end
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Set Move Route
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def command_209
   @move_route = @parameters[1].list
   @moveroute_index = 0
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Wait
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def command_106
   command_wait (@params[0])
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Frame Update
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def update
   # Wait
   if @wait_frames > 0
     @wait_frames -= 1
     return
   end
   # Execute Move Route Input
   unless @move_route.nil?
     loop do
       # Move on once move route exhausted
       if @moveroute_index >= (@move_route.size - 1)
         @move_route = nil
         @moveroute_index = 0
         break
       end
       # Execute Input command
       command_move (@move_route[@moveroute_index])
       @moveroute_index += 1
       return if @wait_frames > 0
     end
   end
   return false if @list.nil?
   return if !execute_command # Execute event command
   @index += 1 
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Command Input
 # button_code : the key a button corresponds to.
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def command_input (button_value)
   $tutorial.button = case button_value
     when 1 then Input::DOWN # Cursor Down
     when 2 then Input::LEFT # Cursor Left
     when 3 then Input::RIGHT # Cursor Right
     when 4 then Input::UP # Cursor Up
     when 5 then Input::A # Press A
     when 6 then Input::B # Press B
     when 7 then Input::C # Press C or Enter
     when 8 then Input::X # Press X
     when 9 then Input::Y # Press Y
     when 10 then Input::Z # Press Z
     when 11 then Input::L # Press L
     when 12 then Input::R # Press R
     when 13 then Input::SHIFT # Press SHIFT
     when 14 then Input::CTRL # Press CTRL
     when 15 then Input::ALT # Press ALT
     when 16 then Input::F5 # Press F5
     when 17 then Input::F6 # Press F6
     when 18 then Input::F7 # Press F7
     when 19 then Input::F8 # Press F8
     when 20 then Input::F9 # Press F9
   end
   @wait_frames = $game_variables[sTANDARD_WAIT_VARIABLE]
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Command Move
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def command_move (command)
   command_input (command.code) if command.code < 15
   command_wait (command.parameters[0] - 1) if command.code == 15
   command_input (command.code - 1) if command.code.between? (16, 21)
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Command Wait
 # duration : the number of frames to wait
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def command_wait (duration)
   # Wait Frames - Subtract Standard wait frames tacked on by previous command
   @wait_frames = duration
 end
end

#==============================================================================
# ** Tutorial
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# This class basically interprets a common event and navigates a scene by the
# codes used in that common event
#==============================================================================

class Tutorial
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Public Instance Variables
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 attr_reader :upd_input
 attr_accessor :button
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Object Initialization
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def initialize
   # Initialize variables
   @button = false
   @upd_input = false
   @active = false
   @tutorial_guide = Game_TutorialGuide.new
   @index = 0
   @wait_frames = 0
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # * Start
 # scene : the scene to guide through
 # common_event_id : the navigation common event 
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 def start (scene, common_event_id)
   # Get Common Event
   @tutorial_guide.setup ($data_common_events[common_event_id].list, 1)
   # Initialize Scene
   $scene = scene.new
   @active = true
   # Initialize Message window here because uses $game variables.
   if @message_window.nil?
     @message_window = Window_Message.new
     @message_window.z = 210
   end
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Update
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def update
   @button = nil
   @upd_input = true
   @message_window.update
   @upd_input = false
   if $game_temp.message_text != nil or @message_window.visible
     return
   end
   @active = false if @tutorial_guide.update == false
 end
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Active?
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 def active?
   return @active
 end
end

#==============================================================================
# ** Scene_Title
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Summary of Changes:
# aliased method - initialize
#==============================================================================

class Scene_Title
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 # * Initialize
 #``````````````````````````````````````````````````````````````````````````
 # Initialize $tutorial
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 alias modalg_tutorial_scenes_ldb_init_nf4 initialize
 def initialize
   # Initialize Tutorial
   $tutorial = Tutorial.new
   # Run Original Method
   modalg_tutorial_scenes_ldb_init_nf4
 end
end

 

 

#===============================================================================
# Achievements
# Version 2.23
# Author game_guy
#-------------------------------------------------------------------------------
# Intro:
# A full blown achievement system. Keep track of events your players pull off
# and make them feel like they've really achieved something. Easy to setup,
# plenty of options to configure it the way you want.
#
# Features:
# -Image/Text Achievement Notification
# -Show all achievements or only ones you unlocked
# -Change text font, size, and color
# -Option to keep track of score
# -Modify notification position
# -Modify text position if using an image
# -Modify popup time
# -Play sound when you unlock an achievement
# -Set return scene, scene you go to when exiting achievements menu
# -Custom queue system allowing you to display multiple achievements at a time
# -Much more compatible
# -Quickly open up achievements without interupting the current scene
# -Block scenes from the Quick Open
# -See if user has a specific achievement
# -See how many achievements the player has
# -Custom Icon Size Support
#
# Instructions:
# -Go down to Begin Config and edit all of your options there.
# -Instructions for creating achievements are also in the Config.
# -To gain an achievement, use Awards.gain(award_id)
# -Award id is set when creating awards.
# -To see if a user has an award use Awards.has?(award_id)
# -To see how many the player has use Awards.count
# -To open up the real achievements scene use
#  $scene = Scene_Achievements.new
#
# Compatibility:
# -Not tested with SDK.
# -Should work with everything.
# -May corrupt old save games.
# 
# Credits:
# -game_guy ~ For creating it.
# -jragyn00 ~ For the new layout.
# -GAX72 ~ For test achievement image.
#===============================================================================

module Awards
#===============================================================
# Begin Config
#===============================================================
 #----------------------------------------------------------------------------
 # If true, it'll show all unlocked and locked achievements, else it'll just
 # show unlocked achievements
 #----------------------------------------------------------------------------
 Show_All      = true
 #----------------------------------------------------------------------------
 # If Show_All is on, all locked icons will be displayed with the below
 # icon
 #----------------------------------------------------------------------------
 Locked_Icon   = "locked"
 #----------------------------------------------------------------------------
 # This replaces the achievments description if Show_All is on and the
 # achievement is marked as hidden.
 #----------------------------------------------------------------------------
 Hidden_Info   = "This achievement is hidden. Unlock it to find out more."
 #----------------------------------------------------------------------------
 # The scene you go to when you exit the achievements menu
 #----------------------------------------------------------------------------
 Return_Scene  = Scene_Menu
 #----------------------------------------------------------------------------
 # If set to an Input key, it will open up a quick view window to view all
 # achievements, can be opened up from anywhere, and doesn't interupt the
 # current scene. Set to nil to turn it off.
 #----------------------------------------------------------------------------
 Quick_Access  = Input::A
 #----------------------------------------------------------------------------
 # Add scenes here that you want quick access blocked on. Example, 
 # Scene_Title, wouldn't want users to view achievements there. Kinda odd.
 #----------------------------------------------------------------------------
 Block_Scenes  = [scene_Title, Scene_Gameover, Scene_File, Scene_Register,
                  Scene_Login, Scene_Servers]
 #----------------------------------------------------------------------------
 # Keep track of score?
 #----------------------------------------------------------------------------
 Track_Score   = true
 #----------------------------------------------------------------------------
 # Text for "Score"
 #----------------------------------------------------------------------------
 Score_Text    = "Points"
 #----------------------------------------------------------------------------
 # Variable to store the score in. (hehe)
 #----------------------------------------------------------------------------
 Variable_Id   = 5
 #----------------------------------------------------------------------------
 # Font name
 # Place your font in string tags "font_here"
 # Or leave it as is to leave the default font.
 #----------------------------------------------------------------------------
 Text_Font     = Font.default_name
 #----------------------------------------------------------------------------
 # Font color : Color.new(red, green, blue)
 #----------------------------------------------------------------------------
 Text_Color    = Color.new(255, 255, 255)
 #----------------------------------------------------------------------------
 # Font size
 #----------------------------------------------------------------------------
 Text_Size     = 24
 #----------------------------------------------------------------------------
 # Where will the award show up on the screen. [X, Y]
 #----------------------------------------------------------------------------
 Award_Place   = [16, 16]
 #----------------------------------------------------------------------------
 # Use background image behind text?
 #----------------------------------------------------------------------------
 Use_Image     = true
 #----------------------------------------------------------------------------
 # File used to display behind the text.
 #----------------------------------------------------------------------------
 Image_File    = "award_background"
 #----------------------------------------------------------------------------
 # Offset for text drawn over the image. [X, Y]
 #----------------------------------------------------------------------------
 Image_Offset  = [72, 0]
 #----------------------------------------------------------------------------
 # Draw icon on notification image?
 #----------------------------------------------------------------------------
 Draw_Icon     = true
 #----------------------------------------------------------------------------
 # Offset for icon drawn over the image. [X, Y]
 #----------------------------------------------------------------------------
 Icon_Offset   = [20, 20]
 #----------------------------------------------------------------------------
 # Custom icon size. If you change these values, you'll have to change
 # Icon_Row and Icon_QuickRow. [WIDTH, HEIGHT]
 #----------------------------------------------------------------------------
 Icon_Size     = [24, 24]
 #----------------------------------------------------------------------------
 # How many icons are displayed in one column (across).
 #----------------------------------------------------------------------------
 Icon_Column   = 10
 #----------------------------------------------------------------------------
 # How many icons are in one column (across) in the Quick View scene.
 #----------------------------------------------------------------------------
 Icon_QColumn  = 8
 #----------------------------------------------------------------------------
 # Time the "Unlocked Achievement" pop up stays on screen in frames.
 #----------------------------------------------------------------------------
 Popup_Time    = 60
 #----------------------------------------------------------------------------
 # Sound played when an achievement pops up. ["sound", volume, pitch]
 #----------------------------------------------------------------------------
 Popup_Sound   = ["114-Remedy02", 100, 0]
 Award = []
 #----------------------------------------------------------------------------
 # To add a new award, add a new line:
 # Award[id] = ["name", "description", "icon", score_amount, hidden]
 # score_amount must be set even if Track_Score is off
 # hidden must be set even if Show_All is off
 # If you use Show_All and you want the description of achievements to be
 # hidden, set hidden to true. If its false, it'll tell the name and 
 # description.
 #----------------------------------------------------------------------------
 Award[0] = ["New Game", "Start a new game!", "037-Item06", 10, false]
 Award[1] = ["Award 1", "Talk to guy 1.", "046-Skill03", 10, true]
 Award[2] = ["Award 2", "Talk to guy 1.", "046-Skill03", 10, false]
 Award[3] = ["500 Damage", "Deal 500 damage in one attack.", "004-Weapon04", 5, false]
 Award[4] = ["Am I rich?", "Have 1,000,000 gold at one time.", "035-Item04", 10, false]
 Award[5] = ["Window Shopper", "Spend 1,000,000 gold.", "032-Item01", 10, false]
 Award[6] = ["Longer Description", "OMGAR this has a longer description but carries on to the next line. I'm so sexy.", "033-Item02", 0, false]
 Award[7] = ["Log Jumper", "Jump over the log.", "048-Skill05", 5, false]
 Award[8] = ["Super Log Jumper", "Jump over the log 5 times", "048-Skill05", 25, false]
 Award[9] = ["I am hidden!", "Learn about hidden achievements.", "034-Item03", 10, true]
 Award[10] = ["GRRR!!!", "Brave enough to talk to a lion!", "019-Accessory04", 5, false]
 Award[11] = ["Invisible", "Found and talked to invisible person.", "049-Skill06", 50, false]
 Award[12] = ["Swiftly!", "Learn about the Quick Scene!", "020-Accessory05", 100, false]
#===============================================================
# End Config
#===============================================================
 def self.gain(id)
   return if $game_system.awards.include?(id)
   if Awards::Award[id] != nil
     $game_system.gain_award(id)
   end
 end
 def self.has?(id)
   return $game_system.awards.include?(id)
 end
 def self.count
   return $game_system.awards.size
 end
end

$gg_achievements = 2.23
#===============================================================================
# Sprite_Award
#-------------------------------------------------------------------------------
# Draws unlocked achievement.
#===============================================================================
class Sprite_Award < Sprite
 def initialize(award)
   super(nil)
   @award = award
   self.bitmap = Bitmap.new(1, 1)
   self.bitmap.font.size = Awards::Text_Size
   @text_width = self.bitmap.text_size(@award[0]).width + 8
   @text_height = self.bitmap.text_size(@award[0]).height
   self.bitmap.dispose
   if Awards::Use_Image
     @pic = RPG::Cache.picture(Awards::Image_File)
     @pic_width = @pic.width > @text_width ? @pic.width : @text_width
     @pic_height = @pic.height > @text_height ? @pic.height : @text_height
     self.bitmap = Bitmap.new(@pic_width, @pic_height)
     if Awards::Draw_Icon
       @icon = RPG::Cache.icon(@award[2])
     end
   else
     self.bitmap = Bitmap.new(@text_width, @text_height)
   end
   self.bitmap.font.color = Awards::Text_Color
   self.bitmap.font.name = Awards::Text_Font
   self.bitmap.font.size = Awards::Text_Size
   self.z = 20000
   self.x = Awards::Award_Place[0]
   self.y = Awards::Award_Place[1]
   refresh
 end
 def refresh
   self.bitmap.clear
   x = 0
   y = 0
   if @pic != nil
     self.bitmap.blt(0, 0, @pic, Rect.new(0, 0, @pic.width, @pic.height))
     x = Awards::Image_Offset[0]
     y = Awards::Image_Offset[1]
     if @icon != nil
       icon_off = Awards::Icon_Offset
       self.bitmap.blt(icon_off[0], icon_off[1], @icon, Rect.new(0, 0, 
           Awards::Icon_Size[0], Awards::Icon_Size[1]))
     end
   end
   text = @award[0]
   if @text_width + x > self.bitmap.width
     text = self.bitmap.slice_text(@award[0], self.bitmap.width - x)
     text.each_index {|i|
       self.bitmap.draw_text(x, y + i * @text_height + 4, 
           @text_width, @text_height, text[i])}
   else
     self.bitmap.draw_text(x, y, @text_width, @text_height, text)
   end
 end
 def dispose
   super
   if self.bitmap != nil
     self.bitmap.dispose
   end
 end
end
#===============================================================================
# Graphics
#-------------------------------------------------------------------------------
# **added method to control and draw all queued achievements.
#===============================================================================
module Graphics
 class << self
   alias gg_upd_awards_queue_lat update
 end
 def self.update
   @frame = 0 if @frame == nil
   if $game_system != nil && $game_system.queue.size > 0 && @frame < 1
     award = Awards::Award[$game_system.queue[0]]
     if award != nil
       @sprite = Sprite_Award.new(award)
       @frame = Awards::Popup_Time
       Audio.se_play("Audio/SE/#{Awards::Popup_Sound[0]}", 
         Awards::Popup_Sound[1], Awards::Popup_Sound[2])
     end
   end
   if @frame > 0
     @frame -= 1 
     if @frame < 1
       @sprite.dispose
       $game_system.queue.shift
     end
   end
   gg_upd_awards_queue_lat
 end
end
#===============================================================================
# Game_System
#-------------------------------------------------------------------------------
# **modded to keep track of queued and obtained achievements.
#===============================================================================
class Game_System
 attr_accessor :awards
 attr_accessor :queue
 alias gg_init_awards_sys_lat initialize
 def initialize
   @awards = []
   @queue = []
   gg_init_awards_sys_lat
 end
 def gain_award(id)
   return if @awards.include?(id) || Awards::Award[id] == nil
   if Awards::Track_Score
     $game_variables[Awards::Variable_Id] += Awards::Award[id][3]
   end
   @awards.push(id)
   @queue.push(id)
 end
end
#===============================================================================
# Bitmap
#===============================================================================
class Bitmap

 def slice_text(text, width)
   words = text.split(' ')
   return words if words.size == 1
   result, current_text = [], words.shift
   words.each_index {|i|
       if self.text_size("#{current_text} #{words[i]}").width > width
         result.push(current_text)
         current_text = words[i]
       else
         current_text = "#{current_text} #{words[i]}"
       end
       result.push(current_text) if i >= words.size - 1}
   return result
 end

end

#===============================================================================
# Window_QuickHelp
#===============================================================================
class Window_QuickHelp < Window_Base
 def initialize
   super(64, 32, 512, 160)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.z = 10000
 end
 def set_award(award)
   @award = award
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.draw_text(0, 0, 512 / 2, 32, @award[0][0])
   if Awards::Track_Score
     text = "#{@award[0][3]} #{Awards::Score_Text}"
     self.contents.draw_text(0, 0, 512 - 32, 32, text, 2)
     text = "Total #{Awards::Score_Text}: #{$game_variables[Awards::Variable_Id]}"
     self.contents.draw_text(0, 32, 512 - 32, 32, text, 2)
   end
   text = self.contents.slice_text(@award[0][1], 512 - 32)
   if @award[0][4] && !$game_system.awards.include?(@award[1])
     text = self.contents.slice_text(Awards::Hidden_Info, 512 - 32)
   end
   text.each_index {|i|
     self.contents.draw_text(0, 64 + i * 32, 512 - 32, 32, text[i])}
 end
end
#===============================================================================
# Window_QuickAwards
#===============================================================================
class Window_QuickAwards < Window_Selectable
 def initialize
   super(64, 128 + 64, 512, 320 - 64)
   @column_max = Awards::Icon_QColumn
   self.z = 10000
   refresh
   self.index = 0
 end
 def item
   return @data[self.index]
 end
 def refresh
   if self.contents != nil
     self.contents.dispose
     self.contents = nil
   end
   @data = []
   $game_system.awards.each {|i|
     @data.push([Awards::Award[i], i])}
   if Awards::Show_All
     @data = []
     @locked = []
     @unlocked = []
     Awards::Award.each_index {|i|
       if Awards::Award[i] != nil
         if $game_system.awards.include?(i)
           @unlocked.push([Awards::Award[i], i])
         else
           @locked.push([Awards::Award[i], i])
         end
       end}
     @unlocked.each {|i| @data.push(i)}
     @locked.each {|i| @data.push(i)}
   end
   @item_max = @data.size
   if @item_max > 0
     self.contents = Bitmap.new(width - 32, row_max * Awards::Icon_Size[1])
     for i in 0...@item_max
       draw_item(i)
     end
   end
 end
 def draw_item(index)
   item = @data[index]
   width = Awards::Icon_Size[0] < 32 ? 32 : Awards::Icon_Size[0]
   height = Awards::Icon_Size[1] < 32 ? 32 : Awards::Icon_Size[1]
   x = 4 + index % @column_max * (width + 32)
   y = index / @column_max * (height + 4)
   rect = Rect.new(x, y, self.width / @column_max - 32, height)
   self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
   if $game_system.awards.include?(item[1])
     bitmap = RPG::Cache.icon(item[0][2])
   else
     bitmap = RPG::Cache.icon(Awards::Locked_Icon)
   end
   self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, Awards::Icon_Size[0], 
       Awards::Icon_Size[1]))
 end
 def update_help
   @help_window.set_award(self.item)
 end
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
     return
   end
   row = @index / @column_max
   if row < self.top_row
     self.top_row = row
   end
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   cursor_width = Awards::Icon_Size[0] < 32 ? 32 : Awards::Icon_Size[0]
   cursor_height = Awards::Icon_Size[1] < 32 ? 32 : Awards::Icon_Size[1]
   x = @index % @column_max * (cursor_width + 32)
   y = @index / @column_max * (Awards::Icon_Size[1] + 4) - self.oy
   self.cursor_rect.set(x, y, cursor_width, cursor_height + 4)
 end
end
#===============================================================================
# QScene_Awards
#===============================================================================
class QScene_Awards
 def initialize
   @awards = Window_QuickAwards.new
   @help = Window_QuickHelp.new
   @awards.help_window = @help
   loop do
     Graphics.update
     Input.update_old
     update
     if Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       break
     end
   end
   @awards.dispose
   @help.dispose
 end
 def update
   @awards.update
   @help.update
 end
end
#===============================================================================
# Input
#===============================================================================
module Input
 class << self
   alias gg_init_quick_awards_lat update
 end
 def self.update_old
   gg_init_quick_awards_lat
 end
 def self.check_blocked
   Awards::Block_Scenes.each {|s|
     return true if $scene.is_a?(s)}
   return false
 end
 def self.update
   if Awards::Quick_Access != nil && Input.trigger?(Awards::Quick_Access) &&
         @scene == nil && !self.check_blocked
     if defined?(RMXOS) && $game_temp.chat_active == true
         return gg_init_quick_awards_lat
     end
     $game_system.se_play($data_system.decision_se)
     @scene = QScene_Awards.new
     @scene = nil
   end
   gg_init_quick_awards_lat
 end
end

#===============================================================================
# Window_Award
#===============================================================================
class Window_Award < Window_Base
 def initialize
   super(0, 320, 640, 160)
   self.contents = Bitmap.new(width - 32, height - 32)
 end
 def set_award(award)
   @award = award
   refresh
 end
 def refresh
   self.contents.clear
   self.contents.draw_text(0, 0, 640 / 2, 32, @award[0][0])
   if Awards::Track_Score
     text = "#{@award[0][3]} #{Awards::Score_Text}"
     self.contents.draw_text(0, 0, 640 - 32, 32, text, 2)
     text = "Total #{Awards::Score_Text}: #{$game_variables[Awards::Variable_Id]}"
     self.contents.draw_text(0, 32, 640 - 32, 32, text, 2)
   end
   text = self.contents.slice_text(@award[0][1], 640 - 32)
   if @award[0][4] && !$game_system.awards.include?(@award[1])
     text = self.contents.slice_text(Awards::Hidden_Info, 640 - 32)
   end
   text.each_index {|i|
     self.contents.draw_text(0, 64 + i * 32, 640 - 32, 32, text[i])}
 end
end
#===============================================================================
# Window_Awards
#===============================================================================
class Window_Awards < Window_Selectable
 def initialize
   super(0, 0, 640, 320)
   @column_max = Awards::Icon_Column
   refresh
   self.index = 0
 end
 def item
   return @data[self.index]
 end
 def refresh
   if self.contents != nil
     self.contents.dispose
     self.contents = nil
   end
   @data = []
   $game_system.awards.each {|i|
     @data.push([Awards::Award[i], i])}
   if Awards::Show_All
     @data = []
     @locked = []
     @unlocked = []
     Awards::Award.each_index {|i|
       if Awards::Award[i] != nil
         if $game_system.awards.include?(i)
           @unlocked.push([Awards::Award[i], i])
         else
           @locked.push([Awards::Award[i], i])
         end
       end}
     @unlocked.each {|i| @data.push(i)}
     @locked.each {|i| @data.push(i)}
   end
   @item_max = @data.size
   if @item_max > 0
     height = Awards::Icon_Size[1] < 32 ? 32 : Awards::Icon_Size[1]
     self.contents = Bitmap.new(width - 32, row_max * height)
     for i in 0...@item_max
       draw_item(i)
     end
   end
 end
 def draw_item(index)
   item = @data[index]
   width = Awards::Icon_Size[0] < 32 ? 32 : Awards::Icon_Size[0]
   height = Awards::Icon_Size[1] < 32 ? 32 : Awards::Icon_Size[1]
   x = 4 + index % @column_max * (width + 32)
   y = index / @column_max * (height + 4)
   rect = Rect.new(x, y, self.width / @column_max - 32, Awards::Icon_Size[1])
   self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
   if $game_system.awards.include?(item[1])
     bitmap = RPG::Cache.icon(item[0][2])
   else
     bitmap = RPG::Cache.icon(Awards::Locked_Icon)
   end
   self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, Awards::Icon_Size[0], 
     Awards::Icon_Size[1]))
 end
 def update_help
   @help_window.set_award(self.item)
 end
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
     return
   end
   row = @index / @column_max
   if row < self.top_row
     self.top_row = row
   end
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   cursor_width = Awards::Icon_Size[0] < 32 ? 32 : Awards::Icon_Size[0]
   cursor_height = Awards::Icon_Size[1] < 32 ? 32 : Awards::Icon_Size[1]
   x = @index % @column_max * (cursor_width + 32)
   y = @index / @column_max * (cursor_height + 4) - self.oy
   self.cursor_rect.set(x, y, cursor_width, cursor_height)
 end
end
#===============================================================================
# Scene_Achievements
#===============================================================================
class Scene_Achievements
 def main
   @help = Window_Award.new
   @awards = Window_Awards.new
   @awards.help_window = @help
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @help.dispose
   @awards.dispose
 end
 def update
   @awards.update
   @help.update
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Awards::Return_Scene.new
     return
   end
 end
end

 

 

http://www.sendspace.com/file/kh6cqv (Zeriab's Quest Book)(Or something similar)

 

 

 

 

Annnd I think that's just about everything (: Whoever does this is a superhero or something XD

Thankkks

Edited by Tenoukii

Share this post


Link to post
Share on other sites

What exactly do you want in the Achievements section? 'Cause selectable options should be in one row or column, and I don't see any window that's the size of that section.

 

And use a 640x480 (actual size) layout for your mock up. : /

Share this post


Link to post
Share on other sites

What exactly do you want in the Achievements section? 'Cause selectable options should be in one row or column, and I don't see any window that's the size of that section.

I was thinking of just having the icon, but now I'm thinking that just having the icon would look a bit weird. The best way I can see of having it would be a selectable options section.

I'll redo the picture to the actual size (on photoshop instead of paint XD) and make it a bit clearer what I mean, although I'm not to sure about the sizing of the little sections so that'll be a bit of a random guess (:

 

Right-e-o:

kedjdf.jpg

The green menu only appears when you choose Backpack.

I think that just about covers everything. Except for the book section.. don't worry about that bit. I don't need that in there anymore :)

Edited by Tenoukii

Share this post


Link to post
Share on other sites

Alright well that pretty much clears things up I think.

 

So, my experience with RGSS is less than stellar -- in other words I've just started TBH. So why am I replying to your request? You gotta start somewhere. Chances are someone else can and probably will do this for you before me, but I'll do my best and try,

 

So basically I'm saying I can't promise anything, but I'll try.

 

 

xD

Share this post


Link to post
Share on other sites

I can take the request, but I won't start until wednesday due to an exam on tuesday.

 

Here's some images from my CMS I made for my game:

 

 

MainMenu.png

ItemMenu.png

EquipMenu.png

SkillMenu.png

PartyChanger.png

 

 

 

Extra's:

Any type of color schemes?

Want a background?

Whats basics & books?

Edited by bigace

Share this post


Link to post
Share on other sites

Basic items is just stuff like your potions etc, Quest is the items you collect on your quest that can't be sold/given away etc, Gems is the gems you attach to weapons. (This should be quite simple to set the items as Basic/Quest/Gems aswell pleeeease :])

Except for the book section.. don't worry about that bit. I don't need that in there anymore

 

And for the colour scheme, just the same as the set windowskin with no background.

 

Thankyou :)

Share this post


Link to post
Share on other sites

I forgot to ask but you don't want the Scene_Skill?

 

Also the Hunger/Thirst script and all four party members hunger bars instead of just one, I'm not sure what you want me to do here. I can ask the original script on this part, but I'll just leave it out for now.

 

Edit: Just to let you know that, Hunger script is made for Scene_Map not Scene_Menu. You'll have to ask ForeverZer0 for a Scene_Menu version, because when I put it gives like 4 bars for all four members.

Edited by bigace

Share this post


Link to post
Share on other sites

Ah I forgot about the skills bit :/ hmm.. not sure where to put that. What do you think?

And I thought that was the one I used before.. guess not XD urmm.. Just put a steps count thing in there then XD

Thanks

Share this post


Link to post
Share on other sites

Progress Report

Just in case you were wonder what was going on. I've finally finished the Both item windows and the status windows. Next is the Skills and equipment. I'll have a talk with you about that Achievement and Options when I'm done with these. 45% Done.

Share this post


Link to post
Share on other sites

Oh ya I forgot to ask, why did you post the Tutorial Script in your OP. What was I supposed to do with that?

Share this post


Link to post
Share on other sites

Ah thats awesome! :) And the Tutorial Script was just to make sure its compatible with it, I wasn't sure whether it'd pose a problem if I changed menu system and tried to make a tutorial that uses the menu (:

Share this post


Link to post
Share on other sites

Okay I'm very confused on what you need down on the Achievements, so you want the list of achivements on the side.Then when the player clicks achievements, the menu takes them to the side bar where highlighting over the name shows whats the meaning of that certain achievement. Did I get that right?

 

Also did you still want the quest system as you had it in the OP but took it out in your second post without explaination?

Edited by bigace

Share this post


Link to post
Share on other sites

Hey! First off, sorry about the slow slow replies... A million other things going on and I just completely forget about this XD

Secondly, the achievements:

1. Player clicks the Achievements option in the top bar

2. Highlighty clicky thingy highlights the achieved achievements

3. Player clicks on an achievement and details are shown in the main window

 

And the quests is still there... you may have missed it but its in the green section :)

 

I know that the Achievements bit may take a bit of work, but I'm in no hurry whatsoever :) don't worry about getting it done ASAP

Thankyouu

Share this post


Link to post
Share on other sites

Hey! First off, sorry about the slow slow replies... A million other things going on and I just completely forget about this XD

Secondly, the achievements:

1. Player clicks the Achievements option in the top bar

2. Highlighty clicky thingy highlights the achieved achievements

3. Player clicks on an achievement and details are shown in the main window

 

And the quests is still there... you may have missed it but its in the green section smile.png

 

I know that the Achievements bit may take a bit of work, but I'm in no hurry whatsoever smile.png don't worry about getting it done ASAP

Thankyouu

 

Okay cool, thx for the reply I was just working on my Battle system in the mean time so. I guess I need to put my glasses back on as I don't know how I missed the quest script.sweatdrop.gif

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...