#============================================================================== # # ▼ Yanfly Engine Ace - Event Window v1.01 # -- Last Updated: 2011.12.27 # -- Level: Easy, Normal # -- Requires: n/a # #============================================================================== $imported = {} if $imported.nil? $imported["YEA-EventWindow"] = true #============================================================================== # ▼ Updates # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # 2011.12.27 - Bug Fixed: Used the wrong script to hide event window. # 2011.12.26 - Started Script and Finished. # #============================================================================== # ▼ Introduction # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # The Event Window is a new feature added through this script that appears in # the lower left corner of the screen. Whenever the player gains or loses gold # and items, the Event Window is updated to show the changes. In addition to # showing item gains and losses, you may even add in your own text to update # through a Script Call. # #============================================================================== # ▼ Instructions # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save. # # ----------------------------------------------------------------------------- # Script Calls - These commands are used with script calls. # ----------------------------------------------------------------------------- # event_window_add_text(string) # This inserts "string" text into the Event Window. Use \n to designate # linebreaks in the string. If you wish to use text codes, write them in the # strings as \\n[2] or \\c[3] to make them work properly. # # event_window_clear_text # This causes the Event Window to clear all of the stored text. You can choose # whether or not to clear the stored Event Window text every time the player # enters a new map. # #============================================================================== # ▼ Compatibility # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that # it will run with RPG Maker VX without adjusting. # #============================================================================== module YEA module EVENT_WINDOW #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Event Window Switch - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This is the switch used for hiding the event window. When this switch is # ON, the event window will be hidden from view. If it is OFF, the event # window will maintain normal visibility. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- HIDE_SWITCH = 24 # 如果开关打开,不会出现事件窗口。 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - General Event Window Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This section adjusts the event window. These settings adjust the overall # appearance of the event window from the width to the number of lines # shown and the window fade rate. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- NEW_MAP_CLEAR = true # Clear text when entering a new map? WINDOW_WIDTH = 480 # 事件窗口的宽度. VISIBLE_TIME = 180 # 帧窗口是褪色之前可见。 MAX_LINES = 8 # 最大行数显示。 WINDOW_FADE = 8 # 褪色率的事件窗口。 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Event Window Text Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This section adjusts the text that appears in the event window. The text # that appears when an item is found and the text that appears when an item # is lost will always appear before the item found. If there is more than # one item found, the amount text will be added on after followed by the # closing text. When gold is found, no icons will be used. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- HEADER_TEXT = "\e}" # Text that's always used at the head. FOUND_TEXT = "\ec[6]获得\ec[0] " # Text used when an item is found. LOST_TEXT = "\ec[4]失去\ec[0] " # Text used when an item is lost. AMOUNT_TEXT = "×%s" # Text used to display an amount. CLOSER_TEXT = "" # Text that's always used at the end. end # EVENT_WINDOW end # YEA #============================================================================== # ▼ Editting anything past this point may potentially result in causing # computer damage, incontinence, explosion of user's head, coma, death, and/or # halitosis so edit at your own risk. #============================================================================== #============================================================================== # ■ Switch #============================================================================== module Switch #-------------------------------------------------------------------------- # self.hide_event_window #-------------------------------------------------------------------------- def self.hide_event_window return false if YEA::EVENT_WINDOW::HIDE_SWITCH <= 0 return $game_switches[YEA::EVENT_WINDOW::HIDE_SWITCH] end end # Switch #============================================================================== # ■ Numeric #============================================================================== class Numeric #-------------------------------------------------------------------------- # new method: group_digits #-------------------------------------------------------------------------- unless $imported["YEA-CoreEngine"] def group; return self.to_s; end end # $imported["YEA-CoreEngine"] end # Numeric #============================================================================== # ■ Game_Temp #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :event_window_data #-------------------------------------------------------------------------- # new method: add_event_window_data #-------------------------------------------------------------------------- def add_event_window_data(text) @event_window_data = [] if @event_window_data.nil? return if text == "" @event_window_data.push(text) end #-------------------------------------------------------------------------- # new method: clear_event_window_data #-------------------------------------------------------------------------- def clear_event_window_data @event_window_data = [] end end # Game_Temp #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # alias method: command_125 #-------------------------------------------------------------------------- alias game_interpreter_command_125_ew command_125 def command_125 game_interpreter_command_125_ew value = operate_value(@params[0], @params[1], @params[2]) $game_temp.clear_event_window_data event_window_make_gold_text(value) end #-------------------------------------------------------------------------- # alias method: command_126 #-------------------------------------------------------------------------- alias game_interpreter_command_126_ew command_126 def command_126 game_interpreter_command_126_ew value = operate_value(@params[1], @params[2], @params[3]) $game_temp.clear_event_window_data event_window_make_item_text($data_items[@params[0]], value) end #-------------------------------------------------------------------------- # alias method: command_127 #-------------------------------------------------------------------------- alias game_interpreter_command_127_ew command_127 def command_127 game_interpreter_command_127_ew value = operate_value(@params[1], @params[2], @params[3]) $game_temp.clear_event_window_data event_window_make_item_text($data_weapons[@params[0]], value) end #-------------------------------------------------------------------------- # alias method: command_128 #-------------------------------------------------------------------------- alias game_interpreter_command_128_ew command_128 def command_128 game_interpreter_command_128_ew value = operate_value(@params[1], @params[2], @params[3]) event_window_make_item_text($data_armors[@params[0]], value) end #-------------------------------------------------------------------------- # new method: event_window_make_gold_text #-------------------------------------------------------------------------- def event_window_make_gold_text(value) return unless SceneManager.scene_is?(Scene_Map) return if Switch.hide_event_window if value > 0 text = YEA::EVENT_WINDOW::FOUND_TEXT elsif value < 0 text = YEA::EVENT_WINDOW::LOST_TEXT else; return end text += sprintf("%s%s", value.abs.group, Vocab::currency_unit) event_window_add_text(text) end #-------------------------------------------------------------------------- # new method: event_window_make_item_text #-------------------------------------------------------------------------- def event_window_make_item_text(item, value) return unless SceneManager.scene_is?(Scene_Map) return if Switch.hide_event_window if value > 0 text = YEA::EVENT_WINDOW::FOUND_TEXT elsif value < 0 text = YEA::EVENT_WINDOW::LOST_TEXT else; return end text += sprintf("\ei[%d]%s", item.icon_index, item.name) if value.abs > 1 fmt = YEA::EVENT_WINDOW::AMOUNT_TEXT text += sprintf(fmt, value.abs.group) end event_window_add_text(text) end #-------------------------------------------------------------------------- # new method: event_window_add_text #-------------------------------------------------------------------------- def event_window_add_text(text) return unless SceneManager.scene_is?(Scene_Map) return if Switch.hide_event_window text = YEA::EVENT_WINDOW::HEADER_TEXT + text text += YEA::EVENT_WINDOW::CLOSER_TEXT SceneManager.scene.event_window_add_text(text) end #-------------------------------------------------------------------------- # new method: event_window_clear_text #-------------------------------------------------------------------------- def event_window_clear_text $game_temp.clear_event_window_data end end # Game_Interpreter #============================================================================== # ■ Window_EventWindow #============================================================================== class Window_EventWindow < Window_Selectable #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize dw = YEA::EVENT_WINDOW::WINDOW_WIDTH super(0, 0, dw, fitting_height(YEA::EVENT_WINDOW::MAX_LINES)) self.x -= 12 self.opacity = 0 self.contents_opacity = 0 @visible_counter = 0 modify_skin deactivate end #-------------------------------------------------------------------------- # modify_skin #-------------------------------------------------------------------------- def modify_skin dup_skin = self.windowskin.dup dup_skin.clear_rect(64, 0, 64, 64) dup_skin.clear_rect(64, 64, 32, 32) self.windowskin = dup_skin end #-------------------------------------------------------------------------- # item_max #-------------------------------------------------------------------------- def item_max return $game_temp.event_window_data ? $game_temp.event_window_data.size : 1 end #-------------------------------------------------------------------------- # update #-------------------------------------------------------------------------- def update super self.visible = show_window? update_visible_counter update_contents_opacity end #-------------------------------------------------------------------------- # show_window? #-------------------------------------------------------------------------- def show_window? return false if $game_message.visible return true end #-------------------------------------------------------------------------- # update_visible_counter #-------------------------------------------------------------------------- def update_visible_counter return if @visible_counter <= 0 @visible_counter -= 1 end #-------------------------------------------------------------------------- # update_contents_opacity #-------------------------------------------------------------------------- def update_contents_opacity return if @visible_counter > 0 return if self.contents_opacity <= 0 self.contents_opacity -= YEA::EVENT_WINDOW::WINDOW_FADE end #-------------------------------------------------------------------------- # instant_hide #-------------------------------------------------------------------------- def instant_hide @visible_counter = 0 self.contents_opacity = 0 end #-------------------------------------------------------------------------- # add_text #-------------------------------------------------------------------------- def add_text(text) $game_temp.add_event_window_data(text) refresh self.contents_opacity = 255 @visible_counter = YEA::EVENT_WINDOW::VISIBLE_TIME change_y_position select(item_max - 1) end #-------------------------------------------------------------------------- # change_y_position 这里的数字可以改变显示条的位置,数字越小越低。 #-------------------------------------------------------------------------- def change_y_position maximum = [item_max, YEA::EVENT_WINDOW::MAX_LINES].min self.y = Graphics.height - fitting_height(maximum) - 180 end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh create_contents draw_all_items end #-------------------------------------------------------------------------- # draw_item #-------------------------------------------------------------------------- def draw_item(index) $game_temp.clear_event_window_data if $game_temp.event_window_data.nil? item = $game_temp.event_window_data[index] return if item.nil? rect = item_rect(index) draw_background(rect) rect.x += 4 rect.width -= 8 draw_text_ex(rect.x, rect.y, item) end #-------------------------------------------------------------------------- # draw_background #-------------------------------------------------------------------------- def draw_background(rect) back_colour1 = Color.new(72, 209,204, 62) back_colour2 = Color.new(0, 0, 0, 0) contents.gradient_fill_rect(rect, back_colour1, back_colour2) end end # Window_EventWindow #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # alias method: create_all_windows #-------------------------------------------------------------------------- alias scene_map_create_all_windows_event_window create_all_windows def create_all_windows scene_map_create_all_windows_event_window create_event_window end #-------------------------------------------------------------------------- # new method: create_event_window #-------------------------------------------------------------------------- def create_event_window @event_window = Window_EventWindow.new end #-------------------------------------------------------------------------- # new method: event_window_add_text #-------------------------------------------------------------------------- def event_window_add_text(text) Sound.play_shop @event_window.add_text(text) end #-------------------------------------------------------------------------- # alias method: post_transfer #-------------------------------------------------------------------------- alias scene_map_post_transfer_ew post_transfer def post_transfer $game_temp.clear_event_window_data if YEA::EVENT_WINDOW::NEW_MAP_CLEAR @event_window.instant_hide scene_map_post_transfer_ew end end # Scene_Map #============================================================================== # # ▼ End of File # #==============================================================================
B2EXOH%PGVB6PN0BUF(5MPK.png (23.94 KB, 下载次数: 26)
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |