Chaos Project

RPG Maker => RPG Maker Scripts => RMXP Script Database => Topic started by: Fantasist on July 24, 2008, 12:45:52 pm

Title: [XP] Transition Pack v1.11
Post by: Fantasist on July 24, 2008, 12:45:52 pm
Transition Pack
Authors: Fantasist
Version: 1.11
Type: Eye Candy
Key Term: Misc System



Introduction

This script adds some exotic transitions which can't be attained by regular transition graphics.

Update: I am no longer updating this script, but ForeverZer0 has made a topic with more transition effects here:
http://forum.chaos-project.com/index.php/topic,7862.0.html
Kudos to you FZ :D


Features




Screenshots

You can't appreciate the effects as screenshots, just try the demo :)


Demo
http://www.mediafire.com/?6ety24cpt311att (245.98 KB)


Older demos: ShowHide

http://www.sendspace.com/file/yjd54h (v1.11) (~243 KB)
http://www.sendspace.com/file/tlc19a (v1.0)

http://www.sendspace.com/file/kmy8mt
http://www.sendspace.com/file/pfd2h7 (Thanks shdwlink for keeping the demo this long!)




Script

You will need the screenshot dll to use this script. You can find it in the demo. Place the dll in the game folder.

Place this script below Scene_Debug and above Main.

Spoiler: ShowHide

#==============================================================================
# ** Transition Pack
#------------------------------------------------------------------------------
# by Fantasist
# Version: 1.11
# Date: 9-December-2009
#------------------------------------------------------------------------------
# Version History:
#
#   1.0 - First released version
#   1.1 - Added code to make battle scene use the transitions
#   1.11 - Transitions are used when switching maps, fixed some bugs
#------------------------------------------------------------------------------
# Description:
#
#     This script adds some exotic transitions which can't be attained by
#   regular transition graphics.
#------------------------------------------------------------------------------
# Compatibility:
#
#     This script replaces Scene_Map#transfer_player method.
#==============================================================================
# Instructions:
#
#     This script NEEDS "screenshot.dll"! Place it in the game folder.
#     Place this script below Scene_Debug and above Main. To use this, instead
#   of calling a scene directly like this:
#
#           $scene = Scene_Something.new
#
#   call it like this:
#
#           $scene = Transition.new(Scene_Something.new)
#
#     Before calling it, you can change "$game_temp.transition_type" to
#   activate the transiton.
#
#     As of version 1.11 and above, the battle, menu, name, shop and save scenes
#   automatically use the predefined transition effects, so all you have to do
#   is call the scenes using the event command.
#
#     You can also call a certain effect like this:
#
#           Transition.new(NEXT_SCENE, EFFECT_TYPE, EFFECT_TYPE_ARGUMENTS)
#
#
#   Here is the list of transitions (as of version 1.11):
#
#    -1 - Uses the default effect (in most cases, simple transition)
#     0 - Zoom In
#     1 - Zoom Out
#     2 - Shred Horizontal
#     3 - Shred Vertical
#     4 - Fade
#     5 - Explode
#     6 - Explode (Chaos Project Style)
#     7 - Transpose (by Blizzard)
#     8 - Shutter
#     9 - Drop Off
#
#   For Scripters:
#
#     For adding new transitions, check the method Transition#call_effect.
#   Simply add a new case for "type" and add your method. Don't forget to
#   add the *args version, it makes it easier to pass arguments when calling
#   transitions. Check out the call_effect method for reference.
#------------------------------------------------------------------------------
# Configuration:
#
#     Scroll down a bit and you'll see the configuration.
#
#   BATTLE_EFFECT: Effect to be used for calling battles
#   SHOP_EFFECT: Effect to be used for calling the Shop scene
#   NAME_EFFECT: Effect to be used for calling the Name scene
#   MENU_EFFECT: Effect to be used for calling the Menu scene
#   SAVE_EFFECT: Effect to be used for calling the Save scene
#
#   - Set to any number (-1 to 9) to use the respective effect.
#   - Set to "nil" to use the effect defined in "$game_temp.transition_type".
#   - Use an array to use any random effect. For example, setting BATTLE_EFFECT
#     to [1, 3, 6, 8, 9] will use any of those effects each time the battle
#     scene is called.
#
#   Explosion_Sound: Filename of the SE for Explosion transitions
#       Clink_Sound: Filename of the SE for Drop Off transition
#------------------------------------------------------------------------------
# Issues:
#
#     None that I know of.
#------------------------------------------------------------------------------
# Credits and Thanks:
#
#   Fantasist, for making this script
#   Blizzard, for the Transpose effect
#   shdwlink1993, for keeping the demo for so long
#   Ryexander, for helping me with an important scripting aspect
#   Memor-X, for pointing out some bugs
#------------------------------------------------------------------------------
# Notes:
#
#     If you have any problems, suggestions or comments, you can find me at:
#
#  - forum.chaos-project.com
#
#   Enjoy ^_^
#==============================================================================

#==============================================================================
# ** Screen Module
#------------------------------------------------------------------------------
#  This module handles taking screenshots for the transitions.
#==============================================================================
module Screen
 
 @screen = Win32API.new 'screenshot.dll', 'Screenshot', %w(l l l l p l l), ''
 @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
 @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
 #--------------------------------------------------------------------------
 # * Snap (take screenshot)
 #--------------------------------------------------------------------------
 def self.snap(file_name='scrn_tmp', file_type=0)
   game_name = "\0" * 256
   @readini.call('Game', 'Title', '', game_name, 255, '.\Game.ini')
   game_name.delete!('\0')
   window = @findwindow.call('RGSS Player', game_name)
   @screen.call(0, 0, 640, 480, file_name, window, file_type)
 end
end

