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

Project1

 找回密码
 注册会员
搜索

角色狀態的排序以及描畫

查看数: 4207 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-12-23 10:03

正文摘要:

本帖最后由 LabLamb 于 2012-12-23 10:05 编辑 #encoding:utf-8 #============================================================================== # ■ Window_Status #----------------------------------------- ...

回复

LabLamb 发表于 2013-1-2 18:09:56
虛心求教,先推。
j433463 发表于 2012-12-25 18:39:39
本帖最后由 j433463 于 2012-12-25 19:05 编辑

找到原因了,先看看修正后的样子再来讲哪儿有问题:



应该是这样没错吧?物攻物防和敏捷这些确实是之前猜测的脚本最后那个有关,
但作怪的不是楼主的脚本,而是原来默认脚本。

首先,位置之所以跑到血槽条那边,是因为在楼主给的 Window_Status 第 92 行 x 值给的不好,

draw_parameters(200, y)

我把 200 改成了 270,就到图上的位置,但物攻物防中文与数字隔得太宽,这并不是楼主脚本的问题,
因为楼主的脚本把它的那一段注解了,以至于在楼主脚本中怎么查都不对。

本来我以为楼主脚本是把默认脚本删除,用新脚本取代,起初没注意,但测试时不对,会跳出错误框,
只好把原来的默认脚本补回去,新脚本放在 Main 上面,想一想,既然这样,找找看默认脚本吧。

果然,把默认脚本 Window_Base 的 def draw_actor_param 那一段中,最后的

draw_text(x + 120, y, 36, line_height, actor.param(param_id), 2)

把 x + 120 改成 x + 80, 间距缩小了,如图正常了。

果然,实测才是解决之道,用看的始终不保证100%看明白,开新工程实测,只耗时不到一小时。

点评

話說我沒有VIP之類的東西可以加你,先欠著吧 XD  发表于 2012-12-25 19:44
LabLamb 发表于 2012-12-25 16:47:22
其實要不是我缺了三頁屬性、等級之類的數值我還是會用原本的狀態,可惜我目前在作的遊戲還是想一切從簡。倒是有點本末倒置,想弄得比較簡單的遊戲卻更花時間弄腳本。
j433463 发表于 2012-12-25 15:50:15
本帖最后由 j433463 于 2012-12-25 15:55 编辑

放大分辨率就可以看起来比较空了,像我的游戏实际大小 768*576 界面看起来就没那么挤:



状态页还要为了不显得太空,花心思去弄立绘图,修修改改的补全所有角色的立绘当背景:



楼主想一页几个角色状态一起显示这念头我也动过,只是后来考虑角色队伍变更时状态页要不要也变更?

这么一样就放弃了。

而且,那些挤在一起的状态资料中少了经验值,这个我就不想省掉,还有状态图标 Icon 啊!都放不进去,太挤了,

宁可放大窗口,然后把图一个个改大,战斗图,背景,标题图,立绘.......现在想想,好像更累,但效果觉得不错。
LabLamb 发表于 2012-12-25 09:37:52
@345912390
不明白為甚麼會是「擠」在一起,那頁佔了整個遊戲畫面,空間很充裕,看起來也很舒服,跟放在主選單差很遠吧。

点评

對啊,不過是因為我不會調整才會文字都重疊在一起吧(我要顯示的項目較少,沒了等級和三種屬性),要是都分開了,就不會擠吧。  发表于 2012-12-25 11:11
你自己的那个截图不是全挤在上面的??  发表于 2012-12-25 10:22
345912390 发表于 2012-12-24 19:52:03
@LabLamb 放在Window_Status裡面又何苦挤在一起
其实很简单,懒得弄了,自己参考着改吧!
345912390 发表于 2012-12-24 16:55:44
不知道你要的是不是这样的效果

