查看: 2537|回复: 4

[已经解决] 如何能指定人物的1号2号技能进行遗忘。

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2014-11-12 12:19:35 | 显示全部楼层 |阅读模式

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

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

×
我准备取消掉等级学技能。
按使用物品学技能。
而一个人物再设置个技能数上限,比如4个6个8个技能后就不能再学了。
想再学的时候必须遗忘掉已经学会的技能。
可是问题就来了。
默认的只能遗忘那些数据库里面的指定技能。而不是人物已学会的技能。
梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
发表于 2014-11-12 12:48:44 来自手机 | 显示全部楼层
我的笨方法:对应的洗技能物品。

点评

这我当然想到了。可是这样好麻烦。假设有100个技能,那么要有100个对应的遗忘技能的物品  发表于 2014-11-12 12:50
回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

 楼主| 发表于 2014-11-12 12:52:42 | 显示全部楼层
我找到了VX的脚本。
可是放到XP里会报错。


特技数量限制
[pre lang="ruby" line="1"]class Game_Actor
  MAX_SKILL_NUM = 5
  alias :rsn_learn_skill :learn_skill
  def learn_skill(skill_id)
    rsn_learn_skill(skill_id)
    if @skills.size > MAX_SKILL_NUM
      @window_rsn = Window_Forget_Skill.new(120 , 120 , 240 , 128 , self)
      loop do
        Graphics.update
        Input.update
        @window_rsn.update
        break if @window_rsn.disposed?
      end
    end
  end
end
[/pre]

遗忘特技窗口
[pre lang="ruby" line="1"]class Window_Forget_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     x      : 窗口 X 座标
  #     y      : 窗口 Y 座标
  #     width  : 窗口宽度
  #     height : 窗口高度
  #     actor  : 角色
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height, actor)
    super(x, y, width, height)
    @actor = actor
    @column_max = 1
    self.index = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 获取技能
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    @data = []
    for skill in @actor.skills
      @data.push(skill)
      if skill.id == @actor.last_skill_id
        self.index = @data.size - 1
      end
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● 描绘项目
  #     index : 项目编号
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    skill = @data[index]
    if skill != nil
      rect.width -= 4
      enabled = true
      draw_item_name(skill, rect.x, rect.y, enabled)
      self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新帮助窗口文字
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(skill == nil ? "" : skill.description)
  end
  
  alias :rsn_update :update
  def update
    rsn_update
    if Input.trigger?(Input::B)
      Sound.play_buzzer
      return
    end
    if Input.trigger?(Input::C)
      Sound.play_decision
      @actor.forget_skill(skill.id)
      self.dispose
      return
    end
  end
  
end
[/pre]
回复

使用道具 举报

梦石
0
星屑
34465
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2014-11-12 15:09:01 | 显示全部楼层
在特技场景选择特技时加一个选择窗口: 使用特技   遗忘特技
使用特技    就是默认的功能。
遗忘特技    当前角色遗忘选中的特技,然后刷新特技窗口。

点评

3楼那个脚本可以改成XP用的吗。  发表于 2014-11-12 18:49
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-11-12 19:35:02 | 显示全部楼层
本帖最后由 RyanBern 于 2014-11-12 20:03 编辑

[pre lang="Ruby"]class Game_Actor
  MAX_SKILL_NUM = 5
  alias :rsn_learn_skill :learn_skill
  def learn_skill(skill_id)
    rsn_learn_skill(skill_id)
    if @skills.size > MAX_SKILL_NUM
      @window_rsn = Window_Forget_Skill.new(120 , 120 , 240 , 128 , self)
      loop do
        Graphics.update
        Input.update
        @window_rsn.update
        break if @window_rsn.disposed?
      end
    end
  end
end
class Window_Forget_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     x      : 窗口 X 座标
  #     y      : 窗口 Y 座标
  #     width  : 窗口宽度
  #     height : 窗口高度
  #     actor  : 角色
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height, actor)
    super(x, y, width, height)
    @actor = actor
    @column_max = 1
    self.index = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 获取技能
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for id in @actor.skills
      @data.push($data_skills[id])
    end
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, @item_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 描绘项目
  #     index : 项目编号
  #--------------------------------------------------------------------------
  def draw_item(index)
    x = 4
    y = index * 32
    skill = @data[index]
    draw_item_name(skill, x, y)
  end
  alias :rsn_update :update
  def update
    rsn_update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @actor.forget_skill(skill.id)
      self.dispose
      return
    end
  end
end[/pre]
没测试。限制最大技能数量(例如是4个),那么学习第5个技能时,会先领悟,然后选择遗忘哪个

点评

大神,太感谢你了,没报错了  发表于 2014-11-12 20:10
已修改  发表于 2014-11-12 20:04
使用后Window_Base 里面描绘物品名 bitmap = RPG::Cache.icon(item.icon_name)报错  发表于 2014-11-12 19:50
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部