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

Project1

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

[已经过期] 获得物品提示脚本,如何增加显示数量和多物品显示

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
49 小时
注册时间
2013-5-23
帖子
16
跳转到指定楼层
1
发表于 2013-6-5 22:19:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RUBY 代码复制
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - Event Window v1.01
  4. # -- Last Updated: 2011.12.27
  5. # -- Level: Easy, Normal
  6. # -- Requires: n/a
  7. #
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported["YEA-EventWindow"] = true
  12.  
  13. #==============================================================================
  14. # ▼ Updates
  15. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  16. # 2011.12.27 - Bug Fixed: Used the wrong script to hide event window.
  17. # 2011.12.26 - Started Script and Finished.
  18. #
  19. #==============================================================================
  20. # ▼ Introduction
  21. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  22. # The Event Window is a new feature added through this script that appears in
  23. # the lower left corner of the screen. Whenever the player gains or loses gold
  24. # and items, the Event Window is updated to show the changes. In addition to
  25. # showing item gains and losses, you may even add in your own text to update
  26. # through a Script Call.
  27. #
  28. #==============================================================================
  29. # ▼ Instructions
  30. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  31. # To install this script, open up your script editor and copy/paste this script
  32. # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
  33. #
  34. # -----------------------------------------------------------------------------
  35. # Script Calls - These commands are used with script calls.
  36. # -----------------------------------------------------------------------------
  37. # event_window_add_text(string)
  38. # This inserts "string" text into the Event Window. Use \n to designate
  39. # linebreaks in the string. If you wish to use text codes, write them in the
  40. # strings as \\n[2] or \\c[3] to make them work properly.
  41. #
  42. # event_window_clear_text
  43. # This causes the Event Window to clear all of the stored text. You can choose
  44. # whether or not to clear the stored Event Window text every time the player
  45. # enters a new map.
  46. #
  47. #==============================================================================
  48. # ▼ Compatibility
  49. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  50. # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
  51. # it will run with RPG Maker VX without adjusting.
  52. #
  53. #==============================================================================
  54.  
  55. module YEA
  56.   module EVENT_WINDOW
  57.  
  58.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  59.     # - Event Window Switch -
  60.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  61.     # This is the switch used for hiding the event window. When this switch is
  62.     # ON, the event window will be hidden from view. If it is OFF, the event
  63.     # window will maintain normal visibility.
  64.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  65.     HIDE_SWITCH = 24       # If switch is ON, event window will not appear.
  66.  
  67.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  68.     # - General Event Window Settings -
  69.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  70.     # This section adjusts the event window. These settings adjust the overall
  71.     # appearance of the event window from the width to the number of lines
  72.     # shown and the window fade rate.
  73.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  74.     NEW_MAP_CLEAR = true    # Clear text when entering a new map?
  75.     WINDOW_WIDTH  = 280     # Event Window width.
  76.     VISIBLE_TIME  = 180     # Frames the window is visible before fading.
  77.     MAX_LINES     = 4       # Maximum number of lines shown.
  78.     WINDOW_FADE   = 8       # Fade rate for the Event Window.
  79.  
  80.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  81.     # - Event Window Text Settings -
  82.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  83.     # This section adjusts the text that appears in the event window. The text
  84.     # that appears when an item is found and the text that appears when an item
  85.     # is lost will always appear before the item found. If there is more than
  86.     # one item found, the amount text will be added on after followed by the
  87.     # closing text. When gold is found, no icons will be used.
  88.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  89.     HEADER_TEXT = "\e}"                # Text that's always used at the head.
  90.     FOUND_TEXT  = "\ec[6]获得\ec[0] "   # Text used when an item is found.
  91.     LOST_TEXT   = "\ec[4]失去\ec[0] "    # Text used when an item is lost.
  92.     AMOUNT_TEXT = "×%s"                  # Text used to display an amount.
  93.     CLOSER_TEXT = ""                   # Text that's always used at the end.
  94.  
  95.   end # EVENT_WINDOW
  96. end # YEA
  97.  
  98. #==============================================================================
  99. # ▼ Editting anything past this point may potentially result in causing
  100. # computer damage, incontinence, explosion of user's head, coma, death, and/or
  101. # halitosis so edit at your own risk.
  102. #==============================================================================
  103.  
  104. #==============================================================================
  105. # ■ Switch
  106. #==============================================================================
  107.  
  108. module Switch
  109.  
  110.   #--------------------------------------------------------------------------
  111.   # self.hide_event_window
  112.   #--------------------------------------------------------------------------
  113.   def self.hide_event_window
  114.     return false if YEA::EVENT_WINDOW::HIDE_SWITCH <= 0
  115.     return $game_switches[YEA::EVENT_WINDOW::HIDE_SWITCH]
  116.   end
  117.  
  118. end # Switch
  119.  
  120. #==============================================================================
  121. # ■ Numeric
  122. #==============================================================================
  123.  
  124. class Numeric
  125.  
  126.   #--------------------------------------------------------------------------
  127.   # new method: group_digits
  128.   #--------------------------------------------------------------------------
  129.   unless $imported["YEA-CoreEngine"]
  130.   def group; return self.to_s; end
  131.   end # $imported["YEA-CoreEngine"]
  132.  
  133. end # Numeric
  134.  
  135. #==============================================================================
  136. # ■ Game_Temp
  137. #==============================================================================
  138.  
  139. class Game_Temp
  140.  
  141.   #--------------------------------------------------------------------------
  142.   # public instance variables
  143.   #--------------------------------------------------------------------------
  144.   attr_accessor :event_window_data
  145.  
  146.   #--------------------------------------------------------------------------
  147.   # new method: add_event_window_data
  148.   #--------------------------------------------------------------------------
  149.   def add_event_window_data(text)
  150.     @event_window_data = [] if @event_window_data.nil?
  151.     return if text == ""
  152.     @event_window_data.push(text)
  153.   end
  154.  
  155.   #--------------------------------------------------------------------------
  156.   # new method: clear_event_window_data
  157.   #--------------------------------------------------------------------------
  158.   def clear_event_window_data
  159.     @event_window_data = []
  160.   end
  161.  
  162. end # Game_Temp
  163.  
  164. #==============================================================================
  165. # ■ Game_Interpreter
  166. #==============================================================================
  167.  
  168. class Game_Interpreter
  169.  
  170.   #--------------------------------------------------------------------------
  171.   # alias method: command_125
  172.   #--------------------------------------------------------------------------
  173.   alias game_interpreter_command_125_ew command_125
  174.   def command_125
  175.     game_interpreter_command_125_ew
  176.     value = operate_value(@params[0], @params[1], @params[2])
  177.     $game_temp.clear_event_window_data
  178.     event_window_make_gold_text(value)
  179.   end
  180.  
  181.   #--------------------------------------------------------------------------
  182.   # alias method: command_126
  183.   #--------------------------------------------------------------------------
  184.   alias game_interpreter_command_126_ew command_126
  185.   def command_126
  186.     game_interpreter_command_126_ew
  187.     value = operate_value(@params[1], @params[2], @params[3])
  188.     $game_temp.clear_event_window_data
  189.     event_window_make_item_text($data_items[@params[0]], value)
  190.   end
  191.  
  192.   #--------------------------------------------------------------------------
  193.   # alias method: command_127
  194.   #--------------------------------------------------------------------------
  195.   alias game_interpreter_command_127_ew command_127
  196.   def command_127
  197.     game_interpreter_command_127_ew
  198.     value = operate_value(@params[1], @params[2], @params[3])
  199.     $game_temp.clear_event_window_data
  200.     event_window_make_item_text($data_weapons[@params[0]], value)
  201.   end
  202.  
  203.   #--------------------------------------------------------------------------
  204.   # alias method: command_128
  205.   #--------------------------------------------------------------------------
  206.   alias game_interpreter_command_128_ew command_128
  207.   def command_128
  208.     game_interpreter_command_128_ew
  209.     value = operate_value(@params[1], @params[2], @params[3])
  210.     event_window_make_item_text($data_armors[@params[0]], value)
  211.   end
  212.  
  213.   #--------------------------------------------------------------------------
  214.   # new method: event_window_make_gold_text
  215.   #--------------------------------------------------------------------------
  216.   def event_window_make_gold_text(value)
  217.     return unless SceneManager.scene_is?(Scene_Map)
  218.     return if Switch.hide_event_window
  219.     if value > 0
  220.       text = YEA::EVENT_WINDOW::FOUND_TEXT
  221.     elsif value < 0
  222.       text = YEA::EVENT_WINDOW::LOST_TEXT
  223.     else; return
  224.     end
  225.     text += sprintf("%s%s", value.abs.group, Vocab::currency_unit)
  226.     event_window_add_text(text)
  227.   end
  228.  
  229.   #--------------------------------------------------------------------------
  230.   # new method: event_window_make_item_text
  231.   #--------------------------------------------------------------------------
  232.   def event_window_make_item_text(item, value)
  233.     return unless SceneManager.scene_is?(Scene_Map)
  234.     return if Switch.hide_event_window
  235.     if value > 0
  236.       text = YEA::EVENT_WINDOW::FOUND_TEXT
  237.     elsif value < 0
  238.       text = YEA::EVENT_WINDOW::LOST_TEXT
  239.     else; return
  240.     end
  241.     text += sprintf("\ei[%d]%s", item.icon_index, item.name)
  242.     if value.abs > 1
  243.       fmt = YEA::EVENT_WINDOW::AMOUNT_TEXT
  244.       text += sprintf(fmt, value.abs.group)
  245.     end
  246.     event_window_add_text(text)
  247.   end
  248.  
  249.   #--------------------------------------------------------------------------
  250.   # new method: event_window_add_text
  251.   #--------------------------------------------------------------------------
  252.   def event_window_add_text(text)
  253.     return unless SceneManager.scene_is?(Scene_Map)
  254.     return if Switch.hide_event_window
  255.     text = YEA::EVENT_WINDOW::HEADER_TEXT + text
  256.     text += YEA::EVENT_WINDOW::CLOSER_TEXT
  257.     SceneManager.scene.event_window_add_text(text)
  258.   end
  259.  
  260.   #--------------------------------------------------------------------------
  261.   # new method: event_window_clear_text
  262.   #--------------------------------------------------------------------------
  263.   def event_window_clear_text
  264.     $game_temp.clear_event_window_data
  265.   end
  266.  
  267. end # Game_Interpreter
  268.  
  269. #==============================================================================
  270. # ■ Window_EventWindow
  271. #==============================================================================
  272.  
  273. class Window_EventWindow < Window_Selectable
  274.  
  275.   #--------------------------------------------------------------------------
  276.   # initialize
  277.   #--------------------------------------------------------------------------
  278.   def initialize
  279.     dw = YEA::EVENT_WINDOW::WINDOW_WIDTH
  280.     super(0, 0, dw, fitting_height(YEA::EVENT_WINDOW::MAX_LINES))
  281.     self.x -= 12
  282.     self.opacity = 0
  283.     self.contents_opacity = 0
  284.     @visible_counter = 0
  285.     modify_skin
  286.     deactivate
  287.   end
  288.  
  289.   #--------------------------------------------------------------------------
  290.   # modify_skin
  291.   #--------------------------------------------------------------------------
  292.   def modify_skin
  293.     dup_skin = self.windowskin.dup
  294.     dup_skin.clear_rect(64,  0, 64, 64)
  295.     dup_skin.clear_rect(64, 64, 32, 32)
  296.     self.windowskin = dup_skin
  297.   end
  298.  
  299.   #--------------------------------------------------------------------------
  300.   # item_max
  301.   #--------------------------------------------------------------------------
  302.   def item_max
  303.     return $game_temp.event_window_data ? $game_temp.event_window_data.size : 1
  304.   end
  305.  
  306.   #--------------------------------------------------------------------------
  307.   # update
  308.   #--------------------------------------------------------------------------
  309.   def update
  310.     super
  311.     self.visible = show_window?
  312.     update_visible_counter
  313.     update_contents_opacity
  314.   end
  315.  
  316.   #--------------------------------------------------------------------------
  317.   # show_window?
  318.   #--------------------------------------------------------------------------
  319.   def show_window?
  320.     return false if $game_message.visible
  321.     return true
  322.   end
  323.  
  324.   #--------------------------------------------------------------------------
  325.   # update_visible_counter
  326.   #--------------------------------------------------------------------------
  327.   def update_visible_counter
  328.     return if @visible_counter <= 0
  329.     @visible_counter -= 1
  330.   end
  331.  
  332.   #--------------------------------------------------------------------------
  333.   # update_contents_opacity
  334.   #--------------------------------------------------------------------------
  335.   def update_contents_opacity
  336.     return if @visible_counter > 0
  337.     return if self.contents_opacity <= 0
  338.     self.contents_opacity -= YEA::EVENT_WINDOW::WINDOW_FADE
  339.   end
  340.  
  341.   #--------------------------------------------------------------------------
  342.   # instant_hide
  343.   #--------------------------------------------------------------------------
  344.   def instant_hide
  345.     @visible_counter = 0
  346.     self.contents_opacity = 0
  347.   end
  348.  
  349.   #--------------------------------------------------------------------------
  350.   # add_text
  351.   #--------------------------------------------------------------------------
  352.   def add_text(text)
  353.     $game_temp.add_event_window_data(text)
  354.     refresh
  355.     self.contents_opacity = 255
  356.     @visible_counter = YEA::EVENT_WINDOW::VISIBLE_TIME
  357.     change_y_position
  358.     select(item_max - 1)
  359.   end
  360.  
  361.   #--------------------------------------------------------------------------
  362.   # change_y_position  这里的数字可以改变显示条的位置,数字越小越低。
  363.   #--------------------------------------------------------------------------
  364.   def change_y_position
  365.     maximum = [item_max, YEA::EVENT_WINDOW::MAX_LINES].min
  366.     self.y = Graphics.height - fitting_height(maximum) - 180
  367.   end
  368.  
  369.   #--------------------------------------------------------------------------
  370.   # refresh
  371.   #--------------------------------------------------------------------------
  372.   def refresh
  373.     create_contents
  374.     draw_all_items
  375.   end
  376.  
  377.   #--------------------------------------------------------------------------
  378.   # draw_item
  379.   #--------------------------------------------------------------------------
  380.   def draw_item(index)
  381.     $game_temp.clear_event_window_data if $game_temp.event_window_data.nil?
  382.     item = $game_temp.event_window_data[index]
  383.     return if item.nil?
  384.     rect = item_rect(index)
  385.     draw_background(rect)
  386.     rect.x += 4
  387.     rect.width -= 8
  388.     draw_text_ex(rect.x, rect.y, item)
  389.   end
  390.  
  391.   #--------------------------------------------------------------------------
  392.   # draw_background
  393.   #--------------------------------------------------------------------------
  394.   def draw_background(rect)
  395.     back_colour1 = Color.new(0, 0, 0, 96)
  396.     back_colour2 = Color.new(0, 0, 0, 0)
  397.     contents.gradient_fill_rect(rect, back_colour1, back_colour2)
  398.   end
  399.  
  400. end # Window_EventWindow
  401.  
  402. #==============================================================================
  403. # ■ Scene_Map
  404. #==============================================================================
  405.  
  406. class Scene_Map < Scene_Base
  407.  
  408.   #--------------------------------------------------------------------------
  409.   # alias method: create_all_windows
  410.   #--------------------------------------------------------------------------
  411.   alias scene_map_create_all_windows_event_window create_all_windows
  412.   def create_all_windows
  413.     scene_map_create_all_windows_event_window
  414.     create_event_window
  415.   end
  416.  
  417.   #--------------------------------------------------------------------------
  418.   # new method: create_event_window
  419.   #--------------------------------------------------------------------------
  420.   def create_event_window
  421.     @event_window = Window_EventWindow.new
  422.   end
  423.  
  424.   #--------------------------------------------------------------------------
  425.   # new method: event_window_add_text
  426.   #--------------------------------------------------------------------------
  427.   def event_window_add_text(text)
  428.     Sound.play_shop
  429.     @event_window.add_text(text)
  430.   end
  431.  
  432.   #--------------------------------------------------------------------------
  433.   # alias method: post_transfer
  434.   #--------------------------------------------------------------------------
  435.   alias scene_map_post_transfer_ew post_transfer
  436.   def post_transfer
  437.     $game_temp.clear_event_window_data if YEA::EVENT_WINDOW::NEW_MAP_CLEAR
  438.     @event_window.instant_hide
  439.     scene_map_post_transfer_ew
  440.   end
  441.  
  442. end # Scene_Map
  443.  
  444. #==============================================================================
  445. #
  446. # ▼ End of File
  447. #
  448. #==============================================================================


脚本如上,请指教
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-18 16:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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