查看: 2128|回复: 5

[已经解决] 再新增两个状态(已经解决)

[复制链接]
梦石
0
星屑
2245
在线时间
1015 小时
注册时间
2015-10-17
回帖
1077
发表于 2017-4-15 10:23:49 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 fjm 于 2017-4-15 13:45 编辑

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

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

[pre lang="ruby"]=begin
# 精英敌人,作者:66RPG的tan12345
# 功能:遇敌时,敌人有一定几率(可设定)变成精英,精英怪比普通怪属性有加成(可修改),
#       当然了,精英怪的经验、金钱、掉落率也同样有加成。
#       也可以设定指定的敌人不会变成精英(比如BOSS)
#
# 使用方法:将脚本插入到main上
#
=end

module Tan_by_enemy_set
  #精英怪出现几率,30代表30%
  Tan_enemy_by = 20
  #Tan_enemy_by_num = 2 2倍属性
#~   Tan_enemy_by_egold = 3 3倍金钱
#~   Tan_enemy_by_eexp = 3 3倍经验
#~   Tan_enemy_by_edrop = 3 3倍掉落率
  Tan_enemy_by_emhp = 2
  Tan_enemy_by_num = 1.1
  Tan_enemy_by_egold = 2
  Tan_enemy_by_eexp = 2
  Tan_enemy_by_edrop = 2
  #不会成为精英的敌人
  NO_BY_ENEMY = [2,3]#表示2号和3号敌人不会变成精英,适合设定BOSS
end
class Game_Enemy < Game_Battler

  attr_reader   :is_by  # 是否精英

  #--------------------------------------------------------------------------
  # ● 精英初始化
  #--------------------------------------------------------------------------
  def init_by_enemy
    @is_by = false
    @is_by = true if rand(100) <= Tan_by_enemy_set::Tan_enemy_by && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
    @original_name = @original_name + "(精英)" if @is_by == true
    @hp = mhp
    @mp = mmp
  end
  #--------------------------------------------------------------------------
  # ● 是否精英
  #--------------------------------------------------------------------------
  def is_by?
    return true if @is_by
    return false
  end

  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias tan_by_enemy_initialize initialize
  def initialize(index, enemy_id)
    tan_by_enemy_initialize(index, enemy_id)
    init_by_enemy
  end
  #--------------------------------------------------------------------------
  # ● 获取普通能力的基础值
  #--------------------------------------------------------------------------
  alias tan_by_enemy_param_base param_base
  def param_base(param_id)
    v = tan_by_enemy_param_base(param_id)
    v *= Tan_by_enemy_set::Tan_enemy_by_num if is_by?
    return v.to_i
  end
  #--------------------------------------------------------------------------
  # ● 获取经验值
  #--------------------------------------------------------------------------
  alias tan_by_enemy_exp exp
  def exp
    v = tan_by_enemy_exp
    v *= Tan_by_enemy_set::Tan_enemy_by_eexp if is_by?
    return v.to_i
  end
  #--------------------------------------------------------------------------
  # ● 获取hp
  #--------------------------------------------------------------------------
  alias tan_by_enemy_mhp mhp
  def mhp
    v = tan_by_enemy_mhp
    v *= Tan_by_enemy_set::Tan_enemy_by_emhp if is_by?
    return v.to_i
  end
  #--------------------------------------------------------------------------
  # ● 获取金钱
  #--------------------------------------------------------------------------
  alias tan_by_enemy_gold gold
  def gold
    v = tan_by_enemy_gold
    v *= Tan_by_enemy_set::Tan_enemy_by_egold if is_by?
    return v.to_i
  end
  #--------------------------------------------------------------------------
  # ● 获取物品掉率的倍率
  #--------------------------------------------------------------------------
  alias tan_by_enemy_drop_item_rate drop_item_rate
  def drop_item_rate
    v = tan_by_enemy_drop_item_rate
    v *= Tan_by_enemy_set::Tan_enemy_by_edrop if is_by?
    return v
  end
end

