Project1

标题: 【VA】道具提示系统 2.01 [打印本页]

作者: 804173948    时间: 2015-7-14 21:23
标题: 【VA】道具提示系统 2.01
本帖最后由 804173948 于 2015-7-15 11:15 编辑

更新日志:
15.7.14
  2.00 发布
15.7.15
  2.01 发布
    修改了边框绘制的一些问题


第一代 传送门
第一代因为要用事件的脚本才能实现这些功能,不能直接用事件的【增减物品】,【增减防具】等指令来实现
所以,第二代出现了!!
第二代最大的不同就是,直接用事件的【增减物品】,【增减防具】等指令就可以实现第一代的效果
而且还增加了金钱提示和升级提示

使用说明直接用脚本的说明:
=begin
================================
  道具提示系统 2   By 804173948
================================

  基本的使用方法和得失物品大致相同
  效果和道具提示系统 1 大致相同

  
  使用方法:
    直接在事件中用【增减物品】,【增减武器】,【增减护甲】,【增减金钱】,【增减等级】
    等指令即可出现提示框
    物品提示框持续时间可以通过 事件-脚本:$game_itemprompt.dis_count = 持续帧数
      【注意,只对当前显示的内容有效,一般都是自动计算持续时间,
      计算公式在 NIS_ItemPromptGroup 脚本的 81 行】
    文字提示框持续时间可以通过 事件-脚本:$game_message2.dis_count = 持续帧数
      【注意,只对当前显示的内容有效,一般都是自动计算持续时间,
      计算公式在 NIS_Message 脚本的 66 行】
    提示框可以通过按下确认键或取消键让其消失,可以在本脚本 43~44 行设置
   
    使用事件-脚本:show_prompt 可以强行显示提示框【虽然不建议这么做而且也没意义】
   
    使用事件-脚本:clear_get_prompt 可以清除“得到道具”的提示框的内容并关闭该提示框
    使用事件-脚本:clear_lose_prompt 可以清除“失去道具”的提示框的内容并关闭该提示框

    使用事件-脚本:clear_all_prompt 可以清除所有提示框的内容并关闭所有提示框
   
    使用事件-脚本:$game_itemprompt.create_prompt(提示框x坐标,提示框y坐标,提示框头文字,提示框默认持续时间,提示框初始道具)
      可以新建一个提示框(虽然感觉这没什么用),提示框最多 8 个
      因为这个功能没什么用所以就不讲解啦【因为我不知道怎么说- -】
      
    更多功能请参考 NIS_ItemPromptGroup 类
   
=end

以下是截图0.0

升级降级提示

得失物品提示【右边那个帮助窗口可以设置为不显示】



【可以实现刷屏效果23333


范例【然而我就喜欢设经验】:
道具提示系统2.zip (1.68 MB, 下载次数: 343)

求糖0.0
作者: 子程    时间: 2015-7-14 21:32
师傅我等级不够不能加分
作者: chd114    时间: 2015-7-14 21:53
最后一张图老实说不美观···看起来在获得的时候获得提示里是可以移动光标查看属性的···那可以设置一下单次最大显示行数,多出的就下滑
作者: fox1313304    时间: 2015-7-14 23:31
徒儿我来支持你了
作者: @npc    时间: 2015-7-15 13:20
哇,居然还能刷屏····虽然我不需要,还是来支持
作者: 1243852    时间: 2016-2-18 22:01
本帖最后由 1243852 于 2016-2-18 22:20 编辑

请问你那个 自定义创建窗口。

我写了个事件脚本

$game_itemprompt.create_prompt(
150,300,"获得神级磁场",60,50)

大概是这个意思。 坐标暂时乱填的。。
但是执行后,没有任何反应。。 也没提示错误?
怎么回事?  

我使用了一套随机装备属性的脚本,那套脚本获得装备时,无法显示提示。试了很多提示脚本了,都不行。

