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

Project1

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

[已经解决] 如何让将状态界面经验绘制改成绘制状态图标?

[复制链接]

Lv3.寻梦者

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

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
跳转到指定楼层
1
发表于 2014-8-22 11:41:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我在游戏中不会运用到经验和等级,所以打算删除掉这个栏目。
同时想要将人物当前状态的图标描绘到这个区域去,
最好是一排绘制4 - 5个图标
可以绘制最多4排。

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21805
在线时间
9434 小时
注册时间
2012-6-19
帖子
7120

开拓者短篇九导演组冠军

2
发表于 2014-8-22 12:18:52 | 只看该作者
状态界面的脚本是 Window_Status
其中绘制经验值和基本状态都在这个方法中
  1.   def draw_block2(y)
  2.     draw_actor_face(@actor, 8, y)
  3.     draw_basic_info(136, y) # 绘制人物基本信息(包括状态图标)
  4.     draw_exp_info(304, y) # 绘制经验值
  5.   end
复制代码
绘制状态图标的方法是draw_basic_info(x, y)方法中的draw_actor_icons(@actor, x, y + line_height * 1)方法

点评

见3楼  发表于 2014-8-22 12:56
大致描绘出来了,但是该如何让它显示多排呢?  发表于 2014-8-22 12:35
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21805
在线时间
9434 小时
注册时间
2012-6-19
帖子
7120

开拓者短篇九导演组冠军

3
发表于 2014-8-22 12:25:06 | 只看该作者
本帖最后由 喵呜喵5 于 2014-8-22 15:02 编辑

以下内容未测试:
如果希望图标分成好多排的话,可以参考Window_Base中绘制图表的方法在Window_Status中添加这样的方法:
  1.   def draw_actor_icons(actor, x, y, width = 96)
  2.     icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
  3.     icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
  4.   end
复制代码
由于一个图标的宽度是24,所以width / 24可以计算在给定的宽度中一排能够描绘多少个图标,依照这种写法,要描绘三排的图标就是……
  1.   def draw_actor_icons(actor, x, y, width = 96)
  2.     icons = (actor.state_icons + actor.buff_icons)[width*0 / 24, width / 24]
  3.     icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*0) }
  4.     icons = (actor.state_icons + actor.buff_icons)[width*1 / 24, width / 24]
  5.     return unless icons
  6.     icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*1) }
  7.     icons = (actor.state_icons + actor.buff_icons)[width*2 / 24, width / 24]
  8.     return unless icons
  9.     icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24*2) }
  10.   end
复制代码
简化的写法就变成这样
  1.   def draw_actor_icons(actor, x, y, width = 96, col = 1)
  2.     col.times do |line|
  3.       icons = (actor.state_icons + actor.buff_icons)[width * line / 24, width / 24]
  4.       return unless icons
  5.       icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y + 24 * line) }
  6.     end
  7.   end
复制代码
之后调用draw_actor_icons方法时最后一个参数设定成总行数就好了

点评

解决啦,辛苦了~  发表于 2014-8-22 15:22
已修正  发表于 2014-8-22 15:03
等等,好像还是有一些问题……当状态的个数不足够描绘到第二排的时候就报错了……  发表于 2014-8-22 14:26

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
4
 楼主| 发表于 2014-8-22 13:26:18 | 只看该作者
喵呜喵5 发表于 2014-8-22 12:25
以下内容未测试:
如果希望图标分成好多排的话,可以参考Window_Base中绘制图表的方法在Window_Status中添 ...

十分感谢~  解决啦,可以结贴了~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-21 09:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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