module Tan_by_enemy_set
  Boss_by = 15 #Boss出现几率
  Boss_hp = 2
  Boss_num = 1.2
  Boss_gold = 2.5
  Boss_exp = 2.5
  Boss_drop = 2.5
  NO_BOSS = [2,3]#不会成为BOSS的敌人
  BB_by = 10 #Boss+精英出现几率
  BB_hp = 2
  BB_num = 1.3
  BB_gold = 3
  BB_exp = 3
  BB_drop = 3
end
class Game_Enemy < Game_Battler
  attr_reader   :is_by_boss  # 是否boss
  attr_reader   :is_bb  # 是否boss+精英
  def init_by_enemy
        @is_by = false
        @is_by_boss = false
        @is_bb = false
        @is_by = true if rand(100) <= Tan_by_enemy_set::Tan_enemy_by && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
        @is_by_boss = true if rand(100)+100 <= Tan_by_enemy_set::Boss_by+100 && !Tan_by_enemy_set::NO_BOSS.include?(enemy_id)
        @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)
        @is_by = false if @is_by_boss == true || @is_bb == true
        @is_by_boss = false if @is_by == true || @is_bb == true
        @is_bb = false if @is_by == true || @is_by_boss == true
        @original_name = @original_name + "(精英)" if @is_by == true
        @original_name = @original_name + "(boss)" if @is_by_boss == true
        @original_name = @original_name + "(boss+精英)" if @is_bb == true
        @hp = mhp
        @mp = mmp
  end
  def is_by_boss?
        return true if @is_by_boss
        return false
  end
  def is_bb?
        return true if @is_bb
        return false
  end
      alias boss_param_base param_base
      def param_base(param_id)
        v = boss_param_base(param_id)
        v *= Tan_by_enemy_set::Boss_num if is_by_boss?
        v *= Tan_by_enemy_set::BB_num if is_bb?
        return v.to_i
      end
      alias boss_exp exp
      def exp
        v = boss_exp
        v *= Tan_by_enemy_set::Boss_exp if is_by_boss?
        v *= Tan_by_enemy_set::BB_exp if is_bb?
        return v.to_i
      end
      alias boss_mhp mhp
      def mhp
        v = boss_mhp
        v *= Tan_by_enemy_set::Boss_hp if is_by_boss?
        v *= Tan_by_enemy_set::BB_hp if is_bb?
        return v.to_i
      end
      alias boss_gold gold
      def gold
        v = boss_gold
        v *= Tan_by_enemy_set::Boss_gold if is_by_boss?
        v *= Tan_by_enemy_set::BB_gold if is_bb?
        return v.to_i
      end
      alias boss_drop_item_rate drop_item_rate
      def drop_item_rate
        v = boss_drop_item_rate
        v *= Tan_by_enemy_set::Boss_drop if is_by_boss?
        v *= Tan_by_enemy_set::BB_drop if is_bb?
        return v
      end
end[/pre]
梦石
0
星屑
878
在线时间
576 小时
注册时间
2010-6-26
回帖
709
发表于 2017-4-15 12:21:21 来自手机 | 显示全部楼层
属性上增加数值没什么意思啊,精英怪应该有类似狂暴的效果,比如横版里的移动加快带有残影效果,技能变化等等,直接设定成一个新的敌人多方便呀,遇敌率设置下。

点评

fjm
我感觉这样随机更有意思点  发表于 2017-4-15 12:52
回复

使用道具 举报

梦石
0
星屑
6375
在线时间
1473 小时
注册时间
2015-7-25
回帖
609

极短25参与开拓者

发表于 2017-4-15 13:34:18 | 显示全部楼层
本帖最后由 魔法丶小肉包 于 2017-4-15 13:36 编辑

作为插件在下方新开一栏使用
[pre lang="ruby"]module Tan_by_enemy_set
  Bossj_by = 10 #将军出现几率
  Bossj_hp = 2
  Bossj_num = 1.4
  Bossj_gold = 4
  Bossj_exp = 4
  Bossj_drop = 4
  NO_BOSSj = [2,3]#不会成为将军的敌人
  Bossz_by = 10 #战神出现几率
  Bossz_hp = 2
  Bossz_num = 1.5
  Bossz_gold = 5
  Bossz_exp = 5
  Bossz_drop = 5
  NO_BOSSz = [2,3]#不会成为战神的敌人
end
class Game_Enemy < Game_Battler
      attr_reader   :is_by_boss_j  # 是否将军
      attr_reader   :is_by_boss_z  # 是否战神
     def init_by_enemy
            @is_by = false
            @is_by_boss = false
            @is_bb = false
            @is_by_boss_j = false
            @is_by_boss_z = false
            @is_by = true if rand(100) <= Tan_by_enemy_set::Tan_enemy_by && !Tan_by_enemy_set::NO_BY_ENEMY.include?(enemy_id)
            @is_by_boss = true if rand(100)+100 <= Tan_by_enemy_set::Boss_by+100 && !Tan_by_enemy_set::NO_BOSS.include?(enemy_id)
            @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)
            @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)
            @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)
            @is_by = false if @is_by_boss == true || @is_bb == true || @is_by_boss_j == true || @is_by_boss_z == true
            @is_by_boss = false if @is_by == true || @is_bb == true || @is_by_boss_j == true || @is_by_boss_z == true
            @is_bb = false if @is_by == true || @is_by_boss == true || @is_by_boss_j == true || @is_by_boss_z == true
            @is_by_boss_j = false if @is_by == true || @is_by_boss == true || @is_bb == true || @is_by_boss_z == true
            @is_by_boss_z = false if @is_by == true || @is_by_boss == true || @is_bb == true || @is_by_boss_j == true
            @original_name = @original_name + "(精英)" if @is_by == true
            @original_name = @original_name + "(boss)" if @is_by_boss == true
            @original_name = @original_name + "(boss+精英)" if @is_bb == true
            @original_name = @original_name + "(将军)" if @is_by_boss_j == true
            @original_name = @original_name + "(战神)" if @is_by_boss_z == true
            @hp = mhp
            @mp = mmp
      end
      def is_by_boss_j?
            return true if @is_by_boss_j
            return false
          end
      def is_by_boss_z?
            return true if @is_by_boss_z
            return false
      end
          alias bossj_param_base param_base
          def param_base(param_id)
            v = bossj_param_base(param_id)
            v *= Tan_by_enemy_set::Bossj_num if is_by_boss_j?
            v *= Tan_by_enemy_set::Bossz_num if is_by_boss_z?
            return v.to_i
          end
          alias bossj_exp exp
          def exp
            v = bossj_exp
            v *= Tan_by_enemy_set::Bossj_exp if is_by_boss_j?
            v *= Tan_by_enemy_set::Bossz_exp if is_by_boss_z?
            return v.to_i
          end
          alias bossj_mhp mhp
          def mhp
            v = bossj_mhp
            v *= Tan_by_enemy_set::Bossj_hp if is_by_boss_j?
            v *= Tan_by_enemy_set::Bossz_hp if is_by_boss_z?
            return v.to_i
          end
          alias bossj_gold gold
          def gold
            v = bossj_gold
            v *= Tan_by_enemy_set::Bossj_gold if is_by_boss_j?
            v *= Tan_by_enemy_set::Bossz_gold if is_by_boss_z?
            return v.to_i
          end
          alias bossj_drop_item_rate drop_item_rate
          def drop_item_rate
            v = bossj_drop_item_rate
            v *= Tan_by_enemy_set::Bossj_drop if is_by_boss_j?
            v *= Tan_by_enemy_set::Bossz_drop if is_by_boss_z?
            return v
          end
    end[/pre]

点评

叫我肉包就行了=w=  发表于 2017-4-15 13:46
fjm
太感谢魔法丶小肉包了,非常感谢  发表于 2017-4-15 13:44

评分

参与人数 1星屑 +250 收起 理由
RaidenInfinity + 250 认可答案

查看全部评分

笨肉包的游戏讨论群932812135 (实时更新) 喜欢的话欢迎加入~
目前的坑
??? #像素风OC游戏 准备中 短篇-约5小时
花城梦之心 #像素风OC游戏 系统开发+素材绘制中
【不可思议的迷宫】幽灵契约外传:歌莉娅 v0.4 游戏文件已更新
同时更新中~ (沉迷摸鱼中~更新速度较慢请见谅w)
这是属于笨肉包一个人的旅行~(这只肉包又在摸鱼!
旅途的最终目标~ ???(保密~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部