#====================================== # 在这里设置双手剑的属性id。 # 双手剑类型的武器要为其添加相应属性。 # 属性要在数据库里设置。 ELEMENT_NUM = 20 #====================================== #============================================================================== # ■ Window_Base #------------------------------------------------------------------------------ # 游戏中全部窗口的超级类。 #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ● 描绘物品名 # item : 物品 # x : 描画目标 X 坐标 # y : 描画目标 Y 坐标 #-------------------------------------------------------------------------- #★★★★★★ def draw_item_name(item, x, y) if item == nil return end unless @bitmap_tag bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) end self.contents.font.color = normal_color unless $scene.is_a?(Scene_Equip) self.contents.draw_text(x + 28, y, 212, 32, item.name) end end #============================================================================== # ■ Window_EquipRight #------------------------------------------------------------------------------ # 装备画面、显示角色现在装备的物品的窗口。 #============================================================================== class Window_EquipRight < Window_Selectable #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh self.contents.clear @data = [] @data.push($data_weapons[@actor.weapon_id]) @data.push($data_armors[@actor.armor1_id]) @data.push($data_armors[@actor.armor2_id]) @data.push($data_armors[@actor.armor3_id]) @data.push($data_armors[@actor.armor4_id]) #★★★★★★ if @actor.weapon_id != 0 if $data_weapons[@actor.weapon_id].element_set.include?(ELEMENT_NUM) @data[1] = $data_weapons[@actor.weapon_id] end end #★★★★★★ @item_max = @data.size self.contents.font.color = system_color self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon) self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1) self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2) self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3) self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4) self.contents.font.color = normal_color draw_item_name(@data[0], 92, 32 * 0) #★★★★★★ @bitmap_tag = false if @actor.weapon_id != 0 if $data_weapons[@actor.weapon_id].element_set.include?(ELEMENT_NUM) self.contents.font.color = disabled_color @bitmap_tag = true end end draw_item_name(@data[1], 92, 32 * 1) self.contents.font.color = normal_color @bitmap_tag = false #★★★★★★ draw_item_name(@data[2], 92, 32 * 2) draw_item_name(@data[3], 92, 32 * 3) draw_item_name(@data[4], 92, 32 * 4) end end #============================================================================== # ■ Scene_Equip #------------------------------------------------------------------------------ # 处理装备画面的类。 #============================================================================== class Scene_Equip #-------------------------------------------------------------------------- # ● 刷新画面 (右侧窗口被激活的情况下) #-------------------------------------------------------------------------- def update_right # 按下 B 键的情况下 if Input.trigger?(Input::B) # 演奏取消 SE $game_system.se_play($data_system.cancel_se) # 切换到菜单画面 $scene = Scene_Menu.new(2) return end # 按下 C 键的情况下 if Input.trigger?(Input::C) # 固定装备的情况下 if @actor.equip_fix?(@right_window.index) # 演奏冻结 SE $game_system.se_play($data_system.buzzer_se) return end # 演奏确定 SE $game_system.se_play($data_system.decision_se) #★★★★★★ if @right_window.index == 1 if @actor.weapon_id != 0 unless $data_weapons[@actor.weapon_id].element_set.include?(ELEMENT_NUM) # 激活物品窗口 @right_window.active = false @item_window.active = true @item_window.index = 0 return end else # 激活物品窗口 @right_window.active = false @item_window.active = true @item_window.index = 0 return end else # 激活物品窗口 @right_window.active = false @item_window.active = true @item_window.index = 0 return end #★★★★★★\ end # 按下 R 键的情况下 if Input.trigger?(Input::R) # 演奏光标 SE $game_system.se_play($data_system.cursor_se) # 移至下一位角色 @actor_index += 1 @actor_index %= $game_party.actors.size # 切换到别的装备画面 $scene = Scene_Equip.new(@actor_index, @right_window.index) return end # 按下 L 键的情况下 if Input.trigger?(Input::L) # 演奏光标 SE $game_system.se_play($data_system.cursor_se) # 移至上一位角色 @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size # 切换到别的装备画面 $scene = Scene_Equip.new(@actor_index, @right_window.index) return end end #-------------------------------------------------------------------------- # ● 刷新画面 (物品窗口被激活的情况下) #-------------------------------------------------------------------------- def update_item # 按下 B 键的情况下 if Input.trigger?(Input::B) # 演奏取消 SE $game_system.se_play($data_system.cancel_se) # 激活右侧窗口 @right_window.active = true @item_window.active = false @item_window.index = -1 return end # 按下 C 键的情况下 if Input.trigger?(Input::C) # 演奏装备 SE $game_system.se_play($data_system.equip_se) # 获取物品窗口现在选择的装备数据 item = @item_window.item # 变更装备 #★★★★★★ if item != nil unless @right_window.index == 0 and @actor.armor1_id != 0 and item.element_set.include?(ELEMENT_NUM) @actor.equip(@right_window.index, item == nil ? 0 : item.id) # 激活右侧窗口 @right_window.active = true @item_window.active = false @item_window.index = -1 # 再生成右侧窗口、物品窗口的内容 @right_window.refresh @item_window.refresh return end else @actor.equip(@right_window.index, item == nil ? 0 : item.id) # 激活右侧窗口 @right_window.active = true @item_window.active = false @item_window.index = -1 # 再生成右侧窗口、物品窗口的内容 @right_window.refresh @item_window.refresh return end #★★★★★★ end end end
191.48 KB, 下载次数: 83
范例工程
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |