赞 | 0 |
VIP | 70 |
好人卡 | 0 |
积分 | 1 |
经验 | 20828 |
最后登录 | 2018-6-15 |
在线时间 | 351 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 351 小时
- 注册时间
- 2008-3-9
- 帖子
- 418
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
如图,装备扩张脚本,一开始有3个选项,感觉最强装备和卸除装备这2个选项会影响用户体验
所以想把这2个去掉,但是自己试了很久也没成功所以又来求助了
-------------
工程下载:http://www.uushare.com/user/hcxxc/file/1586740
------------
相关脚本- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- #_/ ◆ 拡張装備画面 - KGC_ExtendedEquipScene ◆ VX ◆
- #_/ ◇ Last update : 2008/02/10 ◇
- #_/----------------------------------------------------------------------------
- #_/ 機能を強化した装備画面を作成します。
- #_/============================================================================
- #_/ 【基本機能】≪ヘルプウィンドウ機能拡張≫ より下に導入してください。
- #_/ 【装備】≪装備拡張≫ より上に導入してください。
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- #==============================================================================
- # ★ カスタマイズ項目 - Customize ★
- #==============================================================================
- module KGC
- module ExtendedEquipScene
- # ◆ パラメータ名
- VOCAB_PARAM = {
- :hit => "命中率", # 命中率
- :eva => "回避率", # 回避率
- :cri => "必杀率", # クリティカル率
- } # ← この } は消さないこと!
- # ◆ 装備変更時に表示するパラメータ
- # 表示したい順に , で区切って記入。
- # :maxhp .. 最大 HP
- # :maxmp .. 最大 MP
- # :atk .. 攻撃力
- # :def .. 防御力
- # :spi .. 精神力
- # :agi .. 敏捷性
- # :hit .. 命中率
- # :eva .. 回避率
- # :cri .. クリティカル率
- EQUIP_PARAMS = [ :atk, :def, :spi, :agi, :hit, :eva, :cri ]
- # ◆ 装備画面のコマンド名
- COMMANDS = [
- "变更身上装备", # 装備変更
- "当前最强装备", # 最強装備
- "卸下所有装备", # すべて外す
- ] # ← この ] は消さないこと!
- # ◆ 装備画面コマンドのヘルプ
- COMMAND_HELP = [
- "手动更换身上的装备", # 装備変更
- "自动装备当前最强装备", # 最強装備
- "卸下身上所有装备", # すべて外す
- ] # ← この ] は消さないこと!
- # ◆ 最強装備を行わない装備種別
- # 最強装備から除外する装備種別を記述。
- # -1..武器 0..盾 1..頭 2..身体 3..装飾品 4~..≪装備拡張≫ で定義
- IGNORE_STRONGEST_KIND = [3, 5]
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- $imported = {} if $imported == nil
- $imported["ExtendedEquipScene"] = true
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Vocab
- #==============================================================================
- module Vocab
- # 命中率
- def self.hit
- return KGC::ExtendedEquipScene::VOCAB_PARAM[:hit]
- end
- # 回避率
- def self.eva
- return KGC::ExtendedEquipScene::VOCAB_PARAM[:eva]
- end
- # クリティカル率
- def self.cri
- return KGC::ExtendedEquipScene::VOCAB_PARAM[:cri]
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # □ Window_ExtendedEquipCommand
- #------------------------------------------------------------------------------
- # 拡張装備画面で、実行する操作を選択するウィンドウです。
- #==============================================================================
- class Window_ExtendedEquipCommand < Window_Command
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- super(160, KGC::ExtendedEquipScene::COMMANDS)
- self.active = false
- self.z = 1000
- end
- #--------------------------------------------------------------------------
- # ● ヘルプウィンドウの更新
- #--------------------------------------------------------------------------
- def update_help
- @help_window.set_text(KGC::ExtendedEquipScene::COMMAND_HELP[self.index])
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # □ Window_EquipBaseInfo
- #------------------------------------------------------------------------------
- # 装備画面で、アクターの基本情報を表示するウィンドウです。
- #==============================================================================
- class Window_EquipBaseInfo < Window_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # x : ウィンドウの X 座標
- # y : ウィンドウの Y 座標
- # actor : アクター
- #--------------------------------------------------------------------------
- def initialize(x, y, actor)
- super(x, y, Graphics.width / 2, WLH + 32)
- @actor = actor
- refresh
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- draw_actor_name(@actor, 0, 0)
- # EP 制を使用する場合は EP を描画
- if $imported["EquipExtension"] && KGC::EquipExtension::USE_EP_SYSTEM
- draw_actor_ep(@actor, 116, 0, Graphics.width / 2 - 148)
- end
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Window_EquipItem
- #==============================================================================
- class Window_EquipItem < Window_Item
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # x : ウィンドウの X 座標
- # y : ウィンドウの Y 座標
- # width : ウィンドウの幅
- # height : ウィンドウの高さ
- # actor : アクター
- # equip_type : 装備部位
- #--------------------------------------------------------------------------
- alias initialize_KGC_ExtendedEquipScene initialize
- def initialize(x, y, width, height, actor, equip_type)
- width = Graphics.width / 2
- initialize_KGC_ExtendedEquipScene(x, y, width, height, actor, equip_type)
- @column_max = 1
- refresh
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- alias refresh_KGC_ExtendedEquipScene refresh
- def refresh
- return if @column_max == 2 # 無駄な描画は行わない
- refresh_KGC_ExtendedEquipScene
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # □ Window_ExtendedEquipStatus
- #------------------------------------------------------------------------------
- # 拡張装備画面で、アクターの能力値変化を表示するウィンドウです。
- #==============================================================================
- class Window_ExtendedEquipStatus < Window_EquipStatus
- #--------------------------------------------------------------------------
- # ○ 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_writer :equip_type # 装備タイプ
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # x : ウィンドウの X 座標
- # y : ウィンドウの Y 座標
- # actor : アクター
- #--------------------------------------------------------------------------
- def initialize(x, y, actor)
- @equip_type = -1
- @caption_cache = nil
- super(x, y, actor)
- @new_item = nil
- @new_param = {}
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 解放
- #--------------------------------------------------------------------------
- def dispose
- super
- @caption_cache.dispose if @caption_cache != nil
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウ内容の作成
- #--------------------------------------------------------------------------
- def create_contents
- self.contents.dispose
- self.contents = Bitmap.new(Graphics.width / 2 - 32, height - 32)
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- return if @equip_type < 0
- if @caption_cache == nil
- create_cache
- else
- self.contents.clear
- self.contents.blt(0, 0, @caption_cache, @caption_cache.rect)
- end
- draw_item_name(@actor.equips[@equip_type], 0, 0)
- draw_item_name(@new_item, 24, WLH)
- KGC::ExtendedEquipScene::EQUIP_PARAMS.each_with_index { |param, i|
- draw_parameter(0, WLH * (i + 2), param)
- }
- end
- #--------------------------------------------------------------------------
- # ○ キャッシュ生成
- #--------------------------------------------------------------------------
- def create_cache
- create_contents
- self.contents.font.color = system_color
- self.contents.draw_text(0, WLH, 20, WLH, "→")
- # パラメータ描画
- KGC::ExtendedEquipScene::EQUIP_PARAMS.each_with_index { |param, i|
- draw_parameter_name(0, WLH * (i + 2), param)
- }
- @caption_cache = Bitmap.new(self.contents.width, self.contents.height)
- @caption_cache.blt(0, 0, self.contents, self.contents.rect)
- end
- #--------------------------------------------------------------------------
- # ○ 能力値名の描画
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- # type : 能力値の種類
- #--------------------------------------------------------------------------
- def draw_parameter_name(x, y, type)
- 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
- end
- self.contents.font.color = system_color
- self.contents.draw_text(x + 4, y, 96, WLH, name)
- self.contents.font.color = system_color
- self.contents.draw_text(x + 156, y, 20, WLH, "→", 1)
- end
- #--------------------------------------------------------------------------
- # ● 装備変更後の能力値設定
- # new_param : 装備変更後のパラメータの配列
- # new_item : 変更後の装備
- #--------------------------------------------------------------------------
- def set_new_parameters(new_param, new_item)
- changed = false
- # パラメータ変化判定
- KGC::ExtendedEquipScene::EQUIP_PARAMS.each { |k|
- if @new_param[k] != new_param[k]
- changed = true
- break
- end
- }
- changed |= (@new_item != new_item)
- if changed
- @new_item = new_item
- @new_param = new_param
- refresh
- end
- end
- #--------------------------------------------------------------------------
- # ● 能力値の描画
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- # type : 能力値の種類
- #--------------------------------------------------------------------------
- def draw_parameter(x, y, type)
- case type
- when :maxhp
- value = @actor.maxhp
- when :maxmp
- value = @actor.maxmp
- when :atk
- value = @actor.atk
- when :def
- value = @actor.def
- when :spi
- value = @actor.spi
- when :agi
- value = @actor.agi
- when :hit
- value = @actor.hit
- when :eva
- value = @actor.eva
- when :cri
- value = @actor.cri
- end
- new_value = @new_param[type]
- self.contents.font.color = normal_color
- self.contents.draw_text(x + 106, y, 48, WLH, value, 2)
- if new_value != nil
- self.contents.font.color = new_parameter_color(value, new_value)
- self.contents.draw_text(x + 176, y, 48, WLH, new_value, 2)
- end
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Scene_Equip
- #==============================================================================
- class Scene_Equip < Scene_Base
- #--------------------------------------------------------------------------
- # ○ 定数
- #--------------------------------------------------------------------------
- STANDARD_WIDTH = Graphics.width / 2
- ANIMATION_SPPED = 8
- #--------------------------------------------------------------------------
- # ● 開始処理
- #--------------------------------------------------------------------------
- alias start_KGC_ExtendedEquipScene start
- def start
- start_KGC_ExtendedEquipScene
- # ステータスウィンドウを作り直す
- @status_window.dispose
- @status_window = Window_ExtendedEquipStatus.new(0, 0, @actor)
- create_command_window
- @last_item = RPG::Weapon.new
- @base_info_window = Window_EquipBaseInfo.new(
- 0, @help_window.height, @actor)
- adjust_window_for_extended_equiop_scene
- end
- #--------------------------------------------------------------------------
- # ○ ウィンドウの座標・サイズを拡張装備画面向けに調整
- #--------------------------------------------------------------------------
- def adjust_window_for_extended_equiop_scene
- @base_info_window.width = @equip_window.width
- @equip_window.x = 0
- @equip_window.y = @base_info_window.y + @base_info_window.height
- @equip_window.height = Graphics.height - @equip_window.y
- @equip_window.active = false
- @equip_window.z = 100
- @status_window.x = 0
- @status_window.y = @equip_window.y
- @status_window.width = STANDARD_WIDTH
- @status_window.height = @equip_window.height
- @status_window.visible = false
- @status_window.z = 100
- @item_windows.each { |window|
- window.x = @equip_window.width
- window.y = @help_window.height
- window.z = 50
- window.height = Graphics.height - @help_window.height
- }
- end
- #--------------------------------------------------------------------------
- # ○ コマンドウィンドウの作成
- #--------------------------------------------------------------------------
- def create_command_window
- @command_window = Window_ExtendedEquipCommand.new
- @command_window.help_window = @help_window
- @command_window.active = true
- @command_window.x = (Graphics.width - @command_window.width) / 2
- @command_window.y = (Graphics.height - @command_window.height) / 2
- @command_window.update_help
- # 装備固定なら「最強装備」「すべて外す」を無効化
- if @actor.fix_equipment
- @command_window.draw_item(1, false)
- @command_window.draw_item(2, false)
- end
- end
- #--------------------------------------------------------------------------
- # ● 終了処理
- #--------------------------------------------------------------------------
- alias terminate_KGC_ExtendedEquipScene terminate
- def terminate
- terminate_KGC_ExtendedEquipScene
- @command_window.dispose
- @base_info_window.dispose
- end
- #--------------------------------------------------------------------------
- # ○ ウィンドウをリフレッシュ
- #--------------------------------------------------------------------------
- def refresh_window
- @base_info_window.refresh
- @equip_window.refresh
- @status_window.refresh
- @item_windows.each { |window| window.refresh }
- Graphics.frame_reset
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- alias update_KGC_ExtendedEquipScene update
- def update
- update_command_window
- if @command_window.active
- update_KGC_ExtendedEquipScene
- update_command_selection
- else
- update_KGC_ExtendedEquipScene
- end
- end
- #--------------------------------------------------------------------------
- # ○ コマンドウィンドウの更新
- #--------------------------------------------------------------------------
- def update_command_window
- @command_window.update
- end
- #--------------------------------------------------------------------------
- # ● ステータスウィンドウの更新
- #--------------------------------------------------------------------------
- def update_status_window
- @base_info_window.update
- @status_window.update
- if @command_window.active || @equip_window.active
- @status_window.set_new_parameters({}, nil)
- elsif @item_window.active
- return if @last_item == @item_window.item
- @last_item = @item_window.item
- temp_actor = Marshal.load(Marshal.dump(@actor))
- temp_actor.change_equip(@equip_window.index, @item_window.item, true)
- param = {
- :maxhp => temp_actor.maxhp,
- :maxmp => temp_actor.maxmp,
- :atk => temp_actor.atk,
- :def => temp_actor.def,
- :spi => temp_actor.spi,
- :agi => temp_actor.agi,
- :hit => temp_actor.hit,
- :eva => temp_actor.eva,
- :cri => temp_actor.cri,
- }
- @status_window.equip_type = @equip_window.index
- @status_window.set_new_parameters(param, @last_item)
- Graphics.frame_reset
- end
- end
- #--------------------------------------------------------------------------
- # ○ コマンド選択の更新
- #--------------------------------------------------------------------------
- def update_command_selection
- update_window_position_for_equip_selection
- if Input.trigger?(Input::B)
- Sound.play_cancel
- return_scene
- elsif Input.trigger?(Input::R)
- Sound.play_cursor
- next_actor
- elsif Input.trigger?(Input::L)
- Sound.play_cursor
- prev_actor
- elsif Input.trigger?(Input::C)
- case @command_window.index
- when 0 # 装備変更
- Sound.play_decision
- # 装備部位ウィンドウに切り替え
- @equip_window.active = true
- @command_window.active = false
- @command_window.close
- when 1 # 最強装備
- if @actor.fix_equipment
- Sound.play_buzzer
- return
- end
- Sound.play_equip
- process_equip_strongest
- when 2 # すべて外す
- if @actor.fix_equipment
- Sound.play_buzzer
- return
- end
- Sound.play_equip
- process_remove_all
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 装備部位選択の更新
- #--------------------------------------------------------------------------
- alias update_equip_selection_KGC_ExtendedEquipScene update_equip_selection
- def update_equip_selection
- update_window_position_for_equip_selection
- if Input.trigger?(Input::A)
- if @actor.fix_equipment
- Sound.play_buzzer
- return
- end
- # 選択している装備品を外す
- Sound.play_equip
- @actor.change_equip(@equip_window.index, nil)
- @base_info_window.refresh
- @equip_window.refresh
- @item_window.refresh
- elsif Input.trigger?(Input::B)
- Sound.play_cancel
- # コマンドウィンドウに切り替え
- @equip_window.active = false
- @command_window.active = true
- @command_window.open
- return
- elsif Input.trigger?(Input::R) || Input.trigger?(Input::L)
- # アクター切り替えを無効化
- return
- elsif Input.trigger?(Input::C)
- # 前回のアイテムをダミーにする
- @last_item = RPG::Weapon.new
- end
- update_equip_selection_KGC_ExtendedEquipScene
- end
- #--------------------------------------------------------------------------
- # ● アイテム選択の更新
- #--------------------------------------------------------------------------
- alias update_item_selection_KGC_ExtendedEquipScene update_item_selection
- def update_item_selection
- update_window_position_for_item_selection
- update_item_selection_KGC_ExtendedEquipScene
- if Input.trigger?(Input::C)
- @base_info_window.refresh
- end
- end
- #--------------------------------------------------------------------------
- # ○ ウィンドウ位置の更新 (装備部位選択)
- #--------------------------------------------------------------------------
- def update_window_position_for_equip_selection
- return if @item_window.x == @equip_window.width
- @base_info_window.width = @equip_window.width
- @item_window.x = [@item_window.x + ANIMATION_SPPED, @equip_window.width].min
- @equip_window.visible = true
- @status_window.visible = false
- end
- #--------------------------------------------------------------------------
- # ○ ウィンドウ位置の更新 (アイテム選択)
- #--------------------------------------------------------------------------
- def update_window_position_for_item_selection
- return if @item_window.x == STANDARD_WIDTH
- @base_info_window.width = STANDARD_WIDTH
- @item_window.x = [@item_window.x - ANIMATION_SPPED, STANDARD_WIDTH].max
- @equip_window.visible = false
- @status_window.visible = true
- end
- #--------------------------------------------------------------------------
- # ○ 最強装備の処理
- #--------------------------------------------------------------------------
- def process_equip_strongest
- # 最強装備対象の種別を取得
- type = [-1]
- type += ($imported["EquipExtension"] ? @actor.equip_type : [0, 1, 2, 3])
- type -= KGC::ExtendedEquipScene::IGNORE_STRONGEST_KIND
- weapon_range = (@actor.two_swords_style ? 0..1 : 0)
- # 最強装備
- type.each_index { |i|
- case i
- when weapon_range # 武器
- weapon = strongest_item(i, -1)
- next if weapon == nil
- @actor.change_equip(i, weapon)
- else # 防具
- armor = strongest_item(i, type[i])
- next if armor == nil
- @actor.change_equip(i, armor)
- end
- }
- refresh_window
- end
- #--------------------------------------------------------------------------
- # ○ 最も強力なアイテムを取得
- # equip_type : 装備部位
- # kind : 種別 (-1..武器 0~..防具)
- # 該当するアイテムがなければ nil を返す。
- #--------------------------------------------------------------------------
- def strongest_item(equip_type, kind)
- result = nil
- case kind
- when -1 # 武器
- # 装備可能な武器を取得
- weapons = $game_party.items.find_all { |item|
- valid = item.is_a?(RPG::Weapon) && @actor.equippable?(item)
- if valid && $imported["EquipExtension"]
- valid = @actor.ep_condition_clear?(equip_type, item)
- end
- valid
- }
- # 最も atk が高い武器を取得
- weapons.each { |item|
- if result == nil || result.atk <= item.atk
- result = item
- end
- }
- else # 防具
- # 装備可能な防具を取得
- armors = $game_party.items.find_all { |item|
- valid = item.is_a?(RPG::Armor) && item.kind == kind &&
- @actor.equippable?(item)
- if valid && $imported["EquipExtension"]
- valid = @actor.ep_condition_clear?(equip_type, item)
- end
- valid
- }
- # 最も def が高い防具を取得
- armors.each { |item|
- if result == nil || result.def <= item.def
- result = item
- end
- }
- end
- return result
- end
- #--------------------------------------------------------------------------
- # ○ すべて外す処理
- #--------------------------------------------------------------------------
- def process_remove_all
- type_max = ($imported["EquipExtension"] ? @actor.equip_type.size : 3) + 1
- type_max.times { |i| @actor.change_equip(i, nil) }
- refresh_window
- end
- end
复制代码 |
|