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

Project1

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

[已经解决] 请教制作一个简单的技能选择窗口的简单的方法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2022-5-12 19:54:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 taeckle 于 2022-5-14 07:11 编辑

我想搞一个简单的技能选择窗口,类似于地图事件里的显示选择项指令,选择窗口里是一个个技能的名称,选择窗口里的内容会随$game_variables[1] (注意这里$game_variables[1]是个一维数组,里面的元素对应的是技能的ID)变化而变化, 在选择窗口里点确定后全队都将学会此技能,具体要求还有三个:

1.这个技能选择窗口分上下两个部分上面部分就是一句话:"现在想学习哪个技能呢? ",然后下面部分展现的是$game_variables[1]数组里面的一个个元素(比如$game_variables[1]是[1,3,4,8,12]的话那么在下面部分由上到下出现的选项就是第1号技能的名称、第3号技能的名称、第4号技能的名称、第8号技能的名称、第12号技能的名称)

2. $game_variables[1]的大小(size)不是固定的,如果$game_variables[1]内的元素过多无法保证在一页内把所有元素显示出来需保证按“下”或"上"方向键时所有元素都可以显示出来。


3.禁止使用地图事件事件指令中显示选择项(什么上一页下一页的,根本无法显示出诸位大神的神威)


当然最后还是要越简单越好,不算父类Window_Selectable最好能在100行内能搞定

点评

好的,多谢提示!  发表于 2022-5-13 10:19
这么详细,还66行以内,搁着出考题呢;建议联系rb叔叔出下期r考场  发表于 2022-5-13 09:15

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
2
发表于 2022-5-12 20:09:16 | 只看该作者
既然你自己都说是“简单的选择框”,何不自己写

点评

我开这贴也是为自己整理整理思路的,目前思路不足..我以为这种小事对于大神来说就是分分钟的事..  发表于 2022-5-12 20:17
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26303
在线时间
5357 小时
注册时间
2016-3-8
帖子
1655
3
发表于 2022-5-12 20:11:12 | 只看该作者
XP的大佬们是不是太宠这LZ了?
怎么次次都有大佬肯当工具人的?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
4
 楼主| 发表于 2022-5-12 20:26:19 | 只看该作者
alexncf125 发表于 2022-5-12 20:11
XP的大佬们是不是太宠这LZ了?
怎么次次都有大佬肯当工具人的?

咱也有写,也有分享自己的方法,比如我这个贴子(https://rpg.blue/thread-488851-1-1.html) 只是我写的方法大神们觉得太烂,只能鼓起勇气不耻上问了。。

还比如这个帖子(https://rpg.blue/thread-486514-1-1.html),我在这个帖子的后面几楼在大神给的脚本基础上做了一些改进,也算是为论坛做出贡献了
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

5
发表于 2022-5-13 14:16:52 | 只看该作者
有没有一种可能性,你已经写好了一个满足以上所有条件的版本,但是不肯拿出来让大家看看?

点评

大神我写好了  发表于 2022-5-14 07:12
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
6
 楼主| 发表于 2022-5-13 15:28:41 | 只看该作者
本帖最后由 taeckle 于 2022-5-13 15:29 编辑
guoxiaomi 发表于 2022-5-13 14:16
有没有一种可能性,你已经写好了一个满足以上所有条件的版本,但是不肯拿出来让大家看看? ...


我自己写的有bug,每次选择结束就会跳出。。。。大神你敢不敢瞅一眼,保证把你气个半死
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

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

开拓者贵宾剧作品鉴家

7
发表于 2022-5-13 23:35:29 | 只看该作者

点评

大神请问R5里面的哪一题跟我这个贴的内容相关呢?  发表于 2022-5-14 02:30
惊见R兄,抱住摁倒  发表于 2022-5-14 00:38
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
8
 楼主| 发表于 2022-5-14 07:01:32 | 只看该作者
本帖最后由 taeckle 于 2022-5-15 03:02 编辑

下面公布答案(总共192行,$game_variables[1]需首先是个一维数组):

#==============================================================================
class Scene_Skisele < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize(id,limit=[])   
    @id = id
    @limit = limit      
    @skill_lv = 0
  end  

  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    @screen = Spriteset_Map.new
    #技能选择窗口上面部分
    @skill_list_upper = Skill_list_upper.new
    @skill_list_upper.draw_text
    @skill_list_upper.active = true   
    @skill_list_upper.visible = true
    @skill_list_upper.x = 137
    @skill_list_upper.y = 90   
    @skill_list_upper.opacity = 120
    #技能选择窗口
    @skill_list_window = Window_Skill_List.new(@id,@limit)
    @skill_list_window.active = true
    @skill_list_window.visible = true
    @skill_list_window.opacity = 120   
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果画面切换的话就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放窗口
    @skill_list_upper.dispose      
    @skill_list_window.dispose
    @screen.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 刷新窗口
     @screen.update
     @skill_list_window.update   
     if Input.trigger?(Input::B)
      @skill_list_upper.active = false   
      @skill_list_upper.visible = false         
      @skill_list_window.active = false
      @skill_list_window.visible = false        
      $game_system.se_play($data_system.cancel_se)     
      $scene = Scene_Map.new     
     return
     end
     if Input.trigger?(Input::C)
      @skill_list_upper.active = false   
      @skill_list_upper.visible = false        
      @skill_list_window.active = false
      @skill_list_window.visible = false     
      for i in 0...$game_party.actors.size
      $game_party.actors.learn_skill(@skill_list_window.learn_content[@skill_list_window.index])
      end
      p "恭喜全队都学会了技能 #{$data_skills[@skill_list_window.learn_content[@skill_list_window.index]].name}"
      $scene = Scene_Map.new     
     return
     end
  end
end

#================================文字提示===================================

class Skill_list_upper < Window_Base
  def initialize
    super(0, 0, 366, 72)
    self.contents = Bitmap.new(width - 32, height - 32)  
  end  
  def draw_text
    self.contents.clear
    self.contents.font.size = 23
    self.contents.font.color = system_color
    self.contents.draw_text(40, 5, self.width - 32, 32, "现在想学习哪个技能呢?")
  end  
end

#==============================================================================
class Window_Skill_List < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize(id,limit)
    super(137, 50, 366, 360)
    @id = id
    @limit = limit
    @column_max = 1
    @item_max = @id.size
    if @item_max>=8
    self.height = 288
    else
    self.height = @item_max*32+32
    end
    self.y = 162
    self.opacity = 160
    self.index = 0
    refresh   
  end
  #--------------------------------------------------------------------------
  # ● 获取物品
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● 给对象调用参数用的
  #--------------------------------------------------------------------------  
  def learn_content
    return @id
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data=[]
    for i in @id
    skill_id = $data_skills
    @data.push(skill_id)
    end   
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 描绘羡慕
  #     index : 项目编号
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    self.contents.font.color = normal_color
    if @limit[index] != nil
     lv = @limit[index]
    else
     lv = 10
    end
    x = 2
    y = index * 32
    rect = Rect.new(x, y, self.width - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    case skill.name.size
    when 0..18
    self.contents.font.size = 20
    when 19..24
    self.contents.font.size = 16
    when 25..30
    self.contents.font.size = 12
    end
    self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0)   
  end
end

技能选择窗口(数组控制_修订版).rar

189.5 KB, 下载次数: 5

技能选择窗口

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 12:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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