这脚本是什么情况{:2_270:} |
本帖最后由 VIPArcher 于 2014-6-4 22:45 编辑 还有这个脚本Overlay 有耐心可以做得非常漂亮(丧心病狂的耐心, 你得慢慢研究这货 [mw_shl_code=ruby,true]#============================================================================== # # ▼ Yami Script Ace - Overlay Mapping # -- Last Updated: 2011.12.29 # -- Level: Easy # -- Requires: n/a # -- Credit: Hanzo Kimura for Original Script # #============================================================================== $imported = {} if $imported.nil? $imported["YSA-OverlayMapping"] = true #============================================================================== # ▼ Updates # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # 2011.12.29 - Bugfix for transfer. # 2011.12.10 - Started and Finished Script. # #============================================================================== # ▼ Introduction # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # This script based on Hanzo Kimura's idea. This will automatically load map's # overlay by map ID, and a map can have more than one image per layer, so you # don't have to create two or more map just for day/night or when an event occur. # #============================================================================== # ▼ Instructions # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Create a folder in Graphics and name it Overlay. # Put all of your overlay into Graphics/Overlay. # Your overlay file will have the name: "Filename Prefix" + Map-ID + "-" + Number # which "Filename Prefix" is the one you will config below # Map-ID is your map's ID # Number is 1, 2, 3, ... using for Overlay Variables. # # Example: Graphics/Overlay/ground2-1.png # Which means this will be ground layer, for map 2, variable = 1 # # Light/Shadow must be .jpg # Parallax/Ground must be .png # #============================================================================== module YSA module OVERLAY #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Overlay Switches - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # These are switches which are enable overlay layers. Turn them on to show # them in your maps. #-------------------------------------------------------------------------- # Default: ON #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- LIGHT_SWITCH = 16 # Turn on/off light layer SHADOW_SWITCH = 17 # Turn on/off shadow layer PARALLAX_SWITCH = 18 # Turn on/off parallax layer GROUND_SWITCH = 19 # Turn on/off ground layer #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Overlay Variables - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # A map can have more than one image per layer, that means you can have a # different light/shadow for day and night, or have a different ground when # an event occured. #-------------------------------------------------------------------------- # Default: 1 #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- LIGHT_VARIABLE = 8 # Switch to another light SHADOW_VARIABLE = 8 # Switch to another shadow PARALLAX_VARIABLE = 7 # Switch to another parallax GROUND_VARIABLE = 7 # Switch to another ground #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Filename Prefix - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This will make this script automatic, it will check if there are layers in # overlay folder #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- LIGHT = "light" # Light layer's filename prefix SHADOW = "shadow" # Shadow layer's filename prefix PARALLAX = "par" # Parallax layer's filename prefix GROUND = "ground" # Ground layer's filename prefix #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Overlay Opacity - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This will make this script automatic, it will check if there are layers in # overlay folder #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- GROUND_OPACITY = 255 PARALLAX_OPACITY = 255 LIGHT_OPACITY = 128 SHADOW_OPACITY = 96 end #OVERLAY end # YSA #============================================================================== # ▼ 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. #============================================================================== #============================================================================== # ■ Cache #============================================================================== module Cache #-------------------------------------------------------------------------- # new method: overlay #-------------------------------------------------------------------------- def self.overlay(filename) load_bitmap("Graphics/Overlay/", filename) end end # Cache #============================================================================== # ■ DataManager #============================================================================== module DataManager #-------------------------------------------------------------------------- # alias method: setup_new_game #-------------------------------------------------------------------------- class <<self; alias ovm_setup_new_game setup_new_game; end def self.setup_new_game ovm_setup_new_game setup_overlay_mapping end #-------------------------------------------------------------------------- # new method: setup_overlay_mapping #-------------------------------------------------------------------------- def self.setup_overlay_mapping # Control switches $game_switches[YSA::OVERLAY::LIGHT_SWITCH] = true $game_switches[YSA::OVERLAY::SHADOW_SWITCH] = true $game_switches[YSA::OVERLAY::GROUND_SWITCH] = true $game_switches[YSA::OVERLAY::PARALLAX_SWITCH] = true # Control variables $game_variables[YSA::OVERLAY::LIGHT_VARIABLE] = 1 $game_variables[YSA::OVERLAY::SHADOW_VARIABLE] = 1 $game_variables[YSA::OVERLAY::GROUND_VARIABLE] = 1 $game_variables[YSA::OVERLAY::PARALLAX_VARIABLE] = 1 end end # DataManager #============================================================================== # ■ Spriteset_Map #============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # alias method: initialize #-------------------------------------------------------------------------- alias overlay_initialize initialize def initialize overlay_initialize create_overlay_map update end #-------------------------------------------------------------------------- # new method: check_file #-------------------------------------------------------------------------- def check_file(type) filename = "Graphics/Overlay/" filename += YSA::OVERLAY::GROUND if type == "ground" filename += YSA::OVERLAY::LIGHT if type == "light" filename += YSA::OVERLAY::SHADOW if type == "shadow" filename += YSA::OVERLAY::PARALLAX if type == "par" filename += $game_map.map_id.to_s filename += "-" + $game_variables[YSA::OVERLAY::GROUND_VARIABLE].to_s if type == "ground" filename += "-" + $game_variables[YSA::OVERLAY::LIGHT_VARIABLE].to_s if type == "light" filename += "-" + $game_variables[YSA::OVERLAY::SHADOW_VARIABLE].to_s if type == "shadow" filename += "-" + $game_variables[YSA::OVERLAY::PARALLAX_VARIABLE].to_s if type == "par" filename += ".jpg" if type == "light" || type == "shadow" filename += ".png" if type == "par" || type == "ground" return FileTest.exist?(filename) end #-------------------------------------------------------------------------- # new method: create_overlay_map #-------------------------------------------------------------------------- def create_overlay_map w = Graphics.width h = Graphics.height @current_light = 0 @current_shadow = 0 @current_par = 0 @current_ground = 0 # Ground Layer @ground = Sprite.new(@viewport1) @ground.z = 0#1 ###SR @ground.opacity = YSA::OVERLAY::GROUND_OPACITY # Light Layer @light_viewport = Viewport.new(0, 0, w, h) @light_viewport.z = 10 @light = Sprite.new(@light_viewport) @light.opacity = YSA::OVERLAY::LIGHT_OPACITY @light.blend_type = 1 # Shadow Layer @shadow_viewport = Viewport.new(0, 0, w, h) @shadow_viewport.z = 9 @Shadow = Sprite.new(@shadow_viewport) @shadow.opacity = YSA::OVERLAY::SHADOW_OPACITY @shadow.blend_type = 2 # Parallax Layer @par_viewport = Viewport.new(0, 0, w, h) @par_viewport.z = 0#8 ###SR @par = Sprite.new(@par_viewport) @par.opacity = YSA::OVERLAY::PARALLAX_OPACITY end #-------------------------------------------------------------------------- # alias method: dispose_parallax #-------------------------------------------------------------------------- alias overlay_dispose_parallax dispose_parallax def dispose_parallax overlay_dispose_parallax dispose_overlay_map end #-------------------------------------------------------------------------- # new method: dispose_overlay_map #-------------------------------------------------------------------------- def dispose_overlay_map @ground.dispose @shadow_viewport.dispose @light_viewport.dispose @light.dispose @shadow.dispose @par_viewport.dispose @par.dispose end #-------------------------------------------------------------------------- # alias method: update_parallax #-------------------------------------------------------------------------- alias overlay_update_parallax update_parallax def update_parallax overlay_update_parallax # Parallax if @ground != nil if check_file("ground") @ground.visible = $game_switches[YSA::OVERLAY::GROUND_SWITCH] if @ground.visible != $game_switches[YSA::OVERLAY::GROUND_SWITCH] @ground.ox = $game_map.display_x * 32 if @ground.ox != $game_map.display_x * 32 @ground.oy = $game_map.display_y * 32 if @ground.oy != $game_map.display_y * 32 #@ground.tone = $game_map.screen.tone #SR fix if @current_ground != $game_variables[YSA::OVERLAY::GROUND_VARIABLE] filename = YSA::OVERLAY::GROUND filename += $game_map.map_id.to_s filename += "-" + $game_variables[YSA::OVERLAY::GROUND_VARIABLE].to_s @ground.bitmap = Cache.overlay(filename) @current_ground = $game_variables[YSA::OVERLAY::GROUND_VARIABLE] end else @ground.visible = false end end # Light if @light != nil && @light_viewport != nil if check_file("light") @light.visible = $game_switches[YSA::OVERLAY::LIGHT_SWITCH] if @light.visible != $game_switches[YSA::OVERLAY::LIGHT_SWITCH] @light.ox = $game_map.display_x * 32 if @light.ox != $game_map.display_x * 32 @light.oy = $game_map.display_y * 32 if @light.oy != $game_map.display_y * 32 @light.tone = $game_map.screen.tone @light_viewport.ox = $game_map.screen.shake @light_viewport.color = $game_map.screen.flash_color if @current_light != $game_variables[YSA::OVERLAY::LIGHT_VARIABLE] filename = YSA::OVERLAY::LIGHT filename += $game_map.map_id.to_s filename += "-" + $game_variables[YSA::OVERLAY::LIGHT_VARIABLE].to_s @light.bitmap = Cache.overlay(filename) @current_light = $game_variables[YSA::OVERLAY::LIGHT_VARIABLE] end else @light.visible = false end end # Shadow if @shadow != nil && @shadow_viewport != nil if check_file("shadow") @shadow.visible = $game_switches[YSA::OVERLAY::SHADOW_SWITCH] if @shadow.visible != $game_switches[YSA::OVERLAY::SHADOW_SWITCH] @shadow.ox = $game_map.display_x * 32 if @shadow.ox != $game_map.display_x * 32 @shadow.oy = $game_map.display_y * 32 if @shadow.oy != $game_map.display_y * 32 @shadow.tone = $game_map.screen.tone @shadow_viewport.ox = $game_map.screen.shake @shadow_viewport.color = $game_map.screen.flash_color if @current_shadow != $game_variables[YSA::OVERLAY::SHADOW_VARIABLE] filename = YSA::OVERLAY::SHADOW filename += $game_map.map_id.to_s filename += "-" + $game_variables[YSA::OVERLAY::SHADOW_VARIABLE].to_s @shadow.bitmap = Cache.overlay(filename) @current_shadow = $game_variables[YSA::OVERLAY::SHADOW_VARIABLE] end else @shadow.visible = false end end # Parallax if @par != nil && @par_viewport != nil if check_file("par") @par.visible = $game_switches[YSA::OVERLAY::PARALLAX_SWITCH] if @par.visible != $game_switches[YSA::OVERLAY::PARALLAX_SWITCH] @par.ox = $game_map.display_x * 32 if @par.ox != $game_map.display_x * 32 @par.oy = $game_map.display_y * 32 if @par.oy != $game_map.display_y * 32 @par.tone = $game_map.screen.tone @par_viewport.ox = $game_map.screen.shake @par_viewport.color = $game_map.screen.flash_color if @current_par != $game_variables[YSA::OVERLAY::PARALLAX_VARIABLE] filename = YSA::OVERLAY::PARALLAX filename += $game_map.map_id.to_s filename += "-" + $game_variables[YSA::OVERLAY::PARALLAX_VARIABLE].to_s @par.bitmap = Cache.overlay(filename) @current_par = $game_variables[YSA::OVERLAY::PARALLAX_VARIABLE] end else @par.visible = false end end end end # Spriteset_Map #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # alias method: post_transfer #-------------------------------------------------------------------------- alias overlay_post_transfer post_transfer def post_transfer @spriteset.dispose_overlay_map @spriteset.create_overlay_map @spriteset.update overlay_post_transfer end end # Scene_Map #============================================================================== # # ▼ End of File # #==============================================================================[/mw_shl_code] |
ABCDE五层图块层也够用了, 也可以用远景图, 实在不够還可用多layer(毎layer可用不同图块組) |
ABCDE五层图块层也够用了,实在不够还可以用远景图 |
只画一张地图你究竟打算用多少个图块………… |
那么多图块不够用?实在不够就用图片遮蔽啊{:8_449:} |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-24 01:07
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.