#============================================================================== # ■ Window_Help #------------------------------------------------------------------------------ # 特技及物品的说明、角色的状态显示的窗口。 # 若要更改属性,请搜索element_set={1=>"火",2=>"冰",3=>"光",4=>"暗"} 改成对应属性即可 #============================================================================== UNSHOW_STATE=[1,2,3,4,5]#记录不显示的状态数组 UNSHOW_ELEMENT=[1,2,3,4,5]#记录不显示的属性数组 class Window_Help < Window_Base #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- def initialize super(150,200, 180, 430) self.opacity = 150 self.z=150 self.visible = false self.contents = Bitmap.new(width - 32, height - 32) description="" @item=nil @armor=nil @weapon=nil end #-------------------------------------------------------------------------- # ● 设置文本 # text : 窗口显示的字符串 # align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐) #-------------------------------------------------------------------------- def set_text(data, align=nil) # 如果文本和对齐方式的至少一方与上次的不同 if align != nil # 再描绘窗口和文本 self.width = 640 self.height = 64 self.x=0 self.y=0 self.contents = Bitmap.new(width - 32, height - 32) self.contents.clear self.contents.font.color = normal_color self.contents.font.size = 20 self.contents.draw_text(4, 0, self.width - 48, 32, data, align) self.visible = true return end if data == nil self.visible=false @data = nil end if data != nil && @data != data @data=data self.visible=true self.width = 180 self.height = 200 self.x=180 self.y=430 self.contents = Bitmap.new(width - 32, height - 32) case @data when RPG::Item set_item_text(@data) when RPG::Weapon set_weapon_text(@data) when RPG::Armor set_armor_text(@data) when RPG::Skill set_skill_text(@data) end else return end end #-------------------------------------------------------------------------- # ● 设置敌人 # enemy : 要显示名字和状态的敌人 #-------------------------------------------------------------------------- def set_enemy(enemy) text = enemy.name state_text = make_battler_state_text(enemy, 0, false) if state_text != "" text += " " + state_text end set_text(text, 1) @data=nil end #-------------------------------------------------------------------------- # ● 设置角色 # actor : 要显示状态的角色 #-------------------------------------------------------------------------- def set_actor(actor) if actor != @actor self.width = 640 self.height = 64 self.x=0 self.y=0 self.contents = Bitmap.new(width - 32, height - 32) self.contents.clear self.contents.font.size=20 self.contents.font.color = normal_color draw_actor_name(actor, 4, 0) draw_actor_state(actor, 140, 0) draw_actor_hp(actor, 284, 0) draw_actor_sp(actor, 460, 0) @actor = actor @text = nil self.visible = true end end #-------------------------------------------------------------------------- # ● 校正帮助窗口位置 #-------------------------------------------------------------------------- def set_pos(x,y,width,oy,index,column_max) #光标坐标 cursor_width = width / column_max - 32 xx = index % column_max * (cursor_width + 32) yy = index / column_max * 32 - oy self.x=xx+x+150 self.y=yy+y+30 if self.x+self.width>640 self.x=640-self.width end if self.y+self.height>480 self.y=480-self.height end end end
class Window_Help < Window_Base #-------------------------------------------------------------------------- # ● 物品帮助窗口 #-------------------------------------------------------------------------- def set_item_text(item) @item=item description="" [email protected] x=0 y=0 # 取得屬性、附加狀態、解除狀態之副本 element_set = @item.element_set.clone plus_state_set = @item.plus_state_set.clone minus_state_set = @item.minus_state_set.clone # 過濾不顯示的描述 element_set -= UNSHOW_ELEMENT plus_state_set -= UNSHOW_STATE minus_state_set -= UNSHOW_STATE height=1 #依要显示的内容确定高 #由描叙确定高 height+=description.size/3/10 if description.size%10!=0 height+=1 end height+=3 #空行,效果范围,价格 if @item.recover_hp_rate!=0 #HP 回复率。 height+=1 end if @item.recover_hp!=0 #HP 回复量。 height+=1 end if @item.recover_sp_rate!=0 #SP 回复率。 height+=1 end if @item.recover_sp!=0 #SP 回复量。 height+=1 end if @item.parameter_type!=0 #增加能力值 height+=1 end if element_set.empty?!=true #属性。为属性 ID 的数组 height+=1 end if plus_state_set.empty?!=true #附加状态。为状态 ID 的数组 height+=plus_state_set.size end if minus_state_set.empty?!=true #解除状态。为状态 ID 的数组 height+=minus_state_set.size end self.height=height*15+40+15 self.contents = Bitmap.new(self.width - 32,self.height - 32) self.contents.clear #描绘名字 [email protected] self.contents.font.color =text_color(6) self.contents.font.size=18 if text!=nil self.visible = true self.contents.draw_text(0,0, @item.name.size*7, 20, text, 0) else self.visible = false end x=0 y+=1 text=description #描绘描叙 while ((text = description.slice!(/./m)) != nil) self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0) x+=1 if x==10#每行10个字 x=0 y+=1 end end #由特技属性确定高 #效果范围 scope = {0=>"特殊物品",1=>"敌单体",2=>"敌全体",3=>"己方单体",4=>"己方全体",5=>"己方昏死单体",6=>"己方昏死全体",7=>"使用者"}#HASH表 text="范围:"+scope[@item.scope] x=0 y+=2 #空一行 self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) #价格 x=0 y+=1 text="价格:"[email protected]_s self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) #HP 回复率 if @item.recover_hp_rate!=0 x=0 y+=1 text="回复HP:"[email protected]_hp_rate.to_s+"%" self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end #HP回复量 if @item.recover_hp!=0 x=0 y+=1 text="回复HP:"[email protected]_hp.to_s self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end #SP 回复率 if @item.recover_sp_rate!=0 x=0 y+=1 text="回复SP:"[email protected]_sp_rate.to_s+"%" self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end #SP 回复量 if @item.recover_sp!=0 x=0 y+=1 text="回复SP:"[email protected]_sp.to_s self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end #增加能力值 if @item.parameter_type!=0 parameter_type={1=>"MaxHP",2=>"MaxSP",3=>$data_system.words.str,4=>$data_system.words.dex,5=>$data_system.words.agi,6=>$data_system.words.int} x=0 y+=1 if @item.parameter_points>0 text="增益:"+parameter_type[@item.parameter_type]+" +"[email protected]_points.to_s else text="减少:"+parameter_type[@item.parameter_type][email protected]_points.to_s end self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end #物品属性 if element_set.empty?!=true #属性。为属性 ID 的数组 text="属性:" for i in 0...element_set.size text+=$data_system.elements[element_set[i]]+" " end x=0 y+=1 self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end #附加状态 if plus_state_set.empty?!=true #附加状态。为状态 ID 的数组 text="附加状态:" x=0 y+=1 self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) y-=1 x+=text.size*5 for i in 0...plus_state_set.size y+=1 text=$data_states[plus_state_set[i]].name self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end end #解除状态 if minus_state_set.empty?!=true #解除状态。为状态 ID 的数组 text="解除状态:" x=0 y+=1 self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) y-=1 x+=text.size*5 for i in 0...minus_state_set.size y+=1 text=$data_states[minus_state_set[i]].name self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end end end end class Window_Help < Window_Base #-------------------------------------------------------------------------- # ● 武器帮助窗口 #-------------------------------------------------------------------------- def set_weapon_text(weapon) @weapon=weapon description="" [email protected] # 取得屬性、附加狀態、解除狀態之副本 element_set = @weapon.element_set.clone plus_state_set = @weapon.plus_state_set.clone minus_state_set = @weapon.minus_state_set.clone # 過濾不顯示的描述 element_set -= UNSHOW_ELEMENT plus_state_set -= UNSHOW_STATE minus_state_set -= UNSHOW_STATE x=0 y=0 height=1 #依要显示的内容确定高 #由描叙确定高 height+=description.size/3/10 if description.size%10!=0 height+=1 end height+=4 #2个空行,攻击,价格 if @weapon.pdef!=0 #物理防御 height+=1 end if @weapon.mdef!=0 #魔法防御 height+=1 end if @weapon.str_plus!=0 #力量 height+=1 end if @weapon.dex_plus!=0#体质 height+=1 end if @weapon.agi_plus!=0#敏捷 height+=1 end if @weapon.int_plus!=0 #智力 height+=1 end if element_set.empty?!=true #属性。为属性 ID 的数组 height+=1 end if plus_state_set.empty?!=true #附加状态。为状态 ID 的数组 height+=plus_state_set.size end if minus_state_set.empty?!=true #解除状态。为状态 ID 的数组 height+=minus_state_set.size end self.height=height*15+40+15 self.contents = Bitmap.new(self.width - 32,self.height - 32) self.contents.clear #描绘名字 [email protected] self.contents.font.color = text_color(6)#颜色脚本 self.contents.font.size=18 if text!=nil self.visible = true self.contents.draw_text(0,0, @weapon.name.size*7, 20, text, 0) else self.visible = false end x=0 y+=1 text=description #描绘描叙 while ((text = description.slice!(/./m)) != nil) self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0) x+=1 if x==10#每行10个字 x=0 y+=1 end end #由特技属性确定高 #攻击 x=0 y+=2 #空行 text="攻击:"[email protected]_s self.contents.font.color = text_color(6)#颜色脚本 self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) #价格 x=0 y+=1 text="价格:"[email protected]_s self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) if @weapon.pdef!=0 #物理防御 x=0 y+=1 text="物理防御:"[email protected]_s self.contents.font.color = text_color(6)#颜色脚本 self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end if @weapon.mdef!=0 #魔法防御 x=0 y+=1 text="魔法防御:"[email protected]_s self.contents.font.color = text_color(6)#颜色脚本 self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end #武器属性 if element_set.empty? != true #属性。为属性 ID 的数组 text="属性:" for i in 0...element_set.size text+=$data_system.elements[element_set[i]]+" " end x=0 y+=1 self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end #附加状态 if plus_state_set.empty? != true #附加状态。为状态 ID 的数组 text="附加状态:" x=0 y+=1 self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) y-=1 x+=text.size*5 for i in 0...plus_state_set.size y+=1 text=$data_states[plus_state_set[i]].name self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end end #解除状态 if minus_state_set.empty? != true #解除状态。为状态 ID 的数组 text="解除状态:" x=0 y+=1 self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) y-=1 x+=text.size*5 for i in 0...minus_state_set.size y+=1 text=$data_states[minus_state_set[i]].name self.contents.font.color = normal_color self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end end y+=1 #空行 if @weapon.str_plus!=0 #力量 x=0 y+=1 if @weapon.str_plus > 0 text=$data_system.words.str+" + "[email protected]_plus.to_s else [email protected]_plus text=$data_system.words.str+" - "+str_minus.to_s end self.contents.font.color = text_color(6)#颜色脚本 self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end if @weapon.dex_plus!=0#体质 x=0 y+=1 if @weapon.dex_plus > 0 text=$data_system.words.dex+" + "[email protected]_plus.to_s else [email protected]_plus text=$data_system.words.dex+" - "+dex_minus.to_s end self.contents.font.color = text_color(6)#颜色脚本 self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end if @weapon.agi_plus!=0#敏捷 x=0 y+=1 if @weapon.agi_plus > 0 text=$data_system.words.agi+" + "[email protected]_plus.to_s else [email protected]_plus text=$data_system.words.agi+" - "+agi_minus.to_s end self.contents.font.color = text_color(6)#颜色脚本 self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end if @weapon.int_plus!=0 #智力 x=0 y+=1 if @weapon.int_plus > 0 text=$data_system.words.int+" + "[email protected]_plus.to_s else [email protected]_plus text=$data_system.words.int+" - "+int_minus.to_s end self.contents.font.color = text_color(6)#颜色脚本 self.contents.font.size=14 self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0) end end end class Window_Help < Window_Base #-------------------------------------------------------------------------- # ● 防具帮助窗口 #-------------------------------------------------------------------------- def set_armor_text(armor) @armor=armor description="" [email protected] # 取得屬性、附加狀態、解除狀態之副本 element_set = @armor.guard_element_set.clone guard_sta |