Vai al contenuto


Toggle Chat RM - Chat Apri la Chat in un popup

E' severamente vietato richiedere supporto su RPG Maker in chat!
@  Pech93 : (23 May 2012 - 08:05 PM) MIk?
@  Melosx : (23 May 2012 - 07:51 PM) VIENI SU MSN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@  Melosx : (23 May 2012 - 07:51 PM) MIIIIIIIIIIIIIIIIIIIKKKKKKKKKKKK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@  Melosx : (23 May 2012 - 07:46 PM) *iù
@  Melosx : (23 May 2012 - 07:38 PM) iu spin mi rai rau bebi rai rau laic a record bebi rau rau rau rau
@  Melosx : (23 May 2012 - 07:37 PM) lalalallalallalallallllllllllalalalallaaaaaaaaaaaaaaaaaaaaaa!!!!!!!!!!!!!!!!!!
@  Melosx : (23 May 2012 - 07:37 PM) lalalalala
@  Melosx : (23 May 2012 - 07:37 PM) naoinvaoèvpodlnvvrovnovnondpppppppppmvdgdvjomvmvpe
@  Melosx : (23 May 2012 - 07:36 PM) che coa che robaé
@  Abadon : (23 May 2012 - 07:34 PM) dopo che il forum è andato fuori servizio si è persa un po' la chat D:
@  NoosiTD : (23 May 2012 - 07:28 PM) Ma c'è nessuno?
@  NoosiTD : (23 May 2012 - 07:25 PM) ma qua rispondono tutti qìcon un ora di distanza xDD
@  Melosx : (23 May 2012 - 07:23 PM) connessione permettendo
@  Melosx : (23 May 2012 - 07:23 PM) ok arrivo
@  NoosiTD : (23 May 2012 - 07:21 PM) gente sono vivo!
@  Abadon : (23 May 2012 - 07:17 PM) mel vieni su msn u.u
@  Melosx : (23 May 2012 - 06:12 PM) @Saul ti ho risposto!
@  Melosx : (23 May 2012 - 06:12 PM) Buonasera a tutti...^.^
@  Saul : (23 May 2012 - 05:16 PM) Tu sei uno dei tanti
@  Night : (23 May 2012 - 04:53 PM) ma quale nuovo utente? parli di me?

GIF Animation Player


  • Per cortesia connettiti per rispondere
Nessuna risposta a questa discussione

#1 OFFLINE   Ally

Ally

    Fondatori

  • Amministratori
  • 5558 Messaggi:
  • Localitàrpgmkr
  • Ruolo:
    Scripter
  • Progetto VX:
    Essence
  • Tool:
    RM2k/2k3

Inviato 03 February 2012 - 11:38 PM

Nome Script: GIF Animation Player
Versione: 1.0
Autore/i: ???nOBodY???

Informazioni:
Questo script è stato progettato per ricreare immagini GIF. Poiché le immagini GIF non sono supportate in RPG Maker, questo script utilizza una serie di immagini numerate che è possibile inserire in una specifica cartella.
Tenete a mente che questo script non è di facile utilizzo, ma offre un bel pò di potenziale per eventers/scripter e allo stesso modo, eliminando la necessità di usare video nel proprio progetto, potete usare queste sequenza che possono essere aggiunte, ad esempio, anche in una window (ad esempio nella Window_Status).

Istruzioni:
Inserite lo script sotto Material.
Istruzioni all'interno dello script.

