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

Project1

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

[已经解决] 得失物品脚本的提示问题

[复制链接]

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
跳转到指定楼层
1
发表于 2015-9-15 11:23:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
脚本如下,发现直接使用gain_item脚本获得物品时不会提示,应该怎么改?
  1. #--------------------------------------------------------------------------
  2. # ● 得失物品提示
  3. #--------------------------------------------------------------------------

  4. module Taroxd end

  5. module Taroxd::GainMessage

  6.   # --- 设置 ---

  7.   # 信息格式

  8.   # 转义符:
  9.   # \name    代表物品名称 / 金钱单位
  10.   # \value   代表获得 / 失去的物品 / 金钱数量
  11.   # \icon    绘制物品 / 金钱的图标
  12.   # \action  代表“获得”或者“失去”。可在下面修改。
  13.   # 支持“显示文字”中的所有转义符。
  14.   ITEM_FORMAT  = '\action了 \name * \value'
  15.   GOLD_FORMAT  = '\action了 \value \name'
  16.   ACTION_GAIN  = '获得'
  17.   ACTION_LOSE  = '失去'
  18.   GOLD_ICON_INDEX = 361           # 金钱图标的索引

  19.   BACKGROUND   = 1                # 窗口背景(0/1/2)
  20.   POSITION     = 1                # 显示位置(0/1/2)

  21.   # 音效(不需要的话可以直接删去对应的行)
  22.   GAIN_GOLD_SE = 'Shop'           # 获得金钱
  23.   LOSE_GOLD_SE = 'Blow2'          # 失去金钱
  24.   GAIN_ITEM_SE = 'Item1'          # 获得物品
  25.   LOSE_ITEM_SE = LOSE_GOLD_SE     # 失去物品

  26.   # 设置功能是否启用。
  27.   # true:启用。
  28.   # false:不启用。
  29.   # $game_switches[开关ID]: 对应开关打开时。
  30.   def self.enabled?
  31.     true
  32.   end

  33.   # --- 设置结束 ---

  34.   # 显示提示信息。获得金钱时将 item 设为 nil。
  35.   def self.show(value, item)
  36.     @item = item
  37.     @value = value
  38.     $game_message.background = BACKGROUND
  39.     $game_message.position = POSITION
  40.     $game_message.add(message)
  41.     play_se
  42.   end

  43.   private

  44.   # 获取提示的消息
  45.   def self.message
  46.     if @item
  47.       format = ITEM_FORMAT
  48.       icon_index = @item.icon_index
  49.       name = @item.name
  50.     else
  51.       format = GOLD_FORMAT
  52.       icon_index = GOLD_ICON_INDEX
  53.       name = Vocab.currency_unit
  54.     end

  55.     # gsub: 以替换前的字符串为键,替换后内容为值的 hash。可以自由设置。
  56.     gsub = {
  57.       '\action' => @value > 0 ? ACTION_GAIN : ACTION_LOSE,
  58.       '\value'  => @value.abs,
  59.       '\icon'   => "\\I[#{icon_index}]",
  60.       '\name'   => name
  61.     }

  62.     format.gsub(Regexp.union(gsub.keys), gsub)
  63.   end

  64.   def self.play_se
  65.     const = :"#{@value > 0 ? 'GAIN' : 'LOSE'}_#{@item ? 'ITEM' : 'GOLD'}_SE"
  66.     se = const_defined?(const) && const_get(const)
  67.     Audio.se_play('Audio/SE/' + se) if se
  68.   end
  69. end

  70. class Game_Party < Game_Unit
  71.   # 获取道具总数(包括装备)
  72.   def item_number_with_equip(item)
  73.     members.inject(item_number(item)) { |a, e| a + e.equips.count(item) }
  74.   end
  75. end

  76. class Game_Interpreter

  77.   GainMessage = Taroxd::GainMessage

  78.   # 别名:不显示提示窗口的事件指令
  79.   alias_method :gain_gold_without_message,   :command_125
  80.   alias_method :gain_item_without_message,   :command_126
  81.   alias_method :gain_weapon_without_message, :command_127
  82.   alias_method :gain_armor_without_message,  :command_128

  83.   # 显示提示窗口
  84.   def show_gain_message(value, item = nil)
  85.     return if value.zero?
  86.     GainMessage.show(value, item)
  87.     wait_for_message
  88.   end

  89.   # 增减持有金钱
  90.   def command_125
  91.     return gain_gold_without_message unless GainMessage.enabled?
  92.     last_gold = $game_party.gold
  93.     gain_gold_without_message
  94.     show_gain_message($game_party.gold - last_gold)
  95.   end

  96.   # 增减物品
  97.   def command_126
  98.     return gain_item_without_message unless GainMessage.enabled?
  99.     item = $data_items[@params[0]]
  100.     last_num = $game_party.item_number(item)
  101.     gain_item_without_message
  102.     show_gain_message($game_party.item_number(item) - last_num, item)
  103.   end

  104.   # 增减武器
  105.   def command_127
  106.     return gain_weapon_without_message unless GainMessage.enabled?
  107.     item = $data_weapons[@params[0]]
  108.     last_num = $game_party.item_number_with_equip(item)
  109.     gain_weapon_without_message
  110.     value = $game_party.item_number_with_equip(item) - last_num
  111.     show_gain_message(value, item)
  112.   end

  113.   # 增减护甲
  114.   def command_128
  115.     return gain_armor_without_message unless GainMessage.enabled?
  116.     item = $data_armors[@params[0]]
  117.     last_num = $game_party.item_number_with_equip(item)
  118.     gain_armor_without_message
  119.     value = $game_party.item_number_with_equip(item) - last_num
  120.     show_gain_message(value, item)
  121.   end
  122. end
复制代码

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-9-15 12:26:04 | 只看该作者
本帖最后由 taroxd 于 2015-9-15 12:30 编辑

参考 command_126
其中 wait_for_message 是用来暂停事件的,如果不在事件中可以无视

点评

解决 谢谢  发表于 2015-9-15 13:55

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 00:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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