赞 0  
 
VIP 0 
 
好人卡 0 
 
积分 1  
 
经验 6679 
 
最后登录 2017-4-11 
 
在线时间 116 小时 
 
 
 
Lv1.梦旅人 
	梦石 0   
        星屑 50  
        在线时间 116 小时 
        注册时间 2012-10-4 
        帖子 193  
 
 
 
	
3 楼 
 
 楼主
| 
发表于 2012-11-11 17:43:58 
| 
只看该作者 
 
 
 
技能升級的腳本: 
# ----------------------------------------------------------------------------- 
# ◆技能升级(SKILL_UP) By.Clov 
# ----------------------------------------------------------------------------- 
# Ver:1.0.0 Date:2012.06.11 
# -1.0.0:完整版 
# 界面:SceneManager.call(Scene_SUP) 
# 角色切换:技能分类栏 L / R 
# ----------------------------------------------------------------------------- 
module  SUP
#————————————————————————————————————————— 
  #·升级技能关联 
  #  技能ID => 升级后技能ID 
  UP = { 
  26 =>27 ,    # 治愈 → 治愈Ⅱ 
  27 =>28 ,    # 治愈Ⅱ → 治愈Ⅲ 
  28 =>29 ,    # 治愈Ⅲ → 回复 
  29 =>30 ,    # 回复 → 回复Ⅱ 
  30 =>116 ,   # 回复Ⅱ → 精灵的叹息 
  80 =>81 ,    # 强击 → 横扫 
  81 =>82 ,    # 横扫 → 狂战士咆哮 
  82 =>83 ,    # 狂战士咆哮 → 狂战士之舞 
  83 =>84 ,    # 狂战士之舞 → 巨人的痛击 
  84 =>127 ,    # 巨人的痛击 → 守护神兽:草泥马降临 
  } 
#————————————————————————————————————————— 
  #·各条件“符号”说明 
  #  【物品篇】 
  #  条件数组头部 :items  :weapons  :armors 符号分别为判断 道具、武器、防具 
  #  再在尾部输入物品ID即可 
  #  【变量、开关、对比篇】 
  #  条件数组尾部 :bit 符号为要显示图片的名字(尺寸24*24) 
  #  若省略的话,将不显示图片 
  #——————————————————————————————————————— 
  #·默认条件 
  #  技能ID 0 的条件即为默认升级条件 
  #  以下4种条件类型都可以设置默认条件 
  #——————————————————————————————————————— 
  #·升级条件-物品【变量消耗( a -= b)】 
  #  技能ID => [[:类别符号, 物品ID(a), 消耗数值(b)],[],[]…更多条件…] 
  #  例:1 => [[:items, 10,5], [……]] 
  IF_ITE = { 
  0  => [ [ :items , 19 , 5 ] ] , #使用19号道具作为默认升级条件 
  30  => [ [ :items , 18 , 1 ] ] , #升级 回复Ⅱ 需要18号道具1个 
  84  => [ [ :items , 17 , 1 ] ,[ :weapons , 62 , 1 ] ,[ :armors , 61 , 1 ] ]  #升级 巨人的痛击  
  #需要17号道具1个、62号武器1个、61号防具1个 
  } 
  #——————————————————————————————————————— 
  #·升级条件-变量【变量消耗( a -= b)】 
  #  技能ID => [["显示文字", "变量连接(a)", 消耗数值(b)],[],[]…更多条件…] 
  #  例:1 => [["脚本变量测试","$变量",10], [……]] 
  IF_VAR = { 
  0  => [ [ "蓝宝石碎片" ,"$game_variables[100]" ,5 ] ] , #使用游戏1号变量作为默认升级条件 
  # 恢复技能条件 
  28  => [ [ "生命之光" ,"$game_variables[1]" ,10 ] ] , #升级 治愈Ⅲ 需要消耗变量1 10数值 
  29  => [ [ "生命之光" ,"$game_variables[1]" ,20 ] ] , #升级 回复 需要消耗变量1 20数值 
  30  => [ [ "生命之光" ,"$game_variables[1]" ,50 ] ] , #升级 回复Ⅱ 需要消耗变量1 50数值 
  # 伤害技能条件 
  82  => [ [ "力量之光" ,"$game_variables[2]" ,10 ] ] , #升级 狂战士咆哮 需要消耗变量2 50数值 
  83  => [ [ "力量之光" ,"$game_variables[2]" ,20 ] ] , #升级 狂战士之舞 需要消耗变量2 50数值 
  84  => [ [ "力量之光" ,"$game_variables[2]" ,50 ] , #升级 巨人的痛击 需要消耗变量2 50数值 
  [ "巨大的蓝宝石" ,"$game_variables[3]" ,10 ] ]  #升级 巨人的痛击 需要消耗变量3 10数值 
  } 
  #——————————————————————————————————————— 
  #·升级条件-开关【开关判断( a == true )】 
  #  技能ID => [["显示文字", "开关连接(a)"],[],[]…更多条件…] 
  #  例:1 => [["脚本开关测试","$开关"], [……]] 
  IF_SWI = { 
  0  => [ ] ,   #默认升级开关条件 
  30  => [ [ "获得好人卡" ,"$好人卡" ,:好人卡] ] , #升级 回复Ⅱ 需要 $好人卡 为true 
  84  => [ [ "作者允许草泥马降临" ,"$草泥马降临" ,:草泥马] ]  #升级 巨人的痛击 需要 $草泥马降临 为true 
  } 
  #——————————————————————————————————————— 
  #·升级条件-比较【比较相等( a == b )】 
  #  技能ID => [["显示文字", "比较连接1(a)", "比较连接2(b)"],[],[]…更多条件…] 
  #  例:1 => [["脚本比较测试","$比较1","$比较2"], [……]] 
  IF_COM = { 
  0  => [ ] ,   #默认升级对比条件 
  } 
#————————————————————————————————————————— 
  #·积极、消极值槽颜色 
  POS_COLOR1 = Color.new ( 214 ,233 ,83 ,255 ) 
  POS_COLOR2 = Color.new ( 255 ,255 ,255 ,255 ) 
  NEG_COLOR1 = Color.new ( 253 ,80 ,128 ,255 ) 
  NEG_COLOR2 = Color.new ( 255 ,255 ,255 ,255 ) 
#————————————————————————————————————————— 
  #·输出评分最大值 
  PFX = 9999 
#————————————————————————————————————————— 
  #·图标存放文件夹 
  FILE = "Graphics/Icon/" 
#————————————————————————————————————————— 
  #·效果范围显示文字 
  SCOPE = [ "无" ,
  "单个敌人" ,"全体敌人" ,
  "一个随机敌人" ,"二个随机敌人" ,"三个随机敌人" ,"四个随机敌人" ,
  "单个队友" ,"全体队友" ,
  "单个队友(无法战斗)" ,"全体队友(无法战斗)" ,
  "使用者" ] 
  #·使用场合显示文字 
  OCCASION = [ "随时可用" ,"战斗可用" ,"菜单可用" ,"不可用" ] 
  #·命中类型显示文字 
  HIT_TYPE = [ "必定命中" ,"物理攻击" ,"魔法攻击" ] 
  #·输出类型显示文字 
  DAMAGE_TYPE = [ "无输出" ,"HP伤害" ,"MP伤害" ,"HP恢复" ,"MP恢复" ,"HP吸收" ,"MP吸收" ] 
#————————————————————————————————————————— 
end 
 
#============================================================================== 
# ■ SUP_Window_Command 
#------------------------------------------------------------------------------ 
#  技能分类窗口 
#============================================================================== 
 
class  SUP_Window_Command < Window_Command
  #-------------------------------------------------------------------------- 
  # ● 定义实例变量 
  #-------------------------------------------------------------------------- 
  attr_reader   :skill_window 
  #-------------------------------------------------------------------------- 
  # ● 初始化对象 
  #-------------------------------------------------------------------------- 
  def  initialize( x, y) 
    super ( x, y) 
    @actor  = nil 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取窗口的宽度 
  #-------------------------------------------------------------------------- 
  def  window_width
    return  200 
  end 
  #-------------------------------------------------------------------------- 
  # ● 设置角色 
  #-------------------------------------------------------------------------- 
  def  actor=( actor) 
    return  if  @actor  == actor
    @actor  = actor
    refresh
    select_last
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取显示行数 
  #-------------------------------------------------------------------------- 
  def  visible_line_number
    return  4 
  end 
  #-------------------------------------------------------------------------- 
  # ● 生成指令列表 
  #-------------------------------------------------------------------------- 
  def  make_command_list
    return  unless  @actor 
    @actor .added_skill_types .sort .each  do  |stype_id|
      name = $data_system .skill_types [ stype_id] 
      add_command( name, :skill , true , stype_id) 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 更新画面 
  #-------------------------------------------------------------------------- 
  def  update
    super 
    @skill_window .stype_id  = current_ext if  @skill_window 
  end 
  #-------------------------------------------------------------------------- 
  # ● 设置技能窗口 
  #-------------------------------------------------------------------------- 
  def  skill_window=( skill_window) 
    @skill_window  = skill_window
    update
  end 
  #-------------------------------------------------------------------------- 
  # ● 返回上一个选择的位置 
  #-------------------------------------------------------------------------- 
  def  select_last
    skill = @actor .last_skill .object 
    if  skill
      select_ext( skill.stype_id ) 
    else 
      select ( 0 ) 
    end 
  end 