QQ图片20160218220013.png (22.69 KB, 下载次数: 20)

QQ图片20160218220013.png

作者: 804173948    时间: 2016-2-18 23:03
1243852 发表于 2016-2-18 22:01
请问你那个 自定义创建窗口。

我写了个事件脚本

那个$game_itemprompt.create_prompt 是创建提示框...没有效果...就只是在后台创建一个而已
然后那些随机装备属性那个是不会显示的。。现在只有用事件指令才会显示
作者: 1243852    时间: 2016-2-19 08:56
804173948 发表于 2016-2-18 23:03
那个$game_itemprompt.create_prompt 是创建提示框...没有效果...就只是在后台创建一个而已
然后那些随机 ...

没有办法修改吗?修改成能够显示随机装备?
作者: 804173948    时间: 2016-2-19 20:47
1243852 发表于 2016-2-19 08:56
没有办法修改吗?修改成能够显示随机装备?

新的脚本,替换应该就行了
  1. =begin
  2. ================================
  3.   道具提示系统 2   By 804173948
  4. ================================

  5.   基本的使用方法和得失物品大致相同
  6.   效果和道具提示系统 1 大致相同

  7.   
  8.   使用方法:
  9.     直接在事件中用【增减物品】,【增减武器】,【增减护甲】,【增减金钱】,【增减等级】
  10.     等指令即可出现提示框
  11.     物品提示框持续时间可以通过 事件-脚本:$game_itemprompt.dis_count = 持续帧数
  12.       【注意,只对当前显示的内容有效,一般都是自动计算持续时间,
  13.       计算公式在 NIS_ItemPromptGroup 脚本的 81 行】
  14.     文字提示框持续时间可以通过 事件-脚本:$game_message2.dis_count = 持续帧数
  15.       【注意,只对当前显示的内容有效,一般都是自动计算持续时间,
  16.       计算公式在 NIS_Message 脚本的 66 行】
  17.     提示框可以通过按下确认键或取消键让其消失,可以在本脚本 43~44 行设置
  18.    
  19.     使用事件-脚本:show_prompt 可以强行显示提示框【虽然不建议这么做而且也没意义】
  20.    
  21.     使用事件-脚本:clear_get_prompt 可以清除“得到道具”的提示框的内容并关闭该提示框
  22.     使用事件-脚本:clear_lose_prompt 可以清除“失去道具”的提示框的内容并关闭该提示框

  23.     使用事件-脚本:clear_all_prompt 可以清除所有提示框的内容并关闭所有提示框
  24.    
  25.     使用事件-脚本:$game_itemprompt.create_prompt(提示框x坐标,提示框y坐标,提示框头文字,提示框默认持续时间,提示框初始道具)
  26.       可以新建一个提示框(虽然感觉这没什么用),提示框最多 8 个
  27.       因为这个功能没什么用所以就不讲解啦【因为我不知道怎么说- -】
  28.       
  29.     更多功能请参考 NIS_ItemPromptGroup 类
  30.    
  31. =end
  32. # 開關定義:
  33. module Prompt
  34.   Noshowgold = 97                        # 不显示金钱得失

  35.   Noshowitem = 98                        # 不显示物品得失

  36.   Noshowweapon = 99                      # 不显示武器得失

  37.   Noshowarmor = 100                      # 不显示防具得失
  38.   # 以上開關,當打開的時候,獲得物品將不會提示,比如默認打開41號開關,獲得金錢不再提示

  39.   # 不想提示等级升降时,就在事件命令直接选择是否显示就行了。

  40.   #——聲效,可以自己改
  41.   Gain_gold_se   = "Audio/SE/Shop"      # 获得金钱声效
  42.   Lose_gold_se   = "Audio/SE/Blow2"     # 失去金钱声效

  43.   Show_prompt_se = "Audio/SE/Item1"     # 显示物品提示声效

  44.   Gain_lv_se     = "Audio/SE/Item1"     # 提升等级声效
  45.   Lose_lv_se     = "Audio/SE/Blow2"     # 降低等级声效
  46.   
  47.   Show_help      = true                 # 提示窗口显示帮助
  48.   
  49.   OK_back        = true                 # 提示窗口中,按确认键关闭窗口
  50.   Cancel_back    = true                 # 提示窗口中,按取消键关闭窗口
  51. end
  52. class Game_Interpreter
  53.   include Prompt
  54.   #--------------------------------------------------------------------------
  55.   # ● 增減金錢
  56.   #--------------------------------------------------------------------------
  57.   def command_125
  58.     value = operate_value(@params[0], @params[1], @params[2])
  59.     $game_message2.text ||= ""
  60.     $game_party.gain_gold(value)
  61.     if !$game_switches[Noshowgold]
  62.       $game_message2.text += (value >= 0 ? "\001[255,255,128]获得了 " : "\001[255,128,128]失去了 ")+value.abs.to_s+" "+Vocab.currency_unit+"\n"
  63.       value >=0 ? Audio.se_play(Gain_gold_se,80,100) : Audio.se_play(Lose_gold_se,80,100)
  64.     end
  65.     return true
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 等级増減
  69.   #--------------------------------------------------------------------------
  70.   def command_316
  71.     value = operate_value(@params[2], @params[3], @params[4])
  72.     iterate_actor_var(@params[0], @params[1]) do |actor|
  73.       $game_message2.text ||= ""
  74.       actor.change_level(actor.level + value, @params[5])
  75.       if @params[4]
  76.         $game_message2.text += (value >= 0 ? "\001[255,255,128]"+actor.name+" 提升了 " : "\001[255,128,128]"+actor.name+" 降低了 ")+value.abs.to_s+" "+Vocab.level+"\n"
  77.         value >=0 ? Audio.se_play(Gain_lv_se,80,100) : Audio.se_play(Lose_lv_se,80,100)
  78.       end
  79.     end
  80.     return true
  81.   end
  82.   
  83.   #--------------------------------------------------------------------------
  84.   # ● 显示提示
  85.   #--------------------------------------------------------------------------
  86.   def show_prompt
  87.     Audio.se_play(Show_prompt_se,80,100)
  88.     $game_itemprompt.show_prompt($game_itemprompt.get_index)
  89.     $game_itemprompt.show_prompt($game_itemprompt.lose_index)
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 清除获得提示
  93.   #--------------------------------------------------------------------------
  94.   def clear_get_prompt
  95.     $game_itemprompt.clear_prompt($game_itemprompt.get_index)
  96.     $game_itemprompt.hide_prompt($game_itemprompt.get_index)
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 清除失去提示
  100.   #--------------------------------------------------------------------------
  101.   def clear_lose_prompt
  102.     $game_itemprompt.clear_prompt($game_itemprompt.lose_index)
  103.     $game_itemprompt.hide_prompt($game_itemprompt.lose_index)
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 清除所有提示
  107.   #--------------------------------------------------------------------------
  108.   def clear_all_prompt
  109.     $game_itemprompt.clear_all_prompt
  110.     $game_itemprompt.hide_all_prompt
  111.   end
  112.   
  113. end
  114. #encoding:utf-8
  115. #==============================================================================
  116. # ■ Scene_Base
  117. #------------------------------------------------------------------------------
  118. #  游戏中所有 Scene 类(场景类)的父类
  119. #==============================================================================

  120. class Scene_Base
  121.   #--------------------------------------------------------------------------
  122.   # ● 更新所有窗口
  123.   #--------------------------------------------------------------------------
  124.   alias old_update_all_windows update_all_windows
  125.   def update_all_windows
  126.     old_update_all_windows
  127.     $game_message2.update
  128.     $game_itemprompt.update
  129.   end
  130. end
  131. module DataManager
  132.   class << self
  133.     alias :old_create_game_objects :create_game_objects unless method_defined?(:old_create_game_objects)
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● 初始化得失提示
  137.   #--------------------------------------------------------------------------
  138.   def self.create_game_objects
  139.     old_create_game_objects
  140.     $game_message2      = NIS_Message.new
  141.     $game_itemprompt    = NIS_ItemPromptGroup.new
  142.   end
  143. end

  144. class Game_Party
  145.   #--------------------------------------------------------------------------
  146.   # ● 增加/减少物品
  147.   #     include_equip : 是否包括装备
  148.   #--------------------------------------------------------------------------
  149.   def gain_item(item, amount, include_equip = false)
  150.     container = item_container(item.class)
  151.     return unless container
  152.     show_prompt = false
  153.     case item.class.to_s
  154.     when "RPG::Item"
  155.       show_prompt = !$game_switches[Prompt::Noshowitem]
  156.     when "RPG::Weapon"
  157.       show_prompt = !$game_switches[Prompt::Noshowweapon]
  158.     when "RPG::Armor"
  159.       show_prompt = !$game_switches[Prompt::Noshowarmor]
  160.     end
  161.     if show_prompt
  162.       v = amount.abs
  163.       v.times{ $game_itemprompt.push_item_to_prompt(item,amount >= 0 ? $game_itemprompt.get_index : $game_itemprompt.lose_index) }
  164.       prompt_show
  165.     end
  166.     last_number = item_number(item)
  167.     new_number = last_number + amount
  168.     container[item.id] = [[new_number, 0].max, max_item_number(item)].min
  169.     container.delete(item.id) if container[item.id] == 0
  170.     if include_equip && new_number < 0
  171.       discard_members_equip(item, -new_number)
  172.     end
  173.     $game_map.need_refresh = true
  174.   end
  175.   
  176.   #--------------------------------------------------------------------------
  177.   # ● 显示提示
  178.   #--------------------------------------------------------------------------
  179.   def prompt_show
  180.     Audio.se_play(Prompt::Show_prompt_se,80,100)
  181.     $game_itemprompt.show_prompt($game_itemprompt.get_index)
  182.     $game_itemprompt.show_prompt($game_itemprompt.lose_index)
  183.   end
  184. end
复制代码

作者: 804173948    时间: 2016-2-20 20:45
1243852 发表于 2016-2-19 08:56
没有办法修改吗?修改成能够显示随机装备?


将161行的 gain_item 换成这个【未测试】
  1.   #--------------------------------------------------------------------------
  2.   # ● 增加/减少物品
  3.   #     include_equip : 是否包括装备
  4.   #--------------------------------------------------------------------------
  5.   def gain_item(item, amount, include_equip = false)
  6.     container = item_container(item.class)
  7.     return unless container
  8.     if SceneManager.scene.is_a?(Scene_Map)
  9.       show_prompt = false
  10.       case item.class.to_s
  11.       when "RPG::Item"
  12.         show_prompt = !$game_switches[Prompt::Noshowitem]
  13.       when "RPG::Weapon"
  14.         show_prompt = !$game_switches[Prompt::Noshowweapon]
  15.       when "RPG::Armor"
  16.         show_prompt = !$game_switches[Prompt::Noshowarmor]
  17.       end
  18.       
  19.       if show_prompt
  20.         v = amount.abs
  21.         v.times{ $game_itemprompt.push_item_to_prompt(item,amount >= 0 ? $game_itemprompt.get_index : $game_itemprompt.lose_index) }
  22.         prompt_show
  23.       end
  24.     end
  25.     last_number = item_number(item)
  26.     new_number = last_number + amount
  27.     container[item.id] = [[new_number, 0].max, max_item_number(item)].min
  28.     container.delete(item.id) if container[item.id] == 0
  29.     if include_equip && new_number < 0
  30.       discard_members_equip(item, -new_number)
  31.     end
  32.     $game_map.need_refresh = true
  33.   end
复制代码





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