Project1

标题: tan12345的精英敌人脚本怎样在游戏中调整精英怪物出现率? [打印本页]

作者: c123r123    时间: 2016-6-4 18:54
标题: tan12345的精英敌人脚本怎样在游戏中调整精英怪物出现率?
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 =0  #喂看这里看这里!!!!!
  14.   #精英怪属性加成比例(同时也是经验、金钱、掉落率加成比例),1.2代表属性是普通怪的1.2倍
  15.   Tan_enemy_by_num = 1.2
  16.   #不会成为精英的敌人
  17.   NO_BY_ENEMY = [2,3]#表示2号和3号敌人不会变成精英,适合设定BOSS
  18. end
  19. class Game_Enemy < Game_Battler
  20.  
  21.   attr_reader   :is_by  # 是否精英
  22.  
  23.   #--------------------------------------------------------------------------
  24.   # ● 精英初始化
  25.   #--------------------------------------------------------------------------
  26.   def init_by_enemy
  27.     @is_by = false
  28.     @is_by = true if rand(100) <= Tan_enemy_by::Tan_enemy_by && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
  29.     @original_name = @original_name + "(精英)" if @is_by == true
  30.     @hp = mhp
  31.     @mp = mmp
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 是否精英
  35.   #--------------------------------------------------------------------------
  36.   def is_by?
  37.     return true if @is_by
  38.     return false
  39.   end
  40.  
  41.   #--------------------------------------------------------------------------
  42.   # ● 初始化对象
  43.   #--------------------------------------------------------------------------
  44.   alias tan_by_enemy_initialize initialize
  45.   def initialize(index, enemy_id)
  46.     tan_by_enemy_initialize(index, enemy_id)
  47.     init_by_enemy
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 获取普通能力的基础值
  51.   #--------------------------------------------------------------------------
  52.   alias tan_by_enemy_param_base param_base
  53.   def param_base(param_id)
  54.     v = tan_by_enemy_param_base(param_id)
  55.     v *= Tan_by_enemy_set::Tan_enemy_by_num if is_by?
  56.     return v.to_i
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 获取经验值
  60.   #--------------------------------------------------------------------------
  61.   alias tan_by_enemy_exp exp
  62.   def exp
  63.     v = tan_by_enemy_exp
  64.     v *= Tan_by_enemy_set::Tan_enemy_by_num if is_by?
  65.     return v.to_i
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 获取金钱
  69.   #--------------------------------------------------------------------------
  70.   alias tan_by_enemy_gold gold
  71.   def gold
  72.     v = tan_by_enemy_gold
  73.     v *= Tan_by_enemy_set::Tan_enemy_by_num if is_by?
  74.     return v.to_i
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 获取物品掉率的倍率
  78.   #--------------------------------------------------------------------------
  79.   alias tan_by_enemy_drop_item_rate drop_item_rate
  80.   def drop_item_rate
  81.     v = tan_by_enemy_drop_item_rate
  82.     v *= Tan_by_enemy_set::Tan_enemy_by_num if is_by?
  83.     return v
  84.   end
  85. end

做游戏的时候想分一个普通模式和困难模式,怪物就要有所加强,用了这个精英敌人脚本,打算困难模式里的怪物全是精英怪,但是怎样让在普通模式里出精英怪的概率为0呢?
作者: VIPArcher    时间: 2016-6-4 19:45
  1. =begin
  2. # 精英敌人,作者:66RPG的tan12345
  3. # 功能:遇敌时,敌人有一定几率(可设定)变成精英,精英怪比普通怪属性有加成(可修改),
  4. #       当然了,精英怪的经验、金钱、掉落率也同样有加成。
  5. #       也可以设定指定的敌人不会变成精英(比如BOSS)
  6. #
  7. # 使用方法:将脚本插入到main上
  8. #
  9. =end

  10. module Tan_by_enemy_set
  11.   #精英怪出现几率,30代表30%
  12.   Easy_enemy_by = 0  #喂看这里看这里!!!!!
  13.   Normal_enemy_by = 100
  14.   SW_enemy_by = 1 # 简单和普通模式切换的开关
  15.   #精英怪属性加成比例(同时也是经验、金钱、掉落率加成比例),1.2代表属性是普通怪的1.2倍
  16.   Tan_enemy_by_num = 1.2
  17.   #不会成为精英的敌人
  18.   NO_BY_ENEMY = [2,3]#表示2号和3号敌人不会变成精英,适合设定BOSS
  19. end
  20. class Game_Enemy < Game_Battler
  21.   include Tan_by_enemy_set
  22.   attr_reader   :is_by  # 是否精英

  23.   #--------------------------------------------------------------------------
  24.   # ● 精英初始化
  25.   #--------------------------------------------------------------------------
  26.   def init_by_enemy
  27.     is_by_mod = $game_switches[SW_enemy_by] ? Normal_enemy_by : Easy_enemy_by
  28.     @is_by = rand(100) <= is_by_mod
  29.     @is_by = false if NO_BY_ENEMY.include?(enemy_id)
  30.     @original_name = @original_name + "(精英)" if @is_by == true
  31.     @hp = mhp
  32.     @mp = mmp
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 是否精英
  36.   #--------------------------------------------------------------------------
  37.   def is_by?
  38.     return true if @is_by
  39.     return false
  40.   end

  41.   #--------------------------------------------------------------------------
  42.   # ● 初始化对象
  43.   #--------------------------------------------------------------------------
  44.   alias tan_by_enemy_initialize initialize
  45.   def initialize(index, enemy_id)
  46.     tan_by_enemy_initialize(index, enemy_id)
  47.     init_by_enemy
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 获取普通能力的基础值
  51.   #--------------------------------------------------------------------------
  52.   alias tan_by_enemy_param_base param_base
  53.   def param_base(param_id)
  54.     v = tan_by_enemy_param_base(param_id)
  55.     v *= Tan_enemy_by_num if is_by?
  56.     return v.to_i
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 获取经验值
  60.   #--------------------------------------------------------------------------
  61.   alias tan_by_enemy_exp exp
  62.   def exp
  63.     v = tan_by_enemy_exp
  64.     v *= Tan_enemy_by_num if is_by?
  65.     return v.to_i
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 获取金钱
  69.   #--------------------------------------------------------------------------
  70.   alias tan_by_enemy_gold gold
  71.   def gold
  72.     v = tan_by_enemy_gold
  73.     v *= Tan_enemy_by_num if is_by?
  74.     return v.to_i
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 获取物品掉率的倍率
  78.   #--------------------------------------------------------------------------
  79.   alias tan_by_enemy_drop_item_rate drop_item_rate
  80.   def drop_item_rate
  81.     v = tan_by_enemy_drop_item_rate
  82.     v *= Tan_enemy_by_num if is_by?
  83.     return v
  84.   end
  85. end
复制代码
瞎改,未测试。1号开关控制难度
作者: c123r123    时间: 2016-6-5 09:13
VIPArcher 发表于 2016-6-4 19:45
瞎改,未测试。1号开关控制难度

谢版主,没什么问题。




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