end 
 
#============================================================================== 
# ■ SUP_Window_Index 
#------------------------------------------------------------------------------ 
#  技能列表窗口。 
#============================================================================== 
 
class  SUP_Window_Index < Window_Selectable
  #-------------------------------------------------------------------------- 
  # ● 初始化对象 
  #-------------------------------------------------------------------------- 
  def  initialize( x, y, width, height) 
    super 
    @actor  = nil 
    @stype_id  = 0 
    @data  = [ ] 
  end 
  #-------------------------------------------------------------------------- 
  # ● 设置角色 
  #-------------------------------------------------------------------------- 
  def  actor=( actor) 
    return  if  @actor  == actor
    @actor  = actor
    refresh
    self .oy  = 0 
  end 
  #-------------------------------------------------------------------------- 
  # ● 设置技能类型 ID  
  #-------------------------------------------------------------------------- 
  def  stype_id=( stype_id) 
    return  if  @stype_id  == stype_id
    @stype_id  = stype_id
    refresh
    self .oy  = 0 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取列数 
  #-------------------------------------------------------------------------- 
  def  col_max
    return  1 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取项目数 
  #-------------------------------------------------------------------------- 
  def  item_max
    @data  ? @data .size  : 1 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取技能 
  #-------------------------------------------------------------------------- 
  def  item
    @data  && index >= 0  ? @data [ index]  : nil 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取选择项目的有效状态 
  #-------------------------------------------------------------------------- 
  def  current_item_enabled?
    enable?( @data[ index] ) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 查询列表中是否含有此技能 
  #-------------------------------------------------------------------------- 
  def  include ?( item) 
    item && item.stype_id  == @stype_id 
  end 
  #-------------------------------------------------------------------------- 
  # ● 查询此技能是否可用 
  #-------------------------------------------------------------------------- 
  def  enable?( item) 
    item && SUP::UP .has_key ?( item.id ) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 生成技能列表 
  #-------------------------------------------------------------------------- 
  def  make_item_list
    @data  = @actor  ? @actor .skills .select  { |skill| include ?( skill)  }  : [ ] 
  end 
  #-------------------------------------------------------------------------- 
  # ● 返回上一个选择的位置 
  #-------------------------------------------------------------------------- 
  def  select_last
    select ( @data.index ( @actor.last_skill .object )  || 0 ) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 绘制项目 
  #-------------------------------------------------------------------------- 
  def  draw_item( index) 
    skill = @data [ index] 
    if  skill
      rect = item_rect( index) 
      rect.width  -= 4 
      draw_item_name( skill, rect.x , rect.y , enable?( skill) ) 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 更新帮助内容 
  #-------------------------------------------------------------------------- 
  def  update_help
    @help_window .set_item ( item) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 刷新 
  #-------------------------------------------------------------------------- 
  def  refresh
    make_item_list
    create_contents
    draw_all_items
  end 
end 
 
#============================================================================== 
# ■ SUP_Window_Info 
#------------------------------------------------------------------------------ 
#  技能信息窗口 
#============================================================================== 
 
class  SUP_Window_Info < Window_Base
  #-------------------------------------------------------------------------- 
  # ● 初始化对象 
  #-------------------------------------------------------------------------- 
  def  initialize( x, y,w,h) 
    super ( x, y, w, h) 
    @w  = w ; @h  = h
    @yema  = 1 
    @actor  = nil 
    @skill  = nil 
    @font_size  = 20 
    @help_fill_color1  = Color.new ( 255 ,255 ,255 ,255 ) 
    @help_fill_color2  = Color.new ( 255 ,255 ,255 ,0 ) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 设置角色 
  #-------------------------------------------------------------------------- 
  def  actor=( val) 
    @actor  = val
  end 
  #-------------------------------------------------------------------------- 
  # ● 取得技能 
  #-------------------------------------------------------------------------- 
  def  skill
    @skill 
  end 
  #-------------------------------------------------------------------------- 
  # ● 设置技能 
  #-------------------------------------------------------------------------- 
  def  skill=( val) 
    @skill  = val
    huanye( @yema) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 技能是否可升级 
  #-------------------------------------------------------------------------- 
  def  skill_up?
    SUP::UP .has_key ?( @skill.id ) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获得行高 
  #-------------------------------------------------------------------------- 
  def  line_height
    @font_size 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获得页码 
  #-------------------------------------------------------------------------- 
  def  yema
    @yema 
  end 
  #-------------------------------------------------------------------------- 
  # ● 换页 
  #-------------------------------------------------------------------------- 
  def  huanye( y) 
    @yema  = y
    case  @yema 
    when  1 
    @draw  = method( :draw1 ) 
    @help_txt  = [ "技能状态信息" , "升级技能状态信息" , "A键换页(1/2)" ] 
    when  2 
    @draw  = method( :draw2 ) 
    @help_txt  = [ "技能数值信息" , "升级技能数值信息" , "A键换页(2/2)" ] 
    end 
    refresh
  end 
  #-------------------------------------------------------------------------- 
  # ● 刷新 
  #-------------------------------------------------------------------------- 
  def  refresh
    contents.clear 
    return  if  !@skill
    #描绘帮助信息 
    contents.font .size  = 16 
    help
    #描绘技能信息 
    contents.font .size  = line_height
    #描绘选中的技能 
    @draw .call ( @skill, 0 , line_height) 
    #描绘升级后的技能 
    if  skill_up?
      @draw .call ( $data_skills[ SUP::UP [ @skill.id ] ] , 0 , line_height * 9 ) 
    else 
      draw_text( 70 , line_height * 9  + 65 , 280 , line_height, 
    "技能已经无法升级。" ) 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 描绘帮助条 
  #-------------------------------------------------------------------------- 
  def  help
    #第一条 
    contents.gradient_fill_rect ( 0 , 0 , @w , line_height, 
    @help_fill_color1 , @help_fill_color2 ) 
    draw_text( 2 , 0 , 280 , line_height, @help_txt [ 0 ] ) 
    #第二条 
    contents.gradient_fill_rect ( 0 , line_height * 8 , @w , line_height, 
    @help_fill_color1 , @help_fill_color2 ) 
    draw_text( 2 , line_height * 8 , 280 , line_height, @help_txt [ 1 ] ) 
    #换页 
    draw_text( 225 , 0 , 280 , line_height, @help_txt [ 2 ] ) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 描绘页1 
  #-------------------------------------------------------------------------- 
  def  draw1( skill,x,y) 
    #名称--------------------------------------------- 
    draw_item_name( skill, x, y) 
    #属性--------------------------------------------- 
    sx = $data_system .elements [ skill.damage .element_id ] 
    sx = sx==""  ? "无"  : sx
    draw_text( x, y + line_height, 280 , line_height, 
    "属性:" +sx) 
    #使用场合----------------------------------------- 
    draw_text( x, y + line_height * 2 , 280 , line_height, 
    "使用场合:" +SUP::OCCASION [ skill.occasion  ] ) 
    #使用范围----------------------------------------- 
    draw_text( x, y + line_height * 3 , 280 , line_height, 
    "使用范围:" +SUP::SCOPE [ skill.scope ] ) 
    #命中类型----------------------------------------- 
    draw_text( x, y + line_height * 4 , 280 , line_height, 
    "命中类型:" +SUP::HIT_TYPE [ skill.hit_type ] ) 
    #输出类型----------------------------------------- 
    draw_text( x, y + line_height * 5 , 280 , line_height, 
    "输出类型:" +SUP::DAMAGE_TYPE [ skill.damage .type ] ) 
    #武器限制----------------------------------------- 
    w1 = $data_system .weapon_types [ skill.required_wtype_id1 ] 
    w2 = $data_system .weapon_types [ skill.required_wtype_id2 ] 
    w = "无武器限制"  ; if  w1 !="" ;w=w1;end ; if  w2 != "" ;w+="与" +w2;end
    draw_text( x, y + line_height * 6 , 280 , line_height, 
    "武器限制:" +w) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 描绘页2 
  #-------------------------------------------------------------------------- 
  def  draw2( skill,x,y) 
    #名称--------------------------------------------- 
    draw_item_name( skill, x, y) 
    #魔力值消耗--------------------------------------- 
    draw_text( x, y + line_height, 280 , line_height, 
    "魔力值消耗:" ) 
    w = 200  ; h = 15 
    b = skill.mp_cost .to_f  / 9999 
    c1 = Color.new ( 128 ,155 ,122 ,255 ) 
    c2 = Color.new ( 25 ,55 ,155 ,255 ) 
    flii( x+120 , y + line_height + 3 , w, h, b, SUP::NEG_COLOR1 , SUP::NEG_COLOR2 ) 
    draw_current_and_max_values( x+40 , y + line_height, 280 , skill.mp_cost , 9999 , 
    text_color( 0 ) , text_color( 0 ) ) 
    #特技值消耗--------------------------------------- 
    draw_text( x, y + line_height * 2 , 280 , line_height, 
    "特技值消耗:" ) 
    w = 200  ; h = 15 
    b = skill.tp_cost .to_f  / 100 
    flii( x+120 , y + line_height * 2  + 3 , w, h, b, SUP::NEG_COLOR1 , SUP::NEG_COLOR2 ) 
    draw_current_and_max_values( x+40 , y + line_height * 2 , 280 , skill.tp_cost , 100 , 
    text_color( 0 ) , text_color( 0 ) ) 
    #特技值获得--------------------------------------- 
    draw_text( x, y + line_height * 3 , 280 , line_height, 
    "特技值获得:" ) 
    w = 200  ; h = 15 
    b = skill.tp_gain .to_f  / 100 
    flii( x+120 , y + line_height * 3  + 3 , w, h, b, SUP::POS_COLOR1 , SUP::POS_COLOR2 ) 
    draw_current_and_max_values( x+40 , y + line_height * 3 , 280 , skill.tp_gain , 100 , 
    text_color( 0 ) , text_color( 0 ) ) 
    #攻击次数----------------------------------------- 
    draw_text( x, y + line_height * 4 , 280 , line_height, 
    "攻击次数:" ) 
    w = 200  ; h = 15 
    b = skill.repeats .to_f  / 9 
    flii( x+120 , y + line_height * 4  + 3 , w, h, b, SUP::POS_COLOR1 , SUP::POS_COLOR2 ) 
    draw_current_and_max_values( x+40 , y + line_height * 4 , 280 , skill.repeats , 9 , 
    text_color( 0 ) , text_color( 0 ) ) 
    #成功几率----------------------------------------- 
    draw_text( x, y + line_height * 5 , 280 , line_height, 
    "成功几率:" ) 
    w = 200  ; h = 15 
    b = skill.success_rate .to_f  / 100 
    flii( x+120 , y + line_height * 5  + 3 , w, h, b, SUP::POS_COLOR1 , SUP::POS_COLOR2 ) 
    draw_current_and_max_values( x+40 , y + line_height * 5 , 280 , skill.success_rate , 100 , 
    text_color( 0 ) , text_color( 0 ) ) 
    #输出评分----------------------------------------- 
    draw_text( x, y + line_height * 6 , 280 , line_height, 
    "输出评分:" ) 
    pf = scpf( skill) 
    w = 200  ; h = 15 
    b = [ pf.to_f  / SUP::PFX , 1.0 ] .min 
    type = skill.damage .type 
    case  type
    when  0 
      draw_text( x+150 , y + line_height * 6 , 280 , line_height, 
    "此技能没有输出。" ) 
    when  1 , 2 , 5 , 6 
      flii( x+120 , y + line_height * 6  + 3 , w, h, b, SUP::NEG_COLOR1 , SUP::NEG_COLOR2 ) 
      draw_current_and_max_values( x+40 , y + line_height * 6 , 280 , pf, SUP::PFX , 
      text_color( 0 ) , text_color( 0 ) ) 
    when  3 , 4 
      flii( x+120 , y + line_height * 6  + 3 , w, h, b, SUP::POS_COLOR1 , SUP::POS_COLOR2 ) 
      draw_current_and_max_values( x+40 , y + line_height * 6 , 280 , pf, SUP::PFX , 
      text_color( 0 ) , text_color( 0 ) ) 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 描绘值槽 
  #-------------------------------------------------------------------------- 
  def  flii( x, y, w, h, b, color1, color2) 
    contents.fill_rect ( x, y, w, h, Color.new ( 0 ,0 ,0 ,64 ) ) 
    contents.gradient_fill_rect ( x, y, w*b, h, color1, color2) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获得评分 
  #-------------------------------------------------------------------------- 
  def  scpf( skill) 
    g = skill.damage .formula .to_s 
    a = @actor 
    v = $game_variables 
    g.gsub !( /b/,"a" ) 
    return  eval ( g) 
  end 
