查看: 1724|回复: 3

[已经解决] 請教橫向戰鬥(3.4E)在敵方腳下顯示狀態圖示的方法

[复制链接]
梦石
0
星屑
50
在线时间
448 小时
注册时间
2011-10-9
回帖
138
发表于 2014-7-9 23:16:57 | 显示全部楼层 |阅读模式

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

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

×
請教橫向戰鬥(3.4E)在敵方腳下顯示狀態圖示的方法
否則戰鬥中難以辨識敵方是否處於什麼樣的狀態
置頂橫條顯示不是很好的辦法
希望能顯示在敵人的腳邊,經驗絕對奉上,謝謝

点评

脚下空间不足吧...  发表于 2014-7-16 21:56
梦石
0
星屑
632
在线时间
921 小时
注册时间
2013-3-13
回帖
503
发表于 2014-7-12 23:35:21 | 显示全部楼层
本帖最后由 crow2006 于 2014-7-12 23:40 编辑

1.jpg
这样可以吗?空白的arrow图片放到游戏文件夹下的system里面。坐标自己调整。
[pre lang="ruby" line="1"]#==============================================================================
# ■ Arrow_Base
#------------------------------------------------------------------------------
#  在战斗画面使用的箭头光标的活动块。本类作为
# Arrow_Enemy 类与 Arrow_Actor 类的超级类使用。
#==============================================================================

class Arrow_Base < Sprite
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :index                    # 光标位置
  attr_reader   :help_window              # 帮助窗口
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     viewport : 显示端口
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    self.bitmap = Cache.system("Arrow")
    self.ox = 16
    self.oy = 64
    self.z = 2500
    @blink_count = 0
    @index = 0
    @help_window = nil
    update
  end
  #--------------------------------------------------------------------------
  # ● 设置光标位置
  #     index : 新的光标位置
  #--------------------------------------------------------------------------
  def index=(index)
    @index = index
    update
  end
  #--------------------------------------------------------------------------
  # ● 设置帮助窗口
  #     help_window : 新的帮助窗口
  #--------------------------------------------------------------------------
  def help_window=(help_window)
    @help_window = help_window
    # 刷新帮助文本 (update_help 定义了继承目标)
    if @help_window != nil
      update_help
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 刷新点灭记数
    @blink_count = (@blink_count + 1) % 12
    # 设置传送源矩形
    if @blink_count < 6
      self.src_rect.set(0, 0, 32, 32)
    else
      self.src_rect.set(32, 0, 32, 32)
    end
    # 刷新帮助文本 (update_help 定义了继承目标)
    if @help_window != nil
      update_help
    end
  end
end
#==============================================================================
# ■ Arrow_Enemy
#------------------------------------------------------------------------------
#  选择敌人的箭头光标。本类继承 Arrow_Base
# 类。
#==============================================================================

class Arrow_Enemy < Arrow_Base
  #--------------------------------------------------------------------------
  # ● 获取光标指向的敌人
  #--------------------------------------------------------------------------
  def enemy
    return $game_troop.members[@index]
  end
  
  def dispose
    @enemy.loop_white_flash = false unless @enemy.nil?
    super
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
     if @enemy != enemy and enemy.exist?
        @enemy.loop_white_flash = false unless @enemy.nil?
        enemy.loop_white_flash = true
        @enemy = enemy
      end  
   
    # 如果指向不存在的敌人就离开
    $game_troop.members.size.times do
      break if self.enemy.exist?
      @index += 1
      @index %= $game_troop.members.size
    end
    # 光标右
    if Input.repeat?(Input::RIGHT) or Input.repeat?(Input::DOWN)
      Sound.play_cursor
      $game_troop.members.size.times do
        @index += 1
        @index %= $game_troop.members.size
        break if self.enemy.exist?
      end
    end
    # 光标左
    if Input.repeat?(Input::LEFT) or Input.repeat?(Input::UP)
     Sound.play_cursor
      $game_troop.members.size.times do
        @index += $game_troop.members.size - 1
        @index %= $game_troop.members.size
        break if self.enemy.exist?
      end
    end
    # 设置活动块坐标
    if self.enemy != nil
      self.x = self.enemy.screen_x
      self.y = self.enemy.screen_y
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新帮助文本
  #--------------------------------------------------------------------------
  def update_help
    # 帮助窗口显示敌人的名字与状态
    @help_window.set_enemy(self.enemy)
  end
end





