查看: 2477|回复: 22

[已经解决] 【已解决】战斗中怎么增加敌人

[复制链接]
梦石
0
星屑
7650
在线时间
1162 小时
注册时间
2016-9-10
回帖
145

开拓者

发表于 2016-12-21 00:04:31 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 devil033 于 2016-12-23 20:41 编辑

请问下,战斗中怎么增加敌人
比如:一开始,只有一个BOSS,BOSS血量被打到一半以下时,他就会召唤出2个小BOSS出来战斗,这要怎么实现?

我用VA自带的那个 “敌人出现” 的功能并没有用,我把敌群设为三个人,其中2个是中途出现的,出现条件是那个BOSS血量一半以下,
可是刚一切入战斗,那2个被我设置成中途出现的人  的血条和名字 就直接出现了,只是会不动而已,这基本上就是失败了

点评

俗话说,脚本不要乱加。把血条脚本去掉呗。啥?你不想去掉?那你好歹贴出来啊不然谁知道你的是啥?  发表于 2016-12-21 10:07
脚本的问题吧,RM没有自带血条脚本的  发表于 2016-12-21 08:55

评分

参与人数 1星屑 +50 收起 理由
RaidenInfinity + 50 結帖

查看全部评分

梦石
0
星屑
7650
在线时间
1162 小时
注册时间
2016-9-10
回帖
145

开拓者

 楼主| 发表于 2016-12-22 00:43:00 | 显示全部楼层
本帖最后由 RaidenInfinity 于 2016-12-22 00:50 编辑

@RaidenInfinity
脚本盲,没改过脚本
敌人血条脚本如下,麻烦指导一下,谢谢
[pre lang="ruby"]#==============================================================================
# F08 - 战斗敌人显示血条·改 - By芙蕾娅
#    对应横板战斗版本
#------------------------------------------------------------------------------
#  ★ - 新增  ☆ - 修改  ■ - 删除 ● - 无变更
#==============================================================================
module Freya
  # 隐藏HP的文本
  HideGaugeText = "Hide_Gauge"
  # 血条颜色
  EnemyHPGaugeColor1 = Color.new(255,255,0)
  EnemyHPGaugeColor2 = Color.new(255,66,0)
