Afin d'éviter le Nécropost et pour que ce soit plus clair je me permet d'ouvrir un nouveau sujet afin de partager ce script que j'ai traduit un minimum
Auteur: KGC
Source: Démo: KGC Scripts Library (j'ai piqué le script dans la démo dont le lien ce trouve sur le forum mais je n'arrive pas à retrouver où !)
Traduction: Delvan (moi même) je n'ai pas traduit entiérement le script mais seulement les éléments qui apparaissent en jeu !
EXPLICATIONS:
Ce script permet d'Ajouter un sous-menu "Caractéristiques" dans le menu !
Quézaco me direz vous ????
Et bien en quelques mots: lorsqu'un héros monte de Niveau, il gagne également des points de Caractéristiques (que nous nommerons ici PC) qu'il peut ensuite dépenser dans ce menu afin de s'octroyer des bonus !
C'est plutôt simple n'est ce pas !
Voicis quelques screens de la chose:
delvan32
Poulet carnivore Lv.2
Age : 33 Inscrit le : 30/12/2009 Messages : 16
Sujet: Re: [VX] Distribution des points de Caractéristique Sam 9 Jan 2010 - 17:08
INSTALLATION:
Comme tout bon script qui se respecte, ce script se colle au dessus de Main:
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, 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 :eva => [1, 1, 20, 0.7], # Evasion :cri => [1, 1, 20, 0.7], # Critical :odds => [1, 1, 5], # 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.25 + 2.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 :skill_speed => "Vitesse Magie", # Skill Speed :item_speed => "Vitesse Objets", # Item Speed :odds => "Chance", # Odds (Luck) } # <- Do not remove!
# ◆ 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 = true # Allows you to change the text for this button on the main command menu. VOCAB_MENU_DISTRIBUTE_PARAMETER = "Caractéristiques"
# ◆ 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
# ◆ 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 = true 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
delvan32
Poulet carnivore Lv.2
Age : 33 Inscrit le : 30/12/2009 Messages : 16
Sujet: Re: [VX] Distribution des points de Caractéristique Sam 9 Jan 2010 - 17:09
Le script étant trés long, je triple post (vous m'en voyais navré):
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 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 :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 #-------------------------------------------------------------------------- # ○ 存在するパラメータの一覧 #-------------------------------------------------------------------------- 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
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
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
Effectivement c'est un long script
Maintenant quelques conseils pour:
L'UTILISATION:
J'ai plusieurs petite choses à vous dire:
1) Dans le Menu Statut d'un personnage, cliquez sur "CTRL" pour ouvrir le menu de Caractéristiques, (celui ci peut également être ouvert en cliquant simplement dans votre menu principale sur "Caractéristiques") La touche "CTRL" peut être remplacée par n'importe quelle touche, il vous suffit de remplacer le CTRL de la ligne 215:
Code:
CALL_DISTPARAMKEY = Input::CTRL # On the keyboard, button X is the A key.
Par une autre touche de votre clavier !
2) Pour désactiver l'affichage du sous-menu "Caractéristiques" dans le menu principal, remplacez la ligne 182:
Code:
USE_MENU_DISTRIBUTE_PARAMETER_COMMAND = true
Par Ceci:
Code:
USE_MENU_DISTRIBUTE_PARAMETER_COMMAND = false
Il y'a moultes autres possibilités de Personnalisation mais je ne peut pas tout vous énumérer dans un seul message, si vous avez des questions je serais par contre enchanté de pouvoir vous aider !
Delvan
PS: J'espère avoir présenté ce script dans les règles, je sais que c'est un script qui à déjà été posté mais comme je le disait tout en haut, je préfère mettre ma version traduite et fonctionnelle dans un nouveau sujet !
Shadow of Life
Poulet carnivore Lv.2
Age : 28 Inscrit le : 07/01/2010 Messages : 22
Sujet: Re: [VX] Distribution des points de Caractéristique Sam 9 Jan 2010 - 17:24
Merci pour ce très beau script : effectivement, il est mieux que le précédent script pour la distribution de points de caractéristiques. Cependant, je n'ai pas le temps de le tester tout de suite mais je te fait confiance ! Merci encore. Cordialement
Hard
Habitant Lv.6
Age : 34 Inscrit le : 04/12/2009 Messages : 125
Sujet: Re: [VX] Distribution des points de Caractéristique Sam 9 Jan 2010 - 17:48
Tout juste excellent ce script, merci pour le partage ! En plus ton post est très complet . Merci.
iSquall xX
Poulet trizo Lv.3
Age : 31 Inscrit le : 24/01/2010 Messages : 40
Sujet: Re: [VX] Distribution des points de Caractéristique Mar 26 Jan 2010 - 20:03
Merci sa marche bien chez moi ^^
Diblo
Illusionniste Lv.12
Age : 115 Inscrit le : 07/08/2009 Messages : 774
Sujet: Re: [VX] Distribution des points de Caractéristique Mer 27 Jan 2010 - 12:11
Même si ce n'est pas un nécropost, ne up pas ce topic juste pour dire merci
iSquall xX
Poulet trizo Lv.3
Age : 31 Inscrit le : 24/01/2010 Messages : 40
Sujet: Re: [VX] Distribution des points de Caractéristique Mer 27 Jan 2010 - 13:07
ok sa marche désolé
Djidane Tribale
Va-nu-pieds Lv.4
Inscrit le : 24/08/2009 Messages : 72
Sujet: Re: [VX] Distribution des points de Caractéristique Dim 31 Jan 2010 - 2:57
Très jolie script , merci de ton partage .
J'ai une petite question : Au niveau 1 , j'ai dejà 3 point de cara , comment faire pour commencer avec 0 point ? ^^
Merci de ta réponse
Zangther
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
Sujet: Re: [VX] Distribution des points de Caractéristique Dim 31 Jan 2010 - 9:14
Essaye de faire au début du jeu dans un appel de script : gain_rp(1, -3). Si tu as plusieurs héros dans ton équipe dès le départ, utilise aussi cette commande en changeant le premier nombre.
Nanash'Aun
Habitant Lv.6
Age : 28 Inscrit le : 16/08/2009 Messages : 120
Sujet: Re: [VX] Distribution des points de Caractéristique Mar 2 Mar 2010 - 18:39
Salut, ton script a l'air super, j'ai hate de l'essayer mais je voudrais juste savoir avant : Est ce qu'il est compatible avec le GTBS ? Merci d'avance.
Blockade
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
Sujet: Re: [VX] Distribution des points de Caractéristique Mar 2 Mar 2010 - 18:42
Réponse : Tu met le script dans ton projet et tu regarde --'
Nanash'Aun
Habitant Lv.6
Age : 28 Inscrit le : 16/08/2009 Messages : 120
Sujet: Re: [VX] Distribution des points de Caractéristique Sam 6 Mar 2010 - 12:50
Oui il marche très bien avec le GTBS. J'aurais juste une question : est ce qu'il serait possible que, plutot que de faire un lien dans le menu pour augmenter ses stats, qu'a chaque fois qu'un perso monte de niveau, une fenetre s'ouvre automatiquement pour qu'on augment a ce momment la les stats ? Merci d'avance.
Faucheur
Poulet Lv.1
Inscrit le : 12/08/2011 Messages : 6
Sujet: Re: [VX] Distribution des points de Caractéristique Sam 13 Aoû 2011 - 0:13
Bonjour mais moi ils me disent que j'ai un problème a cette ligne: