Project1

标题: 整合物品掉落显示的菜鸟想法 [打印本页]

作者: shinsuzaku    时间: 2014-8-13 00:36
标题: 整合物品掉落显示的菜鸟想法
本帖最后由 shinsuzaku 于 2014-9-4 09:39 编辑

之前问过一个问题,当N个怪物掉落相同物品时,有没有办法整合显示,一开始想用数组,结果4个小时没有解决问题,最后脑筋一开想到Object一试,不到10分钟搞定……简直惨这是……

可能这个方式比较不效率,期待有高手能给出更效率的方法

修改的代码在BattleManager的329行 重写self.gain_drop_items方法

RUBY 代码复制
  1. def self.gain_drop_items
  2.     items = {}
  3. for i in $game_troop.make_drop_items
  4.       if items[i]
  5.         items[i] += 1
  6.       else
  7.         items[i] = 1
  8.       end
  9.     end
  10.     for k in items
  11.      $game_party.gain_item(k[0], k[1])
  12.      $game_message.add(sprintf(Vocab::ObtainItem,k[1], k[0].name))
  13.     end
  14.     wait_for_message
  15.   end


然后修改Vocab第39行的显示信息

RUBY 代码复制
  1. ObtainItem      = "获得了%s个%s!"


效果如下:

首先看一下掉率


打败敌人后的信息显示

作者: taroxd    时间: 2014-8-13 08:01
本帖最后由 taroxd 于 2014-8-13 08:05 编辑

我就来给个效率更低的,未测试的,卖萌用的

这段东西就在战斗结束的时候偶尔执行,完全不用考虑效率的,放心吧

RUBY 代码复制
  1. def self.gain_drop_items
  2.   $game_troop.make_drop_item.group_by {|i| i }.each do |item, arr|
  3.     amount = arr.size
  4.     $game_party.gain_item(item, amount)
  5.     $game_message.add("获得了#{amount}个#{item.name}!")
  6.     wait_for_message
  7.   end
  8. end

作者: 千夙    时间: 2014-8-13 11:53
这不是灌水哦,别抢我的糖路过带走
作者: 彩虹色的猪    时间: 2014-8-18 12:17
楼主的脚本使用后虽然显示了获得道具,但结果物品栏里并没有增加道具-。-
二楼的使用后报错,错误如图

作者: shinsuzaku    时间: 2014-8-20 22:00
彩虹色的猪 发表于 2014-8-18 12:17
楼主的脚本使用后虽然显示了获得道具,但结果物品栏里并没有增加道具-。-
二楼的使用后报错,错误如图
...

啊确实有错,要修改

339行的k[0].id改成k[0]就可以了




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