Script:
#===============================================================================
# GIF Animation Player v1.0 (RGSS3)
# by ???nOBodY???
# Last Updated: 12/12/2011
#
# Version 1.0
#
#===============================================================================
#
# Update History:
# - Version 1.0  - Initial release; RGSS2 => RGSS3
#
#===============================================================================
#
# This script was designed to act as a GIF animation player. Because GIF images
# aren't supported in RMVXA, this script uses a series of numbered images in a
# specifiable directory.
#
# Keep in mind this script isn't really noob-friendly, but it does offer quite a
# bit of potential for eventers and scripters alike, eliminating the need to play
# in-game videos via the API, which doesn't always work... These GIF animation
# sequences can even be looped within a customized scene, such as a slightly
# modified Scene_Status, or customized windows, such as Window_Status!
#
# NOTE: The GIF Animation Player engine code is located within the "test" sample
# below, within Scene_Map. To use GIF sequences in other scenes, copy and paste
# this code into, say, the Scene_Base main method, directly under the update
# method. You could also make a new method, stick this code in there, then put the
# new method under update instead. Actually, there are many ways to implement this
# script, but by default, Scene_Map is supported, as well as my FES script, if you
# use that... This is the code, although the update_gif_player(i) should be
# replaced by the actual method, unless you would prefer to input the code the way
# I did; creating a new method...
#
#   for i in 1..20
#     update_gif_player(i)
#   end
#
###=============================================================================
###Script Calls!================================================================
###=============================================================================
#
#   $game_system.gif_master_selector[id] = x
#
# Where id is the id of the GIF sequence (1-20).
# Where x is a string determining the name of the folder of the sequence within
# the Graphics/Pictures/ directory, by default.
#
#   $game_system.gif_master_controller[id] = x
#
# Where id is the id of the GIF sequence (1-20).
# Where x is a boolean value determining whether or not that specific GIF sequence
# should play or not.
#
###=============================================================================
###Script Calls!================================================================
###=============================================================================
#
#===============================================================================
# Credits:
#
# -???nOBodY??? (aka sUBzeR_0)
#===============================================================================
#
# Aliases:
# - Spriteset_Map: initialize
# - Spriteset_Map: dispose
# - Spriteset_Map: update
# - Scene_Map: update
#
#===============================================================================

class Game_Temp
  attr_accessor :gif_index               # index for GIF animation player
  attr_accessor :gif_show_picture        # ON switch for GIF animation player
  attr_accessor :gif_erase_fix           # GIF erase fix
  attr_accessor :gif_counter1            # GIF counter 1 (frame_delay)
  attr_accessor :gif_counter2            # GIF counter 2 (loop_delay)

  alias gif_initialize initialize
  def initialize
    @gif_index = []
    for i in 1..20
      @gif_index[i] = -1
    end
    @gif_show_picture = []
    for i in 1..20
      @gif_show_picture[i] = false
    end
    @gif_erase_fix = []
    for i in 1..20
      @gif_erase_fix[i] = false
    end
    @gif_counter1 = []
    for i in 1..20
      @gif_counter1[i] = 0
    end
    @gif_counter2 = []
    for i in 1..20
      @gif_counter2[i] = 0
    end
    gif_initialize
  end
end

class Game_System
  attr_accessor :gif_master_controller   # GIF master controller
  attr_accessor :gif_master_selector     # GIF master selector

  alias gif_initialize initialize
  def initialize
    @gif_master_controller = []
    for i in 1..20
      @gif_master_controller[i] = false
    end
    @gif_master_selector = []
    for i in 1..20
      @gif_master_selector[i] = ""
    end
    gif_initialize
  end
end

#==============================================================================
# ** Cache
#------------------------------------------------------------------------------
#  This module loads each of graphics, creates a Bitmap object, and retains it.
# To speed up load times and conserve memory, this module holds the created
# Bitmap object in the internal hash, allowing the program to return
# preexisting objects when the same bitmap is requested again.
#==============================================================================
module Cache
  #--------------------------------------------------------------------------
  # * Get Picture Graphic
  #     filename : Filename
  #--------------------------------------------------------------------------
  def self.gif_sequence(filename,dir)
    load_bitmap("Graphics/Pictures/"+dir, filename)
  end
end

#==============================================================================
# ** Game_Screen
#------------------------------------------------------------------------------
#  This class handles screen maintenance data, such as change in color tone,
# flashes, etc. It's used within the Game_Map and Game_Troop classes.
#==============================================================================
class Game_Screen
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :gif_sequences            # gif sequences
  #--------------------------------------------------------------------------
  # * Clear
  #--------------------------------------------------------------------------
  alias gif_clear clear
  def clear
    gif_clear
    @gif_sequences = []
    for i in 0..20
      @gif_sequences.push(Game_Picture_GIF.new(i))
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gif_update update
  def update
    gif_update
    update_gif_pictures
  end
  #--------------------------------------------------------------------------
  # * Update Pictures
  #--------------------------------------------------------------------------
  def update_gif_pictures
    for picture in @gif_sequences
      picture.update
    end
  end
end

