赞 | 0 |
VIP | 13 |
好人卡 | 7 |
积分 | 7 |
经验 | 32831 |
最后登录 | 2023-12-15 |
在线时间 | 530 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 723
- 在线时间
- 530 小时
- 注册时间
- 2010-6-9
- 帖子
- 840
|
可以尝试下这个脚本。- # -----------------------------------------------------------------------------
- # ◆技能升级(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[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
复制代码 |
评分
-
查看全部评分
|