Menu Horizontal
3 participantes
Brasil G4mes :: Scripts :: Scripts RGSS2
Página 1 de 1
Menu Horizontal
Sera que alguem poderia me ajudar com um script de menu horizontal
que funciona com o seginte script
que funciona com o seginte script
- Spoiler:
- Código:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ? Attribute Point Stat Distribution - KGC_DistributeParameter ? VX ?
#_/ ? Last Update: 11/16/2008
#_/ ? Written by TOMY
#_/ ? Translation & Extended Updates by Mr. Anonymous
#_/ ? Extended Annotation by Touchfuzzy
#_/ ? KGC Site:
#_/ ? http://ytomy.sakura.ne.jp/
#_/ ? Translator's Blog:
#_/ ? http://mraprojects.wordpress.com
#_/-----------------------------------------------------------------------------
#_/ This script gives you the ability to completely change the way actors'
#_/ attributes are gained. This system allows for the player to distribute stat
#_/ points to actors which are gained upon level up.
#_/=============================================================================
#_/ ? Script Commands ?
#_/ These commands are used in "Script" function in the third page of event
#_/ commands under "Advanced".
#_/
#_/ * gain_rp(ActorID, Value)
#_/ Increases the MaxRP of a given actor.
#_/
#_/ * reset_distributed_count(ActorID)
#_/ Resets the distributed RP of a given actor.
#_/
#_/ * call_distribute_parameter(ActorID)
#_/ Calls the Distribute Parameter screen for a given actor.
#_/
#_/=============================================================================
#_/ Install: Insert below KGC_ExtendedEquipScene and KGC_CustomMenuCommand.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#==============================================================================#
# ? Customization ? #
#==============================================================================#
module KGC
module DistributeParameter
# ? Distribution Tables ?
# Here you may customize the costs and increase rates of specific parameters.
# The order in which these costs and increase rates are set are as follows:
# [IPC, IPSG, MAP, PCI, PSGI]
# Key:
# IPC = Initial Point Cost. This is how many AP it cost to buy the first
# point of this parameter.
#
# IPSG = Initial Point Stat Growth. This is how much the stat will go up with
# the first point of this parameter.
#
# MAP = Maximum Attribute Points. The maximum amount of AP that can be spent
# on this stat. You may also put a level based equation in this but
# remember that if you put in an equation it is IMPORTANT that you put
# quotation marks ("") around it and to use level in all lower case.
# By using 0 here, you effectively remove the limitation on how the
# stat's growth ceiling.
#
# PCI = Point Cost Increase. For every AP spent in this parameter the cost
# of this parameter increases by this amount.
#
# PSGI = Point Stat Growth Increase. For every AP spent in this parameter
# the number of points you gain in the stat increases by this much.
#
# Also, if you completely remove a line (e.g. ":hit => [1, 1, 20, 0.7],")
# it will remove it from the distribution screen altogether.
# Very useful if your project doesn't require a specific stat to be shown.
GAIN_PARAMETER = {
# Parameter IPC, IPSG, MAP, PCI, PSGI
:maxhp => [1, 30, 30, 0.4, 2], # Maximum HP
:maxmp => [1, 5, 30, 0.4, 0.5], # Maximum MP
:atk => [1, 2, 30, 0.4, 0.5], # Attack
:def => [1, 2, 30, 0.4, 0.5], # Defense
:spi => [1, 2, 30, 0.4, 0.5], # Spirit
:agi => [1, 2, 30, 0.4, 0.5], # Agility
:hit => [1, 1, 20, 0.7], # Hit Ratio (Accuracy)
:eva => [1, 1, 20, 0.7], # Evasion
:cri => [1, 1, 20, 0.7], # Critical
:skill_speed => [1, 1, 20, 0.5], # Skill Speed
:item_speed => [1, 1, 20, 0.5], # Item Speed
:odds => [1, 1, 5], # Luck (Chance of being targetted)
} # Do not remove this bracket.
# ? AP Gain Rate ?
# This is the equation that determines your total AP gained every level.
# (Character Level to the 0.25th power + 2) * Level
# This causes you to start at 3 points per level and increase slightly over
# time.
# As an example if you wish to gain a static 3 points per level write it as
# MAXRP_EXP = "level * 3"
MAXRP_EXP = "(level ** 0.100 + 10.0) * level"
# ? Individual Actor Gain Parameter Tables ?
# You may choose to manually specify an individual actor's gain parameters.
# To do so, use the same format as above GAIN_PARAMETER table but instead
# use PERSONAL_GAIN_PARAMETER [n] (Where n = Actor ID)
# Any parameter you do not set in this table will instead draw from the
# GAIN_PARAMETER chart.
#
# Example:
# PERSONAL_GAIN_PARAMETER[1] = {
# :maxhp => [2, 20, 50, 0.5, 5],
# :maxmp => [1, 10, 30, 0.3, 0.5],
# :atk => [1, 1, 30, 0.3, 0.5],
# :def => [1, 2, 30, 0.4, 0.5],
# :spi => [1, 2, 50, 0.5, 0.8],
# :agi => [1, 2, 30, 0.4, 0.6],
# :hit => [1, 1, 20, 0.7],
# :eva => [1, 1, 20, 0.7],
# :cri => [1, 1, 20, 0.7],
# :skill_speed => [1, 1, 20, 0.5],
# :item_speed => [1, 1, 20, 0.5],
# :odds => [1, 1, 5],
# :maxrpexp => ["(level ** 0.25 + 2.0) * level"]
# }
PERSONAL_GAIN_PARAMETER = []
# ? Insert Custom Actor Gain Tables Below Here ?
# ? Insert Custom Actor Gain Tables Above Here ?
# ? Class-Specific Gain Parameter Tables ?
# You may choose to manually specify an entire class's gain parameters.
# To do so, use the same format as above GAIN_PARAMETER table but instead
# use CLASS_GAIN_PARAMETER [n] (Where n = Number of class in the database)
# Any parameter you do not set in this table will instead draw from the
# GAIN_PARAMETER chart. Also note that class gain parameters take the highest
# priority.
CLASS_GAIN_PARAMETER = []
# ? Insert Custom Class Gain Tables Below Here ?
# ? Insert Custom Class Gain Tables Above Here ?
# ? AP = Attribute Points. These settings are for the AP Distrubution Screen.
# VOCAB_RP appears at the top of the column which lists the AP cost of
# the parameter
VOCAB_RP = "Cost"
# VOCAB_RP_A appears next to where it lists your current and total AP.
VOCAB_RP_A = "AP"
# ? Parameter Labels ?
# Allows you to change the text of Hit Ratio, Evasion, Critical, Skill
# Speed, Item Speed, and Odds (luck) on the distribution screen.
VOCAB_PARAM = {
:hit => "ACCURACY", # Hit Ratio (Accuracy)
:eva => "EVASION", # Evasion
:cri => "CRITICAL", # Critical
:skill_speed => "SKILL", # Skill Speed
:item_speed => "ITEM SPD", # Item Speed
:odds => "LUCK", # Odds (Luck)
} # <- Do not remove this bracket.
# ? Caption Text ?
# Added by Mr. Anonymous.
# These fields affect the text at the top of the distribution screen.
# Attribute name label.
AT_CAPTION = "Attribute"
# AP cost/rate label.
RT_CAPTION = "Rate"
# Current AP ppent on given attribute label.
SP_CAPTION = "Spent"
# Current status (right window) label.
CS_CAPTION = "Current Status"
# ? Help Window Text ?
# Text of the menu title for the AP Distribution Screen.
DISTRIBUTE_SCENE_CAPTION = ""
# ? Stat Distribution Cost When Maxed ?
# This toggle allows you to remove the characters proceeding the amount of
# points that have been spent on a skill when a growth ceiling on that stat
# is unlimited (see growth tables: MAP). For example, let's say Max HP has
# an umilimited ceiling of growth. Let's say you've spent 3 points in this
# stat so far, so under the "Spent" column, this would normally read 3/---.
# With this toggle set to true, it would instead simply read as 3.
# true : Only the amount currently spent in the stat is displayed.
# false : A line is drawn representing no ceiling to the stat.
HIDE_MAX_COUNT_INFINITE = false
# ? AP Gauge Colors ?
# Allows you to change the color of the guages that appear under the stats
# side bar. The color can also be determined by a numerical expression.
# Example: GAUGE_START_COLOR = Color.new(255, 0, 0) <- This is red.
# This is the fill color for the early phase of the guage.
GAUGE_START_COLOR = 28
# This is the fill color for the late phase of the guage. (When full)
GAUGE_END_COLOR = 29
# ? Menu Command Button & Text ?
# When USE_MENU_DISTRIBUTE_PARAMETER_COMMAND = true,
# the AP Distribution System is added to the menu under "Quit Game".
# When false, it does not. (Obviously)
USE_MENU_DISTRIBUTE_PARAMETER_COMMAND = true
# Allows you to change the text for this button on the main command menu.
VOCAB_MENU_DISTRIBUTE_PARAMETER = "Pontos"
# ? Parameter Re-distribution ?
# This affects whether the player can reassign the parameters that have
# been increased.
# true : Allows the player to reassign AP.
# false : Prevents the player from unassigning AP if set to false.
ENABLE_REVERSE_DISTRIBUTE = false
# ? AP in Status Window ?
# Added by Mr. Anonymous.
# This toggle allows you to enable/disable the AP display on the status
# screen.
SHOW_STATUS_RP = true
# This toggle allows you to adjust the position of the AP display on the
# status screen. (If SHOW_STATUS_RP = true)
# 0. Below Actor's Face Image
# 1. Below Actor's Parameters
SHOW_STATUS_RP_POS = 1
# ? Extra Parameters in Status Window ?
# Added by Mr. Anonymous.
# This toggle allows you to enable/disable the parameters for accuracy,
# evasion, and critical below the regular paramaters (STR, DEF, SPI, AGI)
SHOW_STATUS_EX_PARAMS = true
# ? Call DistributeParameter From Actor Status Window ?
# Added by Mr. Anonymous.
# This allows you to change what key/button is pressed on the status window
# to shift to the DistributeParameter window.
# When set to nil, this is disabled. ( CALL_DISTPARAMKEY = Input::nil )
CALL_DISTPARAMKEY = Input::X # On the keyboard, button X is the A key.
# ? Show Actor Graphic ?
# Added by Mr. Anonymous.
# This toggle allows you to enable/disable the actor sprite in the Distribute
# Parameter window next to the actor name.
# true = Show the sprite.
# false = Do not show.
SHOW_SPRITE = true
end
end
#=============================================================================#
# ? End Customization ? #
#=============================================================================#
#=================================================#
# IMPORT #
#=================================================#
$imported = {} if $imported == nil
$imported["DistributeParameter"] = true
#=================================================#
module KGC::DistributeParameter
# Set up parameter array
PARAMS = [:maxhp, :maxmp, :atk, :def, :spi, :agi, :hit, :eva, :cri,
:skill_speed, :item_speed, :odds]
# Parameter Increase Structure
GainInfo = Struct.new("GainInfo",
:rp_cost, :value, :max_count, :rp_rev, :value_rev)
#--------------------------------------------------------------------------
# ? Create Parameter Increase Structures
#--------------------------------------------------------------------------
def self.create_gain_param_structs(target)
params = {}
target.each { |k, v|
info = GainInfo.new
info.rp_cost = v[0]
info.value = v[1]
info.max_count = v[2]
info.rp_rev = v[3]
info.value_rev = v[4]
params[k] = info
}
return params
end
#--------------------------------------------------------------------------
# ? Create Parameter Increase Structures (For Individual Actors)
#--------------------------------------------------------------------------
def self.create_gain_param_structs_for_personal(target)
params = []
target.each_with_index { |gain_list, i|
next if gain_list == nil
params[i] = create_gain_param_structs(gain_list)
}
return params
end
# Create Parameter Increase Structures
GAIN_PARAMS = create_gain_param_structs(GAIN_PARAMETER)
PERSONAL_GAIN_PARAMS =
create_gain_param_structs_for_personal(PERSONAL_GAIN_PARAMETER)
CLASS_GAIN_PARAMS =
create_gain_param_structs_for_personal(CLASS_GAIN_PARAMETER)
end
#=================================================#
#==============================================================================
# ¦ Vocab
#==============================================================================
module Vocab
def self.hit
return KGC::DistributeParameter::VOCAB_PARAM[:hit]
return $data_system.terms.hit # Added 4/1/08
end
def self.eva
return KGC::DistributeParameter::VOCAB_PARAM[:eva]
return $data_system.terms.eva # Added 4/1/08
end
def self.cri
return KGC::DistributeParameter::VOCAB_PARAM[:cri]
return $data_system.terms.cri # Added 4/1/08
end
def self.skill_speed
return KGC::DistributeParameter::VOCAB_PARAM[:skill_speed]
return $data_system.terms.skill_speed # Added 9/14/08
end
def self.item_speed
return KGC::DistributeParameter::VOCAB_PARAM[:item_speed]
end
def self.odds
return KGC::DistributeParameter::VOCAB_PARAM[:odds]
return $data_system.terms.odds # Added 9/14/08
end
def self.rp
return KGC::DistributeParameter::VOCAB_RP
end
def self.rp_a
return KGC::DistributeParameter::VOCAB_RP_A
end
def self.distribute_parameter
return KGC::DistributeParameter::VOCAB_MENU_DISTRIBUTE_PARAMETER
end
end
#=================================================#
#==============================================================================
# ? KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ? ???????????????????
#--------------------------------------------------------------------------
def check_distribution_values
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.check_distribution_values
actor.restore_distribution_values
}
end
#--------------------------------------------------------------------------
# ? RP ???
# actor_id : ???? ID
# value : ???
#--------------------------------------------------------------------------
def gain_rp(actor_id, value)
actor = $game_actors[actor_id]
return if actor == nil
actor.gain_rp(value)
end
#--------------------------------------------------------------------------
# ? ???????????
# actor_id : ???? ID
#--------------------------------------------------------------------------
def reset_distributed_count(actor_id)
actor = $game_actors[actor_id]
return if actor == nil
actor.clear_distribution_values
actor.restore_distribution_values
end
#--------------------------------------------------------------------------
# ? ????????????????
# actor_index : ??????????
#--------------------------------------------------------------------------
def call_distribute_parameter(actor_index = 0)
return if $game_temp.in_battle
$game_temp.next_scene = :distribute_parameter
$game_temp.next_scene_actor_index = actor_index
end
end
end
#=================================================#
# INCLUDE COMMANDS #
#=================================================#
# Include KGC::Commands in Game_Interpreter #
#=================================================#
class Game_Interpreter
include KGC::Commands
end
#=================================================#
#==============================================================================
# ¦ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
alias clear_extra_values_KGC_DistributeParameter clear_extra_values
def clear_extra_values
clear_extra_values_KGC_DistributeParameter
clear_distribution_values
calc_distribution_values
end
#--------------------------------------------------------------------------
# ? ??????????????????
#--------------------------------------------------------------------------
def clear_distribution_values
@distributed_count = {}
KGC::DistributeParameter::PARAMS.each { |param|
@distributed_count[param] = 0
}
end
#--------------------------------------------------------------------------
# ? ???????????????????
#--------------------------------------------------------------------------
def check_distribution_values
last_distributed_count = @distributed_count
clear_distribution_values
@distributed_count = last_distributed_count if last_distributed_count != nil
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def calc_distribution_values
# ??????
end
#--------------------------------------------------------------------------
# ? ?????????????
# param : ?????? Symbol
#--------------------------------------------------------------------------
def distributed_param(param)
return 0
end
end
#=================================================#
#==============================================================================
# ¦ Game_BattleAction
#==============================================================================
class Game_BattleAction
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias make_speed_KGC_DistributeParameter make_speed
def make_speed
make_speed_KGC_DistributeParameter
if skill?
n = [battler.distributed_param(:skill_speed), skill.speed].min
@speed -= n
end
if item?
n = [battler.distributed_param(:item_speed), item.speed].min
@speed -= n
end
end
end
#=================================================#
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ?????????
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias initialize_KGC_DistributeParameter initialize
def initialize(actor_id)
@actor_id = actor_id
@class_id = $data_actors[actor_id].class_id
initialize_KGC_DistributeParameter(actor_id)
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def gain_parameter_list
result = KGC::DistributeParameter::GAIN_PARAMS
# ??????
list = KGC::DistributeParameter::PERSONAL_GAIN_PARAMS[self.id]
result = result.merge(list) if list != nil
# ????
list = KGC::DistributeParameter::CLASS_GAIN_PARAMS[self.class_id]
result = result.merge(list) if list != nil
return result
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def calc_distribution_values
@rp_cost = 0
@distributed_param = {}
gain_parameter_list.each { |k, v|
next if v == nil
cost = 0
param = 0
distributed_count(k).times { |i|
cost_plus = v.rp_cost
cost_plus += v.rp_rev * i if v.rp_rev != nil
param_plus = v.value
param_plus += v.value_rev * i if v.value_rev != nil
cost += Integer(cost_plus)
param += Integer(param_plus)
}
@rp_cost += [cost, 0].max
@distributed_param[k] = param
}
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def restore_distribution_values
calc_distribution_values
self.hp = self.hp
self.mp = self.mp
end
#--------------------------------------------------------------------------
# ? ?????????????
# param : ?????? Symbol
#--------------------------------------------------------------------------
def distributed_param(param)
return 0 if @distributed_param == nil
return 0 if @distributed_param[param] == nil
return @distributed_param[param]
end
#--------------------------------------------------------------------------
# ? ?? MaxHP ???
#--------------------------------------------------------------------------
alias base_maxhp_KGC_DistributeParameter base_maxhp
def base_maxhp
n = base_maxhp_KGC_DistributeParameter + distributed_param(:maxhp)
return n
end
#--------------------------------------------------------------------------
# ? ?? MaxMP ???
#--------------------------------------------------------------------------
alias base_maxmp_KGC_DistributeParameter base_maxmp
def base_maxmp
n = base_maxmp_KGC_DistributeParameter + distributed_param(:maxmp)
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
alias base_atk_KGC_DistributeParameter base_atk
def base_atk
n = base_atk_KGC_DistributeParameter + distributed_param(:atk)
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
alias base_def_KGC_DistributeParameter base_def
def base_def
n = base_def_KGC_DistributeParameter + distributed_param(:def)
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
alias base_spi_KGC_DistributeParameter base_spi
def base_spi
n = base_spi_KGC_DistributeParameter + distributed_param(:spi)
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
alias base_agi_KGC_DistributeParameter base_agi
def base_agi
n = base_agi_KGC_DistributeParameter + distributed_param(:agi)
return n
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias hit_KGC_DistributeParameter hit
def hit
n = hit_KGC_DistributeParameter + distributed_param(:hit)
return n
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
alias eva_KGC_DistributeParameter eva
def eva
n = eva_KGC_DistributeParameter + distributed_param(:eva)
return n
end
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
alias cri_KGC_DistributeParameter cri
def cri
n = cri_KGC_DistributeParameter + distributed_param(:cri)
return n
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias odds_KGC_DistributeParameter odds
def odds
n = odds_KGC_DistributeParameter + distributed_param(:odds)
return n
end
#--------------------------------------------------------------------------
# ? MaxRP ???
#--------------------------------------------------------------------------
def maxrp
n = Integer(eval(KGC::DistributeParameter::MAXRP_EXP))
return [n + maxrp_plus, 0].max
end
#--------------------------------------------------------------------------
# ? MaxRP ??????
#--------------------------------------------------------------------------
def maxrp_plus
@maxrp_plus = 0 if @maxrp_plus == nil
return @maxrp_plus
end
#--------------------------------------------------------------------------
# ? RP ???
#--------------------------------------------------------------------------
def rp
return [maxrp - @rp_cost, 0].max
end
#--------------------------------------------------------------------------
# ? ?????????
# param : ?????????? (Symbol)
#--------------------------------------------------------------------------
def distributed_count(param)
clear_distribution_values if @distributed_count == nil
@distributed_count[param] = 0 if @distributed_count[param] == nil
return @distributed_count[param]
end
#--------------------------------------------------------------------------
# ? RP ???
# value : ???
#--------------------------------------------------------------------------
def gain_rp(value)
@maxrp_plus = maxrp_plus + value
end
#--------------------------------------------------------------------------
# ? ?????????
# param : ?????????? (Symbol)
# value : ???
#--------------------------------------------------------------------------
def gain_distributed_count(param, value = 1)
n = distributed_count(param)
@distributed_count[param] += value if n.is_a?(Integer)
end
#--------------------------------------------------------------------------
# ? RP ?????????????
# param : ?????????? (Symbol)
# reverse : ??????? true
#--------------------------------------------------------------------------
def rp_growth_effect(param, reverse = false)
gain = gain_parameter_list[param]
return if gain == nil # ????????
if reverse
return if distributed_count(param) == 0 # ?????
else
return unless can_distribute?(param)
end
gain_distributed_count(param, reverse ? -1 : 1)
restore_distribution_values
end
#--------------------------------------------------------------------------
# ? ?????????????
# param : ?????????? (Symbol)
#--------------------------------------------------------------------------
def can_distribute?(param)
gain = gain_parameter_list[param]
return false if gain == nil # ????????
return false if self.rp < distribute_cost(param) # RP ??
if gain.max_count > 0
return false if gain.max_count <= distributed_count(param) # ????
end
return true
end
#--------------------------------------------------------------------------
# ? ??????????????
# param : ?????????? (Symbol)
#--------------------------------------------------------------------------
def distribute_cost(param)
gain = gain_parameter_list[param]
return 0 if gain == nil # ????????
n = gain.rp_cost
if gain.rp_rev != nil
count = distributed_count(param)
count = [count, gain.max_count - 1].min if gain.max_count > 0
n += gain.rp_rev * count
end
return [Integer(n), 0].max
end
#--------------------------------------------------------------------------
# ? ????????????????
# param : ?????????? (Symbol)
#--------------------------------------------------------------------------
def distribute_gain(param)
gain = gain_parameter_list[param]
return 0 if gain == nil # ????????
n = gain.value
if gain.value_rev != nil
count = distributed_count(param)
count = [count, gain.max_count - 1].min if gain.max_count > 0
n += gain.value_rev * count
end
return Integer(n)
end
end
#=================================================#
#==============================================================================
# ¦ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ? RP ???????
# actor : ????
#--------------------------------------------------------------------------
def rp_color(actor)
return (actor.rp == 0 ? knockout_color : normal_color)
end
#--------------------------------------------------------------------------
# ? ????????? 1 ???
#--------------------------------------------------------------------------
def distribute_gauge_color1
color = KGC::DistributeParameter::GAUGE_START_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? ????????? 2 ???
#--------------------------------------------------------------------------
def distribute_gauge_color2
color = KGC::DistributeParameter::GAUGE_END_COLOR
return (color.is_a?(Integer) ? text_color(color) : color)
end
#--------------------------------------------------------------------------
# ? RP ???
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_rp(actor, x, y, width = 120)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 40, WLH, Vocab::rp_a)
self.contents.font.color = rp_color(actor)
xr = x + width
if width < 120
self.contents.draw_text(xr - 40, y, 40, WLH, actor.rp, 2)
else
self.contents.draw_text(xr - 90, y, 40, WLH, actor.rp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxrp, 2)
end
self.contents.font.color = normal_color
end
#--------------------------------------------------------------------------
# ? ??????????
# actor : ????
# param : ?????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_distribute_gauge(actor, param, x, y, width = 120)
gain = actor.gain_parameter_list[param]
return if gain == nil || gain.max_count <= 0
gw = width * actor.distributed_count(param) / gain.max_count
gc1 = distribute_gauge_color1
gc2 = distribute_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
#=============================================================================
# Added by Mr. Anonymous ( 4/1/08 )
# Sets up the initial parameters and the entended/extra parameters.
#=============================================================================
if KGC::DistributeParameter::SHOW_STATUS_EX_PARAMS
alias draw_actor_parameter_KGC_DistributeParameter draw_actor_parameter
def draw_actor_parameter(actor, x, y, type)
draw_actor_parameter_KGC_DistributeParameter(actor, x, y, type)
case type
when 4
parameter_name = Vocab::hit
parameter_value = actor.hit
when 5
parameter_name = Vocab::eva
parameter_value = actor.eva
when 6
parameter_name = Vocab::cri
parameter_value = actor.cri
when 7
parameter_name = Vocab::odds
parameter_value = actor.odds
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, WLH, parameter_value, 2)
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_Command
#==============================================================================
class Window_Command < Window_Selectable
unless method_defined?(:add_command)
#--------------------------------------------------------------------------
# ? ???????
# ?????????
#--------------------------------------------------------------------------
def add_command(command)
@commands << command
@item_max = @commands.size
item_index = @item_max - 1
refresh_command
draw_item(item_index)
return item_index
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def refresh_command
buf = self.contents.clone
self.height = [self.height, row_max * WLH + 32].max
create_contents
self.contents.blt(0, 0, buf, buf.rect)
buf.dispose
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def insert_command(index, command)
@commands.insert(index, command)
@item_max = @commands.size
refresh_command
refresh
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def remove_command(command)
@commands.delete(command)
@item_max = @commands.size
refresh
end
end
end
#=================================================#
#==============================================================================
# ¦ Window_Status
#==============================================================================
# Added by Mr. Anonymous ( 4/1/08 )
# Checks SHOW_STATUS_RP's value, if true RP is added to Status Window.
#==============================================================================
if KGC::DistributeParameter::SHOW_STATUS_RP
class Window_Status < Window_Base
#--------------------------------------------------------------------------
# ? Draw RP in Status Window
# x : Width X - 128 (beneath actor face)
# y : Hight Y (On row + Window_Status Definition)
#--------------------------------------------------------------------------
alias draw_basic_info_KGC_DistributeParameter draw_basic_info
def draw_basic_info(x, y)
# Run original process
draw_basic_info_KGC_DistributeParameter(x, y)
# Checks SHOW_STATUS_RP_POS, if 0, RP is shown beneath face of actor.
if KGC::DistributeParameter::SHOW_STATUS_RP_POS == 0
draw_actor_rp(@actor, x - 129, y + WLH * 4)
end
# If 1, RP is shown under parameters. (Centered)
if KGC::DistributeParameter::SHOW_STATUS_RP_POS == 1
draw_actor_rp(@actor, x - 80, y + WLH * 14 - 6)
end
end
#------------------------------------------------------------------------
# ? Draw Extra (Normally Hidden) Parameters in Status Window
# x : Width X - 128 (beneath actor face)
# y : Hight Y (On row + Window_Status Definition)
# Added by Mr. Anonymous ( 4/1/08 )
#-------------------------------------------------------------------------
alias draw_parameters_KCG_DistributeParameter draw_parameters
def draw_parameters(x, y)
# Run original process
draw_parameters_KCG_DistributeParameter(x, y)
if KGC::DistributeParameter::SHOW_STATUS_EX_PARAMS
draw_actor_parameter(@actor, x, y + WLH * 4, 4)
draw_actor_parameter(@actor, x, y + WLH * 5, 5)
draw_actor_parameter(@actor, x, y + WLH * 6, 6)
draw_actor_parameter(@actor, x, y + WLH * 7, 7)
end
end
end
end
#=================================================#
#==============================================================================
# ? Window_DistributeParameterActor
#------------------------------------------------------------------------------
# ????????????????????????????
#==============================================================================
class Window_DistributeParameterActor < Window_Base
#--------------------------------------------------------------------------
# ? ?????????
# x : ?????? X ??
# y : ?????? Y ??
# actor : ????
#--------------------------------------------------------------------------
def initialize(x, y, actor)
super(x, y, Graphics.width, WLH + 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_name(@actor, 32, 0)
draw_actor_level(@actor, 264, 0)
draw_actor_rp(@actor, 372, 0)
# Include actor class
# Added by Mr. Anonymous ( 4/1/08 )
draw_actor_class(@actor, 152, 0)
# Method for displaying actor's sprite
# Added by Mr. Anonymous ( 4/1/08 )
if KGC::DistributeParameter::SHOW_SPRITE
draw_actor_graphic(@actor, 14, 31)
end
end
end
#=================================================#
#==============================================================================
# ? Window_DistributeParameterList
#------------------------------------------------------------------------------
# ???????????????????????????????
#==============================================================================
class Window_DistributeParameterList < Window_Selectable
#--------------------------------------------------------------------------
# ? ?????????
# actor : ????
#--------------------------------------------------------------------------
def initialize(actor)
off_h = (WLH + 32) * 2
super(0, off_h, Graphics.width / 2 + 80, Graphics.height - off_h)
@actor = actor
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ? ?????????? Symbol ???
#--------------------------------------------------------------------------
def parameter_symbol
return @data[self.index]
end
#--------------------------------------------------------------------------
# ? 1 ??????????????
#--------------------------------------------------------------------------
def page_row_max
return super - 1
end
#--------------------------------------------------------------------------
# ? ????????????
# index : ????
#--------------------------------------------------------------------------
def item_rect(index)
rect = super(index)
rect.y += WLH
return rect
end
#--------------------------------------------------------------------------
# ? ????? 1 ????????
#--------------------------------------------------------------------------
def cursor_pagedown
return if Input.repeat?(Input::R)
super
end
#--------------------------------------------------------------------------
# ? ????? 1 ???????
#--------------------------------------------------------------------------
def cursor_pageup
return if Input.repeat?(Input::L)
super
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@data = []
gain_params = @actor.gain_parameter_list
KGC::DistributeParameter::PARAMS.each { |param|
next if gain_params[param] == nil
@data << param
}
@item_max = @data.size + 1
create_contents
@item_max -= 1
draw_caption
@item_max.times { |i| draw_item(i, @actor.can_distribute?(@data[i])) }
end
#--------------------------------------------------------------------------
# ? Draw Captions
# Editted by Mr. Anonymous
#--------------------------------------------------------------------------
def draw_caption
self.contents.font.color = system_color
# This is shown at the top of the column that lists the stats.
self.contents.draw_text( 4, 0, 96, WLH, KGC::DistributeParameter::AT_CAPTION)
self.contents.draw_text(120, 0, 40, WLH, Vocab.rp, 2)
# This is shown at the top of the column that lists the number of stat points
# you will gain from buying the next point of the parameter.
self.contents.draw_text(170, 0, 60, WLH, KGC::DistributeParameter::RT_CAPTION, 2)
# This is shown at the top of the column that lists the current and max
# points you have in each parameter.
self.contents.draw_text(240, 0, 80, WLH, KGC::DistributeParameter::SP_CAPTION, 2)
self.contents.font.color = normal_color
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
# enabled : ?????
#--------------------------------------------------------------------------
def draw_item(index, enabled = true)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
draw_parameter(rect.x, rect.y, @data[index], enabled)
end
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
# type : ??????
# enabled : ?????
#--------------------------------------------------------------------------
def draw_parameter(x, y, type, enabled)
case type
when :maxhp
name = Vocab.hp
when :maxmp
name = Vocab.mp
when :atk
name = Vocab.atk
when :def
name = Vocab.def
when :spi
name = Vocab.spi
when :agi
name = Vocab.agi
when :hit
name = Vocab.hit
when :eva
name = Vocab.eva
when :cri
name = Vocab.cri
when :skill_speed
name = Vocab.skill_speed
when :item_speed
name = Vocab.item_speed
when :odds
name = Vocab.odds
else
return
end
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 4, y, 96, WLH, name)
gain = @actor.gain_parameter_list[type]
value = @actor.distribute_cost(type)
self.contents.draw_text(x + 120, y, 40, WLH, value, 2)
value = sprintf("%+d", @actor.distribute_gain(type))
self.contents.draw_text(x + 190, y, 40, WLH, value, 2)
if gain.max_count > 0
value = sprintf("%3d/%3d", @actor.distributed_count(type), gain.max_count)
else
value = sprintf("%3d%s", @actor.distributed_count(type),
KGC::DistributeParameter::HIDE_MAX_COUNT_INFINITE ? "" : "/---")
end
self.contents.draw_text(x + 236, y, 80, WLH, value, 2)
self.contents.font.color = normal_color
end
end
#=================================================#
#==============================================================================
# ? Window_DistributeParameterStatus
#------------------------------------------------------------------------------
# ???????????????????????????????
#==============================================================================
class Window_DistributeParameterStatus < Window_Base
#--------------------------------------------------------------------------
# ? ?????????
# actor : ????
#--------------------------------------------------------------------------
def initialize(actor)
dx = Graphics.width / 2 + 80
off_h = (WLH + 32) * 2
super(dx, off_h, Graphics.width - dx, Graphics.height - off_h)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ? Refresh
#--------------------------------------------------------------------------
def refresh
original_height = self.height
self.height = WLH * (existing_params.size + 1) + 32
create_contents
self.height = original_height
self.contents.font.color = system_color
# Editted by Mr. Anonymous
# This allows you to change the text that appears on top of the right panel
# which contains current parameter changes.
self.contents.draw_text(0, 0, width - 32, WLH, KGC::DistributeParameter::CS_CAPTION, 1)
self.contents.font.color = normal_color
dy = WLH
existing_params.each { |param|
draw_parameter(0, dy, param)
dy += WLH
}
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def existing_params
result = []
gain_params = @actor.gain_parameter_list
KGC::DistributeParameter::PARAMS.each { |param|
next if gain_params[param] == nil
result << param
}
return result
end
#--------------------------------------------------------------------------
# ? ??????
# x : ??? X ??
# y : ??? Y ??
# type : ??????
#--------------------------------------------------------------------------
def draw_parameter(x, y, type)
case type
when :maxhp
name = Vocab.hp
value = @actor.maxhp
when :maxmp
name = Vocab.mp
value = @actor.maxmp
when :atk
name = Vocab.atk
value = @actor.atk
when :def
name = Vocab.def
value = @actor.def
when :spi
name = Vocab.spi
value = @actor.spi
when :agi
name = Vocab.agi
value = @actor.agi
when :hit
name = Vocab.hit
value = @actor.hit
when :eva
name = Vocab.eva
value = @actor.eva
when :cri
name = Vocab.cri
value = @actor.cri
when :skill_speed
name = Vocab.skill_speed
value = @actor.distributed_param(type)
when :item_speed
name = Vocab.item_speed
value = @actor.distributed_param(type)
when :odds
name = Vocab.odds
value = @actor.odds
else
return
end
draw_actor_distribute_gauge(@actor, type, x + 106, y, 48)
self.contents.font.color = system_color
self.contents.draw_text(x + 4, y, 96, WLH, name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 106, y, 48, WLH, value, 2)
end
end
#=================================================#
#==============================================================================
# ¦ Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_scene_change_KGC_DistributeParameter update_scene_change
def update_scene_change
return if $game_player.moving? # ??????????
if $game_temp.next_scene == :distribute_parameter
call_distribute_parameter
return
end
update_scene_change_KGC_DistributeParameter
end
#--------------------------------------------------------------------------
# ? ?????????????????
#--------------------------------------------------------------------------
def call_distribute_parameter
$game_temp.next_scene = nil
$scene = Scene_DistributeParameter.new(
$game_temp.next_scene_actor_index,
0,
Scene_DistributeParameter::HOST_MAP)
end
end
#=================================================#
#==============================================================================
# ¦ Scene_Menu
#==============================================================================
class Scene_Menu < Scene_Base
if KGC::DistributeParameter::USE_MENU_DISTRIBUTE_PARAMETER_COMMAND
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
alias create_command_window_KGC_DistributeParameter create_command_window
def create_command_window
create_command_window_KGC_DistributeParameter
return if $imported["CustomMenuCommand"]
@__command_distribute_parameter_index =
@command_window.add_command(Vocab.distribute_parameter)
if @command_window.oy > 0
@command_window.oy -= Window_Base::WLH
end
@command_window.index = @menu_index
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_command_selection_KGC_DistributeParameter update_command_selection
def update_command_selection
call_distribute_parameter_flag = false
if Input.trigger?(Input::C)
case @command_window.index
when @__command_distribute_parameter_index # ?????????
call_distribute_parameter_flag = true
end
end
# ??????????????
if call_distribute_parameter_flag
if $game_party.members.size == 0
Sound.play_buzzer
return
end
Sound.play_decision
start_actor_selection
return
end
update_command_selection_KGC_DistributeParameter
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias update_actor_selection_KGC_DistributeParameter update_actor_selection
def update_actor_selection
if Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when @__command_distribute_parameter_index # ?????????
$scene = Scene_DistributeParameter.new(
@status_window.index,
@__command_distribute_parameter_index,
Scene_DistributeParameter::HOST_MENU)
return
end
end
update_actor_selection_KGC_DistributeParameter
end
end
#=================================================#
#==============================================================================
# ? Scene_DistributeParameter
#------------------------------------------------------------------------------
# ???????????????????????
#==============================================================================
class Scene_DistributeParameter < Scene_Base
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
HOST_MENU = 0 # ????? : ????
HOST_MAP = 1 # ????? : ???
#--------------------------------------------------------------------------
# ? ?????????
# actor_index : ??????????
# menu_index : ?????????????
# host_scene : ????? (0..???? 1..???)
#--------------------------------------------------------------------------
def initialize(actor_index = 0, menu_index = 0, host_scene = HOST_MENU)
@actor_index = actor_index
@menu_index = menu_index
@host_scene = host_scene
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
create_windows
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def create_windows
@help_window = Window_Help.new
@help_window.set_text(KGC::DistributeParameter::DISTRIBUTE_SCENE_CAPTION)
dy = @help_window.height
@actor_window = Window_DistributeParameterActor.new(0, dy, @actor)
@parameter_window = Window_DistributeParameterList.new(@actor)
@status_window = Window_DistributeParameterStatus.new(@actor)
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@actor_window.dispose
@parameter_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def return_scene
case @host_scene
when HOST_MENU
$scene = Scene_Menu.new(@menu_index)
when HOST_MAP
$scene = Scene_Map.new
end
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
update_menu_background
update_window
if @parameter_window.active
update_parameter_list
end
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def update_window
@help_window.update
@actor_window.update
@parameter_window.update
@status_window.update
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def refresh_window
@actor_window.refresh
@parameter_window.refresh
@status_window.refresh
Graphics.frame_reset
end
#--------------------------------------------------------------------------
# ? ??????????????
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_DistributeParameter.new(@actor_index,
@menu_index, @host_scene)
end
#--------------------------------------------------------------------------
# ? ??????????????
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_DistributeParameter.new(@actor_index,
@menu_index, @host_scene)
end
#--------------------------------------------------------------------------
# ? ?????? (???????????????????)
#--------------------------------------------------------------------------
def update_parameter_list
@status_window.oy = @parameter_window.oy
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif input_growth?
# ??
param = @parameter_window.parameter_symbol
unless @actor.can_distribute?(param)
Sound.play_buzzer
return
end
Input.repeat?(Input::C) ? Sound.play_decision : Sound.play_cursor
@actor.rp_growth_effect(param)
refresh_window
elsif input_reverse_growth?
# ??
param = @parameter_window.parameter_symbol
if @actor.distributed_count(param) == 0
Sound.play_buzzer
return
end
Input.repeat?(Input::A) ? Sound.play_decision : Sound.play_cursor
@actor.rp_growth_effect(param, true)
refresh_window
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def input_growth?
if KGC::DistributeParameter::ENABLE_REVERSE_DISTRIBUTE
return Input.repeat?(Input::C) || Input.repeat?(Input::RIGHT)
else
return Input.trigger?(Input::C)
end
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def input_reverse_growth?
if KGC::DistributeParameter::ENABLE_REVERSE_DISTRIBUTE
return Input.repeat?(Input::A) || Input.repeat?(Input::LEFT)
else
return false
end
end
end
#=================================================#
#==============================================================================
# ¦ Scene_Status
#==============================================================================
# Added by Mr. Anonymous
#==============================================================================
class Scene_Status < Scene_Base
#--------------------------------------------------------------------------
# ? Update Actor
#--------------------------------------------------------------------------
alias update_KGC_DistributeParameter update
def update
# If the key assigned for calling distribute parameter from the status
# screen is assigned and pressed, called the DistributeParameter scene.
if KGC::DistributeParameter::CALL_DISTPARAMKEY != nil &&
Input.trigger?(KGC::DistributeParameter::CALL_DISTPARAMKEY)
Sound.play_decision
$scene = Scene_DistributeParameter.new(@actor_index)
end
# Run original process
update_KGC_DistributeParameter
end
end
#=================================================#
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? Read Saved Data
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_DistributeParameter read_save_data
def read_save_data(file)
read_save_data_KGC_DistributeParameter(file)
KGC::Commands.check_distribution_values
Graphics.frame_reset
end
end
Hellriiser- Membro
- Mensagens : 2
Fama : 0
Re: Menu Horizontal
Poo pena que tem poucos ou nenhum scripter ativo aqui no forum!
DragomMaster- Membro
- Mensagens : 386
Fama : 59
Re: Menu Horizontal
que eu saiba o drizz tem um pouco de conhecimento de scripts.. (ele fez um ant lag..) talvez ele possa te ajudar!
mas, o q vc quer saber sobre esse script?? explique melhor.. =/
mas, o q vc quer saber sobre esse script?? explique melhor.. =/
Knuckles- Administrador
- Mensagens : 1420
Fama : 60
Re: Menu Horizontal
Vlw pela ajuda aew galera
jah consegui o menu
jah consegui o menu
Hellriiser- Membro
- Mensagens : 2
Fama : 0
Tópicos semelhantes
» Gold Menu Mod Mog Menu Yui
» Tela título horizontal BDSS ~ 2.0
» Menu de um personagem
» Menu Principal
» New Style Menu
» Tela título horizontal BDSS ~ 2.0
» Menu de um personagem
» Menu Principal
» New Style Menu
Brasil G4mes :: Scripts :: Scripts RGSS2
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos