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

Project1

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

[已经解决] 如何在菜单内——状态栏里绘制技能列表

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
跳转到指定楼层
1
发表于 2015-4-9 15:48:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 负零 于 2015-4-9 15:54 编辑

我看了默认脚本,修改如下,我刷新部分删除了create_contents,create_contents是一个绘制窗口的方法,因为他会覆盖整个弹出的状态栏。但,绘制不出技能,请各位大神帮忙指点。
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Status
  4. #------------------------------------------------------------------------------
  5. #  状态画面中,显示角色基本信息的窗口。
  6. #==============================================================================
  7.  
  8. class Window_Status < Window_Selectable
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对象
  11.   #--------------------------------------------------------------------------
  12.   def initialize(actor)
  13.     super(0, 0, Graphics.width, Graphics.height)
  14.     @actor = actor
  15.     refresh
  16.     activate
  17.     @data = []
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 设置角色
  21.   #--------------------------------------------------------------------------
  22.   def actor=(actor)
  23.     return if @actor == actor
  24.     @actor = actor
  25.     refresh
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # v1设置技能类型 ID
  29.   #--------------------------------------------------------------------------
  30.   def stype_id=(stype_id)
  31.     return if @stype_id == stype_id
  32.     @stype_id = stype_id
  33.     refresh
  34.     self.oy = 0
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # v1  获取技能
  38.   #--------------------------------------------------------------------------
  39.   def item
  40.     @data && index >= 0 ? @data[index] : nil
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # v1 获取选择项目的有效状态
  44.   #--------------------------------------------------------------------------
  45.   def current_item_enabled?
  46.     enable?(@data[index])
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # v1 查询列表中是否含有此技能
  50.   #--------------------------------------------------------------------------
  51.   def include?(item)
  52.     item && item.stype_id == @stype_id
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # v1 查询此技能是否可用
  56.   #--------------------------------------------------------------------------
  57.   def enable?(item)
  58.     @actor && @actor.usable?(item)
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # v1生成技能列表
  62.   #--------------------------------------------------------------------------
  63.   def make_item_list
  64.     @data = @actor ? @actor.skills.select {|skill| include?(skill) } : []
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # v1 返回上一个选择的位置
  68.   #--------------------------------------------------------------------------
  69.   def select_last
  70.     select(@data.index(@actor.last_skill.object) || 0)
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # v1绘制项目
  74.   #--------------------------------------------------------------------------
  75.   def draw_item(index)
  76.     skill = @data[index]
  77.     if skill
  78.       rect = item_rect(index)
  79.       rect.width -= 4
  80.       draw_item_name(skill, rect.x, rect.y, enable?(skill))
  81.       draw_skill_cost(rect, skill)
  82.     end
  83.   end
  84.  
  85.   #--------------------------------------------------------------------------
  86.   # ● 刷新
  87.   #--------------------------------------------------------------------------
  88.   def refresh
  89.     contents.clear
  90.     draw_block1   (0)
  91.     make_item_list#
  92.     draw_all_items#
  93.   end

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2015-4-9 19:12:05 | 只看该作者
你是想要把技能选择综合到【状态】里吗?还是单纯的只是把习得的技能描绘出来?

点评

大神,单独绘制,求支招。  发表于 2015-4-10 09:39
单纯显示出来。  发表于 2015-4-9 21:14
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
3
 楼主| 发表于 2015-4-10 15:10:48 | 只看该作者
两天了,顶一顶。求各位大神指点,绘制部分难受啊!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
4
发表于 2015-4-10 19:36:49 | 只看该作者
本帖最后由 三途亚梦 于 2015-4-10 19:40 编辑

首先,给你解说一下状态菜单的。
状态菜单是将整个窗口拆成了4个部分,分别描绘不同的东西。
既然你只要把技能描绘出来,就模仿描绘装备的方法,把技能描绘出来。

我这里随手写了一个例子,是将第二部分改成描绘当前该人物习得的技能。
目前是无差别的按照技能的id挨个进行描绘。
按照这个例子,细节调整就得你自己做了。

RUBY 代码复制
  1. class Window_Status < Window_Selectable
  2.   #--------------------------------------------------------------------------
  3.   # ● 绘制区域 2
  4.   #--------------------------------------------------------------------------
  5.   def draw_block2(y)
  6.     draw_skills(0, y) #在区域2调用 draw_skills(x, y) 方法,被给x赋值为0。
  7.   end
  8.   #--------------------------------------------------------------------------
  9.   # ● 绘制技能
  10.   #--------------------------------------------------------------------------
  11.   def draw_skills(x, y) #该方法就是将该人物习得的技能按ID顺序从上倒下纵向排列着描绘出来。
  12.     @actor.skills.each_with_index do |item, i|
  13.       draw_item_name(item, x, y + line_height * i)
  14.     end
  15.   end
  16. end

点评

感谢提供思路,已经实现!  发表于 2015-4-10 22:20

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 04:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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