end
#==============================================================================
# ■ Sprite_Battler_HP
#------------------------------------------------------------------------------
#  显示战斗者的生命在战斗者的精灵下面。
#==============================================================================
class Sprite_Battler_HP < Sprite
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  def initialize(viewport,battler)
    super(viewport)
    return if battler.nil?
    @battler = battler
    @last_hp = 0
    create_bitmap
    update
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    self.bitmap.dispose
    super
  end
  #--------------------------------------------------------------------------
  # ● 生成位图
  #--------------------------------------------------------------------------
    def create_bitmap
    @last_hp = @battler.hp
    bw = 96
    bh = 24
    self.bitmap = Bitmap.new(bw, bh)
    self.bitmap.fill_rect(0, 0, bw, 6, Color.new(32,32,64))
    if Freya::Gauge_Type.nil? or Freya::Gauge_Type == 0
      hp = ((bw) * @battler.hp_rate).to_i
      self.bitmap.gradient_fill_rect(0, 0, hp, 6, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
    elsif Freya::Gauge_Type == 1
      hp = ((width - 2) * @battler.hp_rate).to_i
      self.bitmap.gradient_fill_rect(1, 1, hp, 6 - 2, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
    elsif Freya::Gauge_Type == 2
      hp = ((width) * @battler.hp_rate).to_i
      self.bitmap.gradient_fill_rect(0, 0, hp / 2, 6, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
      self.bitmap.gradient_fill_rect(hp / 2, 0, hp / 2, 6, Freya::EnemyHPGaugeColor2, Freya::EnemyHPGaugeColor1)
    elsif Freya::Gauge_Type == 3
      hp = ((width - 2) * @battler.hp_rate).to_i
      self.bitmap.gradient_fill_rect(1, 1, hp / 2, 6 - 2, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
      self.bitmap.gradient_fill_rect((hp / 2) + 1, 1, hp / 2, 6 - 2, Freya::EnemyHPGaugeColor2, Freya::EnemyHPGaugeColor1)
    end
    self.bitmap.draw_text(0,0,bw,24,@battler.name)
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    unless self.bitmap.nil?
      self.z = @battler.sv.z + 20
      create_bitmap if @last_hp != @battler.hp
      hide = $data_enemies[@battler.enemy_id].note.include?(Freya::HideGaugeText)
      self.opacity = 0 if @battler.hp == 0 or hide
    end
  end
end

#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
#  显示战斗者的精灵。根据 Game_Battler 类的实例自动变化。
#==============================================================================
class Sprite_Battler < Sprite_Base
  #--------------------------------------------------------------------------
  # ☆ 初始化对象
  #--------------------------------------------------------------------------
  alias initialize_freya_enemy_hp initialize
  def initialize(viewport, battler = nil)
    initialize_freya_enemy_hp(viewport, battler)
    if @battler.is_a?(Game_Enemy)
      @hp_gauge = Sprite_Battler_HP.new(viewport, battler)
    end
  end
  #--------------------------------------------------------------------------
  # ☆ 释放
  #--------------------------------------------------------------------------
  alias dispose_freya_enemy_hp dispose
  def dispose
    dispose_freya_enemy_hp
    unless @hp_gauge.nil?
      @hp_gauge.dispose
    end
  end
  #--------------------------------------------------------------------------
  # ☆ 更新画面
  #--------------------------------------------------------------------------
  alias update_freya_enemy_hp update
  def update
    update_freya_enemy_hp
    @hp_gauge.update unless @hp_gauge.nil?
  end
  alias update_freya_position update_position
  def update_position
    update_freya_position
    @hp_gauge.x = self.x - 48 unless @hp_gauge.nil?
    @hp_gauge.y = self.y unless @hp_gauge.nil?
  end
end[/pre]
回复

使用道具 举报

梦石
0
星屑
6891
在线时间
7027 小时
注册时间
2013-11-2
回帖
1263

开拓者剧作品鉴家

发表于 2016-12-22 00:55:08 | 显示全部楼层
本论坛的代码框是
  1. [pre lang="ruby"] [/pre]
复制代码
,已协助编辑。

27和28行之间加上 self.opacity = 0
73行换成 if @battler.hp == 0 || hide; self.opacity = 0 else self.opacity = 255 end

原理很简单。让血条本来就隐藏,判定是活跃才出现。(原本是血条本来显示,刷新时判定了隐藏才消失,但是可能因为某些因素刷新没成功)

点评

... 新人,本身就不太懂脚本事,只会做事件 刚来提问的时候甚至连血条是要增加了脚本才有显示的都不太清楚啊 所以提问的时候提供的信息才不全啊..   发表于 2016-12-23 00:19
用了啥脚本啥都不提供,还要问了才说,问一下说一点。告诉你吧,下一次的版规增修你这种帖是要直接被删的啊。  发表于 2016-12-23 00:14
还有就是 乱凑一堆脚本出问题你还是去找作者好了。  发表于 2016-12-23 00:13
这叫自作聪明。请去找ruby教程把if else条件分歧学好再来。  发表于 2016-12-23 00:10
不对,他那个 hide 批的是 在敌人备注里添加了 <Hide_Gauge>,并不是指中途加入,总之还是无法实现呢?  发表于 2016-12-23 00:10
回复

使用道具 举报

梦石
0
星屑
7650
在线时间
1162 小时
注册时间
2016-9-10
回帖
145

开拓者

 楼主| 发表于 2016-12-22 01:14:02 | 显示全部楼层
@RaidenInfinity
谢谢版主协助编辑
不过试了你提供的方法,还是显示血条,没能隐藏...
回复

使用道具 举报

梦石
1
星屑
22083
在线时间
4885 小时
注册时间
2014-12-22
回帖
1509

开拓者

发表于 2016-12-22 01:58:09 | 显示全部楼层
lz你给的脚本是“#    对应横板战斗版本”,所以你是用了横板战斗脚本吗?
如果没用的话,那你最好换一个血条脚本(这位作者的对应默认战斗的血条脚本:https://rpg.blue/forum.php?mod=viewthread&tid=252003)
如果用了的话,可能血条脚本需要放在横板脚本的下面?不过我没有用过横板不懂囧。
回复

使用道具 举报

梦石
0
星屑
14802
在线时间
1014 小时
注册时间
2014-10-24
回帖
325
发表于 2016-12-22 10:18:35 | 显示全部楼层
诶··不能事件增加么?判断血量触发事件
回复

使用道具 举报

梦石
0
星屑
7650
在线时间
1162 小时
注册时间
2016-9-10
回帖
145

开拓者

 楼主| 发表于 2016-12-22 19:47:57 | 显示全部楼层
@shencao
是横版战斗脚本吖
回复

使用道具 举报

梦石
0
星屑
7650
在线时间
1162 小时
注册时间
2016-9-10
回帖
145

开拓者

 楼主| 发表于 2016-12-22 19:49:17 | 显示全部楼层
@雾影药师
现在就是用事件,半途加入的敌人在刚切入战斗的时候就直接显示血条了
回复

使用道具 举报

梦石
0
星屑
7650
在线时间
1162 小时
注册时间
2016-9-10
回帖
145

开拓者

 楼主| 发表于 2016-12-23 00:34:42 | 显示全部楼层
本帖最后由 devil033 于 2016-12-23 00:38 编辑

@RaidenInfinity
版本,我觉得现在用原有脚本或者是你提供的方法,不能实现的原因是
脚本中定义的hide 和RMVA中的 “中途出现” 所定义的隐藏是不一样的
所以语句  if @battler.hp == 0 || hide 只能使血量为0的怪的血条隐藏,而不能使“中途出现” 的怪的血条隐藏

点评

终于可以了,把hide 改成 @battler.hidden? 用你提供的方法有效,原脚本还是无效,而且确实问号很重要,十分感谢,谢谢版主  发表于 2016-12-23 00:52
问号非常重要。  发表于 2016-12-23 00:44
报错了,好像提示 没有 定义 hidden  发表于 2016-12-23 00:42
hide -> @battler.hidden?  发表于 2016-12-23 00:38
回复

使用道具 举报

梦石
0
星屑
7650
在线时间
1162 小时
注册时间
2016-9-10
回帖
145

开拓者

 楼主| 发表于 2016-12-23 00:46:00 | 显示全部楼层
@RaidenInfinity
报错了,好像提示没有 定义 hidden

我能想到一个办法
就是用原有的脚本,然后我在把 需要中途出现的敌人 备注里面 添加 <Hide_Gauge> 把它的血条隐藏
然后等召唤他出来的时候,再用 事件中的脚本把 <Hide_Gauge> 这个属性去掉
这办法可行吗?用什么脚本 可以把敌人的 <Hide_Gauge> 这个属性去掉?
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部