设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1492|回复: 1
打印 上一主题 下一主题

[已经过期] 这个脚本翻页是A键 怎么改?成M键

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
133 小时
注册时间
2016-4-28
帖子
210
跳转到指定楼层
1
发表于 2016-6-6 08:26:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
# -----------------------------------------------------------------------------
# ◆技能升级(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?
    [email protected]?(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)
    pic = @pic
    if pic.is_a?(Symbol)
      wx = window_width / 2 - text_size(txt).width / 2 - 24
      if pic == :ite
        draw_item_icon(@ite, 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, -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
    when :weapons
      item = $data_weapons
    when :armors
      item = $data_armors
    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







Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2016-6-6 09:01:42 | 只看该作者
原生的游戏不支持判断键盘上的 M 键,需要使用全键盘脚本扩展
如果已经插入全键盘脚本的话,在本脚本中搜索关键词 :X 然后替换成全键盘脚本中判断 M 键的语句即可
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 13:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表