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

Project1

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

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

[复制链接]

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

跳转到指定楼层
1
发表于 2014-11-12 12:19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我准备取消掉等级学技能。
按使用物品学技能。
而一个人物再设置个技能数上限,比如4个6个8个技能后就不能再学了。
想再学的时候必须遗忘掉已经学会的技能。
可是问题就来了。
默认的只能遗忘那些数据库里面的指定技能。而不是人物已学会的技能。

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
2
发表于 2014-11-12 12:48:44 手机端发表。 | 只看该作者
我的笨方法:对应的洗技能物品。

点评

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

3
 楼主| 发表于 2014-11-12 12:52:42 | 只看该作者
我找到了VX的脚本。
可是放到XP里会报错。


特技数量限制
RUBY 代码复制
  1. class Game_Actor
  2.   MAX_SKILL_NUM = 5
  3.   alias :rsn_learn_skill :learn_skill
  4.   def learn_skill(skill_id)
  5.     rsn_learn_skill(skill_id)
  6.     if @skills.size > MAX_SKILL_NUM
  7.       @window_rsn = Window_Forget_Skill.new(120 , 120 , 240 , 128 , self)
  8.       loop do
  9.         Graphics.update
  10.         Input.update
  11.         @window_rsn.update
  12.         break if @window_rsn.disposed?
  13.       end
  14.     end
  15.   end
  16. end


遗忘特技窗口
RUBY 代码复制
  1. class Window_Forget_Skill < Window_Selectable
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对像
  4.   #     x      : 窗口 X 座标
  5.   #     y      : 窗口 Y 座标
  6.   #     width  : 窗口宽度
  7.   #     height : 窗口高度
  8.   #     actor  : 角色
  9.   #--------------------------------------------------------------------------
  10.   def initialize(x, y, width, height, actor)
  11.     super(x, y, width, height)
  12.     @actor = actor
  13.     @column_max = 1
  14.     self.index = 0
  15.     refresh
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 获取技能
  19.   #--------------------------------------------------------------------------
  20.   def skill
  21.     return @data[self.index]
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 刷新
  25.   #--------------------------------------------------------------------------
  26.   def refresh
  27.     @data = []
  28.     for skill in @actor.skills
  29.       @data.push(skill)
  30.       if skill.id == @actor.last_skill_id
  31.         self.index = @data.size - 1
  32.       end
  33.     end
  34.     @item_max = @data.size
  35.     create_contents
  36.     for i in 0...@item_max
  37.       draw_item(i)
  38.     end
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 描绘项目
  42.   #     index : 项目编号
  43.   #--------------------------------------------------------------------------
  44.   def draw_item(index)
  45.     rect = item_rect(index)
  46.     self.contents.clear_rect(rect)
  47.     skill = @data[index]
  48.     if skill != nil
  49.       rect.width -= 4
  50.       enabled = true
  51.       draw_item_name(skill, rect.x, rect.y, enabled)
  52.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  53.     end
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 更新帮助窗口文字
  57.   #--------------------------------------------------------------------------
  58.   def update_help
  59.     @help_window.set_text(skill == nil ? "" : skill.description)
  60.   end
  61.  
  62.   alias :rsn_update :update
  63.   def update
  64.     rsn_update
  65.     if Input.trigger?(Input::B)
  66.       Sound.play_buzzer
  67.       return
  68.     end
  69.     if Input.trigger?(Input::C)
  70.       Sound.play_decision
  71.       @actor.forget_skill(skill.id)
  72.       self.dispose
  73.       return
  74.     end
  75.   end
  76.  
  77. end
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33423
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
发表于 2014-11-12 15:09:01 | 只看该作者
在特技场景选择特技时加一个选择窗口: 使用特技   遗忘特技
使用特技    就是默认的功能。
遗忘特技    当前角色遗忘选中的特技,然后刷新特技窗口。

点评

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

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

5
发表于 2014-11-12 19:35:02 | 只看该作者
本帖最后由 RyanBern 于 2014-11-12 20:03 编辑

RUBY 代码复制
  1. class Game_Actor
  2.   MAX_SKILL_NUM = 5
  3.   alias :rsn_learn_skill :learn_skill
  4.   def learn_skill(skill_id)
  5.     rsn_learn_skill(skill_id)
  6.     if @skills.size > MAX_SKILL_NUM
  7.       @window_rsn = Window_Forget_Skill.new(120 , 120 , 240 , 128 , self)
  8.       loop do
  9.         Graphics.update
  10.         Input.update
  11.         @window_rsn.update
  12.         break if @window_rsn.disposed?
  13.       end
  14.     end
  15.   end
  16. end
  17. class Window_Forget_Skill < Window_Selectable
  18.   #--------------------------------------------------------------------------
  19.   # ● 初始化对像
  20.   #     x      : 窗口 X 座标
  21.   #     y      : 窗口 Y 座标
  22.   #     width  : 窗口宽度
  23.   #     height : 窗口高度
  24.   #     actor  : 角色
  25.   #--------------------------------------------------------------------------
  26.   def initialize(x, y, width, height, actor)
  27.     super(x, y, width, height)
  28.     @actor = actor
  29.     @column_max = 1
  30.     self.index = 0
  31.     refresh
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 获取技能
  35.   #--------------------------------------------------------------------------
  36.   def skill
  37.     return @data[self.index]
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 刷新
  41.   #--------------------------------------------------------------------------
  42.   def refresh
  43.     if self.contents != nil
  44.       self.contents.dispose
  45.       self.contents = nil
  46.     end
  47.     @data = []
  48.     for id in @actor.skills
  49.       @data.push($data_skills[id])
  50.     end
  51.     @item_max = @data.size
  52.     if @item_max > 0
  53.       self.contents = Bitmap.new(width - 32, @item_max * 32)
  54.       for i in 0...@item_max
  55.         draw_item(i)
  56.       end
  57.     end
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 描绘项目
  61.   #     index : 项目编号
  62.   #--------------------------------------------------------------------------
  63.   def draw_item(index)
  64.     x = 4
  65.     y = index * 32
  66.     skill = @data[index]
  67.     draw_item_name(skill, x, y)
  68.   end
  69.   alias :rsn_update :update
  70.   def update
  71.     rsn_update
  72.     if Input.trigger?(Input::B)
  73.       $game_system.se_play($data_system.buzzer_se)
  74.       return
  75.     end
  76.     if Input.trigger?(Input::C)
  77.       $game_system.se_play($data_system.decision_se)
  78.       @actor.forget_skill(skill.id)
  79.       self.dispose
  80.       return
  81.     end
  82.   end
  83. end

没测试。限制最大技能数量(例如是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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-11 19:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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