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

Project1

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

[已经解决] 遗忘技能系统

[复制链接]

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
跳转到指定楼层
1
发表于 2016-5-2 03:04:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 工藤~新一じ 于 2016-5-2 03:11 编辑

在论坛搜索“遗忘”关键词,找了大部分帖子,没实现自己想要的效果,所以来伸手发帖了。
想做一个效果:
单独窗口,把队伍中第二位或者指定id的角色的所有技能列出来,选择哪个技能就遗忘哪个技能,按B键退出。。。
(。。。大大会扇脸伸手党吗?)
其实我在论坛找到了个不错的脚本:
  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(0 , 120 , 320 , 240 , 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
复制代码
这个脚本是当角色学会技能时做一个判断,如果学会的技能在5个以上,就打开窗口,列出所有技能,再选择技能删除。
其实我想做的效果就和这个一样。所以有大大愿意帮我改吗?

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv1.梦旅人

梦石
0
星屑
50
在线时间
97 小时
注册时间
2015-3-27
帖子
225
2
发表于 2016-5-2 18:54:39 | 只看该作者
我给你提供个思路吧,其实窗口类Window的作用基本和Window_skill差不多,就是列出技能,你可以仿照。
自己写个Scene场景类,你的要求很简单,基本上几行代码就能搞定。多看自己游戏脚本,然后想想在游戏中是怎么实现的。
一般可能很少有人给你去写这个。

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

我的博客:http://wang1212.github.io/
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
3
 楼主| 发表于 2016-5-2 22:45:05 | 只看该作者
578783944 发表于 2016-5-2 18:54
我给你提供个思路吧,其实窗口类Window的作用基本和Window_skill差不多,就是列出技能,你可以仿照。
自己 ...

我居然成功了

点评

恭喜你,自己多动手就学会的越多。  发表于 2016-5-3 19:22

评分

参与人数 1星屑 +6 收起 理由
夜狠简单 + 6 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 05:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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