end 
 
#============================================================================== 
# ■ SUP_Window_Choice 
#------------------------------------------------------------------------------ 
#  技能升级条件及确认窗口 
#============================================================================== 
 
class  SUP_Window_Choice < Window_Command
  #-------------------------------------------------------------------------- 
  # ● 初始化对象 
  #-------------------------------------------------------------------------- 
  def  initialize( x, y) 
    @hx  = -1 
    super ( x, y) 
    @skill  = nil 
    @actor  = nil 
    @enabled  = [ ] 
    @txt  = [ ] 
    @ite  = [ ] 
    @pic  = [ ] 
    @xh  = [ ] 
  end 
  #-------------------------------------------------------------------------- 
  # ● 设置角色 
  #-------------------------------------------------------------------------- 
  def  actor=( val) 
    @actor  = val
  end 
  #-------------------------------------------------------------------------- 
  # ● 取得技能 
  #-------------------------------------------------------------------------- 
  def  skill
    @skill 
  end 
  #-------------------------------------------------------------------------- 
  # ● 设置技能 
  #-------------------------------------------------------------------------- 
  def  skill=( val) 
    @skill  = val
    refresh_draw
  end 
  #-------------------------------------------------------------------------- 
  # ● 取得全部指定条件 
  #-------------------------------------------------------------------------- 
  def  all_if( skill_id) 
    arr = Array .new 
    arr << SUP::IF_ITE [ skill_id] 
    arr << SUP::IF_VAR [ skill_id] 
    arr << SUP::IF_SWI [ skill_id] 
    arr << SUP::IF_COM [ skill_id] 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取全部条件有效状态 
  #-------------------------------------------------------------------------- 
  def  all_enabled?
    !@enabled.include ?( false ) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取物品、变量条件有效状态 
  #-------------------------------------------------------------------------- 
  def  ite_var_enabled?( y, s) 
    return  false  if  not  y
    y >= s
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取开关条件有效状态 
  #-------------------------------------------------------------------------- 
  def  swi_enabled?( y) 
    y
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取对比条件有效状态 
  #-------------------------------------------------------------------------- 
  def  com_enabled?( y1, y2) 
    y1 == y2
  end 
  #-------------------------------------------------------------------------- 
  # ● 技能升级条件数据 
  #-------------------------------------------------------------------------- 
  def  skill_data
    return  if  !@skill
    @hx  = -1  ; @enabled  = [ ]  ; @txt  = [ ]  ; @pic  = [ ]  ; @pid  = [ ]  ; @xh  = [ ] 
    l = all_if( @skill.id )  ; n = l.compact 
    t = n == [ ]  ? all_if( 0 )  : l
    t1 = t[ 0 ]  ; t2 = t[ 1 ]  ; t3 = t[ 2 ]  ; t4 = t[ 3 ] 
    if  t1
      ite_data( t1) 
    end 
    if  t2
      var_data( t2) 
    end 
    if  t3
      swi_data( t3) 
    end 
    if  t4
      com_data( t4) 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 技能条件进行描绘 
  #-------------------------------------------------------------------------- 
  def  skill_draw
    @txt .each_with_index  { |txt,i|
    change_color( normal_color, @enabled [ i] ) 
    pic = @pic [ i] 
    if  pic.is_a ?( Symbol ) 
      wx = window_width / 2  - text_size( txt) .width  / 2  - 24 
      if  pic == :ite 
        draw_item_icon( @ite[ i] , wx, item_height * i) 
      else 
        draw_bit( pic.to_s , wx, item_height * i) 
      end 
    end 
    draw_text( 0 , item_height * i, window_width, item_height, txt, 1 ) 
    } 
  end 
  #-------------------------------------------------------------------------- 
  # ● 绘制物品图标 
  #-------------------------------------------------------------------------- 
  def  draw_item_icon( item, x, y) 
    draw_icon( item.icon_index , x, y) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 绘制图片 
  #-------------------------------------------------------------------------- 
  def  draw_bit( name, x, y) 
    bitmap = Bitmap.new ( SUP::FILE  + name) 
    rect = Rect.new ( 0 , 0 , 24 , 24 ) 
    contents.blt ( x, y, bitmap, rect) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 对技能进行升级(变量、物品消耗) 
  #-------------------------------------------------------------------------- 
  def  skill_up
    @actor .forget_skill ( @skill.id ) 
    @actor .learn_skill ( SUP::UP [ @skill.id ] ) 
    @xh .each_with_index  { |x, i|
    if  x.is_a ?( String ) 
      eval ( x) 
    else 
      $game_party .gain_item ( @ite[ i] , -x) 
    end } 
  end 
  #-------------------------------------------------------------------------- 
  # ● 物品条件 数据 
  #-------------------------------------------------------------------------- 
  def  ite_data( si) 
    si.each  { |i|
    @hx  += 1  ; t = i[ 0 ]  ; b = i[ 1 ]  ; s = i[ 2 ] 
    case  t
    when  :items 
      item = $data_items [ b] 
    when  :weapons 
      item = $data_weapons [ b] 
    when  :armors 
      item = $data_armors [ b] 
    end 
    y = $game_party .item_number ( item) 
    enabled = ite_var_enabled?( y, s) 
    @enabled [ @hx]  = enabled
    @txt [ @hx]  = item.name +"*" + s.to_s 
    @ite [ @hx]  = item
    @pic [ @hx]  = :ite 
    @xh [ @hx]  = s
    } 
  end 
  #-------------------------------------------------------------------------- 
  # ● 变量条件 数据 
  #-------------------------------------------------------------------------- 
  def  var_data( si) 
    si.each  { |i|
    @hx  += 1  ; n = i[ 0 ]  ; y = eval ( i[ 1 ] )  ; s = i[ 2 ] 
    enabled = ite_var_enabled?( y, s) 
    @enabled [ @hx]  = enabled
    @txt [ @hx]  = n+"*" + s.to_s 
    @pic [ @hx]  = i[ -1 ] 
    @xh [ @hx]  = "#{i[1]} -= #{s.to_s}" 
    } 
  end 
  #-------------------------------------------------------------------------- 
  # ● 开关条件 数据 
  #-------------------------------------------------------------------------- 
  def  swi_data( si) 
    si.each  { |i|
    @hx  += 1  ; n = i[ 0 ]  ; y = eval ( i[ 1 ] ) 
    enabled = swi_enabled?( y) 
    @enabled [ @hx]  = enabled
    @txt [ @hx]  = n
    @pic [ @hx]  = i[ -1 ] 
    } 
  end 
  #-------------------------------------------------------------------------- 
  # ● 对比条件 数据 
  #-------------------------------------------------------------------------- 
  def  com_data( si) 
    si.each  { |i|
    @hx  += 1  ; n = i[ 0 ]  ; y1 = eval ( i[ 1 ] )  ; y2 = eval ( i[ 2 ] ) 
    enabled = com_enabled?( y1,y2) 
    @enabled [ @hx]  = enabled
    @txt [ @hx]  = n
    @pic [ @hx]  = i[ -1 ] 
    } 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取窗口的宽度 
  #-------------------------------------------------------------------------- 
  def  window_width
    return  300 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取项目的高度 
  #-------------------------------------------------------------------------- 
  def  item_height
    return  28 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取对齐方向 
  #-------------------------------------------------------------------------- 
  def  alignment
    return  1 
  end 
  #-------------------------------------------------------------------------- 
  # ● 获取项目的绘制矩形 
  #-------------------------------------------------------------------------- 
  alias  x_item_rect item_rect
  def  item_rect( index) 
    rect = x_item_rect( index) 
    rect.y  = rect.y  + item_height * ( @hx+1 ) 
    rect
  end 
  #-------------------------------------------------------------------------- 
  # ● 刷新(清除内容) 
  #-------------------------------------------------------------------------- 
  def  refresh
    contents.clear 
  end 
  #-------------------------------------------------------------------------- 
  # ● 刷新(取得数据、刷新窗口) 
  #-------------------------------------------------------------------------- 
  def  refresh2
    skill_data
    self .height  = item_height * ( @hx+3 ) 
    self .x  = Graphics.width  / 2  - window_width / 2 
    self .y  = Graphics.height  / 2  - self .height  / 2 
    create_contents
  end 
  #-------------------------------------------------------------------------- 
  # ● 刷新(要描绘的内容) 
  #-------------------------------------------------------------------------- 
  def  refresh_draw
    refresh
    refresh2
    skill_draw
    clear_command_list
    add_command( "确认" ,   :ok , all_enabled?) 
    draw_all_items
  end 
