Project1

标题: 简易的会成长的敌人系统 [打印本页]

作者: tan12345    时间: 2014-2-20 14:24
标题: 简易的会成长的敌人系统
本帖最后由 tan12345 于 2014-2-22 10:52 编辑

在自己写游戏的时候,发现有时候设定敌人好麻烦,于是自己想了个简单的办法偷懒:
  1. =begin
  2. # 跟随主角成长的敌人,作者:66RPG的tan12345
  3. # 功能:敌人的属性、经验、金钱跟随队伍领队的等级成长
  4. #
  5. # 使用方法:将脚本插入到main上
  6. #           在需要设定成长的敌人备注栏里填写<lv = leader>
  7. #           设定跟随领队成长的敌人只需要在数据库里设定每级各属性成长率即可
  8. #           比如1号敌人在备注栏里填写了<lv = leader>,
  9. #           那么,如果他的物理伤害是1,领队等级10,战斗时,1号敌人的物理伤害就等于1*10
  10. #
  11. =end
  12. module Tan_Enemy_lv_Set
  13.   #敌人的成长等级取决因素
  14.   #0 = 领队等级
  15.   #1 = 队伍平均等级
  16.   #2 = 队伍最高等级
  17.   ENEMY_LV = 1
  18. end
  19. class Game_Enemy < Game_Battler
  20.   attr_accessor :tan_enemy_rate                 # 属性、经验值、金钱比例
  21.   #--------------------------------------------------------------------------
  22.   # ● 初始化对象
  23.   #--------------------------------------------------------------------------
  24.   alias tan_enemy_lv_initialize initialize
  25.   def initialize(index, enemy_id)
  26.     tan_enemy_lv_initialize(index, enemy_id)
  27.     @tan_enemy_rate = 1
  28.     if enemy.note =~ /<lv = leader>/
  29.       case Tan_Enemy_lv_Set::ENEMY_LV
  30.       when 0
  31.         @tan_enemy_rate = $game_party.leader.level
  32.       when 1
  33.         @tan_enemy_rate = 0
  34.         $game_party.members.each {|actor|
  35.             @tan_enemy_rate += actor.level
  36.         }
  37.         @tan_enemy_rate /= $game_party.members.size if @tan_enemy_rate != 0
  38.       when 2
  39.         @tan_enemy_rate = $game_party.highest_level
  40.       else
  41.       end
  42.     end
  43.     @hp = mhp
  44.     @mp = mmp
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 获取普通能力的基础值
  48.   #--------------------------------------------------------------------------
  49.   alias tan_enemy_lv_param_base param_base
  50.   def param_base(param_id)
  51.     v = tan_enemy_lv_param_base(param_id)
  52.     v *= @tan_enemy_rate.to_i
  53.     return v.to_i
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 获取经验值
  57.   #--------------------------------------------------------------------------
  58.   alias tan_enemy_lv_exp exp
  59.   def exp
  60.     v = tan_enemy_lv_exp
  61.     v *= @tan_enemy_rate.to_i
  62.     return v.to_i
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取金钱
  66.   #--------------------------------------------------------------------------
  67.   alias tan_enemy_lv_gold gold
  68.   def gold
  69.     v = tan_enemy_lv_gold
  70.     v *= @tan_enemy_rate.to_i
  71.     return v.to_i
  72.   end
  73. end
复制代码
觉得好用的,或者发现BUG的,请回复一下好嘛?
@Sion 代码部分怎么弄成可复制的那种?
作者: czsRwind    时间: 2014-2-20 17:22
楼主辛苦了,好东西,收藏下。有BUG时再通知你。话说这是沙发?
作者: 柍若    时间: 2014-2-20 19:04
创意好棒!boss可以这么设,省去玩家打boss之前猛练级的枯燥【啥
唔…不过建议改成队伍平均等级会更好些?
作者: 仲秋启明    时间: 2014-2-20 21:22
楼主能做随机属性吗?水属性、火属性什么的
作者: 未命名    时间: 2014-2-20 22:06
果然想要又偷懒又用心去做是不可能的。

我觉得还有很多要改进,
最好是泛滥型的敌人用这个脚本,而对有特殊设定的敌人打上记号,让他不受脚本影响而设定。

让我想到了 最终幻想8 的设定,
它的敌人也是随着队伍的等级而改变,但每个敌人都有自己的算法,甚至仔细到技能和战术。

唔,另外,毕竟是电脑计算,难以保证全程不平衡,比如敌人成长超出主角一大截什么的。

要考虑的东西还真多。
作者: SuperMario    时间: 2014-2-21 01:22
直接让主角不能升级不是更省事吗
作者: david_ng223    时间: 2014-2-22 02:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: 柍若    时间: 2014-2-22 10:28

呃,楼主是用这个吗?或者直接写[code ][/code ]就行了(空格去掉…
可是您那种代码是怎么发出来的?还是因为浏览器的不同所以同样发出的代码框也不同……
作者: k47363312    时间: 2015-6-1 12:53
多谢楼主,很好用的脚本。不过我想设置一个怪物hp为100+10*lv 这样的效果,能不能简单修改一下实现呀,我是个脚本盲。。= =
作者: 企鹅达达    时间: 2015-6-1 18:10
k47363312 发表于 2015-6-1 12:53
多谢楼主,很好用的脚本。不过我想设置一个怪物hp为100+10*lv 这样的效果,能不能简单修改一下实现呀,我是 ...
  1. #--------------------------------------------------------------------------
  2.   # ● 获取普通能力的基础值
  3.   #--------------------------------------------------------------------------
  4.   alias tan_enemy_lv_param_base param_base
  5.   def param_base(param_id)
  6.     v = tan_enemy_lv_param_base(param_id)
  7.    # v *= @tan_enemy_rate.to_i
  8.     # return v.to_i
  9.     ##################################
  10.   if param_id ==0
  11.     pa = 100 + 10 * @tan_enemy_rate.to_i
  12.   else
  13.     pa = v * @tan_enemy_rate.to_i
  14.   end
  15.   return pa.to_i
  16.    ##################################
  17.   end
复制代码
找到对应位置修改
作者: yl51379    时间: 2015-6-24 11:07
师傅,因为关于敌人的数据我已经测试弄完了,是根据实际对应的等级设定的。

不知道有没有办法可以让  敌人成长的判断改成  

当我方的等级在XX级以上时 敌人才会成长  没有超过这个等级则不会成长?

感觉这样 灵活性更大一点 可以更好的掌控敌人的难度
作者: 1243852    时间: 2016-2-12 16:23
敌人的能力只不过是 10 而已,,改成领队平均等级以后,  好恐怖。。 99级 全副武装的四个人,都直接被敌人秒




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