设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1983|回复: 6
打印 上一主题 下一主题

[已经解决] 如何增加敌人的掉落物种类

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
215
在线时间
3 小时
注册时间
2011-8-19
帖子
4
跳转到指定楼层
1
发表于 2011-8-19 19:39:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
像RMVX每个怪物只有两个掉落物品框,我想让怪物掉落的东西更多一点,如何设置脚本可以让怪物的掉落框更多一点

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60819
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

2
发表于 2011-8-19 19:58:03 | 只看该作者
先使用这个插件。
  1. module RPG
  2.   class Enemy
  3.     class DropItem
  4.       alias mdi_initialize initialize
  5.       def initialize; mdi_initialize; yield self; end
  6.     end
  7.   end
  8. end
复制代码
Game_Troop 238行附近修改。
  1. for di in [enemy.drop_item1, enemy.drop_item2]
复制代码
改成

  1. dis = [enemy.drop_item1, enemy.drop_item2]
  2. 数据
  3. for di in dis
复制代码
数据的地方添加你想增加的物品,一行写一个,按下面的格式。
比如给 33 号敌人增加一个 1 号物品,出现概率是 1/2。
  1. dis.push(RPG::Enemy::DropItem.new {|s| s.kind = 0; s.item_id = 1; s.denominator = 2;}) if enemy.id == 33
复制代码
比如给 35 号敌人增加一个 5 号武器,出现概率是 1/7。
  1. dis.push(RPG::Enemy::DropItem.new {|s| s.kind = 1; s.weapon_id = 5; s.denominator = 7;}) if enemy.id == 35
复制代码
比如给 15 号敌人增加一个 9 号防具,出现概率是 1/1。
  1. dis.push(RPG::Enemy::DropItem.new {|s| s.kind = 2; s.armor_id = 9; s.denominator = 1;}) if enemy.id == 15
复制代码

点评

这种代码的书写方式好难接受……  发表于 2011-8-19 22:42
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2009-9-3
帖子
64
3
发表于 2011-8-20 00:19:21 | 只看该作者
提供一个简单方法:把同一怪物复制若干,一个提供两个掉落物品。。两个提供四个掉落物品。。。
那么这个怪物掉落多少东西都行。。。

点评

只打一个怪就掉6个东西呢…… 囧  发表于 2011-8-20 04:26
回复

使用道具 举报

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60819
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

4
发表于 2011-8-20 04:40:47 | 只看该作者
崭新的版本

先使用这个插件。
  1. module RPG
  2.   class Enemy
  3.     class DropItem
  4.       alias mdi_initialize initialize
  5.       def initialize; mdi_initialize; yield self; end
  6.     end
  7.   end
  8. end
复制代码
Game_Troop 238行附近修改。
  1. for di in [enemy.drop_item1, enemy.drop_item2]
复制代码
改成

  1. dis = [enemy.drop_item1, enemy.drop_item2]
  2. add = Proc.new {|dis, kind, id, denominator| dis.push(RPG::Enemy::DropItem.new {|s| s.kind = kind; s.item_id = id; s.weapon_id = id; s.armor_id = id; s.denominator = denominator;})}
  3. 数据
  4. for di in dis
复制代码
数据的地方添加你想增加的物品,一行写一个,按下面的格式。
比如给 33 号敌人增加一个 1 号物品,出现概率是 1/2。
  1. add.call(dis, 0, 1, 2) if enemy.id == 33
复制代码
比如给 35 号敌人增加一个 5 号武器,出现概率是 1/7。
  1. add.call(dis, 1, 5, 7) if enemy.id == 35
复制代码
比如给 15 号敌人增加一个 9 号防具,出现概率是 1/1。
  1. add.call(dis, 2, 9, 1) if enemy.id == 15
复制代码
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
5
发表于 2011-8-20 10:47:29 | 只看该作者
  1. $shizi_battle_result = []
  2. #上面这个依旧是初始化用,不用管
  3. $shizi_battle_result_goldrand = false #是否开启随机金钱
  4. $shizi_battle_result_goldrandnum = 50 #随机幅度为50
  5. $shizi_battle_result_exprand = false #是否开启随机经验
  6. $shizi_battle_result_exprandnum = 30 #随机幅度为30
  7. $shizi_battle_result_max = 99 #最多获得99件宝物
  8. #宝物设置的格式:
  9. #$shizi_battle_result[*] = [怪物ID,[ [宝物类型,宝物ID,宝物出现几率] , [宝物类型,宝物ID,宝物出现几率]]
  10. #宝物类型:
  11. #0、物品
  12. #1、武器
  13. #2、防具
  14. $shizi_battle_result[0] = [1,[[2,1,70],[1,2,40]]]
  15. #下面是脚本内容
  16. class Scene_Battle
  17.   def start_phase5
  18.     @phase = 5
  19.     $game_system.me_play($game_system.battle_end_me)
  20.     $game_system.bgm_play($game_temp.map_bgm)
  21.     exp = 0
  22.     gold = 0
  23.     treasures = []
  24.     for enemy in $game_troop.enemies
  25.       unless enemy.hidden
  26.         exp += enemy.exp
  27.         gold += enemy.gold
  28.         if rand(100) < enemy.treasure_prob
  29.           if enemy.item_id > 0
  30.             treasures.push($data_items[enemy.item_id])
  31.           end
  32.           if enemy.weapon_id > 0
  33.             treasures.push($data_weapons[enemy.weapon_id])
  34.           end
  35.           if enemy.armor_id > 0
  36.             treasures.push($data_armors[enemy.armor_id])
  37.           end
  38.           for i in $shizi_battle_result
  39.             if enemy.id == i[0]
  40.               for shizi in i[1]
  41.                 if rand(100) < shizi[2]
  42.                   case shizi[0]
  43.                   when 0
  44.                     treasures.push($data_items[shizi[1]])
  45.                   when 1
  46.                     treasures.push($data_weapons[shizi[1]])
  47.                   when 2
  48.                     treasures.push($data_armors[shizi[1]])
  49.                   end
  50.                 end
  51.               end
  52.             end
  53.           end
  54.         end
  55.       end
  56.     end
  57.     treasures = treasures[0...$shizi_battle_result_max]
  58.     gold = rand($shizi_battle_result_goldrandnum*2)-$shizi_battle_result_goldrandnum+gold if gold >= $shizi_battle_result_goldrandnum and $shizi_battle_result_goldrand == true
  59.     exp = rand($shizi_battle_result_exprandnum*2)-$shizi_battle_result_exprandnum+exp if exp >= $shizi_battle_result_exprandnum and $shizi_battle_result_exprand == true
  60.     for i in 0...$game_party.actors.size
  61.       actor = $game_party.actors[i]
  62.       if actor.cant_get_exp? == false
  63.         last_level = actor.level
  64.         actor.exp += exp
  65.         if actor.level > last_level
  66.           @status_window.level_up(i)
  67.         end
  68.       end
  69.     end
  70.     $game_party.gain_gold(gold)
  71.     for item in treasures
  72.       case item
  73.       when RPG::Item
  74.         $game_party.gain_item(item.id, 1)
  75.       when RPG::Weapon
  76.         $game_party.gain_weapon(item.id, 1)
  77.       when RPG::Armor
  78.         $game_party.gain_armor(item.id, 1)
  79.       end
  80.     end
  81.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  82.     @phase5_wait_count = 100
  83.   end
  84. end
复制代码
据说很难看懂

点评

Wind大,这剧本我终于会用了,感动〜  发表于 2011-8-21 21:24

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2011-8-25
帖子
20
6
发表于 2011-8-26 10:29:38 | 只看该作者
其实有个更加简单的方法,不需要脚本,纯事件也能制作出多掉宝的效果,下面我慢慢的告诉你吧!
首先,新建一个怪物,名为 BOSS(一般都是BOSS掉落比较多),然后再新建几个用来掉落道具的怪物 名为:BOSS掉落1,BOSS掉落2,BOSS掉落3,等等(根据你想要掉落多少道具而定),然后把BOSS设置为不死之身,把其他的掉落怪(BOSS掉落1)设置为飞行,也就是隐身还未出现,在战斗事件中设置一个事件  把条件设为敌人:BOSS HP在99以下时 召唤(出现)BOSS掉落1等怪物,等待3帖 所有怪物状态添加 死亡!
就这样,一个BOSS就能掉落多个宝物了!
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

7
发表于 2011-8-26 13:06:19 | 只看该作者











你知道得太多了

回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 11:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表