end 
 
#============================================================================== 
# ■ Scene_SUP 
#------------------------------------------------------------------------------ 
#  技能升级画面 
#============================================================================== 
 
class  Scene_SUP < Scene_MenuBase
  #-------------------------------------------------------------------------- 
  # ● 开始处理 
  #-------------------------------------------------------------------------- 
  def  start
    super 
 
    create_help_window
    suv_window_command
    suv_window_info
    suv_window_index
    suv_window_choice
 
  end 
  #-------------------------------------------------------------------------- 
  # ● 帧更新 
  #-------------------------------------------------------------------------- 
  def  update
    super 
    if  Input.trigger ?( :X ) 
      case  @suv_window_info .yema 
      when  1 
        @suv_window_info .huanye ( 2 ) 
      when  2 
        @suv_window_info .huanye ( 1 ) 
      end 
    end 
    if  @suv_window_info .skill  != @suv_window_index .item 
      @suv_window_info .skill  = @suv_window_index .item 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 生成确认窗口 
  #-------------------------------------------------------------------------- 
  def  suv_window_choice
    @suv_window_choice  = SUP_Window_Choice.new ( 0 , 0 ) 
    @suv_window_choice .viewport  = @viewport 
    @suv_window_choice .set_handler ( :ok ,    method( :confirm_ok ) ) 
    @suv_window_choice .set_handler ( :cancel ,   method( :confirm_cancel ) ) 
    @suv_window_choice .hide .deactivate 
    @suv_window_choice .actor  = @actor 
  end 
  #-------------------------------------------------------------------------- 
  # ● 生成分类窗口 
  #-------------------------------------------------------------------------- 
  def  suv_window_command
    wy = @help_window .height 
    @suv_window_command  = SUP_Window_Command.new ( 0 , wy) 
    @suv_window_command .viewport  = @viewport 
    @suv_window_command .help_window  = @help_window 
    @suv_window_command .actor  = @actor 
    @suv_window_command .set_handler ( :skill ,    method( :command_skill ) ) 
    @suv_window_command .set_handler ( :cancel ,   method( :return_scene ) ) 
    @suv_window_command .set_handler ( :pagedown , method( :next_actor ) ) 
    @suv_window_command .set_handler ( :pageup ,   method( :prev_actor ) ) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 生成状态窗口 
  #-------------------------------------------------------------------------- 
  def  suv_window_info
    y = @help_window .height 
    w = Graphics.width  - @suv_window_command .width 
    h = Graphics.height  - @help_window .height 
    @suv_window_info  = SUP_Window_Info.new ( @suv_window_command.width , y, w, h) 
    @suv_window_info .viewport  = @viewport 
    @suv_window_info .actor  = @actor 
  end 
  #-------------------------------------------------------------------------- 
  # ● 生成列表窗口 
  #-------------------------------------------------------------------------- 
  def  suv_window_index
    wx = 0 
    wy = @suv_window_command .y  + @suv_window_command .height 
    ww = Graphics.width  - @suv_window_info .width 
    wh = Graphics.height  - wy
    @suv_window_index  = SUP_Window_Index.new ( wx, wy, ww, wh) 
    @suv_window_index .actor  = @actor 
    @suv_window_index .viewport  = @viewport 
    @suv_window_index .help_window  = @help_window 
    @suv_window_index .set_handler ( :ok ,     method( :on_item_ok ) ) 
    @suv_window_index .set_handler ( :cancel , method( :on_item_cancel ) ) 
    @suv_window_command .skill_window  = @suv_window_index 
  end 
  #-------------------------------------------------------------------------- 
  # ● 技能分类里“确定” 
  #-------------------------------------------------------------------------- 
  def  command_skill
    @suv_window_index .activate 
    @suv_window_index .select_last 
  end 
  #-------------------------------------------------------------------------- 
  # ● 技能列表里“确定” 
  #-------------------------------------------------------------------------- 
  def  on_item_ok
    skill = @suv_window_index .item 
    @suv_window_choice .skill  = skill
    @suv_window_choice .show .activate 
  end 
  #-------------------------------------------------------------------------- 
  # ● 技能列表里“返回” 
  #-------------------------------------------------------------------------- 
  def  on_item_cancel
    @suv_window_index .unselect 
    @suv_window_command .activate 
  end 
  #-------------------------------------------------------------------------- 
  # ● 确认列表里“确认” 
  #-------------------------------------------------------------------------- 
  def  confirm_ok
    @suv_window_choice .skill_up 
    @suv_window_index .refresh 
    @suv_window_choice .hide .deactivate 
    @suv_window_index .activate 
  end 
  #-------------------------------------------------------------------------- 
  # ● 确认列表里“返回” 
  #-------------------------------------------------------------------------- 
  def  confirm_cancel
    @suv_window_choice .hide .deactivate 
    @suv_window_index .activate 
  end 
  #-------------------------------------------------------------------------- 
  # ● 切换角色 
  #-------------------------------------------------------------------------- 
  def  on_actor_change
    @suv_window_command .actor  = @actor 
    @suv_window_info .actor  = @actor 
    @suv_window_index .actor  = @actor 
    @suv_window_choice .actor  = @actor 
    @suv_window_command .activate 
  end 
end 
# ----------------------------------------------------------------------------- 
 
# ◆技能升级(SKILL_UP) By.Clov 
 
# ----------------------------------------------------------------------------- 
 
# Ver:1.0.0 Date:2012.06.11 
 
# -1.0.0:完整版 
 
# 界面:SceneManager.call(Scene_SUP) 
 
# 角色切换:技能分类栏 L / R 
 
# ----------------------------------------------------------------------------- 
 
module  SUP
 
#————————————————————————————————————————— 
 
  #·升级技能关联 
 
  #  技能ID => 升级后技能ID 
 
  UP = { 
 
  26 =>27 ,    # 治愈 → 治愈Ⅱ 
 
  27 =>28 ,    # 治愈Ⅱ → 治愈Ⅲ 
 
  28 =>29 ,    # 治愈Ⅲ → 回复 
 
  29 =>30 ,    # 回复 → 回复Ⅱ 
 
  30 =>116 ,   # 回复Ⅱ → 精灵的叹息 
 
  80 =>81 ,    # 强击 → 横扫 
 
  81 =>82 ,    # 横扫 → 狂战士咆哮 
 
  82 =>83 ,    # 狂战士咆哮 → 狂战士之舞 
 
  83 =>84 ,    # 狂战士之舞 → 巨人的痛击 
 
  84 =>127 ,    # 巨人的痛击 → 守护神兽:草泥马降临 
 
  } 
 
#————————————————————————————————————————— 
 
  #·各条件“符号”说明 
 
  #  【物品篇】 
 
  #  条件数组头部 :items  :weapons  :armors 符号分别为判断 道具、武器、防具 
 
  #  再在尾部输入物品ID即可 
 
  #  【变量、开关、对比篇】 
 
  #  条件数组尾部 :bit 符号为要显示图片的名字(尺寸24*24) 
 
  #  若省略的话,将不显示图片 
 
  #——————————————————————————————————————— 
 
  #·默认条件 
 
  #  技能ID 0 的条件即为默认升级条件 
 
  #  以下4种条件类型都可以设置默认条件 
 
  #——————————————————————————————————————— 
 
  #·升级条件-物品【变量消耗( a -= b)】 
 
  #  技能ID => [[:类别符号, 物品ID(a), 消耗数值(b)],[],[]…更多条件…] 
 
  #  例:1 => [[:items, 10,5], [……]] 
 
  IF_ITE = { 
 
  0  => [ [ :items , 19 , 5 ] ] , #使用19号道具作为默认升级条件 
 
  30  => [ [ :items , 18 , 1 ] ] , #升级 回复Ⅱ 需要18号道具1个 
 
  84  => [ [ :items , 17 , 1 ] ,[ :weapons , 62 , 1 ] ,[ :armors , 61 , 1 ] ]  #升级 巨人的痛击  
 
  #需要17号道具1个、62号武器1个、61号防具1个 
 
  } 
 
  #——————————————————————————————————————— 
 
  #·升级条件-变量【变量消耗( a -= b)】 
 
  #  技能ID => [["显示文字", "变量连接(a)", 消耗数值(b)],[],[]…更多条件…] 
 
  #  例:1 => [["脚本变量测试","$变量",10], [……]] 
 
  IF_VAR = { 
 
  0  => [ [ "蓝宝石碎片" ,"$game_variables[100]" ,5 ] ] , #使用游戏1号变量作为默认升级条件 
 
  # 恢复技能条件 
 
  28  => [ [ "生命之光" ,"$game_variables[1]" ,10 ] ] , #升级 治愈Ⅲ 需要消耗变量1 10数值 
 
  29  => [ [ "生命之光" ,"$game_variables[1]" ,20 ] ] , #升级 回复 需要消耗变量1 20数值 
 
  30  => [ [ "生命之光" ,"$game_variables[1]" ,50 ] ] , #升级 回复Ⅱ 需要消耗变量1 50数值 
 
  # 伤害技能条件 
 
  82  => [ [ "力量之光" ,"$game_variables[2]" ,10 ] ] , #升级 狂战士咆哮 需要消耗变量2 50数值 
 
  83  => [ [ "力量之光" ,"$game_variables[2]" ,20 ] ] , #升级 狂战士之舞 需要消耗变量2 50数值 
 
  84  => [ [ "力量之光" ,"$game_variables[2]" ,50 ] , #升级 巨人的痛击 需要消耗变量2 50数值 
 
  [ "巨大的蓝宝石" ,"$game_variables[3]" ,10 ] ]  #升级 巨人的痛击 需要消耗变量3 10数值 
 
  } 
 
  #——————————————————————————————————————— 
 
  #·升级条件-开关【开关判断( a == true )】 
 
  #  技能ID => [["显示文字", "开关连接(a)"],[],[]…更多条件…] 
 
  #  例:1 => [["脚本开关测试","$开关"], [……]] 
 
  IF_SWI = { 
 
  0  => [ ] ,   #默认升级开关条件 
 
  30  => [ [ "获得好人卡" ,"$好人卡" ,:好人卡] ] , #升级 回复Ⅱ 需要 $好人卡 为true 
 
  84  => [ [ "作者允许草泥马降临" ,"$草泥马降临" ,:草泥马] ]  #升级 巨人的痛击 需要 $草泥马降临 为true 
 
  } 
 
  #——————————————————————————————————————— 
 
  #·升级条件-比较【比较相等( a == b )】 
 
  #  技能ID => [["显示文字", "比较连接1(a)", "比较连接2(b)"],[],[]…更多条件…] 
 
  #  例:1 => [["脚本比较测试","$比较1","$比较2"], [……]] 
 
  IF_COM = { 
 
  0  => [ ] ,   #默认升级对比条件 
 
  } 
 
#————————————————————————————————————————— 
 
  #·积极、消极值槽颜色 
 
  POS_COLOR1 = Color.new ( 214 ,233 ,83 ,255 ) 
 
  POS_COLOR2 = Color.new ( 255 ,255 ,255 ,255 ) 
 
  NEG_COLOR1 = Color.new ( 253 ,80 ,128 ,255 ) 
 
  NEG_COLOR2 = Color.new ( 255 ,255 ,255 ,255 ) 
 
#————————————————————————————————————————— 
 
  #·输出评分最大值 
 
  PFX = 9999 
 
#————————————————————————————————————————— 
 
  #·图标存放文件夹 
 
  FILE = "Graphics/Icon/" 
 
#————————————————————————————————————————— 
 
  #·效果范围显示文字 
 
  SCOPE = [ "无" ,
 
  "单个敌人" ,"全体敌人" ,
 
  "一个随机敌人" ,"二个随机敌人" ,"三个随机敌人" ,"四个随机敌人" ,
 
  "单个队友" ,"全体队友" ,
 
  "单个队友(无法战斗)" ,"全体队友(无法战斗)" ,
 
  "使用者" ] 
 
  #·使用场合显示文字 
 
  OCCASION = [ "随时可用" ,"战斗可用" ,"菜单可用" ,"不可用" ] 
 
  #·命中类型显示文字 
 
  HIT_TYPE = [ "必定命中" ,"物理攻击" ,"魔法攻击" ] 
 
  #·输出类型显示文字 
 
  DAMAGE_TYPE = [ "无输出" ,"HP伤害" ,"MP伤害" ,"HP恢复" ,"MP恢复" ,"HP吸收" ,"MP吸收" ] 
 
#————————————————————————————————————————— 
 
end 
 
 
 
#============================================================================== 
 
# ■ SUP_Window_Command 
 
#------------------------------------------------------------------------------ 
 
#  技能分类窗口 
 
#============================================================================== 
 
 
 
class  SUP_Window_Command < Window_Command
 
  #-------------------------------------------------------------------------- 
 
  # ● 定义实例变量 
 
  #-------------------------------------------------------------------------- 
 
  attr_reader   :skill_window 
 
  #-------------------------------------------------------------------------- 
 
  # ● 初始化对象 
 
  #-------------------------------------------------------------------------- 
 
  def  initialize( x, y) 
 
    super ( x, y) 
 
    @actor  = nil 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取窗口的宽度 
 
  #-------------------------------------------------------------------------- 
 
  def  window_width
 
    return  200 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置角色 
 
  #-------------------------------------------------------------------------- 
 
  def  actor=( actor) 
 
    return  if  @actor  == actor
 
    @actor  = actor
 
    refresh
 
    select_last
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取显示行数 
 
  #-------------------------------------------------------------------------- 
 
  def  visible_line_number
 
    return  4 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 生成指令列表 
 
  #-------------------------------------------------------------------------- 
 
  def  make_command_list
 
    return  unless  @actor 
 
    @actor .added_skill_types .sort .each  do  |stype_id|
 
      name = $data_system .skill_types [ stype_id] 
 
      add_command( name, :skill , true , stype_id) 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 更新画面 
 
  #-------------------------------------------------------------------------- 
 
  def  update
 
    super 
 
    @skill_window .stype_id  = current_ext if  @skill_window 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置技能窗口 
 
  #-------------------------------------------------------------------------- 
 
  def  skill_window=( skill_window) 
 
    @skill_window  = skill_window
 
    update
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 返回上一个选择的位置 
 
  #-------------------------------------------------------------------------- 
 
  def  select_last
 
    skill = @actor .last_skill .object 
 
    if  skill
 
      select_ext( skill.stype_id ) 
 
    else 
 
      select ( 0 ) 
 
    end 
 
  end 
 
