Project1

标题: 【RMVA】物品得失脚本 Enhance 1.02a [打印本页]

作者: harinlen    时间: 2012-9-23 11:01
标题: 【RMVA】物品得失脚本 Enhance 1.02a
本帖最后由 harinlen 于 2012-9-24 20:39 编辑

今天私在填坑的时候才发现RMVA居然连个物品得失提示都没有,然后私就抑郁了。
虽然第一反应是直接抓个脚本,可惜私只找到了XP和VX的。而且需要在事件中等待3帧。而且要是物品名称过长的话还会挤在一起?!(←这啥?)
最后私自己写了一个物品得失脚本,之后才发现了Ace区xmheart已经发了一个脚本了,但貌似就是VX版本的移植版……

下面就是私的脚本了,比起前几个脚本有如下的更新:
1、宽度自适应。能够根据物品名字的宽度、金钱的宽度进行调整。(参考了各种压力的猫君的双默认字体脚本的测量函数)
2、与Vocab挂钩,直接显示在数据库中的用语处设定的名称
3、无需最后等待3帧,这个已经整合到脚本之中了。
4、窗体始终居中。



更新日志

1.02a
将临时性的布尔型变量对启用进行控制变更为使用开关。

1.01a
修正了没有将Window居中的问题。

1.00a
发布公开的测试版本

转载、使用无需保留前面的作者信息。

以上。
  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
复制代码

作者: 疯狂异形    时间: 2012-9-23 11:04
HAR触!
这不应该发在技术发布之类的地方么……
作者: harinlen    时间: 2012-9-23 11:05
疯狂异形 发表于 2012-9-23 11:04
HAR触!
这不应该发在技术发布之类的地方么……

自知私技术渣所以只能放在水区不解释= =
作者: 小叽    时间: 2012-9-23 11:06
马达马达,汝还粉嫩啊!
作者: harinlen    时间: 2012-9-23 11:07
小叽 发表于 2012-9-23 11:06
马达马达,汝还粉嫩啊!

是的说T T私和众神比起来差距超级大的说= =
话说前辈求勾搭DA☆ZE~
作者: 迷糊的安安    时间: 2012-9-23 11:08
0 0 求效果图……
作者: fxwd    时间: 2012-9-23 11:08
harinlen 发表于 2012-9-23 11:07
是的说T T私和众神比起来差距超级大的说= =
话说前辈求勾搭DA☆ZE~

我想说你是卖萌么。。
作者: harinlen    时间: 2012-9-23 11:09
fxwd 发表于 2012-9-23 11:08
我想说你是卖萌么。。

私木有在卖萌啊……T T……
前辈不能这样……
作者: 怪蜀黍    时间: 2012-9-23 11:13
水区真是什么都可以发呀,技术发布区取消掉算了,喵
作者: harinlen    时间: 2012-9-23 11:16
protosssonny 发表于 2012-9-23 11:13
水区真是什么都可以发呀,技术发布区取消掉算了,喵

0 0 p大早DA☆ZE~
作者: harinlen    时间: 2012-9-23 11:25
@越前リョーマ谢谢了越前前辈~喵呜~
作者: bbh    时间: 2012-9-23 16:13
lz是因为va没脚本才自己写的吗= =

于是我想告诉lz一个很悲惨的消息,vx版得失物品可以和va通用的说……
作者: harinlen    时间: 2012-9-23 16:19
bbh 发表于 2012-9-23 16:13
lz是因为va没脚本才自己写的吗= =

于是我想告诉lz一个很悲惨的消息,vx版得失物品可以和va通用的说…… ...

私有找到VX的那个脚本,但是那个需要等待三帧,而且会把很长名称的物品名称挤在一起DA☆ZE……
(其实写完和那个一看基本上是一样的……)
作者: orzfly    时间: 2012-9-23 16:45
那啥,考虑一下 $window_tips_armor = false 以后存档,然后开启游戏再读档,这货就等于 true 了。
作者: harinlen    时间: 2012-9-23 16:55
orzfly 发表于 2012-9-23 16:45
那啥,考虑一下 $window_tips_armor = false 以后存档,然后开启游戏再读档,这货就等于 true 了。 ...

大神受教了……orz
作者: harinlen    时间: 2012-9-23 17:07
@satgo1546真的呢030


‘‘──harinlen于2012-9-23 17:08补充以下内容:

[@]satgo1546[/@]
此贴是私发的第一个……私写了好多代码都木有敢拿出来,自知很渣的说= =
’’
作者: a827594998    时间: 2012-9-24 10:57
不能复制呀,楼主
作者: harinlen    时间: 2012-9-24 12:31
a827594998 发表于 2012-9-24 10:57
不能复制呀,楼主

复制?这神马情况。。
作者: harinlen    时间: 2012-9-24 12:48
@yoyu1989那就慢慢复制粘贴吧,这个私也无能为力...
作者: alann    时间: 2012-9-24 16:14
http://rpg.blue/forum.php?mod=vi ... D368%26typeid%3D368

跟这个相比,不会叠字确实是很不错,
不过旧的通过手动修改数值能慢慢调出来,

另外旧的脚本能够显示升降等级,不过这个不重要……
最重要的是旧的有脚本开关……
作者: harinlen    时间: 2012-9-24 17:00
alann 发表于 2012-9-24 16:14
http://rpg.blue/forum.php?mod=viewthread&tid=221452&extra=page%3D1%26filter%3Dtypeid%26typeid%3 ...

脚本开关很好写,把Boolean的变量改成开关的Hash就可以了。至于手动修改,君觉得私那个例子里的那种情况能改么。。那个脚本会把字挤在一起不解释。

以上
作者: z2z4    时间: 2012-9-24 17:31
1.00 就有 颜色提示的物品  这个 1.01 纯 白色
作者: alann    时间: 2012-9-24 17:38
恰好本人还真手动修改过,不过修改后不怕叠字的话,最多只能显示6个字,
虽然游戏里面暂时还没有出现超过6个字的物品,不过难讲以后会不会有,
但偏偏那个开关对我来说很重要,因为合成物品的关系,
如果合成一次复杂一点的东西,就要看物品得失信息很多次,所以用开关来屏蔽了而已,
只是提一个建议而已,没有别的意思
作者: harinlen    时间: 2012-9-24 20:33
alann 发表于 2012-9-24 17:38
恰好本人还真手动修改过,不过修改后不怕叠字的话,最多只能显示6个字,
虽然游戏里面暂时还没有出现超过6 ...

额,私没木有看出别的意思啊= =
开关的话直接修改成对应的Hash就可以了啊?
作者: z2z4    时间: 2012-9-25 05:41
物品 品质 颜色 没 获得 都是白色的    比如我的武器是蓝色的 得到提示 一样是白的 旧的提示 旧有颜色
作者: harinlen    时间: 2012-9-25 07:17
z2z4 发表于 2012-9-25 05:41
物品 品质 颜色 没 获得 都是白色的    比如我的武器是蓝色的 得到提示 一样是白的 旧的提示 旧有颜色 ...

哦,那更改下颜色不就好了么?话说在draw_text之前加行改颜色的语句就好了ze~

以上
作者: 3366hhl    时间: 2013-5-10 13:04
疯狂异形 发表于 2012-9-23 11:04
HAR触!
这不应该发在技术发布之类的地方么……

好吧,,..............{:2_276:}
作者: akmdtbdnw    时间: 2013-12-19 21:29
本帖最后由 akmdtbdnw 于 2013-12-20 01:26 编辑

这个脚本还要手动打开开关吗?
作者: akmdtbdnw    时间: 2013-12-19 21:32
本帖最后由 akmdtbdnw 于 2013-12-20 01:36 编辑

感觉20楼提供的链接比较好用,默认打开提示,启用开关再关闭提示。

作者: 624183062    时间: 2014-1-25 22:21
lz,直接插入完全没有效果,求教,是不是应该放个范例呢??
作者: 624183062    时间: 2014-1-29 22:13
lz,能否发个范例,真心挑不出来。。。呜呜、、、、、
作者: harinlen    时间: 2014-1-30 10:38
624183062 发表于 2014-1-29 22:13
lz,能否发个范例,真心挑不出来。。。呜呜、、、、、

