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

Project1

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

[已经过期] 请大神看看这个战斗系统中的两个关于条件分歧的BUG

[复制链接]

Lv2.观梦者

梦石
0
星屑
878
在线时间
576 小时
注册时间
2010-6-26
帖子
793
跳转到指定楼层
1
发表于 2017-7-31 08:33:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 sq333333 于 2017-7-31 08:49 编辑

请大神看看下面这两段脚本是哪里有问题吗?
一.根据能力值做出分歧:
BUG现象:当kind是2(mhp),4(hp),6(tp),12(luk)时,分歧无效(不管该能力值是多少都判断为同一个结果)。
  #--------------------------------------------------------------------------
  # ● 根据能力值分歧 data = [类别, 数值, 区别]
  #--------------------------------------------------------------------------
  def comparison_parameter(data)
    return true if data[0][0] == 0
    kind = data[0]
    num = data[1]
    select = data[2]
    case kind
    when  1 ; par = level
    when  2 ; par = mhp
    when  3 ; par = mmp
    when  4 ; par = hp
    when  5 ; par = mp
    when  6 ; par = tp
    when  7 ; par = atk
    when  8 ; par = self.def
    when  9 ; par = mat
    when 10 ; par = mdf
    when 11 ; par = agi
    when 12 ; par = luk
    end
    if num < 0
      case kind
      when  4 ; num = mhp * num / 100
      when  5 ; num = mmp * num / 100
      when  6 ; num = max_tp * num / 100
      end
      num = num.abs
    end  
    case select
    when  0 ; return par == num
    when  1 ; return par < num
    when  2 ; return par > num
    end
  end


  #--------------------------------------------------------------------------
  # ● 条件分歧 (能力值)
  #--------------------------------------------------------------------------
  def nece_5
    targets = N03.get_targets(@action_data[1], @battler)
    return if targets == []
    member_num = @action_data[5]
    member_num = targets.size if @action_data[5] == 0 && targets.size > 1
    hit_count = 0
    for target in targets
      hit_count += 1 if target.comparison_parameter([@action_data[2],@action_data[3],@action_data[4]])
    end
    judgment = hit_count >= member_num
    action_diverging(judgment, @action_data[6])
  end  

二:根据技能做出分歧:
BUG现象:这个分歧具体是根据什么做分歧条件的?
  #--------------------------------------------------------------------------
  # ● 条件分歧 (技能)
  #--------------------------------------------------------------------------

  def nece_4
    targets = N03.get_targets(@action_data[1], @battler)
    return if targets == []
    member_num = @action_data[4]
    member_num = targets.size if @action_data[4] == 0 && targets.size > 1
    hit_count = 0
    miss_count = 0
    for target in targets
      hit_count += 1 if target.skill_learn?($data_skills[@action_data[2]]) && target.skill_conditions_met?($data_skills[@action_data[2]])
      miss_count += 1 if !target.skill_learn?($data_skills[@action_data[2]]) or !target.skill_conditions_met?($data_skills[@action_data[2]])
    end
    case @action_data[3]
    when 0 ; judgment = hit_count >= member_num
    when 1 ; judgment = miss_count >= member_num
    end
    action_diverging(judgment, @action_data[5])
  end  



Lv3.寻梦者

梦石
0
星屑
1379
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

2
发表于 2017-7-31 08:48:02 | 只看该作者
其实我并不能看懂问题描述但是我能看出这是sideview系统。。所以出bug检查脚本冲突和某些设置是不是为空
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
878
在线时间
576 小时
注册时间
2010-6-26
帖子
793
3
 楼主| 发表于 2017-7-31 08:55:58 | 只看该作者
本帖最后由 sq333333 于 2017-7-31 08:57 编辑
铅笔描绘的思念 发表于 2017-7-31 08:48
其实我并不能看懂问题描述但是我能看出这是sideview系统。。所以出bug检查脚本冲突和某些设置是不 ...


是这样,第一个我试过用其它的能力值做分歧时是有效的。比如用LV做分歧:当LV在10以下时释放某个技能是动作A,在LV10以上时释放这个技能就可以变化为动作B;
然而那些BUG能力值:不管是否达到设定的数值都只会做出动作A或者只做出动作B......(没有起到分歧判断的效果)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 14:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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