end 
 
 
 
#============================================================================== 
 
# ■ SUP_Window_Index 
 
#------------------------------------------------------------------------------ 
 
#  技能列表窗口。 
 
#============================================================================== 
 
 
 
class  SUP_Window_Index < Window_Selectable
 
  #-------------------------------------------------------------------------- 
 
  # ● 初始化对象 
 
  #-------------------------------------------------------------------------- 
 
  def  initialize( x, y, width, height) 
 
    super 
 
    @actor  = nil 
 
    @stype_id  = 0 
 
    @data  = [ ] 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置角色 
 
  #-------------------------------------------------------------------------- 
 
  def  actor=( actor) 
 
    return  if  @actor  == actor
 
    @actor  = actor
 
    refresh
 
    self .oy  = 0 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置技能类型 ID  
 
  #-------------------------------------------------------------------------- 
 
  def  stype_id=( stype_id) 
 
    return  if  @stype_id  == stype_id
 
    @stype_id  = stype_id
 
    refresh
 
    self .oy  = 0 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取列数 
 
  #-------------------------------------------------------------------------- 
 
  def  col_max
 
    return  1 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取项目数 
 
  #-------------------------------------------------------------------------- 
 
  def  item_max
 
    @data  ? @data .size  : 1 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取技能 
 
  #-------------------------------------------------------------------------- 
 
  def  item
 
    @data  && index >= 0  ? @data [ index]  : nil 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取选择项目的有效状态 
 
  #-------------------------------------------------------------------------- 
 
  def  current_item_enabled?
 
    enable?( @data[ index] ) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 查询列表中是否含有此技能 
 
  #-------------------------------------------------------------------------- 
 
  def  include ?( item) 
 
    item && item.stype_id  == @stype_id 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 查询此技能是否可用 
 
  #-------------------------------------------------------------------------- 
 
  def  enable?( item) 
 
    item && SUP::UP .has_key ?( item.id ) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 生成技能列表 
 
  #-------------------------------------------------------------------------- 
 
  def  make_item_list
 
    @data  = @actor  ? @actor .skills .select  { |skill| include ?( skill)  }  : [ ] 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 返回上一个选择的位置 
 
  #-------------------------------------------------------------------------- 
 
  def  select_last
 
    select ( @data.index ( @actor.last_skill .object )  || 0 ) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 绘制项目 
 
  #-------------------------------------------------------------------------- 
 
  def  draw_item( index) 
 
    skill = @data [ index] 
 
    if  skill
 
      rect = item_rect( index) 
 
      rect.width  -= 4 
 
      draw_item_name( skill, rect.x , rect.y , enable?( skill) ) 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 更新帮助内容 
 
  #-------------------------------------------------------------------------- 
 
  def  update_help
 
    @help_window .set_item ( item) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新 
 
  #-------------------------------------------------------------------------- 
 
  def  refresh
 
    make_item_list
 
    create_contents
 
    draw_all_items
 
  end 
 
end 
 
 
 
#============================================================================== 
 
# ■ SUP_Window_Info 
 
#------------------------------------------------------------------------------ 
 
#  技能信息窗口 
 
#============================================================================== 
 
 
 
class  SUP_Window_Info < Window_Base
 
  #-------------------------------------------------------------------------- 
 
  # ● 初始化对象 
 
  #-------------------------------------------------------------------------- 
 
  def  initialize( x, y,w,h) 
 
    super ( x, y, w, h) 
 
    @w  = w ; @h  = h
 
    @yema  = 1 
 
    @actor  = nil 
 
    @skill  = nil 
 
    @font_size  = 20 
 
    @help_fill_color1  = Color.new ( 255 ,255 ,255 ,255 ) 
 
    @help_fill_color2  = Color.new ( 255 ,255 ,255 ,0 ) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置角色 
 
  #-------------------------------------------------------------------------- 
 
  def  actor=( val) 
 
    @actor  = val
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 取得技能 
 
  #-------------------------------------------------------------------------- 
 
  def  skill
 
    @skill 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置技能 
 
  #-------------------------------------------------------------------------- 
 
  def  skill=( val) 
 
    @skill  = val
 
    huanye( @yema) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 技能是否可升级 
 
  #-------------------------------------------------------------------------- 
 
  def  skill_up?
 
    SUP::UP .has_key ?( @skill.id ) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获得行高 
 
  #-------------------------------------------------------------------------- 
 
  def  line_height
 
    @font_size 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获得页码 
 
  #-------------------------------------------------------------------------- 
 
  def  yema
 
    @yema 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 换页 
 
  #-------------------------------------------------------------------------- 
 
  def  huanye( y) 
 
    @yema  = y
 
    case  @yema 
 
    when  1 
 
    @draw  = method( :draw1 ) 
 
    @help_txt  = [ "技能状态信息" , "升级技能状态信息" , "A键换页(1/2)" ] 
 
    when  2 
 
    @draw  = method( :draw2 ) 
 
    @help_txt  = [ "技能数值信息" , "升级技能数值信息" , "A键换页(2/2)" ] 
 
    end 
 
    refresh
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新 
 
  #-------------------------------------------------------------------------- 
 
  def  refresh
 
    contents.clear 
 
    return  if  !@skill
 
    #描绘帮助信息 
 
    contents.font .size  = 16 
 
    help
 
    #描绘技能信息 
 
    contents.font .size  = line_height
 
    #描绘选中的技能 
 
    @draw .call ( @skill, 0 , line_height) 
 
    #描绘升级后的技能 
 
    if  skill_up?
 
      @draw .call ( $data_skills[ SUP::UP [ @skill.id ] ] , 0 , line_height * 9 ) 
 
    else 
 
      draw_text( 70 , line_height * 9  + 65 , 280 , line_height, 
 
    "技能已经无法升级。" ) 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 描绘帮助条 
 
  #-------------------------------------------------------------------------- 
 
  def  help
 
    #第一条 
 
    contents.gradient_fill_rect ( 0 , 0 , @w , line_height, 
 
    @help_fill_color1 , @help_fill_color2 ) 
 
    draw_text( 2 , 0 , 280 , line_height, @help_txt [ 0 ] ) 
 
    #第二条 
 
    contents.gradient_fill_rect ( 0 , line_height * 8 , @w , line_height, 
 
    @help_fill_color1 , @help_fill_color2 ) 
 
    draw_text( 2 , line_height * 8 , 280 , line_height, @help_txt [ 1 ] ) 
 
    #换页 
 
    draw_text( 225 , 0 , 280 , line_height, @help_txt [ 2 ] ) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 描绘页1 
 
  #-------------------------------------------------------------------------- 
 
  def  draw1( skill,x,y) 
 
    #名称--------------------------------------------- 
 
    draw_item_name( skill, x, y) 
 
    #属性--------------------------------------------- 
 
    sx = $data_system .elements [ skill.damage .element_id ] 
 
    sx = sx==""  ? "无"  : sx
 
    draw_text( x, y + line_height, 280 , line_height, 
 
    "属性:" +sx) 
 
    #使用场合----------------------------------------- 
 
    draw_text( x, y + line_height * 2 , 280 , line_height, 
 
    "使用场合:" +SUP::OCCASION [ skill.occasion  ] ) 
 
    #使用范围----------------------------------------- 
 
    draw_text( x, y + line_height * 3 , 280 , line_height, 
 
    "使用范围:" +SUP::SCOPE [ skill.scope ] ) 
 
    #命中类型----------------------------------------- 
 
    draw_text( x, y + line_height * 4 , 280 , line_height, 
 
    "命中类型:" +SUP::HIT_TYPE [ skill.hit_type ] ) 
 
    #输出类型----------------------------------------- 
 
    draw_text( x, y + line_height * 5 , 280 , line_height, 
 
    "输出类型:" +SUP::DAMAGE_TYPE [ skill.damage .type ] ) 
 
    #武器限制----------------------------------------- 
 
    w1 = $data_system .weapon_types [ skill.required_wtype_id1 ] 
 
    w2 = $data_system .weapon_types [ skill.required_wtype_id2 ] 
 
    w = "无武器限制"  ; if  w1 !="" ;w=w1;end ; if  w2 != "" ;w+="与" +w2;end
 
    draw_text( x, y + line_height * 6 , 280 , line_height, 
 
    "武器限制:" +w) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 描绘页2 
 
  #-------------------------------------------------------------------------- 
 
  def  draw2( skill,x,y) 
 
    #名称--------------------------------------------- 
 
    draw_item_name( skill, x, y) 
 
    #魔力值消耗--------------------------------------- 
 
    draw_text( x, y + line_height, 280 , line_height, 
 
    "魔力值消耗:" ) 
 
    w = 200  ; h = 15 
 
    b = skill.mp_cost .to_f  / 9999 
 
    c1 = Color.new ( 128 ,155 ,122 ,255 ) 
 
    c2 = Color.new ( 25 ,55 ,155 ,255 ) 
 
    flii( x+120 , y + line_height + 3 , w, h, b, SUP::NEG_COLOR1 , SUP::NEG_COLOR2 ) 
 
    draw_current_and_max_values( x+40 , y + line_height, 280 , skill.mp_cost , 9999 , 
 
    text_color( 0 ) , text_color( 0 ) ) 
 
    #特技值消耗--------------------------------------- 
 
    draw_text( x, y + line_height * 2 , 280 , line_height, 
 
    "特技值消耗:" ) 
 
    w = 200  ; h = 15 
 
    b = skill.tp_cost .to_f  / 100 
 
    flii( x+120 , y + line_height * 2  + 3 , w, h, b, SUP::NEG_COLOR1 , SUP::NEG_COLOR2 ) 
 
    draw_current_and_max_values( x+40 , y + line_height * 2 , 280 , skill.tp_cost , 100 , 
 
    text_color( 0 ) , text_color( 0 ) ) 
 
    #特技值获得--------------------------------------- 
 
    draw_text( x, y + line_height * 3 , 280 , line_height, 
 
    "特技值获得:" ) 
 
    w = 200  ; h = 15 
 
    b = skill.tp_gain .to_f  / 100 
 
    flii( x+120 , y + line_height * 3  + 3 , w, h, b, SUP::POS_COLOR1 , SUP::POS_COLOR2 ) 
 
    draw_current_and_max_values( x+40 , y + line_height * 3 , 280 , skill.tp_gain , 100 , 
 
    text_color( 0 ) , text_color( 0 ) ) 
 
    #攻击次数----------------------------------------- 
 
    draw_text( x, y + line_height * 4 , 280 , line_height, 
 
    "攻击次数:" ) 
 
    w = 200  ; h = 15 
 
    b = skill.repeats .to_f  / 9 
 
    flii( x+120 , y + line_height * 4  + 3 , w, h, b, SUP::POS_COLOR1 , SUP::POS_COLOR2 ) 
 
    draw_current_and_max_values( x+40 , y + line_height * 4 , 280 , skill.repeats , 9 , 
 
    text_color( 0 ) , text_color( 0 ) ) 
 
    #成功几率----------------------------------------- 
 
    draw_text( x, y + line_height * 5 , 280 , line_height, 
 
    "成功几率:" ) 
 
    w = 200  ; h = 15 
 
    b = skill.success_rate .to_f  / 100 
 
    flii( x+120 , y + line_height * 5  + 3 , w, h, b, SUP::POS_COLOR1 , SUP::POS_COLOR2 ) 
 
    draw_current_and_max_values( x+40 , y + line_height * 5 , 280 , skill.success_rate , 100 , 
 
    text_color( 0 ) , text_color( 0 ) ) 
 
    #输出评分----------------------------------------- 
 
    draw_text( x, y + line_height * 6 , 280 , line_height, 
 
    "输出评分:" ) 
 
    pf = scpf( skill) 
 
    w = 200  ; h = 15 
 
    b = [ pf.to_f  / SUP::PFX , 1.0 ] .min 
 
    type = skill.damage .type 
 
    case  type
 
    when  0 
 
      draw_text( x+150 , y + line_height * 6 , 280 , line_height, 
 
    "此技能没有输出。" ) 
 
    when  1 , 2 , 5 , 6 
 
      flii( x+120 , y + line_height * 6  + 3 , w, h, b, SUP::NEG_COLOR1 , SUP::NEG_COLOR2 ) 
 
      draw_current_and_max_values( x+40 , y + line_height * 6 , 280 , pf, SUP::PFX , 
 
      text_color( 0 ) , text_color( 0 ) ) 
 
    when  3 , 4 
 
      flii( x+120 , y + line_height * 6  + 3 , w, h, b, SUP::POS_COLOR1 , SUP::POS_COLOR2 ) 
 
      draw_current_and_max_values( x+40 , y + line_height * 6 , 280 , pf, SUP::PFX , 
 
      text_color( 0 ) , text_color( 0 ) ) 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 描绘值槽 
 
  #-------------------------------------------------------------------------- 
 
  def  flii( x, y, w, h, b, color1, color2) 
 
    contents.fill_rect ( x, y, w, h, Color.new ( 0 ,0 ,0 ,64 ) ) 
 
    contents.gradient_fill_rect ( x, y, w*b, h, color1, color2) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获得评分 
 
  #-------------------------------------------------------------------------- 
 
  def  scpf( skill) 
 
    g = skill.damage .formula .to_s 
 
    a = @actor 
 
    v = $game_variables 
 
    g.gsub !( /b/,"a" ) 
 
    return  eval ( g) 
 
  end 
 
