Project1

标题: 再新增两个状态(已经解决) [打印本页]

作者: fjm    时间: 2017-4-15 10:23
标题: 再新增两个状态(已经解决)
本帖最后由 fjm 于 2017-4-15 13:45 编辑

我依样画葫芦,自己尝试新增两个状态,弄了半个多小时,结果老是报错,只能又来请教了

想再增加两个后缀,一个是(将军) 出现率10% ,HP2倍,其他属性1.4倍,掉落4倍,经验4倍,金钱4倍
一个是(战神) 出现率10% ,HP2倍,其他属性1.5倍,掉落5倍,经验5倍,金钱5倍

RUBY 代码复制
  1. =begin
  2. # 精英敌人,作者:66RPG的tan12345
  3. # 功能:遇敌时,敌人有一定几率(可设定)变成精英,精英怪比普通怪属性有加成(可修改),
  4. #       当然了,精英怪的经验、金钱、掉落率也同样有加成。
  5. #       也可以设定指定的敌人不会变成精英(比如BOSS)
  6. #
  7. # 使用方法:将脚本插入到main上
  8. #
  9. =end
  10.  
  11. module Tan_by_enemy_set
  12.   #精英怪出现几率,30代表30%
  13.   Tan_enemy_by = 20
  14.   #Tan_enemy_by_num = 2 2倍属性
  15. #~   Tan_enemy_by_egold = 3 3倍金钱
  16. #~   Tan_enemy_by_eexp = 3 3倍经验
  17. #~   Tan_enemy_by_edrop = 3 3倍掉落率
  18.   Tan_enemy_by_emhp = 2
  19.   Tan_enemy_by_num = 1.1
  20.   Tan_enemy_by_egold = 2
  21.   Tan_enemy_by_eexp = 2
  22.   Tan_enemy_by_edrop = 2
  23.   #不会成为精英的敌人
  24.   NO_BY_ENEMY = [2,3]#表示2号和3号敌人不会变成精英,适合设定BOSS
  25. end
  26. class Game_Enemy < Game_Battler
  27.  
  28.   attr_reader   :is_by  # 是否精英
  29.  
  30.   #--------------------------------------------------------------------------
  31.   # ● 精英初始化
  32.   #--------------------------------------------------------------------------
  33.   def init_by_enemy
  34.     @is_by = false
  35.     @is_by = true if rand(100) <= Tan_by_enemy_set::Tan_enemy_by && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
  36.     @original_name = @original_name + "(精英)" if @is_by == true
  37.     @hp = mhp
  38.     @mp = mmp
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 是否精英
  42.   #--------------------------------------------------------------------------
  43.   def is_by?
  44.     return true if @is_by
  45.     return false
  46.   end
  47.  
  48.   #--------------------------------------------------------------------------
  49.   # ● 初始化对象
  50.   #--------------------------------------------------------------------------
  51.   alias tan_by_enemy_initialize initialize
  52.   def initialize(index, enemy_id)
  53.     tan_by_enemy_initialize(index, enemy_id)
  54.     init_by_enemy
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 获取普通能力的基础值
  58.   #--------------------------------------------------------------------------
  59.   alias tan_by_enemy_param_base param_base
  60.   def param_base(param_id)
  61.     v = tan_by_enemy_param_base(param_id)
  62.     v *= Tan_by_enemy_set::Tan_enemy_by_num if is_by?
  63.     return v.to_i
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 获取经验值
  67.   #--------------------------------------------------------------------------
  68.   alias tan_by_enemy_exp exp
  69.   def exp
  70.     v = tan_by_enemy_exp
  71.     v *= Tan_by_enemy_set::Tan_enemy_by_eexp if is_by?
  72.     return v.to_i
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 获取hp
  76.   #--------------------------------------------------------------------------
  77.   alias tan_by_enemy_mhp mhp
  78.   def mhp
  79.     v = tan_by_enemy_mhp
  80.     v *= Tan_by_enemy_set::Tan_enemy_by_emhp if is_by?
  81.     return v.to_i
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 获取金钱
  85.   #--------------------------------------------------------------------------
  86.   alias tan_by_enemy_gold gold
  87.   def gold
  88.     v = tan_by_enemy_gold
  89.     v *= Tan_by_enemy_set::Tan_enemy_by_egold if is_by?
  90.     return v.to_i
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 获取物品掉率的倍率
  94.   #--------------------------------------------------------------------------
  95.   alias tan_by_enemy_drop_item_rate drop_item_rate
  96.   def drop_item_rate
  97.     v = tan_by_enemy_drop_item_rate
  98.     v *= Tan_by_enemy_set::Tan_enemy_by_edrop if is_by?
  99.     return v
  100.   end
  101. end
  102.  
  103. module Tan_by_enemy_set
  104.   Boss_by = 15 #Boss出现几率
  105.   Boss_hp = 2
  106.   Boss_num = 1.2
  107.   Boss_gold = 2.5
  108.   Boss_exp = 2.5
  109.   Boss_drop = 2.5
  110.   NO_BOSS = [2,3]#不会成为BOSS的敌人
  111.   BB_by = 10 #Boss+精英出现几率
  112.   BB_hp = 2
  113.   BB_num = 1.3
  114.   BB_gold = 3
  115.   BB_exp = 3
  116.   BB_drop = 3
  117. end
  118. class Game_Enemy < Game_Battler
  119.   attr_reader   :is_by_boss  # 是否boss
  120.   attr_reader   :is_bb  # 是否boss+精英
  121.   def init_by_enemy
  122.         @is_by = false
  123.         @is_by_boss = false
  124.         @is_bb = false
  125.         @is_by = true if rand(100) <= Tan_by_enemy_set::Tan_enemy_by && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
  126.         @is_by_boss = true if rand(100)+100 <= Tan_by_enemy_set::Boss_by+100 && !Tan_by_enemy_set::NO_BOSS.include?(enemy_id)
  127.         @is_bb = true if rand(100)+200 <= Tan_by_enemy_set::BB_by+200 && !Tan_by_enemy_set::NO_BOSS.include?(enemy_id) && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
  128.         @is_by = false if @is_by_boss == true || @is_bb == true
  129.         @is_by_boss = false if @is_by == true || @is_bb == true
  130.         @is_bb = false if @is_by == true || @is_by_boss == true
  131.         @original_name = @original_name + "(精英)" if @is_by == true
  132.         @original_name = @original_name + "(boss)" if @is_by_boss == true
  133.         @original_name = @original_name + "(boss+精英)" if @is_bb == true
  134.         @hp = mhp
  135.         @mp = mmp
  136.   end
  137.   def is_by_boss?
  138.         return true if @is_by_boss
  139.         return false
  140.   end
  141.   def is_bb?
  142.         return true if @is_bb
  143.         return false
  144.   end
  145.       alias boss_param_base param_base
  146.       def param_base(param_id)
  147.         v = boss_param_base(param_id)
  148.         v *= Tan_by_enemy_set::Boss_num if is_by_boss?
  149.         v *= Tan_by_enemy_set::BB_num if is_bb?
  150.         return v.to_i
  151.       end
  152.       alias boss_exp exp
  153.       def exp
  154.         v = boss_exp
  155.         v *= Tan_by_enemy_set::Boss_exp if is_by_boss?
  156.         v *= Tan_by_enemy_set::BB_exp if is_bb?
  157.         return v.to_i
  158.       end
  159.       alias boss_mhp mhp
  160.       def mhp
  161.         v = boss_mhp
  162.         v *= Tan_by_enemy_set::Boss_hp if is_by_boss?
  163.         v *= Tan_by_enemy_set::BB_hp if is_bb?
  164.         return v.to_i
  165.       end
  166.       alias boss_gold gold
  167.       def gold
  168.         v = boss_gold
  169.         v *= Tan_by_enemy_set::Boss_gold if is_by_boss?
  170.         v *= Tan_by_enemy_set::BB_gold if is_bb?
  171.         return v.to_i
  172.       end
  173.       alias boss_drop_item_rate drop_item_rate
  174.       def drop_item_rate
  175.         v = boss_drop_item_rate
  176.         v *= Tan_by_enemy_set::Boss_drop if is_by_boss?
  177.         v *= Tan_by_enemy_set::BB_drop if is_bb?
  178.         return v
  179.       end
  180. end