额,这个就是直接放到main前面那里就可以了……啊的说?
作者: 624183062    时间: 2014-1-31 11:44
harinlen 发表于 2014-1-30 10:38
额,这个就是直接放到main前面那里就可以了……啊的说?

但是,插上去根本没效果啊
作者: kamidragon    时间: 2014-2-2 15:12
624183062 发表于 2014-1-31 11:44
但是,插上去根本没效果啊

先打开开关才会生效,第21-24行就是每个提示的开关
作者: 624183062    时间: 2014-2-2 20:11
kamidragon 发表于 2014-2-2 15:12
先打开开关才会生效,第21-24行就是每个提示的开关

太感谢了,问题解决了!果断是因为开关的问题!!可是。。。
http://rpg.blue/forum.php?m ... D368%26typeid%3D368
这里就没有要求打开开关啊
作者: swbsl    时间: 2014-10-17 10:45
感谢分享,做个标记备用。
作者: lanlan1923    时间: 2014-12-30 01:50
不好意思想請問下字被卡掉的問題
不管道具名字長短最後部分都會被卡掉,沒辦法像樓主的預覽圖一樣
請問還需要修改哪裡嗎?
謝謝

物品.JPG (31.25 KB, 下载次数: 11)

物品.JPG

作者: fyqinpku    时间: 2015-1-19 18:38
虽然是很久以前的东西了不过还是报告个疑似BUG?:

自定义物品如果勾选了“贵重物品”似乎无法提示得失。
作者: 狼の舞·月    时间: 2015-1-20 23:04
624183062 发表于 2014-2-2 20:11
太感谢了,问题解决了!果断是因为开关的问题!!可是。。。
http://rpg.blue/forum.php?m ... D368 ...

能不能问下怎么打开开关的..刚接触实在不懂...
作者: 黎O沫    时间: 2015-1-22 16:31
提示文字的时候有音效吗?
作者: 黎O沫    时间: 2015-1-22 16:31
提示文字的时候有音效吗?
作者: konechaos    时间: 2015-1-25 00:18
12年的帖子不知道楼主大大还能不能看到 =   =  虽然使用了脚本但完全不知道游戏里如何设置才能触发.........
作者: m87756570    时间: 2015-1-29 22:56
e ~~~我现在才来学习RMVA是不是晚了点
作者: 624183062    时间: 2015-2-19 12:30
狼の舞·月 发表于 2015-1-20 23:04
能不能问下怎么打开开关的..刚接触实在不懂...

抱歉,刚看到,在事件设置里貌似有个开关,然后选中你想要开启/关闭的开关编号操作就行了゚ ∀゚)ノ
作者: 踢腿水上飘    时间: 2015-11-3 15:04
这个貌似必须在事件打开开关才能用…… 还要判断开关,感觉不是很方便啊,窗口倒是不错
作者: davidyeh2667    时间: 2016-1-3 14:55
版大!
我發現我用的時候 "x2" 的數字會被蓋掉
EX:
獲得物品
     紅藥水   x3

的3會被切一半.......
作者: Starduster    时间: 2016-2-18 12:03
请教一下前辈
为什么我用了脚本之后还是没办法显示出来提示窗口?
作者: 若得若失    时间: 2016-4-6 10:33
@harinlen前辈,你做的这个脚本,我更改字体以后,所显示的文字不全,那个提示框太小了,能不能帮忙解决一下?
改成微软雅黑以后,提示框就无法完全显示内容了,如得到武器X2,只能显示成得到武器X,后面的数字看不见了
作者: 雪蓮姬    时间: 2016-5-9 19:42
lanlan1923 发表于 2014-12-30 01:50
不好意思想請問下字被卡掉的問題
不管道具名字長短最後部分都會被卡掉,沒辦法像樓主的預覽圖一樣
請問還需 ...

我也有這問題,有人可以解答嘛!?
作者: mononobe123    时间: 2019-3-19 15:26
怎麽沒效果呢?




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