end 
 
 
 
#============================================================================== 
 
# ■ SUP_Window_Choice 
 
#------------------------------------------------------------------------------ 
 
#  技能升级条件及确认窗口 
 
#============================================================================== 
 
 
 
class  SUP_Window_Choice < Window_Command
 
  #-------------------------------------------------------------------------- 
 
  # ● 初始化对象 
 
  #-------------------------------------------------------------------------- 
 
  def  initialize( x, y) 
 
    @hx  = -1 
 
    super ( x, y) 
 
    @skill  = nil 
 
    @actor  = nil 
 
    @enabled  = [ ] 
 
    @txt  = [ ] 
 
    @ite  = [ ] 
 
    @pic  = [ ] 
 
    @xh  = [ ] 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置角色 
 
  #-------------------------------------------------------------------------- 
 
  def  actor=( val) 
 
    @actor  = val
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 取得技能 
 
  #-------------------------------------------------------------------------- 
 
  def  skill
 
    @skill 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置技能 
 
  #-------------------------------------------------------------------------- 
 
  def  skill=( val) 
 
    @skill  = val
 
    refresh_draw
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 取得全部指定条件 
 
  #-------------------------------------------------------------------------- 
 
  def  all_if( skill_id) 
 
    arr = Array .new 
 
    arr << SUP::IF_ITE [ skill_id] 
 
    arr << SUP::IF_VAR [ skill_id] 
 
    arr << SUP::IF_SWI [ skill_id] 
 
    arr << SUP::IF_COM [ skill_id] 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取全部条件有效状态 
 
  #-------------------------------------------------------------------------- 
 
  def  all_enabled?
 
    !@enabled.include ?( false ) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取物品、变量条件有效状态 
 
  #-------------------------------------------------------------------------- 
 
  def  ite_var_enabled?( y, s) 
 
    return  false  if  not  y
 
    y >= s
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取开关条件有效状态 
 
  #-------------------------------------------------------------------------- 
 
  def  swi_enabled?( y) 
 
    y
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取对比条件有效状态 
 
  #-------------------------------------------------------------------------- 
 
  def  com_enabled?( y1, y2) 
 
    y1 == y2
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 技能升级条件数据 
 
  #-------------------------------------------------------------------------- 
 
  def  skill_data
 
    return  if  !@skill
 
    @hx  = -1  ; @enabled  = [ ]  ; @txt  = [ ]  ; @pic  = [ ]  ; @pid  = [ ]  ; @xh  = [ ] 
 
    l = all_if( @skill.id )  ; n = l.compact 
 
    t = n == [ ]  ? all_if( 0 )  : l
 
    t1 = t[ 0 ]  ; t2 = t[ 1 ]  ; t3 = t[ 2 ]  ; t4 = t[ 3 ] 
 
    if  t1
 
      ite_data( t1) 
 
    end 
 
    if  t2
 
      var_data( t2) 
 
    end 
 
    if  t3
 
      swi_data( t3) 
 
    end 
 
    if  t4
 
      com_data( t4) 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 技能条件进行描绘 
 
  #-------------------------------------------------------------------------- 
 
  def  skill_draw
 
    @txt .each_with_index  { |txt,i|
 
    change_color( normal_color, @enabled [ i] ) 
 
    pic = @pic [ i] 
 
    if  pic.is_a ?( Symbol ) 
 
      wx = window_width / 2  - text_size( txt) .width  / 2  - 24 
 
      if  pic == :ite 
 
        draw_item_icon( @ite[ i] , wx, item_height * i) 
 
      else 
 
        draw_bit( pic.to_s , wx, item_height * i) 
 
      end 
 
    end 
 
    draw_text( 0 , item_height * i, window_width, item_height, txt, 1 ) 
 
    } 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 绘制物品图标 
 
  #-------------------------------------------------------------------------- 
 
  def  draw_item_icon( item, x, y) 
 
    draw_icon( item.icon_index , x, y) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 绘制图片 
 
  #-------------------------------------------------------------------------- 
 
  def  draw_bit( name, x, y) 
 
    bitmap = Bitmap.new ( SUP::FILE  + name) 
 
    rect = Rect.new ( 0 , 0 , 24 , 24 ) 
 
    contents.blt ( x, y, bitmap, rect) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 对技能进行升级(变量、物品消耗) 
 
  #-------------------------------------------------------------------------- 
 
  def  skill_up
 
    @actor .forget_skill ( @skill.id ) 
 
    @actor .learn_skill ( SUP::UP [ @skill.id ] ) 
 
    @xh .each_with_index  { |x, i|
 
    if  x.is_a ?( String ) 
 
      eval ( x) 
 
    else 
 
      $game_party .gain_item ( @ite[ i] , -x) 
 
    end } 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 物品条件 数据 
 
  #-------------------------------------------------------------------------- 
 
  def  ite_data( si) 
 
    si.each  { |i|
 
    @hx  += 1  ; t = i[ 0 ]  ; b = i[ 1 ]  ; s = i[ 2 ] 
 
    case  t
 
    when  :items 
 
      item = $data_items [ b] 
 
    when  :weapons 
 
      item = $data_weapons [ b] 
 
    when  :armors 
 
      item = $data_armors [ b] 
 
    end 
 
    y = $game_party .item_number ( item) 
 
    enabled = ite_var_enabled?( y, s) 
 
    @enabled [ @hx]  = enabled
 
    @txt [ @hx]  = item.name +"*" + s.to_s 
 
    @ite [ @hx]  = item
 
    @pic [ @hx]  = :ite 
 
    @xh [ @hx]  = s
 
    } 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 变量条件 数据 
 
  #-------------------------------------------------------------------------- 
 
  def  var_data( si) 
 
    si.each  { |i|
 
    @hx  += 1  ; n = i[ 0 ]  ; y = eval ( i[ 1 ] )  ; s = i[ 2 ] 
 
    enabled = ite_var_enabled?( y, s) 
 
    @enabled [ @hx]  = enabled
 
    @txt [ @hx]  = n+"*" + s.to_s 
 
    @pic [ @hx]  = i[ -1 ] 
 
    @xh [ @hx]  = "#{i[1]} -= #{s.to_s}" 
 
    } 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 开关条件 数据 
 
  #-------------------------------------------------------------------------- 
 
  def  swi_data( si) 
 
    si.each  { |i|
 
    @hx  += 1  ; n = i[ 0 ]  ; y = eval ( i[ 1 ] ) 
 
    enabled = swi_enabled?( y) 
 
    @enabled [ @hx]  = enabled
 
    @txt [ @hx]  = n
 
    @pic [ @hx]  = i[ -1 ] 
 
    } 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 对比条件 数据 
 
  #-------------------------------------------------------------------------- 
 
  def  com_data( si) 
 
    si.each  { |i|
 
    @hx  += 1  ; n = i[ 0 ]  ; y1 = eval ( i[ 1 ] )  ; y2 = eval ( i[ 2 ] ) 
 
    enabled = com_enabled?( y1,y2) 
 
    @enabled [ @hx]  = enabled
 
    @txt [ @hx]  = n
 
    @pic [ @hx]  = i[ -1 ] 
 
    } 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取窗口的宽度 
 
  #-------------------------------------------------------------------------- 
 
  def  window_width
 
    return  300 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取项目的高度 
 
  #-------------------------------------------------------------------------- 
 
  def  item_height
 
    return  28 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取对齐方向 
 
  #-------------------------------------------------------------------------- 
 
  def  alignment
 
    return  1 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取项目的绘制矩形 
 
  #-------------------------------------------------------------------------- 
 
  alias  x_item_rect item_rect
 
  def  item_rect( index) 
 
    rect = x_item_rect( index) 
 
    rect.y  = rect.y  + item_height * ( @hx+1 ) 
 
    rect
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新(清除内容) 
 
  #-------------------------------------------------------------------------- 
 
  def  refresh
 
    contents.clear 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新(取得数据、刷新窗口) 
 
  #-------------------------------------------------------------------------- 
 
  def  refresh2
 
    skill_data
 
    self .height  = item_height * ( @hx+3 ) 
 
    self .x  = Graphics.width  / 2  - window_width / 2 
 
    self .y  = Graphics.height  / 2  - self .height  / 2 
 
    create_contents
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新(要描绘的内容) 
 
  #-------------------------------------------------------------------------- 
 
  def  refresh_draw
 
    refresh
 
    refresh2
 
    skill_draw
 
    clear_command_list
 
    add_command( "确认" ,   :ok , all_enabled?) 
 
    draw_all_items
 
  end 
 
