查看: 2946|回复: 2

[已经过期] 萌新求教第二弹之如何扩充敌人追加物品掉落的条件

[复制链接]
梦石
0
星屑
71
在线时间
19 小时
注册时间
2021-11-7
回帖
5
发表于 2021-11-9 00:37:27 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 va萌新 于 2021-11-9 04:16 编辑

有7个条件不知道咋弄, 以一句情況来描述的话:
被带有12号状态的3号角色以456号技能造成暴击且大于9000的火属性 吸收伤害时 追加掉落 1号物品
emmm,,,我猜大概用eval(a = user, b = self, i = action, r = result)的方法能解決么,,,

敌人掉落物追加 2017.6.6
  1. #==============================================================================
  2. # ■ 敌人追加物品掉落  by 老鹰
  3. #------------------------------------------------------------------------------
  4. #   - 新增敌人的额外物品掉落,可带触发条件
  5. #   - 在敌人栏备注内填入 (可用空格或逗号分隔内部各项)(可重复填入多行)
  6. #     <ex drop: 物品类型id 物品id 掉落概率分子 掉落概率分母 出现条件>
  7. #       物品类型id: 1 - 物品  2 - 武器  3 - 护甲 (此外的值均会导致无效)
  8. #       物品id: 对应类型的数据库中物品的id号
  9. #       掉落概率分子、掉落概率分母: 物品的掉落概率为 分子 / 分母
  10. #       出现条件(可选):当字符串被eval后返回的值为真时,允许这个物品掉落
  11. #         注: 可用 s 代表 $game_switches, v 代表 $game_variables
  12. #   - 举例:
  13. #      <ex drop: 1 1 1 2>
  14. #         - 以 1/2的概率 追加掉落 1号物品
  15. #      <ex drop: 2,10,2,5,$game_switches[1]>
  16. #         - 当1号开关开启时,以 2/5的概率 追加掉落 10号武器
  17. #      <ex drop: 3 1,1 1,$game_variables[1] > 5>
  18. #         - 当1号变量大于5时,一定 追加掉落 1号护甲
  19. #   - 实质:在战斗结束统计敌人掉落时,追加读取敌人数据库的note栏并追加掉落
  20. #==============================================================================

  21. class Game_Enemy < Game_Battler
  22.   #--------------------------------------------------------------------------
  23.   # ● 生成物品数组
  24.   #--------------------------------------------------------------------------
  25.   alias eagle_ex_drop_make_drop_items make_drop_items
  26.   def make_drop_items
  27.     array = eagle_ex_drop_make_drop_items
  28.     array += make_extra_drop_items
  29.     return array
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 生成额外物品数组
  33.   #--------------------------------------------------------------------------
  34.   def make_extra_drop_items
  35.     array = []
  36.     s = $game_switches
  37.     v = $game_variables
  38.     enemy.note.split(/[\r\n]+/).each do |line|
  39.       case line
  40.       when /<ex drop:[ ,]*(\d+)[ ,]*(\d+)[ ,]*(\d+)[ ,]*(\d+)[ ,]*(.*)>/
  41.         cond = $5.to_s
  42.         next if (cond != "" && eval(cond) == false)
  43.         item_kind = $1.to_i; item_id = $2.to_i
  44.         prob = $3.to_i * 1.0 / $4.to_i * drop_item_rate
  45.         array.push(item_object(item_kind, item_id)) if rand < prob
  46.       end
  47.     end
  48.     return array
  49.   end
  50. end
复制代码
梦石
0
星屑
71
在线时间
19 小时
注册时间
2021-11-7
回帖
5
 楼主| 发表于 2021-11-12 14:37:38 | 显示全部楼层
作者大大请指导一下萌新吧QQ
回复

使用道具 举报

梦石
0
星屑
7066
在线时间
607 小时
注册时间
2017-11-10
回帖
656

极短21参与

发表于 2021-11-13 11:34:31 | 显示全部楼层
正常游戏有一两个条件就够用了,这又不是公务员考试
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部