Project1

标题: 精英怪脚本的后缀怎么读取敌人备注来命名 -[已解决] [打印本页]

作者: [email protected]    时间: 2021-10-26 16:46
标题: 精英怪脚本的后缀怎么读取敌人备注来命名 -[已解决]
本帖最后由 [email protected] 于 2021-10-26 20:55 编辑

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 = 30
  14.   #精英怪属性加成比例(同时也是经验、金钱、掉落率加成比例),1.3代表属性是普通怪的1.3倍
  15.   Tan_enemy_by_num = 1.3
  16.   #不会成为精英的敌人
  17.   NO_BY_ENEMY = [4,5]#表示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_by_enemy_set::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

精英怪后缀如何显示为敌人备注栏文字
作者: alexncf125    时间: 2021-10-26 17:15
本帖最后由 alexncf125 于 2021-10-26 20:55 编辑

第29行
@original_name = @original_name + "(精英)" if @is_by == true
改成
if enemy.note =~ /<精英后缀:(.*)>/
  enemy.note.scan(/<精英后缀:(.*)>/){|matched|
    @original_name = @original_name + matched[0] if @is_by == true
  }
else
  @original_name = @original_name + "(精英)" if @is_by == true
end

应该有更好更简洁的写法, 不过那得等大神来了
作者: [email protected]    时间: 2021-10-26 20:39
alexncf125 发表于 2021-10-26 17:15
第29行
@original_name = @original_name + "(精英)" if @is_by == true
改成

感谢,完美测试,不过有个正则等于好像写反了,再次感谢!




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