end 
 
 
 
#============================================================================== 
 
# ■ Scene_SUP 
 
#------------------------------------------------------------------------------ 
 
#  技能升级画面 
 
#============================================================================== 
 
 
 
class  Scene_SUP < Scene_MenuBase
 
  #-------------------------------------------------------------------------- 
 
  # ● 开始处理 
 
  #-------------------------------------------------------------------------- 
 
  def  start
 
    super 
 
 
 
    create_help_window
 
    suv_window_command
 
    suv_window_info
 
    suv_window_index
 
    suv_window_choice
 
 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 帧更新 
 
  #-------------------------------------------------------------------------- 
 
  def  update
 
    super 
 
    if  Input.trigger ?( :X ) 
 
      case  @suv_window_info .yema 
 
      when  1 
 
        @suv_window_info .huanye ( 2 ) 
 
      when  2 
 
        @suv_window_info .huanye ( 1 ) 
 
      end 
 
    end 
 
    if  @suv_window_info .skill  != @suv_window_index .item 
 
      @suv_window_info .skill  = @suv_window_index .item 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 生成确认窗口 
 
  #-------------------------------------------------------------------------- 
 
  def  suv_window_choice
 
    @suv_window_choice  = SUP_Window_Choice.new ( 0 , 0 ) 
 
    @suv_window_choice .viewport  = @viewport 
 
    @suv_window_choice .set_handler ( :ok ,    method( :confirm_ok ) ) 
 
    @suv_window_choice .set_handler ( :cancel ,   method( :confirm_cancel ) ) 
 
    @suv_window_choice .hide .deactivate 
 
    @suv_window_choice .actor  = @actor 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 生成分类窗口 
 
  #-------------------------------------------------------------------------- 
 
  def  suv_window_command
 
    wy = @help_window .height 
 
    @suv_window_command  = SUP_Window_Command.new ( 0 , wy) 
 
    @suv_window_command .viewport  = @viewport 
 
    @suv_window_command .help_window  = @help_window 
 
    @suv_window_command .actor  = @actor 
 
    @suv_window_command .set_handler ( :skill ,    method( :command_skill ) ) 
 
    @suv_window_command .set_handler ( :cancel ,   method( :return_scene ) ) 
 
    @suv_window_command .set_handler ( :pagedown , method( :next_actor ) ) 
 
    @suv_window_command .set_handler ( :pageup ,   method( :prev_actor ) ) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 生成状态窗口 
 
  #-------------------------------------------------------------------------- 
 
  def  suv_window_info
 
    y = @help_window .height 
 
    w = Graphics.width  - @suv_window_command .width 
 
    h = Graphics.height  - @help_window .height 
 
    @suv_window_info  = SUP_Window_Info.new ( @suv_window_command.width , y, w, h) 
 
    @suv_window_info .viewport  = @viewport 
 
    @suv_window_info .actor  = @actor 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 生成列表窗口 
 
  #-------------------------------------------------------------------------- 
 
  def  suv_window_index
 
    wx = 0 
 
    wy = @suv_window_command .y  + @suv_window_command .height 
 
    ww = Graphics.width  - @suv_window_info .width 
 
    wh = Graphics.height  - wy
 
    @suv_window_index  = SUP_Window_Index.new ( wx, wy, ww, wh) 
 
    @suv_window_index .actor  = @actor 
 
    @suv_window_index .viewport  = @viewport 
 
    @suv_window_index .help_window  = @help_window 
 
    @suv_window_index .set_handler ( :ok ,     method( :on_item_ok ) ) 
 
    @suv_window_index .set_handler ( :cancel , method( :on_item_cancel ) ) 
 
    @suv_window_command .skill_window  = @suv_window_index 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 技能分类里“确定” 
 
  #-------------------------------------------------------------------------- 
 
  def  command_skill
 
    @suv_window_index .activate 
 
    @suv_window_index .select_last 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 技能列表里“确定” 
 
  #-------------------------------------------------------------------------- 
 
  def  on_item_ok
 
    skill = @suv_window_index .item 
 
    @suv_window_choice .skill  = skill
 
    @suv_window_choice .show .activate 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 技能列表里“返回” 
 
  #-------------------------------------------------------------------------- 
 
  def  on_item_cancel
 
    @suv_window_index .unselect 
 
    @suv_window_command .activate 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 确认列表里“确认” 
 
  #-------------------------------------------------------------------------- 
 
  def  confirm_ok
 
    @suv_window_choice .skill_up 
 
    @suv_window_index .refresh 
 
    @suv_window_choice .hide .deactivate 
 
    @suv_window_index .activate 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 确认列表里“返回” 
 
  #-------------------------------------------------------------------------- 
 
  def  confirm_cancel
 
    @suv_window_choice .hide .deactivate 
 
    @suv_window_index .activate 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 切换角色 
 
  #-------------------------------------------------------------------------- 
 
  def  on_actor_change
 
    @suv_window_command .actor  = @actor 
 
    @suv_window_info .actor  = @actor 
 
    @suv_window_index .actor  = @actor 
 
    @suv_window_choice .actor  = @actor 
 
    @suv_window_command .activate 
 
  end 
 
end 
 
 
 
話說回來,請問後三個問題要怎麼解決?謝謝