Je voudrai qu'à la place de Précision, évasion, Critique et chance mettre des icons au lieu d'un mot. Merci d'avance. =)
Garruk
Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
Sujet: Re: Petite modification de script Mer 28 Juil 2010 - 14:06
Voilà j'ai essayé de toucher au script j'ai réussi à rajouté la RES mais pour les ICON c'est une autre affaire.
Spoiler:
Code:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_ #_/ ◆ Attribute Point Stat Distribution - KGC_DistributeParameter ◆ VX ◆ #_/ ◇ Last Update: 2008/09/13 ◇ #_/ ◆ Translation by Mr. Anonymous ◆ #_/ ◆ Extended Annotation by Touchfuzzy ◆ #_/ ◆ Extended Updates by MrAnonymous & Touchfuzzy ◆ #_/ ◆ KGC Site: ◆ #_/ ◆ http://f44.aaa.livedoor.jp/~ytomy/ ◆ #_/ ◆ 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. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
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. # 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. # # 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. GAIN_PARAMETER = { # Parameter IPC, IPSG, MAP, PCI, PSGI :maxhp => [1, 5, 999, 0,], # Maximum HP :maxmp => [1, 2, 999, 0], # Maximum MP :atk => [1, 1, 999, 0], # Attack :def => [1, 1, 999, 0], # Defense :spi => [1, 1, 999, 0], # Spirit :res => [1, 1, 999, 0], # Res :agi => [1, 1, 999, 0], # Agility :eva => [1, 1, 50, 0], # Evasion :cri => [1, 1, 50, 0], # Critical :odds => [1, 1, 20, 0], # Luck (Chance of being targetted) # ◆ AP Gain Rate ◆ # Added by Touchfuzzy. # 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" :maxrpexp => ["(level ** 0 + 4.0) * level"], # Max AP } # <- Do not remove!
# ◆ 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 = "Coût" # VOCAB_RP_A appears next to where it lists your current and total AP. VOCAB_RP_A = "PC"
# ◆ 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 => "Précision", # Hit Ratio (Accuracy) :eva => "Evasion", # Evasion :cri => "Critique", # Critical :res => "Esprit", :skill_speed => "Vitesse Magie", # Skill Speed :item_speed => "Vitesse Objets", # Item Speed :odds => "Chance", # Odds (Luck) } # <- Do not remove!
# This is all of the icon information for the first page. ICON_MAXHP = 142 # If a stat is higher than base stat. ICON_MAXMP = 143 # If a stat is lower than base stat. ICON_ATK = 11603 # Icon for ATK ICON_DEF = 11604 # Icon for DEF ICON_SPI = 11605 # Icon for SPI ICON_AGI = 11607 # Icon for AGI ICON_RES = 11606 # Icon for HIT ICON_EVA = 11610 # Icon for EVA ICON_CRI = 11611 # Icon for CRI ICON_ODDS = 11613 # Icon for ODD
# ◆ Caption Text ◆ # These fields affect the text at the top of the distribution screen. # Attribute name label. AT_CAPTION = "Caractéristique" # AP cost/rate label. RT_CAPTION = "Bonus" # Current AP ppent on given attribute label. SP_CAPTION = "Total" # Current status (right window) label. CS_CAPTION = "Statut Actuel"
# ◆ Help Window Text ◆ # Text of the menu title for the AP Distribution Screen. DISTRIBUTE_SCENE_CAPTION = "Caractéristiques - Appuyez sur <Q> ou <W> pour changer de Personnage"
# ◆ 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 = false # Allows you to change the text for this button on the main command menu. VOCAB_MENU_DISTRIBUTE_PARAMETER = "Aptitude"
# ◆ 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 ◆ # 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
# Pour activé ou désactivé les Icons dans le menu USE_ICONS = true
# ◆ 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::CTRL # 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 = false end end
#=============================================================================# # ★ End Customization ★ # #=============================================================================#
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_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 #=================================================#
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_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 += [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 res_KGC_DistributeParameter res def res n = res_KGC_DistributeParameter + distributed_param(:res) 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 の取得 - Method rewritten by Touchfuzzy #-------------------------------------------------------------------------- def maxrp gain = gain_parameter_list[:maxrpexp] n = Integer(eval(gain[0])) 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 不足 return false if gain[2] <= distributed_count(param) # 回数上限
return true end #-------------------------------------------------------------------------- # ○ パラメータ振り分けコスト計算 # param : 振り分け先パラメータ (Symbol) #-------------------------------------------------------------------------- def distribute_cost(param) gain = gain_parameter_list[param] return 0 if gain == nil # 無効なパラメータ
n = gain[0] if gain[3] != nil count = [distributed_count(param), gain[2] - 1].min n += gain[3] * 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[1] if gain[4] != nil count = [distributed_count(param), gain[2] - 1].min n += gain[4] * count end return Integer(n) 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) 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) 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
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
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 #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ● 1 ページに表示できる行数の取得 #-------------------------------------------------------------------------- def page_row_max return super - 1 end #-------------------------------------------------------------------------- # ● 項目を描画する矩形の取得 # index : 項目番号 #-------------------------------------------------------------------------- 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, 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 :res name = Vocab.res 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
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
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, 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
Garruk
Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
Sujet: Re: Petite modification de script Mer 28 Juil 2010 - 14:07
2éme post car le script est trop long enfin avec les modifs que j'ai apporté.
Spoiler:
Code:
#-------------------------------------------------------------------------- # ○ 存在するパラメータの一覧 #-------------------------------------------------------------------------- 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 :res name = Vocab.res value = @actor.res 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
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
@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 KGC::DistributeParameter::CALL_DISTPARAMKEY != nil && Input.trigger?(KGC::DistributeParameter::CALL_DISTPARAMKEY) Sound.play_decision $scene = Scene_DistributeParameter.new(@actor_index) end update_KGC_DistributeParameter end end