ARK's Screenshot Parallax & Picture Z Manipulation

● ARCHIVED · READ-ONLY
Started by ArkDG 1 posts View original ↗
  1. In advance, I ask excuses for my english. I try to sound natural, but it is not my first language, so... Anyway, there it goes...

    This script takes a Screenshot from the curret map and transforms it in a Parallax for the next map provided it has the term "~scback" writen in its name.

    It also manipulates the Viewports for the Pictures and the Parallax, so every Map that has the term "~evOVpic" in its name will display the pictures behind the events - except the Pictures with numbers from 90 to 100: these ones will still be displayed over events for convinience.

    So, please: READ THE TERMS OF USE AND RESPECT THEM.
    The most important of them is: GIVE ME A FREE PLAYEABLE COPY OF YOUR GAME.
    And read the header's user manual, too.
    I acept donnations and make Comissioned Scripts, just send me a PM or e-mail so we can talk about.

    So long!

    Spoiler
    # -*- coding: utf-8 -*-
    =begin
    #======================================================================================#
    #================= ARK's Screenshot Parallax & Picture Z Manipulation =================#
    #======================================================================================#
    * Version : 1.0
    * Release Date : 26/July/2018
    * License : http://creativecommons.org/licenses/by-nc-nd/4.0/
    * Contact : leomjusto@hotmail.com
    * Terms of Use :
    - Contact me for commercial use and send me a free copy of your game. (demos and complete)
    - No real support. The script is provided as-is
    - No bug fixes, no compatibility patches
    - Preserve this header
    #======================================================================================#
    # ABOUT: This script allows the Dev to use the last map image as a Parallax,
    simulating a smooth scene background for those who like to make evented scenes
    instead of scripted ones or just don't know or don't want to script one, but
    still wants the the background to look as nice as a scripted one.

    This script also manipulates the Viewports for Pictures and Parallaxes, so you can use
    it to use pictures behind events. Every Picture with Number from 90 to 100 when this
    Script functions are active will still be displayed over events as a workarround for
    special looking scenes.

    # LIMITATIONS: When you teleport from a map to another, events go back to their original
    positions and events that were erased or exited before the telport come back when you
    come back to it. But you can use evented tricks to overcome this problem with Set Position
    commands, Game Variables and Game Switches.
    #======================================================================================#
    #HOW TO USE:

    * SCREENSHOT PARALLAX : To use a last map ScreenShot as Prallax, name the map you wanna
    use as your scene with a "~scback" anywere in its name. Normally it would automatically
    add Blur and Dim to the Screenshot when turning it into a Parallax, but you can deactivate
    those functions adding these lines to the Map Name: "~no_Blur" "~no_Dim"

    * PICTURES UNDER EVENTS : Just add "~evOVpic" to your scene map name and this map will
    change the viewports for the Pictures and the Parallax. Pictures with numbers from
    90 to 100 will still be displayed over everything else.

    * MAP NAME TAGS:

    ~scback : Use a Screenshot from the last map as Parallax
    ~no_Blur : Deactivate the Blur effect applied to the Screenshot when truning it into Parallax.
    ~no_Dim : Deactivate the Dim effect applied to the Screenshot when turning it into Parallax.
    ~evOVpic : Activates the Viewports manipulation so every picture with numbers from 1 to 89
    will be displyed behind Events and Animations.
    #======================================================================================#
    #======================================================================================#
    #COMPATIBILITY:

    * Alias methods
    class Spriteset_Map
    def create_viewports
    def dispose_viewports
    def update_viewports
    def update_parallax

    * Overwriten methods
    class Game_Interpreter
    def command_201
    class Spriteset_Map
    def update_pictures
    #======================================================================================#
    #====================================END OF NOTES======================================#
    #======================================================================================#
    =end



    class Game_Interpreter
    #--------------------------------------------------------------------------
    # * Transferência do jogador
    #--------------------------------------------------------------------------
    def command_201
    return if $game_party.in_battle
    Fiber.yield while $game_player.transfer? || $game_message.visible
    if @params[0] == 0 # Definição direta
    map_id = @params[1]
    x = @params[2]
    y = @params[3]
    else # Definição por variáveis
    map_id = $game_variables[@params[1]]
    x = $game_variables[@params[2]]
    y = $game_variables[@params[3]]
    end
    $game_system.yield_bitmap_snapshot = nil if $game_system.yield_bitmap_snapshot!=nil

    if $data_mapinfos[map_id].name =~ /~scback/
    $game_map.interpreter.wait(7) if $game_message.visible
    $game_system.yield_bitmap_snapshot = Graphics.snap_to_bitmap
    end
    $game_player.reserve_transfer(map_id, x, y, @params[4])
    $game_temp.fade_type = @params[5]
    Fiber.yield while $game_player.transfer?
    end
    end


    class Spriteset_Map
    #--------------------------------------------------------------------------
    # * Criação do viewport
    #--------------------------------------------------------------------------
    alias :create_viewports_zero :create_viewports
    def create_viewports
    @viewport0 = Viewport.new
    @viewport0.z = -2
    create_viewports_zero
    end

    #--------------------------------------------------------------------------
    # * Disposição dos viewports
    #--------------------------------------------------------------------------
    alias :dispose_viewports_zero :dispose_viewports
    def dispose_viewports
    dispose_viewports_zero
    @viewport0.dispose
    end

    #--------------------------------------------------------------------------
    # * Atualização dos viewports
    #--------------------------------------------------------------------------
    alias :update_viewports_zero :update_viewports
    def update_viewports
    update_viewports_zero
    @viewport0.color.set(0, 0, 0, 255 - $game_map.screen.brightness)
    @viewport0.update
    end

    #--------------------------------------------------------------------------
    # * Atualização das imagens
    #--------------------------------------------------------------------------
    def update_pictures
    $game_map.screen.pictures.each do |pic|
    if $data_mapinfos[$game_map.map_id].name =~ /~evOVpic/ && pic.number>=90
    @picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport3, pic)
    @picture_sprites[pic.number].update
    else
    @picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport2, pic)
    @picture_sprites[pic.number].update
    end
    end
    end


    alias :update_parallax_screenshot :update_parallax
    def update_parallax
    if $data_mapinfos[$game_map.map_id].name =~ /~scback/
    return if @parallax_name == 'screenshot'
    @viewport2.z = -1 if $data_mapinfos[$game_map.map_id].name =~ /~evOVpic/
    @parallax_name = 'screenshot'
    @parallax.bitmap.dispose if @parallax.bitmap
    source = $game_system.yield_bitmap_snapshot
    $game_system.yield_bitmap_snapshot = nil
    bitmap = Bitmap.new(Graphics.width,Graphics.height)
    @parallax = Plane.new(@viewport0)
    bitmap.stretch_blt(bitmap.rect, source, source.rect)
    @parallax.bitmap = bitmap
    @parallax.bitmap.blur unless $data_mapinfos[$game_map.map_id].name =~ /~noBlur/
    @parallax.color.set(0, 0, 0, 40) unless $data_mapinfos[$game_map.map_id].name =~ /~noDim/
    @parallax.z = -100
    Graphics.frame_reset
    else
    if $data_mapinfos[$game_map.map_id].name =~ /~evOVpic/
    @viewport2.z = -1
    if @parallax_name != $game_map.parallax_name
    @parallax_name = $game_map.parallax_name
    @parallax.bitmap.dispose if @parallax.bitmap
    @parallax = Plane.new(@viewport0)
    @parallax.bitmap = Cache.parallax(@parallax_name)
    Graphics.frame_reset
    end
    @parallax.ox = $game_map.parallax_ox(@parallax.bitmap)
    @parallax.oy = $game_map.parallax_oy(@parallax.bitmap)
    else
    @viewport2.z = 50
    update_parallax_screenshot
    end

    end
    end
    end