如果是,就用以下脚本替换Window_MenuStatus
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_MenuStatus
  4. #------------------------------------------------------------------------------
  5. #  菜单画面中,显示队伍成员状态的窗口
  6. #==============================================================================

  7. class Window_MenuStatus < Window_Selectable
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :pending_index            # 保留位置(整队用)
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对象
  14.   #--------------------------------------------------------------------------
  15.   def initialize(x, y)
  16.     super(x, y, window_width, window_height)
  17.     @pending_index = -1
  18.     refresh
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 获取窗口的宽度
  22.   #--------------------------------------------------------------------------
  23.   def window_width
  24.     Graphics.width - 160
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 获取窗口的高度
  28.   #--------------------------------------------------------------------------
  29.   def window_height
  30.     Graphics.height
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 获取项目数
  34.   #--------------------------------------------------------------------------
  35.   def item_max
  36.     $game_party.members.size
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 获取项目的高度
  40.   #--------------------------------------------------------------------------
  41.   def item_height
  42.     (height - standard_padding * 2) / 4
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 绘制项目
  46.   #--------------------------------------------------------------------------
  47.   def draw_item(index)
  48.     actor = $game_party.members[index]
  49.     enabled = $game_party.battle_members.include?(actor)
  50.     rect = item_rect(index)
  51.     draw_item_background(index)
  52.     draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
  53.     draw_actor_simple_status(actor, rect.x + 108, rect.y)# + line_height / 2)
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 绘制项目的背景
  57.   #--------------------------------------------------------------------------
  58.   def draw_item_background(index)
  59.     if index == @pending_index
  60.       contents.fill_rect(item_rect(index), pending_color)
  61.     end
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 按下确定键时的处理
  65.   #--------------------------------------------------------------------------
  66.   def process_ok
  67.     super
  68.     $game_party.menu_actor = $game_party.members[index]
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 返回上一个选择的位置
  72.   #--------------------------------------------------------------------------
  73.   def select_last
  74.     select($game_party.menu_actor.index || 0)
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 设置保留位置(整队用)
  78.   #--------------------------------------------------------------------------
  79.   def pending_index=(index)
  80.     last_pending_index = @pending_index
  81.     @pending_index = index
  82.     redraw_item(@pending_index)
  83.     redraw_item(last_pending_index)
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 绘制简单的状态
  87.   #--------------------------------------------------------------------------
  88.   def draw_actor_simple_status(actor, x, y)
  89.     draw_actor_name(actor, x, y)
  90.     draw_actor_class(actor, x,y + line_height * 1)
  91.     draw_actor_hp(actor, x, y + line_height * 2,112)
  92.     draw_actor_mp(actor, x, y + line_height * 3,112)
  93.     draw_actor_param(actor, x+112, y, 2)
  94.     draw_actor_param(actor, x+112, y+ line_height * 1, 3)
  95.     draw_actor_param(actor, x+112, y+ line_height * 2, 4)
  96.     draw_actor_param(actor, x+112, y+ line_height * 3, 5)
  97.     draw_equipments(actor,x+212, y)
  98.   end
  99.    #--------------------------------------------------------------------------
  100.   # ● 绘制能力值
  101.   #--------------------------------------------------------------------------
  102.   def draw_actor_param(actor, x, y, param_id)
  103.     change_color(system_color)
  104.     draw_text(x, y,100, line_height, Vocab::param(param_id))
  105.     change_color(normal_color)
  106.     draw_text(x, y,100, line_height, actor.param(param_id), 2)
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 绘制装备
  110.   #--------------------------------------------------------------------------
  111.   def draw_equipments(actor,x, y)
  112.     actor.equips.each_with_index do |item, i|
  113.       draw_item_name(item, x, y + line_height * i)
  114.     end
  115.   end
  116. end
复制代码

点评

先謝謝,雖然很接近可是我想把這頁放在Window_Status裡面。  发表于 2012-12-24 19:29
很蛋疼的布局,挤在一起很难看,武器装备5项就很难看了  发表于 2012-12-24 17:13

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分

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

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

GMT+8, 2024-12-23 16:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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