3.图书馆的随机礼物怎么多弄个图标显示:变成这样的效果:获得: 物品的名称 物品对应的图标 如果恢复剂就是 获得恢复剂 恢复剂的图标
#============================================================================== # # ▼ Yanfly Engine Ace - Active Chain Skills v1.01 # -- Last Updated: 2011.12.22 # -- Level: Hard # -- Requires: n/a # #============================================================================== $imported = {} if $imported.nil? $imported["YEA-ActiveChainSkills"] = true #============================================================================== # ▼ Updates # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # 2011.12.22 - Better updating speed for window. # 2011.12.18 - Started Script and Finished. # #============================================================================== # ▼ Introduction # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # 這腳本實現了主動連技的可能性,當帶有連技屬性的技能發動時,畫面左下方會出現 # 可以連甚麼技的訊息列表,透過簡單QTE,能立刻發動下一招連技。理論上,只要有足夠 # 的資源(MP, TP) 和連技屬性的設定,是可以無限連技的。 #============================================================================== # ▼ 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. # # ----------------------------------------------------------------------------- # 以下是要放進[技能][註]的東東 # ----------------------------------------------------------------------------- # <chain skill L: x> # <chain skill R: x> # <chain skill X: x> # <chain skill Y: x> # <chain skill Z: x> # 這個是給予可連技屬性的東東,X 是技能的編號, 013,102 之類的。放了進去就是代表 # 此技能能連去編號XXX 的技能。當沒有設定時,如只設定了Skill X,Y,Z ,L和R 是不 # 會在連技訊息列表中出現。而不夠資源如MP,TP 時,連技訊息列表中該技能就會黑掉。 # <chain only> # 這個東東是令該技能在正常技能表中不能選擇,只能透過連技去發動。 #============================================================================== # ▼ 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. # # While this script doesn't interfere with Input Combo Skills, it will most # likely be unable to used in conjunction with Input Combo Skills. I will not # provide support for any errors that may occur from this, nor will I be # responsible for any damage doing this may cause your game. # #============================================================================== module YEA module ACTIVE_CHAIN #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Chain Skill Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Adjust general settings here. These settings adjust the sound effect # played when an active skill is selected and what the minimum time window # is for an active chain skill. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # 下面是連技成功時的音效,可改。 ACTIVE_SKILL_SOUND = RPG::SE.new("Desision2", 80, 100) # 下面是設定連技訊息列表出現的時間長度,也就是QTE 的限時。 MINIMUM_TIME = 180 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Chain Skill Text - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # 這裡是設定連技訊息列表內容的地方,除了Title 外,都可用text codes. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- CHAIN_TITLE = "追打技 " TITLE_SIZE = 25 L_SKILL_ON = "\eC[17]击退\eC[0]: " L_SKILL_OFF = "\eC[7]击退: " L_SKILL_ACT = "\eC[17]击退: " R_SKILL_ON = "\eC[17]倒地\eC[0]: " R_SKILL_OFF = "\eC[7]倒地: " R_SKILL_ACT = "\eC[17]倒地: " X_SKILL_ON = "\eC[17]浮空\eC[0]: " X_SKILL_OFF = "\eC[7]浮空: " X_SKILL_ACT = "\eC[17]浮空: " Y_SKILL_ON = "\eC[17]恢复\eC[0]: " Y_SKILL_OFF = "\eC[7]恢复: " Y_SKILL_ACT = "\eC[17]恢复: " Z_SKILL_ON = "\eC[17]辅助\eC[0]: " Z_SKILL_OFF = "\eC[7]辅助: " Z_SKILL_ACT = "\eC[17]辅助: " end # ACTIVE_CHAIN 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. #============================================================================== module YEA module REGEXP module SKILL CHAIN_ONLY = /<(?:CHAIN_ONLY|chain only)>/i CHAIN_SKILL = /<(?:CHAIN_SKILL|chain skill)[ ]([LRXYZ]):[ ](\d+)>/i end # SKILL end # REGEXP end # YEA #============================================================================== # ■ DataManager #============================================================================== module DataManager #-------------------------------------------------------------------------- # alias method: load_database #-------------------------------------------------------------------------- class <<self; alias load_database_acs load_database; end def self.load_database load_database_acs load_notetags_acs end #-------------------------------------------------------------------------- # new method: load_notetags_acs #-------------------------------------------------------------------------- def self.load_notetags_acs for skill in $data_skills next if skill.nil? skill.load_notetags_acs end end end # DataManager #============================================================================== # ■ RPG::Skill #============================================================================== class RPG::Skill < RPG::UsableItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :chain_only attr_accessor :chain_skill #-------------------------------------------------------------------------- # common cache: load_notetags_acs #-------------------------------------------------------------------------- def load_notetags_acs @chain_only = false @chain_skill = {} #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YEA::REGEXP::SKILL::CHAIN_ONLY @chain_only = true when YEA::REGEXP::SKILL::CHAIN_SKILL case $1.upcase when "L"; @chain_skill[:L] = $2.to_i when "R"; @chain_skill[:R] = $2.to_i when "X"; @chain_skill[:X] = $2.to_i when "Y"; @chain_skill[:Y] = $2.to_i when "Z"; @chain_skill[:Z] = $2.to_i else; next end #--- end } # self.note.split #--- end end # RPG::UsableItem #============================================================================== # ■ Game_Action #============================================================================== class Game_Action #-------------------------------------------------------------------------- # new method: set_active_chain_skill #-------------------------------------------------------------------------- def set_active_chain_skill(skill_id) set_skill(skill_id) @target_index = subject.current_action.target_index @active_chain_skill = true end #-------------------------------------------------------------------------- # alias method: valid? #-------------------------------------------------------------------------- alias game_action_valid_acs valid? def valid? subject.enable_active_chain(true) if @active_chain_skill result = game_action_valid_acs subject.enable_active_chain(false) if @active_chain_skill return result end end # Game_Action #============================================================================== # ■ Game_BattlerBase #============================================================================== class Game_BattlerBase #-------------------------------------------------------------------------- # alias method: skill_conditions_met? #-------------------------------------------------------------------------- alias game_battlerbase_skill_conditions_met_acs skill_conditions_met? def skill_conditions_met?(skill) return false if chain_skill_restriction?(skill) return game_battlerbase_skill_conditions_met_acs(skill) end #-------------------------------------------------------------------------- # new method: chain_skill_restriction? #-------------------------------------------------------------------------- def chain_skill_restriction?(skill) return false unless actor? return false unless $game_party.in_battle return false unless skill.chain_only return !@active_chain_enabled end #-------------------------------------------------------------------------- # alias method: hp= #-------------------------------------------------------------------------- alias game_battlerbase_hpequals_acs hp= def hp=(value) game_battlerbase_hpequals_acs(value) return unless SceneManager.scene_is?(Scene_Battle) return unless actor? return if value == 0 SceneManager.scene.refresh_active_chain_skill_window(self) end #-------------------------------------------------------------------------- # alias method: mp= #-------------------------------------------------------------------------- alias game_battlerbase_mpequals_acs mp= def mp=(value) game_battlerbase_mpequals_acs(value) return unless SceneManager.scene_is?(Scene_Battle) return unless actor? return if value == 0 SceneManager.scene.refresh_active_chain_skill_window(self) end #-------------------------------------------------------------------------- # alias method: tp= #-------------------------------------------------------------------------- alias game_battlerbase_tpequals_acs tp= def tp=(value) game_battlerbase_tpequals_acs(value) return unless SceneManager.scene_is?(Scene_Battle) return unless actor? return if value == 0 SceneManager.scene.refresh_active_chain_skill_window(self) end end # Game_BattlerBase #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # alias method: on_battle_start #-------------------------------------------------------------------------- alias game_battler_on_battle_start_acs on_battle_start def on_battle_start game_battler_on_battle_start_acs @active_chain_enabled = false end #-------------------------------------------------------------------------- # alias method: on_battle_end #-------------------------------------------------------------------------- alias game_battler_on_battle_end_acs on_battle_end def on_battle_end game_battler_on_battle_end_acs @active_chain_enabled = false end #-------------------------------------------------------------------------- # new method: enable_active_chain #-------------------------------------------------------------------------- def enable_active_chain(active) return unless actor? @active_chain_enabled = active end #-------------------------------------------------------------------------- # new method: add_active_skill_chain #-------------------------------------------------------------------------- def add_active_skill_chain(skill_id) chain_skill = Game_Action.new(self) chain_skill.set_active_chain_skill(skill_id) @actions.insert(1, chain_skill) end end # Game_Battler #============================================================================== # ■ Window_ChainSkillList #============================================================================== class Window_ChainSkillList < Window_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize dw = [Graphics.width/2, 320].max super(-standard_padding, 0, dw, fitting_height(6)) self.z = 200 self.opacity = 0 hide end #-------------------------------------------------------------------------- # reveal #-------------------------------------------------------------------------- def reveal(battler, skill) [url=home.php?mod=space&uid=133701]@battler[/url] = battler [url=home.php?mod=space&uid=260100]@skill[/url] = skill @chain_skills = [] for key in skill.chain_skill next if key[1].nil? next if $data_skills[key[1]].nil? next unless @battler.skills.include?($data_skills[key[1]]) @chain_skills.push($data_skills[key[1]]) end return if @chain_skills == [] self.y = Graphics.height - fitting_height(4) self.y -= fitting_height(@chain_skills.size + 1) show activate @enabled = true refresh end #-------------------------------------------------------------------------- # button= #-------------------------------------------------------------------------- def button=(button) [url=home.php?mod=space&uid=268194]@Button[/url] = button @enabled = false refresh unless @button.nil? end #-------------------------------------------------------------------------- # refresh_check #-------------------------------------------------------------------------- def refresh_check(battler) return if @battler != battler refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh @button = nil if @enabled contents.clear draw_background_colour draw_horz_line(0) draw_combo_title draw_chain_skills end #-------------------------------------------------------------------------- # draw_background_colour #-------------------------------------------------------------------------- def draw_background_colour dh = line_height * (@chain_skills.size + 1) rect = Rect.new(0, 0, contents.width, dh) back_colour1 = Color.new(0, 0, 0, 192) back_colour2 = Color.new(0, 0, 0, 0) contents.gradient_fill_rect(rect, back_colour1, back_colour2) end #-------------------------------------------------------------------------- # draw_horz_line #-------------------------------------------------------------------------- def draw_horz_line(dy) line_y = dy + line_height - 2 line_colour = normal_color line_colour.alpha = 48 contents.fill_rect(0, line_y, contents.width, 2, line_colour) end #-------------------------------------------------------------------------- # draw_combo_title #-------------------------------------------------------------------------- def draw_combo_title reset_font_settings text = YEA::ACTIVE_CHAIN::CHAIN_TITLE contents.font.size = YEA::ACTIVE_CHAIN::TITLE_SIZE contents.font.bold = true contents.font.italic = true draw_text(12, 0, contents.width - 12, line_height, text) reset_font_settings end #-------------------------------------------------------------------------- # draw_chain_skills #-------------------------------------------------------------------------- def draw_chain_skills button_array = [:L, :R, :X, :Y, :Z] dx = 24 dy = line_height for button in button_array next if @skill.chain_skill[button].nil? chain_skill = $data_skills[@skill.chain_skill[button]] next unless @battler.skills.include?(chain_skill) text = text_setting(button, chain_skill) text += sprintf("\eI[%d]", chain_skill.icon_index) text += chain_skill.name draw_text_ex(dx, dy, text) dy += line_height end end #-------------------------------------------------------------------------- # text_setting #-------------------------------------------------------------------------- def text_setting(button, skill) active = button == @button text = "" case button when :L if @enabled && @battler.usable?(skill) text = YEA::ACTIVE_CHAIN::L_SKILL_ON elsif !@enabled && active text = YEA::ACTIVE_CHAIN::L_SKILL_ACT else text = YEA::ACTIVE_CHAIN::L_SKILL_OFF end when :R if @enabled && @battler.usable?(skill) text = YEA::ACTIVE_CHAIN::R_SKILL_ON elsif !@enabled && active text = YEA::ACTIVE_CHAIN::R_SKILL_ACT else text = YEA::ACTIVE_CHAIN::R_SKILL_OFF end when :X if @enabled && @battler.usable?(skill) text = YEA::ACTIVE_CHAIN::X_SKILL_ON elsif !@enabled && active text = YEA::ACTIVE_CHAIN::X_SKILL_ACT else text = YEA::ACTIVE_CHAIN::X_SKILL_OFF end when :Y if @enabled && @battler.usable?(skill) text = YEA::ACTIVE_CHAIN::Y_SKILL_ON elsif !@enabled && active text = YEA::ACTIVE_CHAIN::Y_SKILL_ACT else text = YEA::ACTIVE_CHAIN::Y_SKILL_OFF end when :Z if @enabled && @battler.usable?(skill) text = YEA::ACTIVE_CHAIN::Z_SKILL_ON elsif !@enabled && active text = YEA::ACTIVE_CHAIN::Z_SKILL_ACT else text = YEA::ACTIVE_CHAIN::Z_SKILL_OFF end end return text end end # Window_ChainSkillList #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # alias method: create_all_windows #-------------------------------------------------------------------------- alias scene_battle_create_all_windows_acs create_all_windows def create_all_windows scene_battle_create_all_windows_acs create_chain_skill_window end #-------------------------------------------------------------------------- # new method: create_chain_skill_window #-------------------------------------------------------------------------- def create_chain_skill_window @active_chain_skill_window = Window_ChainSkillList.new @active_chain_skill_counter = 0 end #-------------------------------------------------------------------------- # alias method: use_item #-------------------------------------------------------------------------- alias scene_battle_use_item_acs use_item def use_item @subject.enable_active_chain(true) item = @subject.current_action.item chain_skill_list_appear(true, item) start_active_skill_counter(item) scene_battle_use_item_acs wait_active_skill_counter chain_skill_list_appear(false, item) @subject.enable_active_chain(false) end #-------------------------------------------------------------------------- # new method: chain_skill_list_appear #-------------------------------------------------------------------------- def chain_skill_list_appear(visible, skill) return if @subject.nil? return unless @subject.actor? return unless skill.is_a?(RPG::Skill) @active_chain_skill = 0 @current_chain_skill = skill @active_chain_skill_window.reveal(@subject, skill) if visible @active_chain_skill_window.hide unless visible end #-------------------------------------------------------------------------- # new method: refresh_active_chain_skill_window #-------------------------------------------------------------------------- def refresh_active_chain_skill_window(battler) return unless @active_chain_skill_window.visible @active_chain_skill_window.refresh_check(battler) end #-------------------------------------------------------------------------- # new method: start_active_skill_counter #-------------------------------------------------------------------------- def start_active_skill_counter(skill) return unless @active_chain_skill_window.visible @active_chain_skill_counter = YEA::ACTIVE_CHAIN::MINIMUM_TIME end #-------------------------------------------------------------------------- # new method: wait_active_skill_counter #-------------------------------------------------------------------------- def wait_active_skill_counter return unless @active_chain_skill_window.visible wait(@active_chain_skill_counter) end #-------------------------------------------------------------------------- # new method: update_active_chain_skill_counter #-------------------------------------------------------------------------- def update_active_chain_skill_counter return if @active_chain_skill_counter == 0 @active_chain_skill_counter -= 1 end #-------------------------------------------------------------------------- # alias method: update_basic #-------------------------------------------------------------------------- alias scene_battle_update_basic_acs update_basic def update_basic scene_battle_update_basic_acs update_active_chain_skill_counter update_active_chain_skill_select end #-------------------------------------------------------------------------- # new method: update_active_chain_skill_select #-------------------------------------------------------------------------- def update_active_chain_skill_select return unless @active_chain_skill_window.visible return if @active_chain_skill > 0 if Input.press?(:L) check_active_chain_skill(:L) elsif Input.press?(:R) check_active_chain_skill(:R) elsif Input.press?(:X) check_active_chain_skill(:X) elsif Input.press?(:Y) check_active_chain_skill(:Y) elsif Input.press?(:Z) check_active_chain_skill(:Z) end end #-------------------------------------------------------------------------- # new method: check_active_chain_skill #-------------------------------------------------------------------------- def check_active_chain_skill(button) skill_id = @current_chain_skill.chain_skill[button] return if skill_id.nil? return if $data_skills[skill_id].nil? chain_skill = $data_skills[skill_id] return unless @subject.usable?(chain_skill) return unless @subject.skills.include?(chain_skill) @active_chain_skill_counter = 12 @active_chain_skill = skill_id @active_chain_skill_window.button = button YEA::ACTIVE_CHAIN::ACTIVE_SKILL_SOUND.play @subject.add_active_skill_chain(skill_id) end end # Scene_Battle #============================================================================== # # ▼ End of File # #==============================================================================
360截图20170806154642009.jpg (146.45 KB, 下载次数: 35)
360截图20170806154653770.jpg (146.63 KB, 下载次数: 27)
360截图20170806154701971.jpg (146.37 KB, 下载次数: 29)
360截图20170806154709665.jpg (146.63 KB, 下载次数: 26)
360截图20170806154716401.jpg (144.96 KB, 下载次数: 25)
360截图20170806225920144.jpg (122.65 KB, 下载次数: 27)
360截图20170806230034943.jpg (141.93 KB, 下载次数: 25)
360截图20170809072406849.jpg (9 KB, 下载次数: 27)
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |