查看: 3092|回复: 6

[已经解决] [已解決]使用完某技能后,如何显示某物品的数量?

[复制链接]
头像被屏蔽
梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
回帖
1401
发表于 2020-4-17 12:17:31 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2020-4-17 14:24:35 | 显示全部楼层
本帖最后由 KB.Driver 于 2020-4-17 14:32 编辑
chanszeman1018 发表于 2020-4-17 13:46
脚本的10行NoMethodError发生。
undefined method 'object' for #


重写了一遍,新建工程测试通过。
11.gif


[pre lang="ruby"]module BattleLogObserver
  def self.observe(log_window, user, item, targets)
    case user
    when Game_Actor
      observe_actor(log_window, user, item, targets)
    end
  end

  def self.observe_actor(log_window, user, item, targets)
    case item
    when RPG::Skill
      observe_actor_skill(log_window, user, item, targets)
    end
  end

  def self.observe_actor_skill(log_window, user, item, targets)
    case item.id
    when 1
      text = sprintf("尚余药水:%s瓶", $game_party.item_number($data_items[1]))
    else return
    end
    log_window.display_observe_text(text)
  end
end

class Scene_Battle
  alias invoke_item_for_special_log invoke_item
  def invoke_item(target, item)
    invoke_item_for_special_log(target, item)
    BattleLogObserver.observe(@log_window, @subject, item, target)
  end
end

class Window_BattleLog
  #--------------------------------------------------------------------------
  # ● 删除一行文字
  #--------------------------------------------------------------------------
  def back_one
    @last_pops ||= []
    @last_pops << @lines.pop
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 返回指定行
  #--------------------------------------------------------------------------
  def back_to(line_number)
    @last_pops ||= []
    @last_pops << @lines.pop while @lines.size > line_number
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 清除
  #--------------------------------------------------------------------------
  alias clear_for_clearing_last_pop clear
  def clear
    clear_for_clearing_last_pop
    @last_pops && @last_pops.clear
  end

  def display_observe_text(text)
    @last_pops ||= []
    @last_pops.reverse_each {|old_text| add_text(old_text) }
    add_text(text)
    wait
    @last_pops.size.times { back_one }
    back_one
  end
end[/pre]

评分

参与人数 1赞 +1 收起 理由
chanszeman1018 + 1 精品文章+认可答案+万分感謝!

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2020-4-17 13:19:56 | 显示全部楼层
本帖最后由 KB.Driver 于 2020-4-17 14:25 编辑

应该在Scene_Battle的use_item中改。
你可以先注释掉现在的代码,试试我写的这个。

[pre lang="ruby"]# deprecated[/pre]

用头画头像,用脚写脚本
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
回帖
1401
 楼主| 发表于 2020-4-17 13:33:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2020-4-17 13:37:02 | 显示全部楼层
本帖最后由 KB.Driver 于 2020-4-17 14:25 编辑
chanszeman1018 发表于 2020-4-17 13:33
沒效果...沒显示那句「尚余药水:%s瓶」
新建工程也沒效果...


Scene_Battle里的item应该是套了壳的Game_BaseItem
试一下下面的去了壳的脚本

[pre lang="ruby"]# deprecated[/pre]
用头画头像,用脚写脚本
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
回帖
1401
 楼主| 发表于 2020-4-17 13:46:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
11809
在线时间
623 小时
注册时间
2016-8-25
回帖
1340

R考场第七期纪念奖

发表于 2020-4-17 15:29:09 | 显示全部楼层
KB.Driver 发表于 2020-4-17 14:24
重写了一遍,新建工程测试通过。

6666666666

评分

参与人数 1赞 +1 收起 理由
chanszeman1018 + 1 -1赞~纯水扣分!~

查看全部评分

回复 0 1

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部