#==============================================================================#【物品信息详细显示】#------------------------------------------------------------------------------# ☆ by 芯☆淡茹水#==============================================================================#◆ 使用方法:# 复制该脚本,插入到 Main 前。#==============================================================================class Window_Item < Window_Selectable #------------------------------------------------------------------------- def initialize super(0, 0, 640, 480) @column_max = 2 refresh self.index = 0 if $game_temp.in_battle self.y = 64 self.height = 256 self.back_opacity = 160 end end #------------------------------------------------------------------------- def update_help if $game_temp.in_battle @help_window.set_text(self.item == nil ? "" : self.item.description) else @help_window.set_xdrs_text(self.item == nil ? "" : self.item.description,@data[index]) end endend#==============================================================================class Window_ItemHelp < Window_Base #-------------------------------------------------------------------------- def initialize super(320, 4, 316, 480) self.contents = Bitmap.new(width - 32, height - 32) self.back_opacity = 200 self.z = 999 end #-------------------------------------------------------------------------- def set_xdrs_text(text, item) self.contents.clear x = 4 y = 32 if item != nil self.contents.font.color = text_color(6) self.contents.draw_text(4, 0, 212, 32, item.name, 0) else self.visible = false end self.contents.font.color = normal_color case item # 道具 when RPG::Item ay = y self.contents.draw_text(x, y , self.width - 32, 32, text) if item.scope > 0 ay += 38 txt = "效果范围:" case item.scope when 1 txt_n = "敌单体" when 2 txt_n = "敌全体" when 3 txt_n = "己方单体" when 4 txt_n = "己方全体" when 5 txt_n = "己方单体(HP 0)" when 6 txt_n = "己方全体(HP 0)" when 7 txt_n = "使用者" end self.contents.font.color = system_color self.contents.draw_text(x, ay, 160, 32, txt,0) self.contents.font.color = normal_color self.contents.draw_text(x + 126, ay, 160, 32, txt_n,0) else ay += 4 end if item.recover_hp != 0 ay += 40 txt = $data_system.words.hp txt += "回复量:" txt_n = item.recover_hp.to_s if item.recover_hp > 0 color = text_color(3) else color = text_color(2) end self.contents.font.color = system_color self.contents.draw_text(x, ay, 262, 32, txt,0) self.contents.font.color = color self.contents.draw_text(x + 186, ay, 160, 32, txt_n,0) else ay += 8 end if item.recover_hp_rate != 0 ay += 32 txt = $data_system.words.hp txt += "回复率:" txt_n = item.recover_hp_rate.to_s + "%" if item.recover_hp_rate > 0 color = text_color(3) else color = text_color(2) end self.contents.font.color = system_color self.contents.draw_text(x, ay, 262, 32, txt,0) self.contents.font.color = color self.contents.draw_text(x + 186, ay, 160, 32, txt_n,0) end if item.recover_sp != 0 ay += 32 txt = $data_system.words.sp txt += "回复量:" txt_n = item.recover_sp.to_s if item.recover_sp > 0 color = text_color(3) else color = text_color(2) end self.contents.font.color = system_color self.contents.draw_text(x, ay, 262, 32, txt,0) self.contents.font.color = color self.contents.draw_text(x + 186, ay, 160, 32, txt_n,0) end if item.recover_sp_rate != 0 ay += 32 txt = $data_system.words.sp txt += "回复率: " txt_n = item.recover_sp_rate.to_s + "%" if item.recover_sp_rate > 0 color = text_color(3) else color = text_color(2) end self.contents.font.color = system_color self.contents.draw_text(x, ay, 262, 32, txt,0) self.contents.font.color = color self.contents.draw_text(x + 186, ay, 160, 32, txt_n,0) end if item.parameter_points > 0 ay += 40 case item.parameter_type when 1 txt = "最大 " + $data_system.words.hp when 2 txt = "最大 " + $data_system.words.sp when 3 txt = $data_system.words.str when 4 txt = $data_system.words.dex when 5 txt = $data_system.words.agi when 6 txt = $data_system.words.int end txt_n = "+ " + item.parameter_points.to_s self.contents.font.color = system_color self.contents.draw_text(x, ay, 262, 32, txt,0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 116, ay, 160, 32, txt_n,0) else ay += 8 end if item.pdef_f > 0 ay += 32 txt = "对该物品的" + $data_system.words.pdef + ":" txt_n = item.pdef_f.to_s + "%" self.contents.font.color = system_color self.contents.draw_text(x, ay, 262, 32, txt,0) self.contents.font.color = normal_color self.contents.draw_text(x + 236, ay, 262, 32, txt_n,0) end if item.mdef_f > 0 ay += 32 txt = "对该物品的" + $data_system.words.mdef + ":" txt_n = item.mdef_f.to_s + "%" self.contents.font.color = system_color self.contents.draw_text(x, ay, 262, 32, txt,0) self.contents.font.color = normal_color self.contents.draw_text(x + 236, ay, 262, 32, txt_n,0) end for i in item.plus_state_set if i > 0 ay += 32 self.contents.font.color = system_color self.contents.draw_text(x , ay, 124, 32, "附加状态:",0) txt = $data_states[i].name self.contents.font.color = text_color(2) self.contents.draw_text(x + 126, ay, 182, 32, txt,0) end end for i in item.minus_state_set if i > 0 ay += 32 self.contents.font.color = system_color self.contents.draw_text(x , ay, 124, 32, "解除状态:",0) txt = $data_states[i].name self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, ay, 182, 32, txt,0) end end self.height = ay + 64 # 武器 when RPG::Weapon by = y self.contents.draw_text(x, by , self.width - 32, 32, text) if item.atk > 0 by += 38 txt = $data_system.words.atk + ":" self.contents.font.color = system_color self.contents.draw_text(x, by, 182, 32, txt,0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, by, 124, 32, item.atk.to_s,0) else by += 4 end if item.pdef > 0 by += 32 txt = item.pdef.to_s self.contents.font.color = system_color self.contents.draw_text(x, by, 182, 32, $data_system.words.pdef + ":",0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, by, 124, 32, txt,0) end if item.mdef > 0 by += 32 txt = item.mdef.to_s self.contents.font.color = system_color self.contents.draw_text(x, by, 182, 32, $data_system.words.mdef + ":",0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, by, 124, 32, txt,0) end if item.str_plus != 0 by += 40 if item.str_plus > 0 color = color = text_color(3) txt = "+" + item.str_plus.to_s else color = color = text_color(2) txt = item.str_plus.to_s end self.contents.font.color = system_color self.contents.draw_text(x, by, 182, 32, $data_system.words.str,0) self.contents.font.color = color self.contents.draw_text(x + 126, by, 124, 32, txt,0) else by += 8 end if item.dex_plus != 0 by += 32 if item.dex_plus > 0 color = text_color(3) txt = "+" + item.dex_plus.to_s else color = color = text_color(2) txt = item.dex_plus.to_s end self.contents.font.color = system_color self.contents.draw_text(x, by, 182, 32, $data_system.words.dex,0) self.contents.font.color = color self.contents.draw_text(x + 126, by, 124, 32, txt,0) end if item.agi_plus != 0 by += 32 if item.agi_plus > 0 color = color = text_color(3) txt = "+" + item.agi_plus.to_s else color = color = text_color(2) txt = item.agi_plus.to_s end self.contents.font.color = system_color self.contents.draw_text(x, by, 182, 32, $data_system.words.agi,0) self.contents.font.color = color self.contents.draw_text(x + 126, by, 124, 32, txt,0) end if item.int_plus != 0 by += 32 if item.int_plus > 0 color = color = text_color(3) txt = "+" + item.int_plus.to_s else color = color = text_color(2) txt = item.int_plus.to_s end self.contents.font.color = system_color self.contents.draw_text(x, by, 182, 32, $data_system.words.int,0) self.contents.font.color = color self.contents.draw_text(x + 126, by, 124, 32, txt,0) end for i in item.element_set if i > 0 by += 32 txt = "附加属性:" name = $data_system.elements[i] self.contents.font.color = system_color self.contents.draw_text(x, by, 182, 32, txt,0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, by, 124, 32, name,0) end end for i in item.plus_state_set if i > 0 by += 32 txt = $data_states[i].name self.contents.font.color = system_color self.contents.draw_text(x , by, 124, 32, "附加状态:",0) self.contents.font.color = text_color(2) self.contents.draw_text(x + 126, by, 182, 32, txt,0) end end for i in item.minus_state_set if i > 0 by += 32 txt = $data_states[i].name self.contents.font.color = system_color self.contents.draw_text(x , by, 124, 32, "解除状态:",0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, by, 182, 32, txt,0) end end self.height = by + 64 # 防具 when RPG::Armor cy = y case item.kind when 0 name = $data_system.words.armor1 when 1 name = $data_system.words.armor2 when 2 name = $data_system.words.armor3 when 3 name = $data_system.words.armor4 end txt = "(" + name + ")" self.contents.font.color = system_color self.contents.draw_text(x + 162, y - 34, 196, 32, txt,0) if item.auto_state_id > 0 cy += 36 name = $data_states[item.auto_state_id].name txt = "【" + name + "】" self.contents.font.color = text_color(3) self.contents.draw_text(x - 4, y, 286, 32, txt,0) end self.contents.font.color = normal_color self.contents.draw_text(x, cy , self.width - 32, 32, text) if item.pdef > 0 cy += 40 txt = item.pdef.to_s self.contents.font.color = system_color self.contents.draw_text(x, cy, 182, 32, $data_system.words.pdef + ":",0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, cy, 124, 32, txt,0) else cy += 8 end if item.mdef > 0 cy += 32 txt = item.mdef.to_s self.contents.font.color = system_color self.contents.draw_text(x, cy, 182, 32, $data_system.words.mdef + ":",0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, cy, 124, 32, txt,0) end if item.str_plus != 0 cy += 40 if item.str_plus > 0 color = color = text_color(3) txt = "+" + item.str_plus.to_s else color = color = text_color(2) txt = item.str_plus.to_s end self.contents.font.color = system_color self.contents.draw_text(x, cy, 182, 32, $data_system.words.str,0) self.contents.font.color = color self.contents.draw_text(x + 126, cy, 124, 32, txt,0) else cy += 8 end if item.dex_plus != 0 cy += 32 if item.dex_plus > 0 color = text_color(3) txt = "+" + item.dex_plus.to_s else color = color = text_color(2) txt = item.dex_plus.to_s end self.contents.font.color = system_color self.contents.draw_text(x, cy, 182, 32, $data_system.words.dex,0) self.contents.font.color = color self.contents.draw_text(x + 126, cy, 124, 32, txt,0) end if item.agi_plus != 0 cy += 32 if item.agi_plus > 0 color = text_color(3) txt = "+" + item.agi_plus.to_s else color = color = text_color(2) txt = item.agi_plus.to_s end self.contents.font.color = system_color self.contents.draw_text(x, cy, 182, 32, $data_system.words.agi,0) self.contents.font.color = color self.contents.draw_text(x + 126, cy, 124, 32, txt,0) end if item.int_plus != 0 cy += 32 if item.int_plus > 0 color = color = text_color(3) txt = "+" + item.int_plus.to_s else color = color = text_color(2) txt = item.int_plus.to_s end self.contents.font.color = system_color self.contents.draw_text(x, cy, 182, 32, $data_system.words.int,0) self.contents.font.color = color self.contents.draw_text(x + 126, cy, 124, 32, txt,0) end for i in item.guard_element_set if i > 0 cy += 32 txt = "属性防御:" name = $data_system.elements[i] self.contents.font.color = system_color self.contents.draw_text(x, cy, 182, 32, txt,0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, cy, 124, 32, name,0) end end for i in item.guard_state_set if i > 0 cy += 32 txt = "状态防御:" name = $data_states[i].name self.contents.font.color = system_color self.contents.draw_text(x, cy, 182, 32, txt,0) self.contents.font.color = text_color(3) self.contents.draw_text(x + 126, cy, 124, 32, name,0) end end self.height = cy + 64 end if height > 472 self.height = 472 end endend#==============================================================================#===============================================================================class Scene_Item #------------------------------------------------------------------------- def main @help_window = Window_ItemHelp.new @item_window = Window_Item.new @item_window.help_window = @help_window @target_window = Window_Target.new @target_window.visible = false @target_window.active = false Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @help_window.dispose @item_window.dispose @target_window.dispose end def update_item @help_window.x = (@item_window.index + 1 ) % 2 * 316 + 4 if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) return end if Input.trigger?(Input::C) @item = @item_window.item unless @item.is_a?(RPG::Item) $game_system.se_play($data_system.buzzer_se) return end unless $game_party.item_can_use?(@item.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @item.scope >= 3 if @help_window.x == 320 @help_window.x += 50 for i in 0...2 Graphics.update end @help_window.x += 50 for i in 0...2 Graphics.update end @help_window.x += 50 for i in 0...2 Graphics.update end @help_window.x += 50 for i in 0...2 Graphics.update end @help_window.x += 50 for i in 0...2 Graphics.update end @help_window.x += 50 for i in 0...2 Graphics.update end @help_window.x += 50 @target_window.x = 620 @target_window.visible = true for i in 0...2 Graphics.update end @target_window.x -= 60 for i in 0...2 Graphics.update end @target_window.x -= 60 for i in 0...2 Graphics.update end @target_window.x -= 60 for i in 0...2 Graphics.update end @target_window.x -= 60 for i in 0...2 Graphics.update end @target_window.x -= 60 else @help_window.x -= 50 for i in 0...2 Graphics.update end @help_window.x -= 50 for i in 0...2 Graphics.update end @help_window.x -= 50 for i in 0...2 Graphics.update end @help_window.x -= 50 for i in 0...2 Graphics.update end @help_window.x -= 50 for i in 0...2 Graphics.update end @help_window.x -= 50 for i in 0...2 Graphics.update end @help_window.x -= 50 @target_window.x = -330 @target_window.visible = true for i in 0...2 Graphics.update end @target_window.x += 70 for i in 0...2 Graphics.update end @target_window.x += 70 for i in 0...2 Graphics.update end @target_window.x += 70 for i in 0...2 Graphics.update end @target_window.x += 60 for i in 0...2 Graphics.update end @target_window.x += 60 end @item_window.active = false @target_window.x = (@item_window.index + 1) % 2 * 304 @target_window.active = true if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end else if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @item_window.draw_item(@item_window.index) end $scene = Scene_Map.new return end end return end end #---------------------------------------------------------------------------- def update_target if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) unless $game_party.item_can_use?(@item.id) @item_window.refresh end if @target_window.x > 260 @target_window.x += 50 for i in 0...2 Graphics.update end @target_window.x += 50 for i in 0...2 Graphics.update end @target_window.x += 50 for i in 0...2 Graphics.update end @target_window.x += 50 for i in 0...2 Graphics.update end @target_window.x += 50 for i in 0...2 Graphics.update end @target_window.x += 50 for i in 0...2 Graphics.update end @target_window.x += 50 @help_window.x = 620 for i in 0...2 Graphics.update end @help_window.x -= 60 for i in 0...2 Graphics.update end @help_window.x -= 60 for i in 0...2 Graphics.update end @help_window.x -= 60 for i in 0...2 Graphics.update end @help_window.x -= 60 for i in 0...2 Graphics.update end @help_window.x -= 60 else @target_window.x -= 50 for i in 0...2 Graphics.update end @target_window.x -= 50 for i in 0...2 Graphics.update end @target_window.x -= 50 for i in 0...2 Graphics.update end @target_window.x -= 50 for i in 0...2 Graphics.update end @target_window.x -= 50 for i in 0...2 Graphics.update end @target_window.x -= 50 for i in 0...2 Graphics.update end @target_window.x -= 50 @help_window.x = -330 for i in 0...2 Graphics.update end @help_window.x += 70 for i in 0...2 Graphics.update end @help_window.x += 70 for i in 0...2 Graphics.update end @help_window.x += 70 for i in 0...2 Graphics.update end @help_window.x += 60 for i in 0...2 Graphics.update end @help_window.x += 60 end @item_window.active = true @target_window.visible = false @target_window.active = false return end if Input.trigger?(Input::C) if $game_party.item_number(@item.id) == 0 $game_system.se_play($data_system.buzzer_se) return end if @target_window.index == -1 used = false for i in $game_party.actors used |= i.item_effect(@item) end end if @target_window.index >= 0 target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end if used $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) @item_window.draw_item(@item_window.index) end @target_window.refresh if $game_party.all_dead? $scene = Scene_Gameover.new return end if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $scene = Scene_Map.new return end end unless used $game_system.se_play($data_system.buzzer_se) end return end endend#===============================================================================复制代码