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

Project1

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

[已经解决] 求助,怎么把选择项从第2行开始

[复制链接]

Lv4.逐梦者

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

开拓者

跳转到指定楼层
1
发表于 2016-3-13 12:59:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x

RUBY 代码复制
  1. class Game_Actor
  2.   MAX_SKILL_NUM = 2
  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 , 200 , 240 , 160 , 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.   # ● 刷新
  43.   #--------------------------------------------------------------------------
  44.   def refresh
  45.     if self.contents != nil
  46.       self.contents.dispose
  47.       self.contents = nil
  48.     end
  49.     @data = []
  50.     for id in @actor.skills
  51.       @data.push($data_skills[id])
  52.     end
  53.     @item_max = @data.size
  54.     if @item_max > 0
  55.       self.contents = Bitmap.new(width - 32, @item_max * 32)
  56.       self.contents.draw_text(0, 0, 120, 32, @actor.name)
  57.       for i in 0...@item_max
  58.         draw_item(i)
  59.       end
  60.     end
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 描绘项目
  64.   #     index : 项目编号
  65.   #--------------------------------------------------------------------------
  66.   def draw_item(index)
  67.     x = 4
  68.     y = index * 32
  69.     skill = @data[index]
  70.     draw_item_name(skill, x, y)
  71.   end
  72.   alias :rsn_update :update
  73.   def update
  74.     rsn_update
  75.     if Input.trigger?(Input::B)
  76.       $game_system.se_play($data_system.buzzer_se)
  77.       return
  78.     end
  79.     if Input.trigger?(Input::C)
  80.       $game_system.se_play($data_system.decision_se)
  81.       @actor.forget_skill(skill.id)
  82.       self.dispose
  83.       return
  84.     end
  85.   end
  86. end

评分

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

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
2
发表于 2016-3-13 13:53:57 | 只看该作者
def initialize(x, y, width, height, actor)
    super(x, y, width, height)
    @actor = actor
    @column_max = 1
    self.index = 1
    refresh
  end
试试
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

3
发表于 2016-3-13 14:12:30 | 只看该作者
本帖最后由 cinderelmini 于 2016-3-13 21:48 编辑
  1. class Game_Actor
  2.   MAX_SKILL_NUM = 2
  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 , 200 , 240 , 160 , 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+1) * 32) # item_max加一行
  54.       self.contents.draw_text(0, 0, 120, 32, @actor.name)
  55.       for i in 0...@item_max
  56.         draw_item(i)
  57.       end
  58.     end
  59.   end
  60.   
  61.   #--------------------------------------------------------------------------
  62.   # ● 描绘项目
  63.   #     index : 项目编号
  64.   #--------------------------------------------------------------------------
  65.   def draw_item(index)
  66.     x = 4
  67.     y = (index+1) * 32  # index加1
  68.     skill = @data[index]
  69.     draw_item_name(skill, x, y)
  70.   end
  71.   
  72.   alias :rsn_update :update
  73.   def update
  74.     rsn_update
  75.     if Input.trigger?(Input::B)
  76.       $game_system.se_play($data_system.buzzer_se)
  77.       return
  78.     end
  79.     if Input.trigger?(Input::C)
  80.       $game_system.se_play($data_system.decision_se)
  81.       @actor.forget_skill(skill.id)
  82.       self.dispose
  83.       return
  84.     end
  85.   end
  86.   
  87.   #--------------------------------------------------------------------------
  88.   # ● 更新光标矩形
  89.   #--------------------------------------------------------------------------
  90.   def update_cursor_rect
  91.     # 光标位置不满 0 的情况下
  92.     if @index < 0
  93.       self.cursor_rect.empty
  94.       return
  95.     end
  96.     # 获取当前的行
  97.     row = (@index+1) / @column_max  #(index以进一位算)
  98.     # 当前行被显示开头行前面的情况下
  99.     if row < self.top_row
  100.       # 从当前行向开头行滚动
  101.       self.top_row = row
  102.     end
  103.     # 当前行被显示末尾行之后的情况下
  104.     if row > self.top_row + (self.page_row_max - 1)
  105.       # 从当前行向末尾滚动
  106.       self.top_row = row - (self.page_row_max - 1)
  107.     end
  108.     # 计算光标的宽度
  109.     cursor_width = self.width / @column_max - 32
  110.     # 计算光标坐标
  111.     #(坐标都以进一位算)
  112.     x = (@index+1) % @column_max * (cursor_width + 32)
  113.     y = (@index+1) / @column_max * 32 - self.oy
  114.     # 更新光标矩形
  115.     self.cursor_rect.set(x, y, cursor_width, 32)
  116.   end
  117.   
  118. end
复制代码
也许能成……

点评

楼层更新,这样应该可以了……  发表于 2016-3-13 21:47
然后那段里面有index的地方都改成index+1看看……  发表于 2016-3-13 21:42
应该不止第一行名字可选,最后一个选项应该也是不能选的(窝是说,可以按下确定键),可以把Selectable里面更新光标位置的那段复制过来。  发表于 2016-3-13 21:42
可以是可以了,不过第一行显示角色的名字也是可选择的。而不是在技能之间选择  发表于 2016-3-13 19:26

评分

参与人数 2星屑 +14 梦石 +1 收起 理由
RyanBern + 1 认可答案
yang1zhi + 14 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 22:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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