#==============================================================================
# ** Transition
#------------------------------------------------------------------------------
#  This scene handles transition effects while switching to another scene.
#==============================================================================
class Transition
 
 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 # * CONFIG BEGIN
 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 BATTLE_EFFECT = [7, 8, 9] # randomly choose from any of those
 SHOP_EFFECT = 0
 NAME_EFFECT = nil # uses default effect set in $game_temp.transition_type
 MENU_EFFECT = 2
 SAVE_EFFECT = -1 # disable effect/use default
 
 
 Explosion_Sound = nil
     Clink_Sound = nil
 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 # * CONFIG END
 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
 #--------------------------------------------------------------------------
 # * Call Effect
 #     type : Transition type
 #     args : Arguments for specified transition type
 #--------------------------------------------------------------------------
 def call_effect(type, args)
   # if "type" is an array, choose a random element.
   if type.is_a?(Array)
     type = type[rand(type.size)]
   end
   # Call appropriate method with or without arguments depending
   # on values of type and args.
   no_args = args.nil? || args == []
   if no_args
     case type
     when 0 then zoom_in
     when 1 then zoom_out
     when 2 then shred_h
     when 3 then shred_v
     when 4 then fade
     when 5 then explode
     when 6 then explode_cp
     when 7 then transpose
     when 8 then shutter
     when 9 then drop_off
     end
   else
     case type
     when 0 then zoom_in(*args)
     when 1 then zoom_out(*args)
     when 2 then shred_h(*args)
     when 3 then shred_v(*args)
     when 4 then fade(*args)
     when 5 then explode(*args)
     when 6 then explode_cp(*args)
     when 7 then transpose(*args)
     when 8 then shutter(*args)
     when 9 then drop_off(*args)
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Initialize
 #     next_scene : Instance of the scene to transition into
 #           type : Transition type
 #          *args : Arguments for specified transition type
 #--------------------------------------------------------------------------
 def initialize(next_scene=Scene_Menu.new, type=nil, *args)
   @next_scene = next_scene
   @args = args
   # If transition type is specified, use it.
   # Otherwise, use default.
   @type = type.nil? ? $game_temp.transition_type : type
 end
 #--------------------------------------------------------------------------
 # * Main
 #--------------------------------------------------------------------------
 def main
   if @type == -1
     $scene = @next_scene
     return
   end
   # Take screenshot and prepare sprite
   path = ENV['appdata'] + "\\scrn_tmp"
   Screen.snap(path)
   @sprite = Sprite.new
   @sprite.bitmap = Bitmap.new(path)
   @sprite.x = @sprite.ox = @sprite.bitmap.width / 2
   @sprite.y = @sprite.oy = @sprite.bitmap.height / 2
   # Activate effect
   Graphics.transition(0)
   call_effect(@type, @args)
   # Freeze screen and clean up and switch scene
   Graphics.freeze
   @sprite.bitmap.dispose unless @sprite.bitmap.nil?
   @sprite.dispose unless @sprite.nil?
   File.delete(path)
   $scene = @next_scene
 end
 #--------------------------------------------------------------------------
 # * Play SE
 #     filename : Filename of the SE file in Audio/SE folder
 #        pitch : Pitch of sound (50 - 100)
 #       volume : Volume of sound (0 - 100)
 #--------------------------------------------------------------------------
 def play_se(filename, pitch=nil, volume=nil)
   se = RPG::AudioFile.new(filename)
   se.pitch  = pitch unless pitch.nil?
   se.volume = volume unless volume.nil?
   Audio.se_play('Audio/SE/' + se.name, se.volume, se.pitch)
 end
 
 #==========================================================================
 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 # ** Effect Library
 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 #==========================================================================
 
 #--------------------------------------------------------------------------
 # * Zoom In
 #     frames : Effect duration in frames
 #   max_zoom : The max amount the screen zooms out
 #--------------------------------------------------------------------------
 def zoom_in(frames=20, max_zoom=12)
   # Calculate difference b/w current and target
   # zooms (1 and max_zoom)
   zoom_diff = max_zoom - 1
   # Calculate unit values
   unit_zoom = zoom_diff.to_f / frames
   unit_opacity = (255.0 / frames).ceil
   # Apply unit values to sprite
   frames.times do
     @sprite.zoom_x += unit_zoom
     @sprite.zoom_y += unit_zoom
     @sprite.opacity -= unit_opacity
     Graphics.update
   end
 end
 #--------------------------------------------------------------------------
 # * Zoom Out
 #     frames : Effect duration in frames
 #--------------------------------------------------------------------------
 def zoom_out(frames=20)
   # Calculate unit values
   unit_zoom = 1.0 / frames
   unit_opacity = (255.0 / frames).ceil
   # Apply unit values to sprite
   frames.times do
     @sprite.zoom_x -= unit_zoom
     @sprite.zoom_y -= unit_zoom
     @sprite.opacity -= unit_opacity
     Graphics.update
   end
 end
 #--------------------------------------------------------------------------
 # * Shred Horizontal
 #      thickness : Shred thickness
 #       slowness : How slow the screens move out
 #    start_speed : Speed of first step in pixels
 #--------------------------------------------------------------------------
 def shred_h(thickness=4, slowness=4, start_speed=8)
   t = thickness
   # Shred screen
   sprite2 = Sprite.new
   sprite2.bitmap = Bitmap.new(@sprite.bitmap.width, @sprite.bitmap.height)
   sprite2.x = sprite2.ox = sprite2.bitmap.width / 2
   sprite2.y = sprite2.oy = sprite2.bitmap.height / 2
   for i in 0..(480/t)
     sprite2.bitmap.blt(0, i*t*2, @sprite.bitmap, Rect.new(0, i*t*2, 640, t))
     @sprite.bitmap.fill_rect(0, i*t*2, 640, t, Color.new(0, 0, 0, 0))
   end
   # Make sure starting step is not zero
   start_speed = slowness if start_speed < slowness
   # Move sprites
   dist = 640 - @sprite.x + start_speed
   loop do
     x_diff = (dist - (640 - @sprite.x)) / slowness
     @sprite.x += x_diff
     sprite2.x -= x_diff
     Graphics.update
     break if @sprite.x >= 640 + 320
   end
   sprite2.bitmap.dispose
   sprite2.dispose
 end
 #--------------------------------------------------------------------------
 # * Shred Vertical
 #      thickness : Shred thickness
 #       slowness : How slow the screens move out
 #    start_speed : Speed of first step in pixels
 #--------------------------------------------------------------------------
 def shred_v(thickness=4, slowness=4, start_speed=8)
   t = thickness
   # Shred screen
   sprite2 = Sprite.new
   sprite2.bitmap = Bitmap.new(@sprite.bitmap.width, @sprite.bitmap.height)
   sprite2.x = sprite2.ox = sprite2.bitmap.width / 2
   sprite2.y = sprite2.oy = sprite2.bitmap.height / 2
   # Shred bitmap
   for i in 0..(640/t)
     sprite2.bitmap.blt(i*t*2, 0, @sprite.bitmap, Rect.new(i*t*2, 0, t, 480))
     @sprite.bitmap.fill_rect(i*t*2, 0, t, 480, Color.new(0, 0, 0, 0))
   end
   # Make sure starting step is not zero
   start_speed = slowness if start_speed < slowness
   # Move sprites
   dist = 480 - @sprite.y + start_speed
   loop do
     y_diff = (dist - (480 - @sprite.y)) / slowness
     @sprite.y += y_diff
     sprite2.y -= y_diff
     Graphics.update
     break if @sprite.y >= 480 + 240
   end
   sprite2.bitmap.dispose
   sprite2.dispose
 end
 #--------------------------------------------------------------------------
 # * Fade
 #     target_color : Color to fade to
 #           frames : Effect duration in frames
 #--------------------------------------------------------------------------
 def fade(target_color=Color.new(255, 255, 255), frames=10)
   loop do
     r = (@sprite.color.red   * (frames - 1) + target_color.red)   / frames
     g = (@sprite.color.green * (frames - 1) + target_color.green) / frames
     b = (@sprite.color.blue  * (frames - 1) + target_color.blue)  / frames
     a = (@sprite.color.alpha * (frames - 1) + target_color.alpha) / frames
     @sprite.color.red   = r
     @sprite.color.green = g
     @sprite.color.blue  = b
     @sprite.color.alpha = a
     frames -= 1
     Graphics.update
     break if frames <= 0
   end
   Graphics.freeze
 end
 #--------------------------------------------------------------------------
 # * Explode
 #     explosion_sound : The SE filename to use for explosion sound
 #--------------------------------------------------------------------------
 def explode(explosion_sound=Explosion_Sound)
   shake_count = 2
   shakes = 40
   tone = 0
   shakes.times do
     @sprite.ox = 320 + (rand(2) == 0 ? -1 : 1) * shake_count
     @sprite.oy = 240 + (rand(2) == 0 ? -1 : 1) * shake_count
     shake_count += 0.2
     tone += 128/shakes
     @sprite.tone.set(tone, tone, tone)
     Graphics.update
   end
   @sprite.ox, @sprite.oy = 320, 240
   Graphics.update
   bitmap = @sprite.bitmap.clone
   @sprite.bitmap.dispose
   @sprite.dispose
   # Slice bitmap and create nodes (sprite parts)
   hor = []
   20.times do |i|
     ver = []
     15.times do |j|
       # Set node properties
       s = Sprite.new
       s.ox, s.oy = 8 + rand(25), 8 + rand(25)
       s.x, s.y = s.ox + 32 * i, s.oy + 32 * j
       s.bitmap = Bitmap.new(32, 32)
       s.bitmap.blt(0, 0, bitmap, Rect.new(i * 32, j * 32, 32, 32))
       s.tone.set(128, 128, 128)
       # Set node physics
       angle  = (rand(2) == 0 ? -1 : 1) * (4 + rand(4) * 10)
       zoom_x = (rand(2) == 0 ? -1 : 1) * (rand(2) + 1).to_f / 100
       zoom_y = (rand(2) == 0 ? -1 : 1) * (rand(2) + 1).to_f / 100
       (zoom_x > zoom_y) ? (zoom_y = -zoom_x) : (zoom_x = -zoom_y)
       x_rand = (2 + rand(2) == 0 ? -2 : 2)
       y_rand = (1 + rand(2) == 0 ? -1 : 1)
       # Store node and it's physics
       ver.push([s, angle, zoom_x, zoom_y, x_rand, y_rand])
     end
     hor.push(ver)
   end
   bitmap.dispose
   # Play sound
   play_se(explosion_sound) if explosion_sound != nil
   # Move pics
   40.times do |k|
     hor.each_with_index do |ver, i|
       ver.each_with_index do |data, j|
         # Get node and it's physics
         s, angle, zoom_x, zoom_y = data[0], data[1], data[2], data[3]
         x_rand, y_rand = data[4], data[5]
         # Manipulate nodes
         s.x += (i - 10) * x_rand
         s.y += (j - 8) * y_rand + (k - 20)/2
         s.zoom_x += zoom_x
         s.zoom_y += zoom_y
         tone = s.tone.red - 8
         s.tone.set(tone, tone, tone)
         s.opacity -= 13 if k > 19
         s.angle += angle % 360
       end
     end
     Graphics.update
   end
   # Dispose
   for ver in hor
     for data in ver
       data[0].bitmap.dispose
       data[0].dispose
     end
   end
   hor = nil
 end
 #--------------------------------------------------------------------------
 # * Explode (Chaos Project Style)
 #     explosion_sound : The SE filename to use for explosion sound
 #--------------------------------------------------------------------------
 def explode_cp(explosion_sound=Explosion_Sound)
   bitmap = @sprite.bitmap.clone
   @sprite.bitmap.dispose
   @sprite.dispose
   # Slice bitmap and create nodes (sprite parts)
   hor = []
   20.times do |i|
     ver = []
     15.times do |j|
       # Set node properties
       s = Sprite.new
       s.ox = s.oy = 16
       s.x, s.y = s.ox + 32 * i, s.oy + 32 * j
       s.bitmap = Bitmap.new(32, 32)
       s.bitmap.blt(0, 0, bitmap, Rect.new(i * 32, j * 32, 32, 32))
       # Set node physics
       angle  = (rand(2) == 0 ? -1 : 1) * rand(8)
       zoom_x = (rand(2) == 0 ? -1 : 1) * (rand(2) + 1).to_f / 100
       zoom_y = (rand(2) == 0 ? -1 : 1) * (rand(2) + 1).to_f / 100
       # Store node and it's physics
       ver.push([s, angle, zoom_x, zoom_y])
     end
     hor.push(ver)
   end
   bitmap.dispose
   # Play sound
   play_se(explosion_sound) if explosion_sound != nil
   # Move pics
   40.times do |k|
     hor.each_with_index do |ver, i|
       ver.each_with_index do |data, j|
         # Get node and it's physics
         s, angle, zoom_x, zoom_y = data[0], data[1], data[2], data[3]
         # Manipulate node
         s.x += i - 9
         s.y += j - 8 + k
         s.zoom_x += zoom_x
         s.zoom_y += zoom_y
         s.angle += angle % 360
       end
     end
     Graphics.update
   end
   # Dispose
   for ver in hor
     for data in ver
       data[0].bitmap.dispose
       data[0].dispose
     end
   end
   hor = nil
 end
 #--------------------------------------------------------------------------
 # * Transpose (bt Blizzard)
 #     frames : Effect duration in frames
 #   max_zoom : The max amount the screen zooms out
 #      times : Number of times screen is zoomed (times * 3 / 2)
 #--------------------------------------------------------------------------
 def transpose(frames=80, max_zoom=12, times=3)
   max_zoom -= 1 # difference b/w zooms
   max_zoom = max_zoom.to_f / frames / times # unit zoom
   unit_opacity = (255.0 / frames).ceil
   spr_opacity = (255.0 * times / 2 / frames).ceil
   @sprites = []
   (times * 3 / 2).times {
     s = Sprite.new
     s.x, s.y, s.ox, s.oy = 320, 240, 320, 240
     s.bitmap = @sprite.bitmap
     s.blend_type = 1
     s.opacity = 128
     s.visible = false
     @sprites.push(s)}
   count = 0
   loop {
       @sprites[count].visible = true
       count += 1 if count < times * 3 / 2 - 1
       (frames / times / 2).times {
           @sprites.each {|s|
               break if !s.visible
               s.zoom_x += max_zoom
               s.zoom_y += max_zoom
               s.opacity -= spr_opacity}
           @sprite.opacity -= unit_opacity
       Graphics.update}
       break if @sprite.opacity == 0}
   @sprites.each {|s| s.dispose}
 end
 #--------------------------------------------------------------------------
 # * Shutter
 #       open_gap : How much the shutters open before moving away
 #       flip_dir : Whether or not the direction of shutters if reversed
 #       slowness : How slow the screens move out
 #    start_speed : Speed of first step in pixels
 #--------------------------------------------------------------------------
 def shutter(flip_dir=true, open_gap=16, slowness=4, start_speed=8)
   # Shred screen
   sprite2 = Sprite.new
   sprite2.bitmap = Bitmap.new(@sprite.bitmap.width, @sprite.bitmap.height)
   sprite2.x = sprite2.ox = sprite2.bitmap.width / 2
   sprite2.y = sprite2.oy = sprite2.bitmap.height / 2
   if flip_dir
     ver_step = 1
     sprite2.bitmap.blt(0, 240, @sprite.bitmap, Rect.new(0, 240, 640, 240))
     @sprite.bitmap.fill_rect(0, 240, 640, 240, Color.new(0, 0, 0, 0))
   else
     ver_step = -1
     sprite2.bitmap.blt(0, 0, @sprite.bitmap, Rect.new(0, 0, 640, 240))
     @sprite.bitmap.fill_rect(0, 0, 640, 240, Color.new(0, 0, 0, 0))
   end
   # Move the shutters apart
   open_gap.times do
     @sprite.y -= ver_step
     sprite2.y += ver_step
     Graphics.update
   end
   # Make sure starting step is not zero
   start_speed = slowness if start_speed < slowness
   # Move sprites
   dist = 640 - @sprite.x + start_speed
   loop do
     x_diff = (dist - (640 - @sprite.x)) / slowness
     @sprite.x += x_diff
     sprite2.x -= x_diff
     Graphics.update
     break if @sprite.x >= 640 + 320
   end
   sprite2.bitmap.dispose
   sprite2.dispose
 end
 #--------------------------------------------------------------------------
 # * Drop Off
 #     clink_sound : The SE filename to use for clinking sound
 #--------------------------------------------------------------------------
 def drop_off(clink_sound=Clink_Sound)
   bitmap = @sprite.bitmap.clone
   @sprite.bitmap.dispose
   @sprite.dispose
   # Slice bitmap and create nodes (sprite parts)
   max_time = 0
   hor = []
   10.times do |i|
     ver = []
     8.times do |j|
       # Set node properties
       s = Sprite.new
       s.ox = rand(32)
       s.oy = 0
       s.x = s.ox + 64 * i
       s.y = s.oy + 64 * j
       s.bitmap = Bitmap.new(64, 64)
       s.bitmap.blt(0, 0, bitmap, Rect.new(i * 64, j * 64, 64, 64))
       # Set node physics
       angle = rand(4) * 2
       angle *= rand(2) == 0 ? -1 : 1
       start_time = rand(30)
       max_time = start_time if max_time < start_time
       # Store node and it's physics
       ver.push([s, angle, start_time])
     end
     hor.push(ver)
   end
   bitmap.dispose
   # Play sound
   play_se(clink_sound) if clink_sound != nil
   # Move pics
   (40 + max_time).times do |k|
     hor.each_with_index do |ver, i|
       ver.each_with_index do |data, j|
         # Get node and it's physics
         s, angle, start_time = data[0], data[1], data[2]
         # Manipulate node
         if k > start_time
           tone = s.tone.red - 6
           s.tone.set(tone, tone, tone)
           s.y += k - start_time
           s.angle += angle % 360
         elsif k == start_time
           tone = 128
           s.tone.set(tone, tone, tone)
           $game_system.se_play(Clink_Sound) if clink_sound != nil
         end
       end
     end
     Graphics.update
   end
   # Dispose
   for ver in hor
     for data in ver
       data[0].bitmap.dispose
       data[0].dispose
     end
   end
   hor = nil
 end
