查看: 4183|回复: 3

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

[复制链接]
梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
回帖
668
发表于 2015-4-9 15:48:14 | 显示全部楼层 |阅读模式

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

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

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

我看了默认脚本,修改如下,我刷新部分删除了create_contents,create_contents是一个绘制窗口的方法,因为他会覆盖整个弹出的状态栏。但,绘制不出技能,请各位大神帮忙指点。
[pre lang="ruby"]#encoding:utf-8
#==============================================================================
# ■ Window_Status
#------------------------------------------------------------------------------
#  状态画面中,显示角色基本信息的窗口。
#==============================================================================

class Window_Status < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, Graphics.width, Graphics.height)
    @actor = actor
    refresh
    activate
    @data = []
  end
  #--------------------------------------------------------------------------
  # ● 设置角色
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # v1设置技能类型 ID
  #--------------------------------------------------------------------------
  def stype_id=(stype_id)
    return if @stype_id == stype_id
    @stype_id = stype_id
    refresh
    self.oy = 0
  end
  #--------------------------------------------------------------------------
  # v1  获取技能
  #--------------------------------------------------------------------------
  def item
    @data && index >= 0 ? @data[index] : nil
  end
  #--------------------------------------------------------------------------
  # v1 获取选择项目的有效状态
  #--------------------------------------------------------------------------
  def current_item_enabled?
    enable?(@data[index])
  end
  #--------------------------------------------------------------------------
  # v1 查询列表中是否含有此技能
  #--------------------------------------------------------------------------
  def include?(item)
    item && item.stype_id == @stype_id
  end
  #--------------------------------------------------------------------------
  # v1 查询此技能是否可用
  #--------------------------------------------------------------------------
  def enable?(item)
    @actor && @actor.usable?(item)
  end
  #--------------------------------------------------------------------------
  # v1生成技能列表
  #--------------------------------------------------------------------------
  def make_item_list
    @data = @actor ? @actor.skills.select {|skill| include?(skill) } : []
  end
  #--------------------------------------------------------------------------
  # v1 返回上一个选择的位置
  #--------------------------------------------------------------------------
  def select_last
    select(@data.index(@actor.last_skill.object) || 0)
  end
  #--------------------------------------------------------------------------
  # v1绘制项目
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    if skill
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(skill, rect.x, rect.y, enable?(skill))
      draw_skill_cost(rect, skill)
    end
  end

  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_block1   (0)
    make_item_list#
    draw_all_items#
  end[/pre]

闇吼者の災悪眷族

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

点评

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

使用道具 举报

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
回帖
668
 楼主| 发表于 2015-4-10 15:10:48 | 显示全部楼层
两天了,顶一顶。求各位大神指点,绘制部分难受啊!
回复

使用道具 举报

闇吼者の災悪眷族

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
回帖
6408
发表于 2015-4-10 19:36:49 | 显示全部楼层
本帖最后由 三途亚梦 于 2015-4-10 19:40 编辑

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

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

[pre lang="ruby"]class Window_Status < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 绘制区域 2
  #--------------------------------------------------------------------------
  def draw_block2(y)
    draw_skills(0, y) #在区域2调用 draw_skills(x, y) 方法,被给x赋值为0。
  end
  #--------------------------------------------------------------------------
  # ● 绘制技能
  #--------------------------------------------------------------------------
  def draw_skills(x, y) #该方法就是将该人物习得的技能按ID顺序从上倒下纵向排列着描绘出来。
    @actor.skills.each_with_index do |item, i|
      draw_item_name(item, x, y + line_height * i)
    end
  end
end[/pre]

点评

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

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部