Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
| Sujet: [Résolu][Script]Probleme avec KGC Distribution de AP + resistance Mar 27 Juil 2010 - 14:23 | |
| Bonjour voila j'ai une problème avec ce script que voici - Spoiler:
- Code:
-
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_ #_/◆ Attribute Point Stat Distribution - KGC_DistributeParameter ◆ VX ◆ #_/◇ Last Update: 2008/04/10 ◇ #_/◆ Original translation by Mr. Anonymous ◆ #_/◆ Extended annotation and updates by Touchfuzzy ◆ #-/◆ Luck/Resistance script by Enelvon ◆ #-/◆ Luck/Resistance Display Modification by Cyrus ◆ #-/◆ ◆ #-/◆ ◆ #_/----------------------------------------------------------------------------- #_/ ◆ 2008/04/10 UPDATE [MRA] ◆ #_/ Added toggle to display actor sprites in the Distribute Parameter window #_/ next to the actor name. Also included actor's class in the same window. #_/ Added by Mr. Anonymous #_/----------------------------------------------------------------------------- #_/ ◆ 2008/04/01 UPDATE [MRA] ◆ #_/ Added toggle to display actor's AP and position on the status screen, and #_/ toggle to enable the display of Accuracy, Evasion, and Critical parameters #_/ on the status screen. #_/----------------------------------------------------------------------------- #_/ ◆ 2008/03/23 UPDATE [KGC] ◆ #_/ Updated to latest version of KGC script. Fixes a bug in the calculation #_/ of Max Ap. #_/----------------------------------------------------------------------------- #_/ ◆ 2008/03/10 UPDATE [TF] ◆ #_/ Level-based maximums moved into GAIN_PARAMETERS charts and MAXRP equation #_/ moved into GAIN_PARAMETERS charts so that it can be changed for each #_/ character/class. #_/----------------------------------------------------------------------------- #_/ ◆ 2008/03/09 UPDATE [TF] ◆ #_/ Level-based maximums & separate maxes for current status bars. #_/----------------------------------------------------------------------------- #_/ ◆ 2008/03/08 UPDATE [KGC] ◆ #_/ Updated to the newest KGC version through the efforts of Touchfuzzy, #_/ which added Class-specific parameter tables and other features/fixes. #_/============================================================================= #_/ ◆ 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. #_/ #_/============================================================================= #_/ Installation: Insert this script above Main. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#==============================================================================# # ★ 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, SBM] # 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. # Example: "level" # # 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. # # A Touchfuzzy Update # SBM = Separate Bar Maximum. This will let you use a different maximum for # the bar in the current status section. Useful if using a level based # MAP and wish to show the bar at max level instead of current. If # this is omitted the script instead uses the MAP (or the result of the # equation your maximum is based on). # # 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. # ◆ AP Gain Rate ◆ # I added this in to the GAIN_PARAMETER tables so that you can use seperate # equations for different characters and classes. # 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 # :maxrpexp = "level * 3"
GAIN_PARAMETER = { :maxhp => [1, 4, 200, 0, 0], # Maximum HP :maxmp => [1, 2, 100, 0, 0], # Maximum MP :atk => [1, 1, 100, 0, 0], # Attack :def => [1, 1, 100, 0, 0], # Defense :spi => [1, 1, 100, 0, 0], # Spirit (AKA Intelligence) :res => [1, 1, 100, 0, 0], # Agility :agi => [1, 1, 100, 0], # Hit Percentage (AKA Accuracy) :lck => [1, 1, 100, 0], # Evasion :hit => [3, 1, 20, 0], # Critical :eva => [3, 1, 20, 0], # Resistance :cri => [3, 1, 20, 0], # Luck :maxrpexp => ["level * 8"] # Max AP }
# ◆ 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], # :maxrpexp => ["(level ** 0.25 + 2.0) * level"] # } PERSONAL_GAIN_PARAMETER = [] # Do not remove or alter this! # ★ 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 = [] # Do not remove or alter this! # ★ 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"
# ◆ Extended Vocabulary ◆ # Allows you to change the text of Hit Ratio, Evasion, and Critical on the # distribution screen. VOCAB_PARAM = { :hit => "Accuracy%", # Hit Ratio :eva => "Evasion%", # Evasion :cri => "Critical%", # Criticals :res => "Resistance", :lck => "Luck", } # Text of the menu title for the AP Distribution Screen. DISTRIBUTE_SCENE_CAPTION = "Attribute Distribution - Press Q or W to switch characters."
# 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 = "Distribute"
# ◆ Parameter Re-distribution ◆ # This affects whether the player can delevel 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 ◆ # The following four features have been scripted by Mr. Anonymous. # This toggle allows you to enable/disable the AP display on the status # screen. SHOW_STATUS_RP = false # 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 = 0
# ◆ Extra Parameters in Status Window ◆ # 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 the Status Window ◆ # 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 ◆ # 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 = false
end end
#------------------------------------------------------------------------------#
$imported = {} if $imported == nil $imported["DistributeParameter"] = true
module KGC::DistributeParameter PARAMS = [:maxhp, :maxmp, :atk, :def, :spi, :res, :agi, :lck, :hit, :eva, :cri] 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.res return KGC::DistributeParameter::VOCAB_PARAM[:res] return $data_system.terms.res end
def self.lck return KGC::DistributeParameter::VOCAB_PARAM[:lck] return $data_system.terms.lck 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::Commands module_function
def check_distribution_values (1...$data_actors.size).each { |i| actor = $game_actors[i] actor.check_distribution_values actor.calc_distribution_values } end
def gain_rp(actor_id, value) actor = $game_actors[actor_id] return if actor == nil actor.gain_rp(value) end
def reset_distributed_count(actor_id) actor = $game_actors[actor_id] return if actor == nil actor.clear_distribution_values actor.calc_distribution_values end
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
#============================================================================== # ■ Game_Interpreter #==============================================================================
class Game_Interpreter include KGC::Commands end
#==================================End Class===================================#
#============================================================================== # ■ 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 end
#==================================End Class===================================#
#============================================================================== # ■ Game_Actor #==============================================================================
class Game_Actor < Game_Battler
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_PARAMETER list = KGC::DistributeParameter::PERSONAL_GAIN_PARAMETER[self.id] result = result.merge(list) if list != nil list = KGC::DistributeParameter::CLASS_GAIN_PARAMETER[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[0] cost_plus += v[3] * i if v[3] != nil param_plus = v[1] param_plus += v[4] * i if v[4] != nil cost += Integer(cost_plus) param += Integer(param_plus) } @rp_cost += [Integer(cost), 0].max @distributed_param[k] = Integer(param) # (Original) #@rp_cost += [Integer(cost), 0].max #@distributed_param[k] = Integer(param) } end
def distributed_param(param) return 0 if @distributed_param == nil return 0 if @distributed_param[param] == nil return @distributed_param[param] end
alias base_maxhp_KGC_DistributeParameter base_maxhp def base_maxhp n = base_maxhp_KGC_DistributeParameter + distributed_param(:maxhp) return n end
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 lck_KGC_DistributeParameter lck def lck n = lck_KGC_DistributeParameter + distributed_param(:lck) return n end
alias res_KGC_DistributeParameter res def res n = res_KGC_DistributeParameter + distributed_param(:res) return n end
def maxrp gain = gain_parameter_list[:maxrpexp] n = Integer(eval(gain[0])) return [n + maxrp_plus, 0].max end
=begin (Original) def maxrp n = Integer(eval(KGC::DistributeParameter::MAXRP_EXP)) return [n + maxrp_plus, 0].max end =end
def maxrp_plus @maxrp_plus = 0 if @maxrp_plus == nil return @maxrp_plus end
def rp return [maxrp - @rp_cost, 0].max end
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
def gain_rp(value) @maxrp_plus = maxrp_plus + value end
def gain_distributed_count(param, value = 1) n = distributed_count(param) @distributed_count[param] += value if n.is_a?(Integer) end
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) calc_distribution_values end
def can_distribute?(param) gain = gain_parameter_list[param] # (Original) if gain[2] < 0 gain[2] = gain[2] * -1 n = Integer(eval(KGC::DistributeParameter::LEVEL_MAX_DISTRIBUTABLE[gain[2]])) gain[2] = n end return false if gain == nil return false if self.rp < distribute_cost(param) return false if gain[2] <= distributed_count(param)
return true end
def distribute_cost(param) gain = gain_parameter_list[param] return 0 if gain == nil
n = gain[0] n += gain[3] * distributed_count(param) if gain[3] != nil return [Integer(n), 0].max end
def distribute_gain(param) gain = gain_parameter_list[param] return 0 if gain == nil
n = gain[1] n += gain[4] * distributed_count(param) if gain[4] != nil return Integer(n) end end
#==================================End Class===================================#
#============================================================================== # ■ Window_Base #==============================================================================
class Window_Base < Window
def rp_color(actor) return (actor.rp == 0 ? knockout_color : normal_color) end
def distribute_gauge_color1 color = KGC::DistributeParameter::GAUGE_START_COLOR return (color.is_a?(Integer) ? text_color(color) : color) end
def distribute_gauge_color2 color = KGC::DistributeParameter::GAUGE_END_COLOR return (color.is_a?(Integer) ? text_color(color) : color) end
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
def draw_actor_distribute_gauge(actor, param, x, y, width = 120) gain = actor.gain_parameter_list[param] return if gain == nil if gain[5] == nil n = 2 else n = 5 end gw = width * actor.distributed_count(param) / [gain[n], 1].max 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) case type when 0 parameter_name = Vocab::atk parameter_value = actor.atk when 1 parameter_name = Vocab::def parameter_value = actor.def when 2 parameter_name = Vocab::spi parameter_value = actor.spi when 3 parameter_name = Vocab::res parameter_value = actor.res when 4 parameter_name = Vocab::agi parameter_value = actor.agi when 5 parameter_name = Vocab::lck parameter_value = actor.lck when 6 parameter_name = Vocab::hit parameter_value = actor.hit when 7 parameter_name = Vocab::eva parameter_value = actor.eva when 8 parameter_name = Vocab::cri parameter_value = actor.cri
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
#==================================End Class===================================#
#============================================================================== # ■ 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
#==================================End Class===================================#
#============================================================================== # ■ 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) 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 * 13) end end 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 ) #-------------------------------------------------------------------------- if KGC::DistributeParameter::SHOW_STATUS_EX_PARAMS class Window_Status < Window_Base alias draw_parameters_KCG_DistributeParameter draw_parameters def draw_parameters(x, y) draw_actor_parameter(@actor, x, y + WLH * 0, 0) draw_actor_parameter(@actor, x, y + WLH * 1, 1) draw_actor_parameter(@actor, x, y + WLH * 2, 2) draw_actor_parameter(@actor, x, y + WLH * 3, 3) 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) draw_actor_parameter(@actor, x, y + WLH * 8, 8)
end end end
#==================================End Class===================================#
#============================================================================== # □ Window_DistributeParameterActor #==============================================================================
class Window_DistributeParameterActor < Window_Base
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_class(@actor, 152, 0) draw_actor_level(@actor, 264, 0) draw_actor_rp(@actor, 372, 0) # Method for displaying actor's sprite if KGC::DistributeParameter::SHOW_SPRITE draw_actor_graphic(@actor, 14, 31) end end end
#==================================End Class===================================#
#============================================================================== # □ Window_DistributeParameterList #==============================================================================
class Window_DistributeParameterList < Window_Selectable
def initialize(actor) off_h = (WLH + 24) * 2 ##was 32 instead of 24 super(0, off_h, Graphics.width / 2 + 80, Graphics.height - off_h) @actor = actor refresh self.index = 0 end
def parameter_symbol return @data[self.index] 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
def page_row_max return super - 1 end
def item_rect(index) rect = super(index) rect.y += WLH return rect end
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, "Attribute") 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, "Rate", 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, "Spent", 2) self.contents.font.color = normal_color end
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
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 :res name = Vocab.res when :agi name = Vocab.agi when :lck name = Vocab.lck when :hit name = Vocab.hit when :eva name = Vocab.eva when :cri name = Vocab.cri 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) value = sprintf("%3d/%3d", @actor.distributed_count(type), gain[2]) self.contents.draw_text(x + 236, y, 80, WLH, value, 2) self.contents.font.color = normal_color end end
#==================================End Class===================================#
#============================================================================== # □ Window_DistributeParameterStatus #==============================================================================
class Window_DistributeParameterStatus < Window_Base
def initialize(actor) dx = Graphics.width / 2 + 80 off_h = (WLH + 24) * 2 super(dx, off_h, Graphics.width - dx, Graphics.height - off_h) @actor = actor refresh end
def refresh self.contents.clear self.contents.font.color = system_color # 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, "Current Status", 1) self.contents.font.color = normal_color dy = WLH gain_params = @actor.gain_parameter_list KGC::DistributeParameter::PARAMS.each { |param| next if gain_params[param] == nil draw_parameter(0, dy, param) dy += WLH # - 2 } end
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 :res name = Vocab.res value = @actor.res when :agi name = Vocab.agi value = @actor.agi when :lck name = Vocab.lck value = @actor.lck when :hit name = Vocab.hit value = @actor.hit when :eva name = Vocab.eva value = @actor.eva when :cri name = Vocab.cri value = @actor.cri 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
#==================================End Class===================================#
#============================================================================== # ■ 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
#==================================End Class===================================#
#============================================================================== # ■ 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 # distribute parameter 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
#==================================End Class===================================#
#============================================================================== # □ Scene_DistributeParameter #==============================================================================
class Scene_DistributeParameter < Scene_Base
HOST_MENU = 0 # former: Menu HOST_MAP = 1 # Former: Map
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 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
#==================================End Class===================================#
#============================================================================== # ■ Scene_File #==============================================================================
class Scene_File < Scene_Base
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
#==================================End Class===================================#
#============================================================================== # ■ Scene_Status #============================================================================== # Added by Mr. Anonymous #============================================================================== class Scene_Status < Scene_Base #-------------------------------------------------------------------------- # � Update Actor #-------------------------------------------------------------------------- alias update_KGC_DistributeParameter update def update if KGC::DistributeParameter::CALL_DISTPARAMKEY != nil && Input.trigger?(KGC::DistributeParameter::CALL_DISTPARAMKEY) Sound.play_decision $scene = Scene_DistributeParameter.new(@actor_index)#,@menu_index,@host_scene end update_KGC_DistributeParameter end end
#==================================End Class===================================#
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_ #_/ The original untranslated version of this script can be found here: # http://f44.aaa.livedoor.jp/~ytomy/tkool/rp...ibute_parameter #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Le problème viens de cette ligne 479 - Code:
-
alias lck_KGC_DistributeParameter lck def lck n = lck_KGC_DistributeParameter + distributed_param(:lck) return n end Les points de chance (lck) font plantés le jeu, je ne sais pour quel raison aussi ce script rajoute la statistique défense magique. Si je supprime les données de la chance le script marche bien, mais ça fait tâche. Donc je voudrais savoir si une personne pouvait résoudre ce problème merci d'avance. =)
Dernière édition par CloudStrife le Mar 27 Juil 2010 - 16:32, édité 2 fois |
|