#==============================================================================
# ** Game_Picture_GIF
#------------------------------------------------------------------------------
#  This class handles GIF sequences. This class is used within the Game_Screen
# class. Map screen pictures and battle screen pictures are handled separately.
#==============================================================================
class Game_Picture_GIF
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :number                   # sequence index
  attr_reader   :name                     # filename
  attr_reader   :origin                   # starting point
  attr_reader   :x                        # x-coordinate
  attr_reader   :y                        # y-coordinate
  attr_reader   :zoom_x                   # x directional zoom rate
  attr_reader   :zoom_y                   # y directional zoom rate
  attr_reader   :opacity                  # opacity level
  attr_reader   :blend_type               # blend method
  attr_reader   :tone                     # color tone
  attr_reader   :angle                    # rotation angle

  attr_reader   :dir                      # file directory
  attr_reader   :size                     # sequence size (in frames)
  attr_reader   :frame_delay              # determines delay between frames
  attr_reader   :loop_delay               # determines delay before looping
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     number : picture index
  #--------------------------------------------------------------------------
  def initialize(number)
    @number = number
    @name = ""
    @dir = ""
    @size = 0
    @frame_delay = 0
    @loop_delay = 0
    @origin = 0
    @x = 0.0
    @y = 0.0
    @zoom_x = 100.0
    @zoom_y = 100.0
    @opacity = 255.0
    @blend_type = 1
    @duration = 0
    @target_x = @x
    @target_y = @y
    @target_zoom_x = @zoom_x
    @target_zoom_y = @zoom_y
    @target_opacity = @opacity
    @tone = Tone.new(0, 0, 0, 0)
    @tone_target = Tone.new(0, 0, 0, 0)
    @tone_duration = 0
    @angle = 0
    @rotate_speed = 0
  end
  #--------------------------------------------------------------------------
  # * Show Picture
  #     dir        : file directory
  #     name       : filename
  #     size       : sequence size
  #     origin     : starting point
  #     x          : x-coordinate
  #     y          : y-coordinate
  #     zoom_x     : x directional zoom rate
  #     zoom_y     : y directional zoom rate
  #     opacity    : opacity level
  #     blend_type : blend method
  #--------------------------------------------------------------------------
  def show(dir, name, size, origin, x, y, zoom_x, zoom_y, opacity, blend_type, frame_delay=0, loop_delay=0)
    @name = name
    @dir = dir
    @size = size
    @frame_delay = frame_delay
    @loop_delay = loop_delay
    @origin = origin
    @x = x.to_f
    @y = y.to_f
    @zoom_x = zoom_x.to_f
    @zoom_y = zoom_y.to_f
    @opacity = opacity.to_f
    @blend_type = blend_type
    @duration = 0
    @target_x = @x
    @target_y = @y
    @target_zoom_x = @zoom_x
    @target_zoom_y = @zoom_y
    @target_opacity = @opacity
    @tone = Tone.new(0, 0, 0, 0)
    @tone_target = Tone.new(0, 0, 0, 0)
    @tone_duration = 0
    @angle = 0
    @rotate_speed = 0
  end
  #--------------------------------------------------------------------------
  # * Move Picture
  #     origin     : starting point
  #     x          : x-coordinate
  #     y          : y-coordinate
  #     zoom_x     : x directional zoom rate
  #     zoom_y     : y directional zoom rate
  #     opacity    : opacity level
  #     blend_type : blend method
  #     duration   : time
  #--------------------------------------------------------------------------
  def move(origin, x, y, zoom_x, zoom_y, opacity, blend_type, duration)
    @origin = origin
    @target_x = x.to_f
    @target_y = y.to_f
    @target_zoom_x = zoom_x.to_f
    @target_zoom_y = zoom_y.to_f
    @target_opacity = opacity.to_f
    @blend_type = blend_type
    @duration = duration
  end
  #--------------------------------------------------------------------------
  # * Change Rotation Speed
  #     speed : rotation speed
  #--------------------------------------------------------------------------
  def rotate(speed)
    @rotate_speed = speed
  end
  #--------------------------------------------------------------------------
  # * Start Changing Color Tone
  #     tone : color tone
  #     duration : time
  #--------------------------------------------------------------------------
  def start_tone_change(tone, duration)
    @tone_target = tone.clone
    @tone_duration = duration
    if @tone_duration == 0
      @tone = @tone_target.clone
    end
  end
  #--------------------------------------------------------------------------
  # * Erase Picture
  #--------------------------------------------------------------------------
  def erase
    @name = ""
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    if @duration >= 1
      d = @duration
      @x = (@x * (d - 1) + @target_:-/ / d
      @y = (@y * (d - 1) + @target_y) / d
      @zoom_x = (@zoom_x * (d - 1) + @target_zoom_:lol / d
      @zoom_y = (@zoom_y * (d - 1) + @target_zoom_y) / d
      @opacity = (@opacity * (d - 1) + @target_opacity) / d
      @duration -= 1
    end
    if @tone_duration >= 1
      d = @tone_duration
      @tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
      @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
      @tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
      @tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
      @tone_duration -= 1
    end
    if @rotate_speed != 0
      @angle += @rotate_speed / 2.0
      while @angle < 0
        @angle += 360
      end
      @angle %= 360
    end
  end
end

#==============================================================================
# ** Sprite_Picture_GIF
#------------------------------------------------------------------------------
#  This sprite is used to display picturea. It observes a instance of the
# Game_Picture class and automatically changes sprite conditions.
#==============================================================================
class Sprite_Picture_GIF < Sprite
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     viewport : viewport
  #     picture  : picture (Game_Picture)
  #--------------------------------------------------------------------------
  def initialize(viewport, picture)
    super(viewport)
    @picture = picture
    update
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if @picture_name != @picture.name
      @picture_name = @picture.name
      if @picture_name != ""
        self.bitmap = Cache.gif_sequence(@picture_name, @picture.dir)
      end
    end
    if @picture_name == ""
      self.visible = false
    else
      self.visible = true
      if @picture.origin == 0
        self.ox = 0
        self.oy = 0
      else
        self.ox = self.bitmap.width / 2
        self.oy = self.bitmap.height / 2
      end
      self.x = @picture.x
      self.y = @picture.y
      self.z = 100 + @picture.number
      self.zoom_x = @picture.zoom_x / 100.0
      self.zoom_y = @picture.zoom_y / 100.0
      self.opacity = @picture.opacity
      self.blend_type = @picture.blend_type
      self.angle = @picture.angle
      self.tone = @picture.tone
    end
  end
end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias gif_initialize initialize
  def initialize
    create_GIF_pictures
    gif_initialize
  end
  #--------------------------------------------------------------------------
  # * Create Picture Sprite
  #--------------------------------------------------------------------------
  def create_GIF_pictures
    @gif_picture_sprites = []
    for i in 1..20
      @gif_picture_sprites.push(Sprite_Picture_GIF.new(@viewport2,
        $game_map.screen.gif_sequences[i]))
    end
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  alias gif_dispose dispose
  def dispose
    dispose_GIF_pictures
    gif_dispose
  end
  #--------------------------------------------------------------------------
  # * Dispose of Picture Sprite
  #--------------------------------------------------------------------------
  def dispose_GIF_pictures
    for sprite in @gif_picture_sprites
      sprite.dispose
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gif_update update
  def update
    update_GIF_pictures
    gif_update
  end
  #--------------------------------------------------------------------------
  # *Update Picture Sprite
  #--------------------------------------------------------------------------
  def update_GIF_pictures
    for sprite in @gif_picture_sprites
      sprite.update
    end
  end
end

#==============================================================================
# ** Spriteset_FES
#------------------------------------------------------------------------------
#  This class brings together menu screen sprites, tilemaps, etc. It's used
# within the Scene_FES_Status class, and was originally designed as a sort of
# optional add-on, but can be expanded to a wider variety of uses. Mainly gives
# the GIF Animation Player access to scenes/windows.
#==============================================================================
class Spriteset_FES
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  #alias gif_initialize initialize
  def initialize
    create_viewports
    create_GIF_pictures
    #gif_initialize
  end
  #--------------------------------------------------------------------------
  # * Create Viewport
  #--------------------------------------------------------------------------
  def create_viewports
    @viewport1 = Viewport.new#(0, 0, 544, 416)
    @viewport2 = Viewport.new#(0, 0, 544, 416)
    @viewport3 = Viewport.new#(0, 0, 544, 416)
    @viewport2.z = 50
    @viewport3.z = 100
  end
  #--------------------------------------------------------------------------
  # * Create Picture Sprite
  #--------------------------------------------------------------------------
  def create_GIF_pictures
    @gif_picture_sprites = []
    for i in 1..20
      @gif_picture_sprites.push(Sprite_Picture_GIF.new(@viewport2,
        $game_map.screen.gif_sequences[i]))
    end
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  #alias gif_dispose dispose
  def dispose
    dispose_GIF_pictures
    dispose_viewports
    #gif_dispose
  end
  #--------------------------------------------------------------------------
  # * Dispose of Picture Sprite
  #--------------------------------------------------------------------------
  def dispose_GIF_pictures
    for sprite in @gif_picture_sprites
      sprite.dispose
    end
  end
  #--------------------------------------------------------------------------
  # * Dispose of Viewport
  #--------------------------------------------------------------------------
  def dispose_viewports
    @viewport1.dispose
    @viewport2.dispose
    @viewport3.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  #alias gif_update update
  def update
    update_GIF_pictures
    update_viewports
    #gif_update
  end
  #--------------------------------------------------------------------------
  # *Update Picture Sprite
  #--------------------------------------------------------------------------
  def update_GIF_pictures
    for sprite in @gif_picture_sprites
      sprite.update
    end
  end
  #--------------------------------------------------------------------------
  # * Update Viewport
  #--------------------------------------------------------------------------
  def update_viewports
    @viewport1.tone = $game_map.screen.tone
    @viewport1.ox = $game_map.screen.shake
    @viewport2.color = $game_map.screen.flash_color
    @viewport3.color.set(0, 0, 0, 255 - $game_map.screen.brightness)
    @viewport1.update
    @viewport2.update
    @viewport3.update
  end
end

#--------------------------------------------------------------------------
# * Show Picture
#--------------------------------------------------------------------------
def gif_show_picture(id, dir, name, size, origin, x, y, zoom_x, zoom_y, opacity, blend_type, frame_delay=0, loop_delay=0)
  $game_map.screen.gif_sequences[id].show(dir, name, size, origin, x, y, zoom_x, zoom_y, opacity, blend_type, frame_delay, loop_delay)
  $game_temp.gif_show_picture[id] = true
  $game_temp.gif_erase_fix[id] = true
  return true
end
#--------------------------------------------------------------------------
# * Erase Picture
#--------------------------------------------------------------------------
def gif_erase_picture(id)
  $game_map.screen.gif_sequences[id].erase
  $game_temp.gif_show_picture[id] = false
  return true
end

#===============================================================================
# Scene Map [TEST]
#===============================================================================
class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gif_update update
  def update
    gif_update
    unless $game_message.visible      # Unless displaying a message
      for i in 1..20
        update_gif_player(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update GIF Animation Sequence
  #--------------------------------------------------------------------------
  def update_gif_player(i)
    if $game_system.gif_master_controller[i] == true
      if $game_temp.gif_show_picture[i] == false
        if $game_temp.gif_index[i] == $game_map.screen.gif_sequences[i].size #SUBZERO_MODULE::GIF_ANIMATION_SIZE
          if $game_map.screen.gif_sequences[i].loop_delay > 0
            unless $game_temp.gif_counter2[i] == $game_map.screen.gif_sequences[i].loop_delay
              $game_temp.gif_counter2[i] += 1
            else
              $game_temp.gif_counter2[i] = 0
              $game_temp.gif_index[i] = -1
            end
          else
            $game_temp.gif_index[i] = -1
          end
        else
          if $game_map.screen.gif_sequences[i].frame_delay > 0
            unless $game_temp.gif_counter1[i] == $game_map.screen.gif_sequences[i].frame_delay
              $game_temp.gif_counter1[i] += 1
            else
              $game_temp.gif_counter1[i] = 0
              $game_temp.gif_index[i] += 1
              gif_show_picture(i, $game_system.gif_master_selector[i], $game_temp.gif_index[i].to_s, 49, 0, 277, 208, 45, 45, 225, 0, 5, 15)
              $game_temp.gif_show_picture[i] = false
            end
          else
            $game_temp.gif_index[i] += 1
            gif_show_picture(i, $game_system.gif_master_selector[i], $game_temp.gif_index[i].to_s, 49, 0, 277, 208, 45, 45, 225, 0, 5, 15)
            $game_temp.gif_show_picture[i] = false
          end
        end
      end
    else
      gif_erase_picture(i) if $game_temp.gif_erase_fix[i] == true
    end
  end
end

Immagine inserita
Spoiler




1 utente(i) stanno leggendo questa discussione

0 utenti, 1 ospiti, 0 utenti anonimi