Project1

标题: 很笨的办法实现了状态图头像与作战图头像不同 [打印本页]

作者: rmxpcainiao    时间: 2009-1-24 03:28
标题: 很笨的办法实现了状态图头像与作战图头像不同
参照了简单横版脚本,并做了改动。
Class Window_Base
......
def draw_actor_graphic(actor, x, y)
    bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
    cw = bitmap.width
    ch = bitmap.height/2 #实现半身像
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
......

Class Window_BattleStatus
......
def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      actor_x = i * 160 + 4
      draw_actor_graphic(actor,actor_x+20,120)#战斗状态栏添加头像,坐标自己调
      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
......

class Sprite_Battler
......
def update
    super
    # 战斗者为 nil 的情况下
    if @battler == nil
      self.bitmap = nil
      loop_animation(nil)
      return
    end
    # 文件名和色相与当前情况有差异的情况下
    if @battler.battler_name != @battler_name or
       @battler.battler_hue != @battler_hue
      # 获取、设置位图
      @battler_name = @battler.battler_name
      @battler_hue = @battler.battler_hue
      #使状态栏头像与战斗画面头像使用不同的图片。
      self.bitmap = RPG::Cache.battler("复件"+@battler_name, @battler_hue)     
      @width = bitmap.width
      @height = bitmap.height
      self.ox = @width /2
      self.oy = @height
      # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
      if @battler.dead? or @battler.hidden
        self.opacity = 0
      end
    end
......


有个必要条件,虐待美工,必须给所有战斗图另外设置新图,文件必须是前缀名(程序中是复件)+原图文件名的命名格式,我偷懒只设置了一个,其余都是复制。
很肤浅的修改,不知有没有更好的办法。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: rmxpcainiao    时间: 2009-1-24 03:32
实现的效果,只设置了阿尔西斯,其余都是复制的。
http://rpg.blue/upload_program/d/rmxpcainiao_rmxpclip_113167902.jpg
作者: 玄月    时间: 2009-1-24 07:13
以下引用rmxpcainiao于2009-1-23 19:28:10的发言:


本贴悬赏额度如下:VIP:0   积分:100   
参照了简单横版脚本,并做了改动。
Class Window_Base
......
def draw_actor_graphic(actor, x, y)
   bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
   cw = bitmap.width
   ch = bitmap.height/2 #实现半身像
   src_rect = Rect.new(0, 0, cw, ch)
   self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
......

Class Window_BattleStatus
......
def refresh
   self.contents.clear
   @item_max = $game_party.actors.size
   for i in 0...$game_party.actors.size
     actor = $game_party.actors
     actor_x = i * 160 + 4
     draw_actor_graphic(actor,actor_x+20,120)#战斗状态栏添加头像,坐标自己调
     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
......

class Sprite_Battler
......
def update
   super
   # 战斗者为 nil 的情况下
   if @battler == nil
     self.bitmap = nil
     loop_animation(nil)
     return
   end
   # 文件名和色相与当前情况有差异的情况下
   if @battler.battler_name != @battler_name or
      @battler.battler_hue != @battler_hue
     # 获取、设置位图
     @battler_name = @battler.battler_name
     @battler_hue = @battler.battler_hue
     #使状态栏头像与战斗画面头像使用不同的图片。
     self.bitmap = RPG::Cache.battler("复件"+@battler_name, @battler_hue)     
     @width = bitmap.width
     @height = bitmap.height
     self.ox = @width /2
     self.oy = @height
     # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
     if @battler.dead? or @battler.hidden
       self.opacity = 0
     end
   end
......


有个必要条件,虐待美工,必须给所有战斗图另外设置新图,文件必须是前缀名(程序中是复件)+原图文件名的命名格式,我偷懒只设置了一个,其余都是复制。
很肤浅的修改,不知有没有更好的办法。

恩…………不是很想打击LZ,战斗显示头像的教程不少了,还有LZ发错区了,还有我也发过两个战斗显示头像了。RGSS现在对我来说就是玩具。。不过有时候我会被他玩回。。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: rmxpcainiao    时间: 2009-1-24 07:29
感谢楼上高手指导,刚刚接触RMXP,觉得挺有意思,特别是RGSS和JAVA很像,可惜自己在大学里不争气只学了个三脚猫,只能在单位机房里无聊地混日子,尝试RGSS又找到了以前JAVA编程的感觉,希望玄月兄能够多出几个好脚本,自己感觉研究别人的好脚本来学习RGSS效率很高。再次感谢玄月。
作者: 玄月    时间: 2009-1-24 09:43
竟然被认可了- -~!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1