Project1

标题: 【VA】LZSB系列第五蛋·敌人AI系统v0.04 [打印本页]

作者: 阿尔西斯的马甲    时间: 2012-1-29 20:18
标题: 【VA】LZSB系列第五蛋·敌人AI系统v0.04
本帖最后由 阿尔西斯的马甲 于 2012-1-30 14:33 编辑

LZSB系列第五蛋是一个敌人AI系统的万年大坑

灰常的坑爹。需要慢慢修补坑爹点才能真正变成完整系统。

所以版本号暂定为0.01

别急着看脚本

先了解一下这脚本的坑爹点

坑爹点1:

完全就是一不完善的东西我就急着发出来了,这个AI正如我,伟大的LZ的智商一样,是SB级的(部分解决)

坑爹点2:

为什么加了apply_guard还是无法判断防御?

  1. =begin
  2. 0.01 to 0.02
  3. 史莱姆发动狂战士咆哮的时机把握得更准了。
  4. 0.02 to 0.03
  5. 敌人懂得通过target_index确定杀最小血玩家的战略
  6. 0.03 to 0.04
  7. 计算公式推倒重做
  8. =end
  9. def mo(a, b)
  10.   a.to_i-(a.to_i/b.to_i*b.to_i)#去模的小函数。。。我不太了解Ruby的Math库
  11. end
  12. class Game_Action
  13.   def ojt=(ojt)#用ojt接口完成更改当前行动obj的工作
  14.     @item.object=ojt
  15.   end
  16.   def ojt
  17.     @item.object
  18.   end
  19. end
  20. class Game_Battler < Game_BattlerBase
  21.   def getdmgval(user, item, withhp=false)
  22.     value = item.damage.eval(user, self, $game_variables)
  23.     value *= item_element_rate(user, item)
  24.     value *= pdr if item.physical?
  25.     value *= mdr if item.magical?
  26.     value *= rec if item.damage.recover?
  27.     value = apply_critical(value) if @result.critical
  28.     value = apply_variance(value, item.damage.variance)
  29.     value = apply_guard(value)
  30.     if withhp==true
  31.       if self.hp!=0
  32.         value = value.to_f/self.hp
  33.         if value>self.hp
  34.           value = 1#一击秒杀
  35.         end
  36.       else
  37.         value = 0#怪物已经死了,再打也没用
  38.       end
  39.     end
  40.     value
  41.   end
  42. end
  43. class Game_Enemy
  44.   alias befai_init initialize
  45.   def initialize(index, enemy_id)
  46.     befai_init(index, enemy_id)
  47.     @huihe = 0
  48.   end
  49.   def ai_action
  50.     @huihe += 1
  51.     return false if hidden?
  52.     return false if @actions[0].forcing
  53.     case @enemy_id
  54.     when 1
  55.       $pxguaqi=false if $pxguaqi==nil
  56.       $yjpxhuihe=0 if $yjpxhuihe==nil
  57.       $paoxiao=false
  58.       if self.tp>=25
  59.         if $pxguaqi or (mo(@huihe,5)==1 and @huihe!=$yjpxhuihe)
  60.           @actions[0].ojt=$data_skills[82]
  61.           $yjpxhuihe=@huihe
  62.           $pxguaqi=false
  63.           $paoxiao=true
  64.         end
  65.       else
  66.         $pxguaqi=true
  67.       end
  68.       if $paoxiao==false
  69.         @actions[0].ojt=$data_skills[1]
  70.         a=0
  71.         for i in 0..4
  72.           begin
  73.             dmg = $game_party.battle_members[i].getdmgval(self,@actions[0].ojt,true)
  74.             if ($game_party.battle_members[i].hp>0 and dmg>a)
  75.               a=dmg
  76.               @actions[0].target_index=i
  77.             end
  78.           rescue
  79.           end
  80.         end
  81.       end
  82.     else
  83.       return false
  84.     end
  85.     return true
  86.   end
  87.   alias befai_mact make_actions
  88.   def make_actions
  89.     befai_mact
  90.     ai_action
  91.   end
  92. end
复制代码

作者: Kimu    时间: 2012-1-29 20:22
32行的AI.................除去接口外还剩下几行..........
  1. @actions[0].ojt=$data_skills[82]
复制代码
固定一个技能大丈夫?
作者: 阿尔西斯的马甲    时间: 2012-1-30 12:42
0.04版本已经可以做到计算伤害(用系统默认模式计算)基本摆脱SB智商




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