class Scene_Battle ##
  
  
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    update_basic(true)
    update_info_viewport                  # 更新显示信息的视区
    if $game_message.visible
      @info_viewport.visible = false
      @message_window.visible = true
    end
    unless $game_message.visible          # 在显示消息以外的情况
      return if judge_win_loss            # 判断胜败
      update_scene_change
      if @enemy_arrow != nil
        update_target_enemy_selection     # 选择敌方对象
      elsif @target_actor_window != nil
        update_target_actor_selection     # 选择对象角色
      elsif @skill_window != nil
        update_skill_selection            # 选择特技
      elsif @item_window != nil
        update_item_selection             # 选择物品
      elsif @party_command_window.active
        update_party_command_selection    # 选择同伴指令
      elsif @actor_command_window.active
        update_actor_command_selection    # 选择角色指令
      else
        process_battle_event              # 战斗处理
        process_action                    # 战斗行动
        process_battle_event              # 处理战斗事件
      end
    end
  end
  

  
  def set_window(visible)
    if !@skill_window.nil?
      @skill_window.visible = visible
    elsif !@item_window.nil?
      @item_window.visible = visible
    end
  end

  #--------------------------------------------------------------------------
  # ● 开始选择对象的敌方角色
  #--------------------------------------------------------------------------
  def start_target_enemy_selection
    set_window(false)
    @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport3)
    @enemy_window = Window_Enemy.new(176,0)
    @enemy_arrow.help_window = @enemy_window
    @actor_command_window.active = false   
  end
  #--------------------------------------------------------------------------
  # ● 选择对象敌方角色结束
  #--------------------------------------------------------------------------
  def end_target_enemy_selection
    @enemy_arrow.dispose
    @enemy_arrow = nil
    @enemy_window.dispose
    set_window(true)
    if @actor_command_window.index == 0
      @actor_command_window.active = true
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新选择对象敌方角色
  #--------------------------------------------------------------------------
  def update_target_enemy_selection
     @enemy_arrow.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_target_enemy_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @active_battler.action.target_index = @enemy_arrow.enemy.index
      end_target_enemy_selection
      end_skill_selection
      end_item_selection
      next_actor
    end
  end


end


class Spriteset_Battle ##
  def viewport3
    return @viewport3
  end  
end

class Game_Battler
  attr_accessor :loop_white_flash              # 循环白色闪烁标记
end

class Sprite_Battler ##
  alias old_setup_new_effect setup_new_effect
  def setup_new_effect
    if @battler.loop_white_flash and @effect_duration == 0
      @battler.white_flash = true
    end
    old_setup_new_effect
  end
end


#==============================================================================
# ■ Window_Enemy
#------------------------------------------------------------------------------
#  显示敌人信息的窗口,光标Arrow用。
#==============================================================================

class Window_Enemy < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化窗口
  #     x : 窗口的X坐标
  #     y : 窗口的Y坐标
  #--------------------------------------------------------------------------
  def initialize(x, y)
  # super(x+70, y, 300, WLH * 3 + 32)
    super(x+70, y, 300, WLH * 5 + 32)   
#     self.opacity = 0
  end

  #--------------------------------------------------------------------------
  # ● 设置文本
  #     text  : 窗口显示的字符串
  #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    # 如果文本和对齐方式的至少一方与上次的不同
#    if text != @text or align != @align
      # 再描绘文本  
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil
#    end
    self.visible = true
  end
  
  
  #--------------------------------------------------------------------------
  # ● 设置敌人
  #     enemy : 要显示名字和状态的敌人
  #--------------------------------------------------------------------------
  def set_enemy(enemy)
    self.contents.font.size = 14
    if @enemy != enemy
    text = enemy.name
    set_text(text)
    w = enemy.states.size * 24
    draw_actor_state(enemy, contents.width - w , 50, w)
    draw_actor_hp(enemy, 0 , WLH  )
    draw_actor_mp(enemy, contents.width - 120 , WLH )
draw_actor_parameter(enemy, 0,WLH * 3 , 0)
draw_actor_parameter(enemy, 150,WLH * 3 , 1)
draw_actor_parameter(enemy, 0,WLH * 4 , 2)
draw_actor_parameter(enemy, 150,WLH * 4 , 3)
    @enemy = enemy
    end
  end
end[/pre]




arrow.png

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
448 小时
注册时间
2011-10-9
回帖
138
 楼主| 发表于 2014-7-13 01:44:57 | 显示全部楼层
crow2006 发表于 2014-7-12 23:35
这样可以吗?空白的arrow图片放到游戏文件夹下的system里面。坐标自己调整。
#========================== ...

首先感謝您的回覆
不過,不太明白您圖中的意思
預設敵方的狀態圖示是要選擇敵人時才看的到的(置頂的窗口裡)
我想要能直接顯示在敵方圖片的旁邊,不用選取也能顯示呢

点评

那样的话恕我无能为力了。  发表于 2014-7-13 12:11
回复

使用道具 举报

梦石
0
星屑
1235
在线时间
19 小时
注册时间
2015-4-19
回帖
1
发表于 2015-4-24 06:49:08 来自手机 | 显示全部楼层
crow2006 发表于 2014-7-12 23:35
这样可以吗?空白的arrow图片放到游戏文件夹下的system里面。坐标自己调整。
#========================== ...

跪求这个脚本,给我吧!

评分

参与人数 1星屑 -20 收起 理由
怪蜀黍 -20 请勿挖坟

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部