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

Project1

 找回密码
 注册会员
搜索
查看: 1445|回复: 2
打印 上一主题 下一主题

[已经解决] 战斗判断最少血量 但是不会进行刷新重新判断的问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
596
在线时间
797 小时
注册时间
2014-7-1
帖子
578

开拓者

跳转到指定楼层
1
发表于 2016-4-18 22:20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
@cinderelmini
RUBY 代码复制
  1. party = $game_party.actors.dup
  2.         min_hp_actor = party.sort!{|a, b| a.hp <=> b.hp}.shift
  3.         p $min_hp_actor.name

这段代码我用在战斗中是这样的
RUBY 代码复制
  1. i
  2. if @active_battler.is_a?(Game_Actor) && @skill.id == 67
  3.    next if @active_battler.dead?
  4.     actor = $game_party.actors.dup
  5.     min_hp_actor = @actor.sort!{|a, b| a.hp <=> b.hp}.shift
  6.     s_tem = @active_battler.dex * 90 / 100 + rand(@active_battler.sp * 30 / 100)
  7.     min_hp_actor.hp += s_tem
  8.     min_hp_actor.damage = -s_tem
  9.     min_hp_actor.damage_pop = true
  10.     min_hp_actor.animation_id=15
  11.   end

技能对象是地方单体  我在战斗中定义新附加效果给我军血量最低的角色恢复3次效果
出现问题:如何判断最低血量那个角色挂了后  在继续重新判断生存中的角色中最低HP的对象

                 除非挂了的那个重新复活在继续重新判断

以往都是用 if actor.exist? 来判断存在的角色 但是如果用在上面 没效果。。!
    min_hp_actor.hp += s_tem   if min_hp_actor.hp>0
    min_hp_actor.damage = -s_tem   if min_hp_actor.hp>0
这种办法一旦最低角色挂了 就会找不到对象了!不会刷新重新来判断!

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2016-4-18 22:27:46 | 只看该作者
本帖最后由 cinderelmini 于 2016-4-18 22:49 编辑
  1.   if @active_battler.is_a?(Game_Actor) && @skill.id == 67
  2.     temp_party = $game_party.actors.sort{|a, b| a.hp <=> b.hp}
  3.     min_hp_actor = temp_party.shift
  4.     while !min_hp_actor.exist?
  5.       min_hp_actor = temp_party.shift
  6.     end
  7.     #p $min_hp_actor.name   
  8.     s_tem = @active_battler.dex * 90 / 100 + rand(@active_battler.sp * 30 / 100)
  9.     min_hp_actor.hp += s_tem
  10.     min_hp_actor.damage = -s_tem
  11.     min_hp_actor.damage_pop = true
  12.     min_hp_actor.animation_id=15
  13. end
复制代码
这样试试~

点评

嗯!在没办法就弄个防即死的效果出来 目前测试没啥问题 以后在看  发表于 2016-4-18 23:07
嘛~团灭的话也不可能有人能行动进而触发这里,只要队伍里有一个人就没问题~  发表于 2016-4-18 23:06
最后一个的话 我可以弄个存在人数判定>=2来决定此效果触发条件  发表于 2016-4-18 23:00
啊~也不是死循环,总之shift到最后一个之后就会弹错了~  发表于 2016-4-18 22:55
团灭的时候会死循环注意~  发表于 2016-4-18 22:54

评分

参与人数 2星屑 +260 收起 理由
RyanBern + 220 认可答案
jiushiainilip19 + 40 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
596
在线时间
797 小时
注册时间
2014-7-1
帖子
578

开拓者

3
 楼主| 发表于 2016-4-18 22:40:34 | 只看该作者
本帖最后由 jiushiainilip19 于 2016-4-18 22:55 编辑
cinderelmini 发表于 2016-4-18 22:27
这样试试看~也许会弹,弹了再说吧。。
顺便,乃代码框里第四行和第五行的actor不是同一个→_→ ...

  1. if @active_battler.is_a?(Game_Actor) && @skill.id == 67
  2.     temp_party = $game_party.actors.sort{|a, b| a.hp <=> b.hp}
  3.     min_hp_actor = temp_party.shift
  4.     min_hp_actor = temp_party.shift until min_hp_actor.exist?
  5.     s_tem = @active_battler.dex * 90 / 100 + rand(@active_battler.sp * 30 / 100)
  6.     min_hp_actor.hp += s_tem
  7.     min_hp_actor.damage = -s_tem
  8.     min_hp_actor.damage_pop = true
  9.     min_hp_actor.animation_id=15
  10.   end
复制代码
重复了一个 min_hp_actor = temp_party.shift 居然也变得可以了!不过我还是用你上面难得好些
学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-22 12:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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