end
#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
#  Added transition_type attribute which controls transition shown.
#==============================================================================
class Game_Temp  
 attr_accessor :transition_type  
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 alias transpack_game_temp_init initialize
 def initialize
   @transition_type = 0
   transpack_game_temp_init
 end
end
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  Scene_Map modded to use the transition effect when battle begins.
#==============================================================================
class Scene_Map
 #--------------------------------------------------------------------------
 # * Battle Call
 #--------------------------------------------------------------------------
 alias transpack_call_battle call_battle
 def call_battle
   transpack_call_battle
   $scene = Transition.new($scene, Transition::BATTLE_EFFECT)
 end
 #--------------------------------------------------------------------------
 # * Shop Call
 #--------------------------------------------------------------------------
 alias transpack_call_shop call_shop
 def call_shop
   transpack_call_shop
   $scene = Transition.new($scene, Transition::SHOP_EFFECT)
 end
 #--------------------------------------------------------------------------
 # * Name Input Call
 #--------------------------------------------------------------------------
 alias transpack_call_name call_name
 def call_name
   transpack_call_name
   $scene = Transition.new($scene, Transition::NAME_EFFECT)
 end
 #--------------------------------------------------------------------------
 # * Menu Call
 #--------------------------------------------------------------------------
 alias transpack_call_menu call_menu
 def call_menu
   transpack_call_menu
   $scene = Transition.new($scene, Transition::MENU_EFFECT)
 end
 #--------------------------------------------------------------------------
 # * Save Call
 #--------------------------------------------------------------------------
 alias transpack_call_save call_save
 def call_save
   transpack_call_save
   $scene = Transition.new($scene, Transition::SAVE_EFFECT)
 end
 #--------------------------------------------------------------------------
 # * Player Place Move
 #--------------------------------------------------------------------------
 def transfer_player
   # Clear player place move call flag
   $game_temp.player_transferring = false
   # If move destination is different than current map
   if $game_map.map_id != $game_temp.player_new_map_id
     # Set up a new map
     $game_map.setup($game_temp.player_new_map_id)
   end
   # Set up player position
   $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
   # Set player direction
   case $game_temp.player_new_direction
   when 2  # down
     $game_player.turn_down
   when 4  # left
     $game_player.turn_left
   when 6  # right
     $game_player.turn_right
   when 8  # up
     $game_player.turn_up
   end
   # Straighten player position
   $game_player.straighten
   # Update map (run parallel process event)
   $game_map.update
   # Remake sprite set
   @spriteset.dispose
   @spriteset = Spriteset_Map.new
   # If processing transition
   if $game_temp.transition_processing
     # Clear transition processing flag
     $game_temp.transition_processing = false
     # Execute transition
     $scene = Transition.new($scene)
   end
   # Run automatic change for BGM and BGS set on the map
   $game_map.autoplay
   # Frame reset
   Graphics.frame_reset
   # Update input information
   Input.update
 end
