查看: 1953|回复: 4

[已经解决] 战斗选项时显示对应人物图像

[复制链接]
梦石
10
星屑
5748
在线时间
1849 小时
注册时间
2013-2-14
回帖
327

开拓者

发表于 2014-5-27 10:56:36 | 显示全部楼层 |阅读模式

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

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

×
问题是 我想在选项时,在右下角显示对应的角色半身像,我已经把战斗选项给固定在了右下角。

我是在默认系统上改的,改动如下,可效果不好。有谁能教下我吗?

[pre lang="ruby" line="1"]#==============================================================================
# ■ Window_BattleStatus
#------------------------------------------------------------------------------
#  显示战斗画面同伴状态的窗口。
#==============================================================================

class Window_BattleStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(0, 320, 640, 160)
    self.opacity = 0  
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up_flags = [false, false, false, false]
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    super
  end
  #--------------------------------------------------------------------------
  # ● 设置升级标志
  #     actor_index : 角色索引
  #--------------------------------------------------------------------------
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
lihui = Sprite.new # 新生成一个 Sprite 类的实例
lihui.bitmap = Bitmap.new("Graphics/Pictures/"+i.to_s) # 是读取文件夹中所含的图片文件
lihui.x = 500 #设置x坐标
lihui.y = 200 #设置y坐标
      actor = $game_party.actors
      actor_x = i * 160 + 4
      draw_actor_name(actor, actor_x, 0)
      draw_actor_hp(actor, actor_x, 32, 120)
      draw_actor_sp(actor, actor_x, 64, 120)
      if @level_up_flags
        self.contents.font.color = normal_color
        self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
      else
        draw_actor_state(actor, actor_x, 96)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
    # 主界面的不透明度下降
    if $game_temp.battle_main_phase
      self.contents_opacity -= 4 if self.contents_opacity > 191
    else
      self.contents_opacity += 4 if self.contents_opacity < 255
Graphics.update#新加
    end
  end
end
[/pre]

然后现在情况是选项时没显示图片。
01.jpg

然后全部选择好后,图片一口气全出来了。
02.jpg

请大大们指点。。

点评

好像是你的精灵没有释放。  发表于 2014-6-4 10:09
梦石
10
星屑
5748
在线时间
1849 小时
注册时间
2013-2-14
回帖
327

开拓者

 楼主| 发表于 2014-5-27 12:34:38 | 显示全部楼层
1064593631 发表于 2014-5-27 12:18
能把你的战斗菜单脚本分享一个吗     第一张图片战斗菜单

这是默认系统。。我只是插入了一张图片和移动了选项位置而已。
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-5-27 13:09:19 | 显示全部楼层
我不玩XP,下面只是一些小建议
1. 选项菜单窗口应该不是 Window_BattleStatus 。请仔细找找这个窗口
2. 在选项菜单窗口生成的时候获取当前角色并创建精灵,设定位图。在选项菜单窗口释放的时候释放位图和精灵。
不要每一次 refresh 都创建一个精灵并显示图片

点评

谢谢,果然还是好麻烦的样子。。我还是先学好脚本再慢慢改吧,,  发表于 2014-5-29 10:50

评分

参与人数 1星屑 +90 收起 理由
myownroc + 90 塞糖

查看全部评分

回复

使用道具 举报

夜天の主

梦石
0
星屑
136
在线时间
1553 小时
注册时间
2008-4-13
回帖
2301

开拓者第4届短篇游戏比赛亚军

发表于 2014-5-28 04:04:51 | 显示全部楼层
LZ在刷新里写的循环就是一口气显示所有图像的
只依靠战斗状态窗口的话好像没法直接获取当前行动的角色吧?
建议直接重新定义一个窗口类然后在Scene_Battle里调用,判定当前行动角色可以试试用Scene_Battle 3里的@active_battler
P.S. 其实直接把立绘铺开了摆在状态窗口里不好么?

点评

嗯,不知道该插在那段。。算了,暂时就用状态栏显示立绘代替吧。。谢谢回答,等我学好脚本再慢慢改吧。。  发表于 2014-5-29 10:51

评分

参与人数 1星屑 +90 收起 理由
myownroc + 90 我很赞同

查看全部评分

回复

使用道具 举报

梦石
10
星屑
5748
在线时间
1849 小时
注册时间
2013-2-14
回帖
327

开拓者

 楼主| 发表于 2014-5-29 11:05:12 | 显示全部楼层
1064593631 发表于 2014-5-28 20:54
我就是想移动选项位置 ,我不会。  把你脚本发个吧

那啥,为什么要在我的提问贴里提问呢?

如果只是修改选项位置的话可以在Scene_Battle 3里的● 设置角色指令窗口里改。。

    # 设置角色指令窗口的位置
    @actor_command_window.x =@actor_index * 160#这个是X坐标,直接指点位置就好
再加一句Y坐标位置
    @actor_command_window.y = ??#数值直接写,如果不加也可以进Scene_Battle 1里改。。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部