作者: sq333333    时间: 2017-4-15 12:21
属性上增加数值没什么意思啊,精英怪应该有类似狂暴的效果,比如横版里的移动加快带有残影效果,技能变化等等,直接设定成一个新的敌人多方便呀,遇敌率设置下。
作者: 魔法丶小肉包    时间: 2017-4-15 13:34
本帖最后由 魔法丶小肉包 于 2017-4-15 13:36 编辑

作为插件在下方新开一栏使用
RUBY 代码复制
  1. module Tan_by_enemy_set
  2.   Bossj_by = 10 #将军出现几率
  3.   Bossj_hp = 2
  4.   Bossj_num = 1.4
  5.   Bossj_gold = 4
  6.   Bossj_exp = 4
  7.   Bossj_drop = 4
  8.   NO_BOSSj = [2,3]#不会成为将军的敌人
  9.   Bossz_by = 10 #战神出现几率
  10.   Bossz_hp = 2
  11.   Bossz_num = 1.5
  12.   Bossz_gold = 5
  13.   Bossz_exp = 5
  14.   Bossz_drop = 5
  15.   NO_BOSSz = [2,3]#不会成为战神的敌人
  16. end
  17. class Game_Enemy < Game_Battler
  18.       attr_reader   :is_by_boss_j  # 是否将军
  19.       attr_reader   :is_by_boss_z  # 是否战神
  20.      def init_by_enemy
  21.             @is_by = false
  22.             @is_by_boss = false
  23.             @is_bb = false
  24.             @is_by_boss_j = false
  25.             @is_by_boss_z = false
  26.             @is_by = true if rand(100) <= Tan_by_enemy_set::Tan_enemy_by && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
  27.             @is_by_boss = true if rand(100)+100 <= Tan_by_enemy_set::Boss_by+100 && !Tan_by_enemy_set::NO_BOSS.include?(enemy_id)
  28.             @is_bb = true if rand(100)+200 <= Tan_by_enemy_set::BB_by+200 && !Tan_by_enemy_set::NO_BOSS.include?(enemy_id) && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
  29.             @is_by_boss_j = true if rand(100)+300 <= Tan_by_enemy_set::Bossj_by+300 && !Tan_by_enemy_set::NO_BOSSj.include?(enemy_id)
  30.             @is_by_boss_z = true if rand(100)+400 <= Tan_by_enemy_set::Bossz_by+400 && !Tan_by_enemy_set::NO_BOSSz.include?(enemy_id)
  31.             @is_by = false if @is_by_boss == true || @is_bb == true || @is_by_boss_j == true || @is_by_boss_z == true
  32.             @is_by_boss = false if @is_by == true || @is_bb == true || @is_by_boss_j == true || @is_by_boss_z == true
  33.             @is_bb = false if @is_by == true || @is_by_boss == true || @is_by_boss_j == true || @is_by_boss_z == true
  34.             @is_by_boss_j = false if @is_by == true || @is_by_boss == true || @is_bb == true || @is_by_boss_z == true
  35.             @is_by_boss_z = false if @is_by == true || @is_by_boss == true || @is_bb == true || @is_by_boss_j == true
  36.             @original_name = @original_name + "(精英)" if @is_by == true
  37.             @original_name = @original_name + "(boss)" if @is_by_boss == true
  38.             @original_name = @original_name + "(boss+精英)" if @is_bb == true
  39.             @original_name = @original_name + "(将军)" if @is_by_boss_j == true
  40.             @original_name = @original_name + "(战神)" if @is_by_boss_z == true
  41.             @hp = mhp
  42.             @mp = mmp
  43.       end
  44.       def is_by_boss_j?
  45.             return true if @is_by_boss_j
  46.             return false
  47.           end
  48.       def is_by_boss_z?
  49.             return true if @is_by_boss_z
  50.             return false
  51.       end
  52.           alias bossj_param_base param_base
  53.           def param_base(param_id)
  54.             v = bossj_param_base(param_id)
  55.             v *= Tan_by_enemy_set::Bossj_num if is_by_boss_j?
  56.             v *= Tan_by_enemy_set::Bossz_num if is_by_boss_z?
  57.             return v.to_i
  58.           end
  59.           alias bossj_exp exp
  60.           def exp
  61.             v = bossj_exp
  62.             v *= Tan_by_enemy_set::Bossj_exp if is_by_boss_j?
  63.             v *= Tan_by_enemy_set::Bossz_exp if is_by_boss_z?
  64.             return v.to_i
  65.           end
  66.           alias bossj_mhp mhp
  67.           def mhp
  68.             v = bossj_mhp
  69.             v *= Tan_by_enemy_set::Bossj_hp if is_by_boss_j?
  70.             v *= Tan_by_enemy_set::Bossz_hp if is_by_boss_z?
  71.             return v.to_i
  72.           end
  73.           alias bossj_gold gold
  74.           def gold
  75.             v = bossj_gold
  76.             v *= Tan_by_enemy_set::Bossj_gold if is_by_boss_j?
  77.             v *= Tan_by_enemy_set::Bossz_gold if is_by_boss_z?
  78.             return v.to_i
  79.           end
  80.           alias bossj_drop_item_rate drop_item_rate
  81.           def drop_item_rate
  82.             v = bossj_drop_item_rate
  83.             v *= Tan_by_enemy_set::Bossj_drop if is_by_boss_j?
  84.             v *= Tan_by_enemy_set::Bossz_drop if is_by_boss_z?
  85.             return v
  86.           end
  87.     end





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