end



Instructions

First of all, you will need the screenshot dll. You will find it in the demo. Put it in your game folder.

To use this, instead of calling a scene directly like this:
$scene = Scene_Something.new


call it like this:
$scene = Transition.new(Scene_Something.new)


Before calling it, you can change "$game_temp.transition_type" to activate the transition.

As of version 1.11 and above, the battle, menu, name, shop and save scenes automatically use the predefined transition effects, so all you have to do is call the scenes using the event command.

Optionally, you can also call a certain effect like this:
Transition.new(NEXT_SCENE, EFFECT_TYPE, EFFECT_TYPE_ARGUMENTS)


                  NEXT_SCENE: An instance of the next scene (eg: Scene_Battle.new)
                 EFFECT_TYPE: (Optional) Number indicating the effect type (eg: 4)
EFFECT_TYPE_ARGUMENTS: (Optional) Arguments for the called effect type (eg: Color.new(255, 0, 0))

For example, the following code will call the menu scene with the Fade effect with green color and the effect lasts for 20 frames (nearly half a second):
$scene = Transition.new(Scene_Menu.new, 4, Color.new(0, 255, 0), 20)


More detailed instructions are found in the script header.

For Scripters:

    For adding new transitions, check the method Transition#call_effect. Simply add a new case for "type" and add your method. Don't forget to add the *args version, it makes it easier to pass arguments when calling transitions. Check out the call_effect method for reference.


Compatibility

This script replaces Scene_Map#transfer_player method.


Credits and Thanks




Author's Notes

If you have any problems, suggestions or comments, you can find me at:

- forum.chaos-project.com

Enjoy ^_^
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Starrodkirby86 on July 24, 2008, 12:54:48 pm
I'm sorry, I would be very interested in this, but I keep getting an error. It's a font error, and it probably can be corrected with the RGSSwhatever dll or something, but I don't know...The font error is when

Screw this, I tinkered with the scripts and then pressed OK (With no effect) and everything works again. 0_0 Lame Enterbrain.

Fantasist, those transitions are sexy, especially the title screen one. I've been listening to too much Reversing Darts by cuevox recently, which is giving me a techno vibe. Possibly you can do something pixel-related that isn't a mosaic or dissolve effect? And if you have Windows Movie Maker, those transitions you can try implementing in RPG Maker. The more, the merrier! :)
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on July 24, 2008, 01:07:31 pm
Mosaic... It's impossible to do in RMXP without lag, so I've decided to skip that one. Dissolve can be done by using a transition graphic. You mentioned Movie Maker, nice, I almost forgot. I've set my target on the powerpoint transitions, though most of them can be done in the regular way by making use of transition graphics. You can find 4 files in the Graphics/Transitions folder and you'll recognize the 'random blinds vertical/horizontal' from powerpoint. Many others need scripting, but are very easy to do. I've just been busy with other stuff.
I picked the shred effect from Pokemon Sapphire, I really liked it. That's what inspired me to complete this.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Starrodkirby86 on July 24, 2008, 01:11:53 pm
Oh yeah, Pokemon battles have some of the best transitions ever...Especially the crazy Pokeballs, battle split screens, and the flashing screen of doom. Emulating those would be pure awesomeness (Especially the split screen, I know many people would want something along those lines). All of those aforementioned can be easily done with pictures though, but a simple call script mechanism to launch these is even easier than having a lot of pictures moving back and forth.

Maybe you can try having rotated effects toward the blinds? Or make something trippy and drug-like?
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on July 24, 2008, 01:29:28 pm
Split screen as in the screen splitting in half and the parts moving away? That's easy to script.

QuoteMaybe you can try having rotated effects toward the blinds? Or make something trippy and drug-like?

I didn't get you :p

Btw, try to think about this, how many effects will people use? I've tried it, and having all those 'special' effects gets annoying. These can be used once in a while or for some special events (like boss battles in CP). That's the reason I've made this topic instead of just making all the transition effects whether graphical or scriptwise.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Starrodkirby86 on July 24, 2008, 01:48:09 pm
http://youtube.com/watch?v=Rcwj_5NxDAo (http://youtube.com/watch?v=Rcwj_5NxDAo)
This split screen.
---
I have no idea what I'm saying too Fanta...except maybe I was leading on to something from the rotating blinds which gave me the impression of drug-like fantasies. Ask mumerus what's it like.
---
You can't like change effect every teleport map, but the more transitions you have, the more a player can choose to use for their game. They can choose a small list of it and it's cool, while another player can choose a different combination as of which. All of them can be used in a cleverly nice boss battle, maybe transitions can prove to be annoyances or a boss battle's specialty...Hehe.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on July 24, 2008, 10:50:39 pm
Very nice. Lemme give you another one for the collection. :naughty:

Spoiler: ShowHide
  def transpose(frames=80, max_zoom=12, times=4)
    max_zoom -= 1 # difference b/w zooms
    max_zoom = max_zoom.to_f / frames / times # unit zoom
    unit_opacity = (255.0 / frames).ceil
    spr_opacity = (255.0 * times / 2 / frames).ceil
    @sprites = []
    (times * 3 / 2).times {
        s = Sprite.new
        s.x, s.y, s.ox, s.oy = 320, 240, 320, 240
        s.bitmap = @sprite.bitmap
        s.blend_type = 1
        s.opacity = 128
        s.visible = false
        @sprites.push(s)}
    count = 0
    loop {
        @sprites[count].visible = true
        count += 1 if count < times * 3 / 2 - 1
        (frames / times / 2).times {
            @sprites.each {|s|
                break if !s.visible
                s.zoom_x += max_zoom
                s.zoom_y += max_zoom
                s.opacity -= spr_opacity}
            @sprite.opacity -= unit_opacity
        Graphics.update}
        break if @sprite.opacity == 0}
    @sprites.each {|s| s.dispose}
  end
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on July 24, 2008, 11:59:17 pm
@Bliz: Awesome! Now that's what I'm talking about people!
@Star: Okay, in the context of RGSS, I'll only be worrying about the part where the screen whites and blacks out. From there, the battle scene is responsible. It can be coded, so I'll try.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Berans on July 25, 2008, 04:39:36 am
I doubt this is even seriously possible, but a "roll-up" fade would be nice.
where one of the screen edges rolls up onto the rest of the screen, leaving black behind, until the whole thing is offscreen
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on July 25, 2008, 06:23:39 am
That's not possible without heavy lag.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Berans on July 25, 2008, 10:12:44 pm
One can always dream ;)
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on July 26, 2008, 06:08:29 am
But an effect where you don't see the rolled up edges wouldn't be a problem. =X
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Ryex on August 08, 2008, 02:38:40 pm
you should make one where the screen cracks and then falls apart!
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on August 08, 2008, 02:55:34 pm
Generating the cracks before that transition is time consuming. That's why I haven't used it in my game but instead I use the squares. -_-
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: GAX on August 08, 2008, 03:01:50 pm
lol, the Final Fantasy Battle Transition...atleast I know X and X-2 use the screen cracking one and then the pieces bursting out like Blizzard's squares.

It's some crazy shit really, but yeah, it looks like it'd be very time consuming to make that.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on August 08, 2008, 03:14:30 pm
No, not time consuming to make it, it would consume a lot of time to generate the images. RMXP will always freeze for a moment before that transition can be made.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on August 08, 2008, 05:11:42 pm
Today is Saturday and we're having a party, so I'll post the script on Sunday (tomorrow) or the next Saturday.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: GAX on August 08, 2008, 05:27:02 pm
howbout a demo link?
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on August 08, 2008, 05:42:00 pm
Quote from: Fantasist on July 24, 2008, 12:45:52 pm
So this is a transition pack script I'm making. It has about 7 effects for now. I haven't posted the script yet because I still need to improve the code a bit, and I need more ideas for effects. The current effects are:

1. Zoom In
2. Zoom Out
3. Shred Horizontal
4. Shred Vertical
5. Fade to color
6. Explode (My version)
7. Explode (CP Version)
8. Transpose (by Blizzard)
9. Pokemon Battle Transition 1 (one of the GBA games)

Legend:

Newly added, not in the demo
Considered, not yet added (might not be added)

Here's the demo:
http://www.sendspace.com/file/6sq1li

The project is not encrypted, but there's no point in using the code just yet, it's kind of messy.

So point of this topic is to gather more ideas for transition effects. Someone must have some specific request or some interesting ideas. Remember, I don't guarantee anything, but just give mesome ideas.

I'll wait for 2 days and if I don't get many requests, I'll close this topic and work on trimming the script for posting. So request away :)


:D

If you want transpose, just add a new conditional branch, add the call for my method and add the code for my method (posted above) into that script.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on August 08, 2008, 05:43:04 pm
In the first post :p
lol!
I haven't really changed much, so there's no point in uploading it again.

EDIT: They removed the file... I guess I'll have to speed up the process and come up with a proper submission by this Sunday >.<
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: GAX on August 10, 2008, 11:34:14 pm
Demo plz?  :^_^':
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on August 11, 2008, 06:59:38 am
Quote from: Blizzard on August 08, 2008, 05:42:00 pm
Quote from: Fantasist on July 24, 2008, 12:45:52 pm
So this is a transition pack script I'm making. It has about 7 effects for now. I haven't posted the script yet because I still need to improve the code a bit, and I need more ideas for effects. The current effects are:

1. Zoom In
2. Zoom Out
3. Shred Horizontal
4. Shred Vertical
5. Fade to color
6. Explode (My version)
7. Explode (CP Version)
8. Transpose (by Blizzard)
9. Pokemon Battle Transition 1 (one of the GBA games)

Legend:

Newly added, not in the demo
Considered, not yet added (might not be added)

Here's the demo:
http://www.sendspace.com/file/6sq1li

The project is not encrypted, but there's no point in using the code just yet, it's kind of messy.

So point of this topic is to gather more ideas for transition effects. Someone must have some specific request or some interesting ideas. Remember, I don't guarantee anything, but just give mesome ideas.

I'll wait for 2 days and if I don't get many requests, I'll close this topic and work on trimming the script for posting. So request away :)


:D

If you want transpose, just add a new conditional branch, add the call for my method and add the code for my method (posted above) into that script.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: GAX on August 29, 2008, 06:09:57 am
SOMOENE POST THE FUCKING DEMO PLEASE!!!

Blizzy, don't repost that same thing because the link's broken >.<
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on August 31, 2008, 06:54:16 pm
It really is. O.o; I'll see if I have it on my HDD somewhere.

EDIT: Sorry, no. ._.

EDIT: LMAO! I DO have the demo still on my HDD! It was on my desktop! xD

http://www.sendspace.com/file/v2bjs4
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: GAX on September 01, 2008, 05:17:59 pm
Finally got to play it (yay!) and I already have some things to talk about.

First, what'd be nice is if you could clasify transitions.  I think an easy one would be this:  Separate transtions as Battle Transitions, Map Transitions, Title Transitions, Game Over Transitions, Open Menu Transitions, Continue Transitions, and called transitions (using a script call to make it so the next transition is replaced with a selected transition, useful for boss battles).

The transitions are good, but I think people might only see a game as flashy if the screen explodes just from transfering maps.  Plus, using a transition to open the just the menu looks a bit too flashy, most games just have a momentary lag or a the screen darkens a bit and the menu pops up.

The explodes are great, but in all honesty need a bit of work.  An explode should cause the squares to fall down revealing the battle screen, not a black screen and a basic transition.

The other transitions are all pretty good, I'd probably use them if I had more control over when a transition is active or inactive.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on September 15, 2008, 09:27:10 am
Shit -_- I got unlucky again, what's it with me and internet?! @GAX: This demo is just the beginning, I havent even started working on it full time. Classifying the tranbsitions as you mention is going to cause a LOT of compatibility problems (or so I think right now). Anyway, I'm really sporry I left without warning, I couldn't do anything to help. I'll get this done, don't worry.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: G_G on February 08, 2009, 12:57:45 pm
could someone upload this again?

I've wanted to try it for awhile but the links are broken.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Calintz on February 08, 2009, 01:05:08 pm
This is awesome Fantasist!!

Can you make the screen dissolve from the middle out in different shapes??
And vice-versa for more add-ons.
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on February 08, 2009, 11:26:55 pm
Holy crap, I have a lot of work to do... I'll get this up and running in 12 hours.

@Calintz: I think you can do that with transition pics, right?
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Calintz on February 09, 2009, 04:31:47 pm
Perhaps, but I honestly don't like using the pictures, because they don't move right...
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on February 09, 2009, 11:49:38 pm
Hey, does anyone have the file, mine is lost somewhere deep in one of my backups -_-
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on February 10, 2009, 03:28:30 am
Sorry, I don't seem to have it anymore. :/
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on February 11, 2009, 07:16:52 am
I'll have to make it again I guess... ._. my DVD ROM is busted :'(
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: shdwlink1993 on February 11, 2009, 09:26:07 am
You mean THIS (http://www.sendspace.com/file/pfd2h7) file? :D
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Calintz on February 11, 2009, 05:46:11 pm
Yay Shadwlink
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Tazero on February 11, 2009, 06:42:06 pm
I always like a scene where it kind of shatters like glass or like in the legend of dragoon transition a sand effect
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Calintz on February 11, 2009, 09:21:51 pm
It's in there...
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: G_G on February 12, 2009, 12:01:16 am
thnx shdw
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on February 13, 2009, 12:06:45 am
I could hug you shdw *powers up*
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: G_G on February 14, 2009, 08:02:30 pm
wow fantasist this is really neat. I downloaded it and the wierd thing is I didnt try it until like 3 minutes ago. Here's the funny thing, I downloaded it and a few seconds later I forgot what I was doing so I assumed I was working on my game.

Then I saw the file extracted it and tested it out. Its really cool
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Calintz on February 14, 2009, 08:14:46 pm
I think I'm gonna have to test this right now...

EDIT
I will download the file that shdwlink uploaded, but could you please fix the link in your 1st post Fantasist!?  :^_^':

**What syntax allows the user to change the transition style from the script command in the event editor??
**This does not work for me!! =(
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Blizzard on February 15, 2009, 07:06:22 am
Does the demo still have my "transpose" transition?
Title: Re: [XP] Transition Pack Alpha Stages Demo (request away!)
Post by: Fantasist on July 05, 2009, 03:20:19 pm
@Cal: I oughta be hanged :cry:
@Blizz: I just checked, it's still there.

Updated the link in 1st post (and the post itself).

EDIT: Updated again, with new demo. Scripters out there, I need some help. Please read the first post if you're willing to help:

Quote
effect_parameters (optional, experimental): If you specified effect_type, you can additionally pass parameters for that particular effect. For details about each effect, check it's documentation in the script. Note that this feature is not fully functional. I want this feature and I will not consider this script complete without it. I am having trouble getting it right so if you can help, I'll be thankful.
Title: Re: [XP] Transition Pack WIP
Post by: Ryex on July 07, 2009, 03:38:07 pm
what would happen if you had then store the parameters in an array like
$scene = Transition.new(Scene_Map.new, 1, [20, 12])
then when calling the effect method
insted of this

# Call method with or without arguments depend
# on value of args.
args ? method(args) : method

do this?

case args.size
when 0 #? I forgot what happens when you use size on a empty array so
 method
when 1
 method(args[0])
when 2
 method(args[0], args[1])
when 3
 method(args[0], args[1], args[2])
# ect.
end


I don't know what you mean by you can't get it to work right but this should to the best of my knowledge call methods with the right parameters.
Title: Re: [XP] Transition Pack WIP
Post by: Fantasist on July 08, 2009, 01:39:46 pm
Actually, if I use arrays, there's no need even for that. All I need is to pass one array of arguments and check the array size inside the method (just like Blizz aliased Bitmap#initialize in ultimate font override). But then, that defines a rule for passing parameters for all the methods that will be made over time by me or other scripters. I'm trying to make it so that we can pass the arguments in a natural way.
Of course, this is just an idea and I don't know much about the subject. If it's more trouble than it's worth or if it's a performance hog, then I'll just modify the methods to handle array arguments.
Title: Re: [XP] Transition Pack WIP
Post by: Ryex on July 08, 2009, 01:52:16 pm
personally I would  just use array and get it working the way you want to. then when you find out more about how to do it you can get it to pass them correctly.

EDIT I GOT IT WORKING THE WAY YOU WANT!


def call_effect(type, args)
    # Get method to call depending on transition
    # type specified.
    a = args.nil?
    unless a
      case type
      when 0 then zoom_in(*args)
      when 1 then zoom_out(*args)
      when 2 then shred_h(*args)
      when 3 then shred_v(*args)
      when 4 then fade(*args)
      when 5 then explode
      when 6 then explode_cp
      when 7 then transpose(*args)
      end
    else
      case type
      when 0 then zoom_in
      when 1 then zoom_out
      when 2 then shred_h
      when 3 then shred_v
      when 4 then fade
      when 5 then explode
      when 6 then explode_cp
      when 7 then transpose
      end
    end
    # Call method with or without arguments depend
    # on value of args.
  end


yes the
a = args.nil?
    unless a
is necessary other wise you get a type error
and you need to do
*args when putting it in to call something
*args is all the arguments separated
args is an array with all the arguments
that method works I've tested it
Title: Re: [XP] Transition Pack WIP
Post by: Fantasist on July 09, 2009, 10:50:07 am
I think that is what I did, but instead of using the case statement for all the methods, I stored the method in a variable:


    # Get method to call depending on transition
    # type specified.
    method = case type
    when 0 then zoom_in
    when 1 then zoom_out
    when 2 then shred_h
    when 3 then shred_v
    when 4 then fade
    when 5 then explode
    when 6 then explode_cp
    when 7 then transpose
    end
    # Call method with or without arguments depend
    # on value of args.
    args ? method(*args) : method


That's what I did in the demo I posted. It works when calling transitions without arguments, but if you DO use arguments, it gives an arguments. For example, when I called Zoom In with the "frames" argument:
$scene = Transition.new(Scene_Map.new, 1, 15)


it gives an argument error at the line:
args ? method(*args) : method


saying "15 is not a symbol". Now what's that supposed to mean?

Also, what exactly have you tested? When I tested it, calling effects normally doesn't cause a problem but calling them with type and arguments causes an error.

PS: New effect "Shutter" added (not in demo).
Title: Re: [XP] Transition Pack WIP
Post by: Ryex on July 09, 2009, 01:01:17 pm
Quote from: Fantasist on July 09, 2009, 10:50:07 am
I think that is what I did, but instead of using the case statement for all the methods, I stored the method in a variable:


   # Get method to call depending on transition
   # type specified.
   method = case type
   when 0 then zoom_in
   when 1 then zoom_out
   when 2 then shred_h
   when 3 then shred_v
   when 4 then fade
   when 5 then explode
   when 6 then explode_cp
   when 7 then transpose
   end
   # Call method with or without arguments depend
   # on value of args.
   args ? method(*args) : method


That's what I did in the demo I posted. It works when calling transitions without arguments, but if you DO use arguments, it gives an arguments. For example, when I called Zoom In with the "frames" argument:
$scene = Transition.new(Scene_Map.new, 1, 15)


it gives an argument error at the line:
args ? method(*args) : method


saying "15 is not a symbol". Now what's that supposed to mean?

Also, what exactly have you tested? When I tested it, calling effects normally doesn't cause a problem but calling them with type and arguments causes an error.

PS: New effect "Shutter" added (not in demo).

Fant that IS the problem! when you tried to store the effect method in 'method' it didn't work. all you were getting is what the method RETURNS which in every case is nil (or for some reason it was returning the arguments of the zoom_in method)! and is ran the method so you were seeing the effect, yes but it was not being run at the time you thought it was. but some p 'hello' commands befor the line
args ? method(args) : method

(also note that the line in the demo is method(args) NOT method(*args))
and you will see that the effect is displayed BEFORE the print command
also you can't use args directly in a if statement you will get a type error (I don't know exactly what this means).
if args.nil?
will get a type error if you use extra arguments
a = args.nil?
if a
for some strange reason will not
also when doing
args ? method(*args) : method

you are testing args for TRUE by default and when it was nil (because you didn't use and extra arguments) it returns false and you didn't notice it doing anything (because method is NOT a effect method) and when args is not nil you get a type error before you get to the error at method(*args) whis WOULD return an error.


the code I posted WORKS you and call ANY of the effects with extra arguments you modify the default values  I TESTED it at least TRY it before telling me it is not going to work, what you doing is NEVER going to work, who CARES if the method is longes by 10 lines it WORKS ans INTENDED!

just TRY it ok?

PS: the zoom_in and zoom_out effects are backwards in the demo zoom_in zooms out and vice versa.
Title: Re: [XP] Transition Pack WIP
Post by: Fantasist on July 09, 2009, 01:18:54 pm
QuoteFant that IS the problem! when you tried to store the effect method in 'method' it didn't work. all you were getting is what the method RETURNS which in every case is nil (or for some reason it was returning the arguments of the zoom_in method)! and is ran the method so you were seeing the effect, yes but it was not being run at the time you thought it was. but some p 'hello' commands befor the line


Checked that already and strangely enough, the methods are running when they should.

Quote(also note that the line in the demo is method(args) NOT method(*args))
and you will see that the effect is displayed BEFORE the print command
also you can't use args directly in a if statement you will get a type error (I don't know exactly what this means).
if args.nil?
will get a type error if you use extra arguments
a = args.nil?
if a
for some strange reason will not


I've tested both args and *args and I'm sure that's not the problem here. I used * args only twice. While getting the arguments from Transition.new, and when passing them to the effect method. args holds the array, *args holds the contents of the array, that's how I understand it and it seems to work fine so far.
And the effect executed AFTER the print, I checked.
About using args directly, I doubt that's much of a problem, but I noticed something else. This is what I currently use:

no_args = args.nil? || args == []
no_args ? method : method(*args)


It made no difference (regarding using args directly in an if clause). But here, I'm also checking for an empty array as I got it once.

Quote
the code I posted WORKS you and call ANY of the effects with extra arguments you modify the default values  I TESTED it at least TRY it before telling me it is not going to work, what you doing is NEVER going to work, who CARES if the method is longes by 10 lines it WORKS ans INTENDED!

just TRY it ok?

PS: the zoom_in and zoom_out effects are backwards in the demo zoom_in zooms out and vice versa.


You know, why didn't I try this earlier? Sorry about it, really. I'll try it and get back to you. btw, thanks for the help Ryex :)


EDIT: You're right, it works! Let's see what I'll do next...
Title: Re: [XP] Transition Pack WIP
Post by: Ryex on July 09, 2009, 01:26:43 pm
well do do need *args otherwise you passing an array and ONE argument with *args you passing the contents of the array as an arguments
and not the methods were NOT executing when they should the were exacuting in the case statement I did a LOT of tests to make sure of that.
the code I posted works try it and find out.
Title: Re: [XP] Transition Pack WIP
Post by: Fantasist on July 09, 2009, 01:28:32 pm
QuoteEDIT: You're right, it works! Let's see what I'll do next...

:)
Title: Re: [XP] Transition Pack WIP
Post by: Ryex on July 09, 2009, 01:32:53 pm
 :)
now you can consider it finished and get it into the database by applying the template! :D
Title: Re: [XP] Transition Pack WIP
Post by: Fantasist on July 09, 2009, 01:38:58 pm
Yeah... I think I will, after adding a couple more effects (I have some more nice ideas :D). Thanks for the help Ryex, consider yourself in the credits.

EDIT: Finally! This is no longer WIP, v1.0 is released, yay :D
Title: Re: [XP] Transition Pack v1.0
Post by: winkio on July 12, 2009, 11:25:12 am
Schwing  ;)

Awesome script, Fantasist
Title: Re: [XP] Transition Pack v1.0
Post by: Fantasist on July 12, 2009, 03:40:37 pm
Ah, DB'd by our ever vigilant mods, thanks winkio :)
Title: Re: [XP] Transition Pack v1.0
Post by: Holyrapid on July 13, 2009, 10:26:42 am
Very nice effects. Me likes.
Title: Re: [XP] Transition Pack v1.0
Post by: Fantasist on July 13, 2009, 10:38:33 am
Thanks :)
Title: Re: [XP] Transition Pack v1.0
Post by: Kirye on July 21, 2009, 10:37:26 pm
Alright, i'm pretty noob at this, but hopefully it's something small that i'm just not seeing.

I've been trying to use the transition effects to come in when an important battle starts (Ala Chaos Project). But so far, everytime I do it, it goes back to the map screen in full color, then has the original battle transition.

I tried using this:
$scene = Transition.new(Scene_Map.new, 
7, Color.new(-255, -255, -255) 50)


But it keeps having a Syntax Error.

I also tried to throw in a Change Screen Color Tone to black before the transition, but it doesn't really work the way i'd hope.

I hope I made some sense.
Title: Re: [XP] Transition Pack v1.0
Post by: Aqua on July 21, 2009, 10:43:24 pm
Using Scene_Map.new makes it go back to the map; you need it to go to the battle.

You missed a , after the Color.new(), and the color arguments only range from 0-255
Title: Re: [XP] Transition Pack v1.0
Post by: Kirye on July 21, 2009, 10:46:44 pm
I kinda made it work for me, but as for going into Scene_Battle, it always gets an error on my part.

And yeah, I saw the mistake on the Color.New part. ><

If I use Scene_Battle, it crashes after the transition. But if I remove the Wait 1 frame, then it goes into the battle and doesn't have the transition effect.
Title: Re: [XP] Transition Pack v1.0
Post by: Fantasist on July 22, 2009, 07:30:35 am
Post the exact script command you've used. Also, are you using any custom battle scripts?
Title: Re: [XP] Transition Pack v1.0
Post by: Kirye on July 22, 2009, 11:54:25 am
Screen Flash @1
Change Screen Color Tone @5
And then the script is:
$game_temp.transition_type = 5
$scene = Transition.new(Scene_Map.new)


I'm using the RTAB and Nortos' Side View battle system.
Title: Re: [XP] Transition Pack v1.0
Post by: Fantasist on July 24, 2009, 07:06:40 am
Try using this:


$game_temp.transition_type = 5
$scene = Transition.new(Scene_Battle.new)
Title: Re: [XP] Transition Pack v1.0
Post by: Kirye on July 26, 2009, 03:01:15 am
Sorry for the late reply, I've been at Comic con. XD

That's the first code I tried, but it goes straight into the battle without showing the transition.
Title: Re: [XP] Transition Pack v1.0
Post by: Fantasist on July 26, 2009, 05:28:08 am
You mean you've used Transition.new(Scene_Battle.new)? Also, you don't have to call the battle scene through events again. If the problem still persists, could you send me your Scripts.rxdata? And preferably a map with the event you're using to call the battle.
Title: Re: [XP] Transition Pack v1.0
Post by: Kirye on July 28, 2009, 04:44:10 pm
Yes, I used Scene_Battle.new, but it crashes when the battle begins if I use Wait 1 frame between the Battle process and the script. The transition will not show at all and will go straight into the battle if Wait 1 frame is not used.

Either way I found a working alternative, so thanks regardless for putting the time in to respond. :D
Title: Re: [XP] Transition Pack v1.0
Post by: Fantasist on July 29, 2009, 05:56:37 am
Well, good for you then :)
But I'm still curious... Oh well.
Title: Re: [XP] Transition Pack v1.0
Post by: Cid on August 18, 2009, 05:41:17 am
I'm a bit confused as to how this all works. This is what I have in the call script command:

$game_temp.transition_type = 9
$scene = Transition.new(Scene_Battle.new)


But all that does is show the transition then produce an error. Am I supposed to be specifying which enemy group to call somewhere? Using "Enemy Encounter" just starts the battle with the default transition.
Title: Re: [XP] Transition Pack v1.0
Post by: Fantasist on August 20, 2009, 05:22:02 am
OK, one thing you need to understand about this script is... now follow very closely... it will effect the transition of the scene exiting, not the scene entering next. So the transition is displayed when exiting from the map, not when starting the battle. Of course, those who have played Chaos Project will know that the map changes directly to the battle without any blank screen. That can be done by modifying the battle scene, and I can't even alias the methods (meaning the script won't be plug-and-play).

PS: Maybe I should include this in the first post... nah, I'll do it later.
Title: Re: [XP] Transition Pack v1.0
Post by: Cid on August 20, 2009, 06:13:04 pm
Okay, so how exactly am I supposed to set it up? The transitions can still be used to "start" a battle, right?
Title: Re: [XP] Transition Pack v1.0
Post by: Fantasist on August 21, 2009, 07:45:14 am
Start a battle... I didn't get you there.

1. The current scene transitions into a black screen, then the battle transition starts with it's regular animation.
2. The current scene directly transitions into the battle scene.

