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

Project1

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

[已经解决] 求一个物品得失提示

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-7-20
帖子
8
跳转到指定楼层
1
发表于 2015-7-29 20:16:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
求一个框比较长的物品得失提示,起码不会这样{:2_276:}

QQ截图20150729201403.png (22.43 KB, 下载次数: 27)

QQ截图20150729201403.png

Lv2.观梦者

梦石
0
星屑
457
在线时间
1409 小时
注册时间
2010-9-23
帖子
557
2
发表于 2015-7-29 20:20:53 | 只看该作者
这个脚本不知道适不适合?
  1. #==============================================================================
  2. # ☆ HAR - 得失物品脚本 (v1.01a)
  3. # 日期:2012/09/23
  4. #==============================================================================
  5. # -- 作者:    Harinlen
  6. # -- 等级:    普通级
  7. # -- 依赖关系:  无
  8. # -- 适用范围:  RPG Maker VX Ace
  9. # -- 不兼容脚本: 暂无
  10. #==============================================================================
  11. # ☆ 声明
  12. # 此脚本参考了[PS0]双默认脚本的长度测量函数。
  13. #==============================================================================
  14. # ☆ 脚本使用说明
  15. # 此脚本无需额外代码即可使用,使用事件调用增减金钱、增减武器、增减防具和增减物品的
  16. # 时候会显示一个对话框显示得失物品情况。
  17. #
  18. # ☆ 脚本的启用
  19. # 修改对应等号后面对应的数值为对应的开关序号,在事件中直接对开关进行判定即可:
  20. #
  21. # $window_tips_gold = 10        #金钱窗口提示的开关
  22. # $window_tips_item = 11        #物品窗口提示的开关
  23. # $window_tips_weapon = 12      #武器窗口提示的开关
  24. # $window_tips_armor = 13       #防具窗口提示的开关
  25. #
  26. # ☆ 脚本的自定义
  27. # 请修改下方的音效设定部分,将对应的音效更改成自己想要的音效即可。
  28. # 音效名的获取请使用媒体库进行查看。只能使用SE中的音效。
  29. #==============================================================================

  30. #==============================================================================
  31. # ■ 提示开关定义
  32. #------------------------------------------------------------------------------
  33. #  用于定义是否显示Window
  34. #==============================================================================
  35. $window_tips_gold = 10
  36. $window_tips_item = 11
  37. $window_tips_weapon = 12
  38. $window_tips_armor = 13

  39. #==============================================================================
  40. # ■ 音效设定
  41. #------------------------------------------------------------------------------
  42. #  设定对应的音效播放效果
  43. #==============================================================================
  44. $SE_Gold_Gain   = "Shop"      # 获得金钱声效
  45. $SE_Gold_Loss   = "Blow2"     # 失去金钱声效

  46. $SE_Item_Gain   = "Item1"     # 获得物品声效
  47. $SE_Item_Loss   = "Blow2"     # 失去物品声效

  48. $SE_Weapon_Gain = "Item1"     # 获得武器声效
  49. $SE_Weapon_Loss = "Blow2"     # 失去武器声效

  50. $SE_Armor_Gain  = "Item1"     # 获得防具声效
  51. $SE_Armor_Loss  = "Blow2"     # 失去防具声效
  52. #==============================================================================
  53. # ■ Window_Tips
  54. #------------------------------------------------------------------------------
  55. #  显示增减物品、金钱和装备的窗口
  56. #==============================================================================

  57. class Window_Tips < Window_Base
  58.   #--------------------------------------------------------------------------
  59.   # ● 初始化对象
  60.   #--------------------------------------------------------------------------
  61.   def initialize(x = 170, y = 128, width = 300, height = 96)
  62.     super
  63.   end
  64.   
  65.   #--------------------------------------------------------------------------
  66.   # ● 增强绘制物品名称
  67.   #--------------------------------------------------------------------------
  68.   def adv_draw_item_name(item, x, y)
  69.     return unless item
  70.     draw_icon(item.icon_index, x, y, true)
  71.     change_color(normal_color, true)
  72.     draw_text(x + 24, y, width, line_height, item.name)
  73.   end
  74.   
  75. end

  76. class Game_Interpreter
  77.   
  78.   #--------------------------------------------------------------------------
  79.   # ● 增减金钱
  80.   #--------------------------------------------------------------------------
  81.   def command_125
  82.     value = operate_value(@params[0], @params[1], @params[2])
  83.     $game_party.gain_gold(value)
  84.     if $game_switches[$window_tips_gold] == true
  85.       show_tips_window(0, value)
  86.     end
  87.     return true
  88.   end
  89.   
  90.   #--------------------------------------------------------------------------
  91.   # ● 增减物品
  92.   #--------------------------------------------------------------------------
  93.   def command_126
  94.     value = operate_value(@params[1], @params[2], @params[3])
  95.     $game_party.gain_item($data_items[@params[0]], value)
  96.     if $game_switches[$window_tips_item] == true
  97.       show_tips_window(1, value)
  98.     end
  99.     $game_map.need_refresh = true
  100.     return true
  101.   end
  102.   
  103.   #--------------------------------------------------------------------------
  104.   # ● 增减武器
  105.   #--------------------------------------------------------------------------
  106.   def command_127
  107.     value = operate_value(@params[1], @params[2], @params[3])
  108.     $game_party.gain_item($data_weapons[@params[0]], value, @params[4])
  109.     if $game_switches[$window_tips_weapon] == true
  110.       show_tips_window(2, value)
  111.     end
  112.     return true
  113.   end
  114.   
  115.   #--------------------------------------------------------------------------
  116.   # ● 增减防具
  117.   #--------------------------------------------------------------------------
  118.   def command_128
  119.     value = operate_value(@params[1], @params[2], @params[3])
  120.     $game_party.gain_item($data_armors[@params[0]], value, @params[4])
  121.     if $game_switches[$window_tips_armor] == true
  122.       show_tips_window(3, value)
  123.     end
  124.     return true
  125.   end
  126.   
  127.   #--------------------------------------------------------------------------
  128.   # ● 显示增减提示窗口
  129.   #--------------------------------------------------------------------------
  130.   def show_tips_window(type, value)
  131.     case type
  132.       when 0
  133.         item_type = Vocab::currency_unit
  134.         if value >= 0
  135.           Audio.se_play("Audio/SE/" + $SE_Gold_Gain, 100, 100)
  136.         else
  137.           Audio.se_play("Audio/SE/" + "Item1", 100, 100)
  138.       end
  139.       when 1
  140.         item_type = Vocab::item
  141.         processed_items = $data_items[@params[0]]
  142.         if value >= 0
  143.           Audio.se_play("Audio/SE/" + $SE_Item_Gain, 100, 100)
  144.         else
  145.           Audio.se_play("Audio/SE/" + $SE_Item_Loss, 100, 100)
  146.       end
  147.       when 2
  148.         item_type = Vocab::weapon
  149.         processed_items = $data_weapons[@params[0]]
  150.         if value >= 0
  151.           Audio.se_play("Audio/SE/" + $SE_Weapon_Gain, 100, 100)
  152.         else
  153.           Audio.se_play("Audio/SE/" + $SE_Weapon_Loss, 100, 100)
  154.       end
  155.       when 3
  156.         item_type = Vocab::armor
  157.         processed_items = $data_armors[@params[0]]
  158.         if value >= 0
  159.           Audio.se_play("Audio/SE/" + $SE_Armor_Gain, 100, 100)
  160.         else
  161.           Audio.se_play("Audio/SE/" + $SE_Armor_Loss, 100, 100)
  162.       end
  163.     end
  164.   
  165.     if value >= 0
  166.       tips_processed_text = "获得"   
  167.     else
  168.       tips_processed_text = "失去"
  169.     end
  170.    
  171.     if type != 0
  172.       text_value = "×" + value.abs.to_s
  173.       bitmap = Bitmap.new(100, 100)
  174.       itemwidth = bitmap.text_size(processed_items.name).width + 95
  175.       valuewidth = bitmap.text_size(text_value).width
  176.       itempop_window = Window_Tips.new((544 - itemwidth - valuewidth) / 2, 128, itemwidth + valuewidth, 88)
  177.       itempop_window.contents = Bitmap.new(itempop_window.width - 32, itempop_window.height - 32)
  178.       
  179.       itempop_window.contents.draw_text(0, 0, 160, 32, tips_processed_text + item_type+":")
  180.       itempop_window.adv_draw_item_name(processed_items, 28, 32)
  181.       itempop_window.contents.draw_text(0, 30, itemwidth, 32, "×" + value.abs.to_s, 2)
  182.     else
  183.       text_value = value.abs.to_s + " " + Vocab::currency_unit
  184.       bitmap = Bitmap.new(100, 100)
  185.       textwidth = bitmap.text_size(text_value).width + 95
  186.       itempop_window = Window_Tips.new(170, 128, textwidth, 88)
  187.       itempop_window.contents = Bitmap.new(itempop_window.width - 32, itempop_window.height - 32)
  188.       
  189.       itempop_window.contents.draw_text(0, 0, 160, 32, tips_processed_text + item_type+":")
  190.       itempop_window.contents.draw_text(32, 32, 240, 32, value.abs.to_s + "  " + Vocab::currency_unit)
  191.     end
  192.    
  193.     for i in 0..60
  194.       Graphics.update
  195.     end
  196.     for i in 0..10
  197.       itempop_window.opacity -= 30
  198.       itempop_window.contents_opacity -= 30
  199.       Graphics.update
  200.     end
  201.     itempop_window.dispose
  202.    
  203.     for i in 0..3
  204.       Graphics.update
  205.     end
  206.   end
  207. end
复制代码
图片示例如下:
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2313
在线时间
1602 小时
注册时间
2014-9-28
帖子
2792

开拓者

3
发表于 2015-7-29 20:44:40 | 只看该作者
https://rpg.blue/forum.php?mod=viewthread&tid=372181
用taroxd的强化版,比较好。
  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
复制代码

评分

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

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-7-20
帖子
8
4
 楼主| 发表于 2015-7-29 20:51:11 | 只看该作者
黑崎一护 发表于 2015-7-29 20:20
这个脚本不知道适不适合?图片示例如下:

这个似乎是XP,我以前在XP上用过。在VA的话物品得失都不显示了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-7-20
帖子
8
5
 楼主| 发表于 2015-7-29 20:55:14 | 只看该作者
用第二个的话就是这样的,还是不错的

QQ截图20150729205406.png (21.86 KB, 下载次数: 26)

QQ截图20150729205406.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 10:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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