Do you mean case 2? If you want that, you will have to edit your scripts a bit.

PS: btw,

QuoteBut all that does is show the transition then produce an error. Am I supposed to be specifying which enemy group to call somewhere? Using "Enemy Encounter" just starts the battle with the default transition.


What was that error?
Title: Re: [XP] Transition Pack v1.0
Post by: Cid on August 21, 2009, 08:06:45 am
Well ideally I'd like it to be case 2, but that depends on how difficult it would be to mod the scripts. I'm alright with having a black screen between the transition and battle start if that's the only viable option.

Script 'Game_Troop' line 30: NoMethodError occurred.
undefined method `members' for nil:NilClass


That's the error I get. I'm also testing it in a blank project with no additional scripts.
Title: Re: [XP] Transition Pack v1.0
Post by: Blizzard on August 21, 2009, 08:26:21 am
The calling method was probably executed before the game data in the title was loaded.
Title: Re: [XP] Transition Pack v1.1
Post by: Fantasist on August 23, 2009, 07:58:38 am
Well, it turns out that the problem was Scene_Battle being called before the battle stuff was initialized. Anyway, I updated the script and the demo. Thanks for pointing it out guys :)
Title: Re: [XP] Transition Pack v1.1
Post by: Memor-X on August 24, 2009, 10:18:57 pm
and to think i was just about to ask how to get it to work for battle transistions, i love how the Transpose trasition can be customized by chaning the value at the top of the code for it, it was kinda slow for my taste, got it to be a lot fater and longer, just wondering though, the demo has you using the transition on the same map but how would you get it to work between maps
Title: Re: [XP] Transition Pack v1.1
Post by: Fantasist on August 26, 2009, 10:28:21 am
...good question Memor. I'll look into it.
Title: Re: [XP] Transition Pack v1.1
Post by: Memor-X on July 14, 2010, 09:22:00 pm
i found a bug, i'm not surprised no one's found it cause it only appears when you encrypt the game files file when you make the game disk, when you got to do a transition, it can't find the screenshot file because the Data folder doesn't exist, i fixed it by making an empty folder called data but i think i know why the error was coming up, the screenshot is being made in the Data folder which becomes encrypted and you can't write to it any more unless you create another folder called Data.....i think you know what i am on about Fantasist, best course of action is to probably chnage the location of the screenshot file to the root directory

also, just to make a note to anyone who wants to burn their game to a CD and play it off from there, you can't if your using this script cause you can't write files to a CD without burning it all the time and in that cause, you need a Rewritable CD/DVD and to change this script to burn and erase the screenshot file every time it's made, i don't expect Fantasist to fix his script to do that cause if anyone on the forum thinks that's a good way to make your game run on a CD, then you obviously don't know why games install then
Title: Re: [XP] Transition Pack v1.1
Post by: jasprelao on August 24, 2010, 08:21:24 am
Wow, this is a great script,
Nice and I want to use it in my game.

By the way,
When I try to do in this sort of commands:

1. Transition
2. Transfer Map

The result will be:Transfer Map Executed First and then the Transition Executed after I've been transferred to other map.
Could you help me for this problem?

Thanks...
Title: Re: [XP] Transition Pack v1.1
Post by: MikePjr on November 24, 2010, 02:06:41 pm
Could i make a request for a transition?
I was thinking, a zoom effect much like Final Fantasy 4 for the SNES, where it basically starts to zoom in a little, but then zoomz back out quickly for a sec then zooms all the way in... it's usually done on the overworld map. i'm trying to find a video... but i can't.. so if you have played FF4 on the super nintendo you know what i am talking about.
I was gonna suggest a transition like in caves and such to, but as said before, mosaic would not work too well.
So seeing as their is a zoom already, you could figure out how to do such an affect.
Title: Re: [XP] Transition Pack v1.1
Post by: Ryex on November 24, 2010, 02:38:00 pm
Fant is retired from RMXP and we haven't seen him in quite a while. you won't get your request filled here.
Title: Re: [XP] Transition Pack v1.1
Post by: ForeverZer0 on November 24, 2010, 04:06:10 pm
I made a few transitions for this but never bothered posting them. I think I made something like that....
I'll look. If not, it can likely be made in under 5 minutes.
Title: Re: [XP] Transition Pack v1.1
Post by: MikePjr on November 24, 2010, 04:36:07 pm
Awesome!
I stink at scripting.
Does anyone think it would be alright to re-post this script else where?..
It's an awesome script, very useful.
Title: Re: [XP] Transition Pack v1.1
Post by: ForeverZer0 on November 24, 2010, 04:38:14 pm
Not sure, you would have to ask Fantasist, and as stated above, he is MIA.
Title: Re: [XP] Transition Pack v1.1
Post by: MikePjr on November 24, 2010, 04:46:03 pm
I suppose if he is given full credit it should be alright.
If hes gone, i doubt he would be too upset, plus i looked through the script, i don't see anything about it being not to be re-posted anywhere else..
And if i re-post it in more places, we could end up with more transitions ^_^
Title: Re: [XP] Transition Pack v1.1
Post by: Fantasist on December 09, 2010, 07:28:43 am
OK. Time to update this script and fix the bugs. Coming in the next update v1.11 :

- Ability to use transitions when switching maps.
- Fixed the encrypted RGSSAD issue.
- Battle, Shop, Save, Menu and Name scenes use effects when called using event commands. Each effect can be preset.
- Ability to use random effects.

EDIT: Updated :D
Title: Re: [XP] Transition Pack v1.1
Post by: Sacred Nym on December 09, 2010, 02:25:52 pm
Quote from: Fantasist on December 09, 2010, 07:28:43 am
OK. Time to update this script and fix the bugs. Coming in the next update v1.11 :

- Ability to use transitions when switching maps.
- Fixed the encrypted RGSSAD issue.
- Battle, Shop, Save, Menu and Name scenes use effects when called using event commands. Each effect can be preset.
- Ability to use random effects.

EDIT: Updated :D


Sweet! Except I'm getting an an error.

Line 216
Undefined method or local variable 'path'

Happens whenever I do anything that would call a transition.
Title: Re: [XP] Transition Pack v1.11
Post by: Fantasist on December 11, 2010, 06:23:25 am
Ah, stupid mistake >.<
I deleted the actual lines of code instead of deleting the debug code (p path). Will update in a few minutes with the fixed version and a more descriptive demo.

EDIT: Fixed script and demo.
Title: Re: [XP] Transition Pack v1.11
Post by: Sacred Nym on December 11, 2010, 05:49:18 pm
Now it's working great! Level up!
Title: Re: [XP] Transition Pack v1.11
Post by: daggeris on April 02, 2018, 04:07:27 am
Hi. after long time i back to RpgMakerXp. i find this awesome script. But when i edit something in script, after transition effect automatically open menu.

$scene = Transition.new(Scene_Map.new)
$game_temp.transition_type += 1
$game_temp.transition_type %= 10

How fix it? I use RPGXP 1.04
Script work correct only , when i copy from demo. If i enter manually, after effect open menu.
Sorry for my English.
Title: Re: [XP] Transition Pack v1.11
Post by: KK20 on April 02, 2018, 03:50:03 pm
As the script instructions say, you use the command
$scene = Transition.new(Scene_Something.new)

The problem though is that the script box is too small to fit some Scene classes all on one line. So you saw this:

$scene = Transition.new
(Scene_Map.new)

You should do it like this

$scene = Transition.new(
Scene_Map.new)


FYI, if you fail to put something in the Transition.new, it defaults to Scene_Menu, as seen in the code itself:

  #--------------------------------------------------------------------------
  # * Initialize
  #     next_scene : Instance of the scene to transition into
  #           type : Transition type
  #          *args : Arguments for specified transition type
  #--------------------------------------------------------------------------
  def initialize(next_scene=Scene_Menu.new, type=nil, *args)
    @next_scene = next_scene
    @args = args
    # If transition type is specified, use it.
    # Otherwise, use default.
    @type = type.nil? ? $game_temp.transition_type : type
  end