Suporte no desenvolvimento de jogos


    Video System - Sistema de Vídeos

    avatar
    samuel6406
    Banido
    Banido

    Mensagens : 49
    Créditos : 11

    Video System - Sistema de Vídeos Empty Video System - Sistema de Vídeos

    Mensagem por samuel6406 em Ter Jun 12, 2012 10:06 pm

    Video System - Vídeos no RMVX


    Iae Povo Da Aldeia. Eu tava akie em casa vasculhando minhas coisas quando emcontrei alguns scripts e para não perdelos eu decidi postalos aqui Very Happy


    Características

    É um script que permite que você coloque vídeos para tocar nos seus projetos de RMVX!
    O vídeo pode ser de qualidade digital de até 480p em 4:3 e deve estar no formato WMV ou MPEG.
    Nota: Vídeos de diferentes formatos irão causar um erro no script.
    Nota: Vídeos de qualidade acima de 480p ou 480i irão causar um erro no script.
    Nota: Vídeos em 16:9(Padrão HD) serão convertidos para 4:3(Padrão SD) ficando uma imagem mais esticada, então para uma melhor qualidade do vídeo exibido use vídeos em 4:3.

    Positivos

    Deixa o seu projeto bem mais profissional.

    Contras

    Não suporta todos os formatos de vídeo.

    Como usar

    Cole o script acima de ''main'' para ativar o script use o comando: chamar script: play_video(''nomedovideo'')

    Código:

    #==============================================================================
    #
    # SOV ~ Videos
    #
    #==============================================================================
    # Author: SuperOverlord
    #==============================================================================
    # Features:
    #------------------------------------------------------------------------------
    # o Play video's on the map or in battle using a simple script event command.
    #
    # o Optionally pause or exit video's while they play.
    #
    # o View the video in the game window or in fullscreen.
    #
    # o Setup video skills, which show the video before damage effects.
    #==============================================================================
    # Instructions:
    #------------------------------------------------------------------------------
    # o Place all videos in a folder with the same name as in configuration.
    #  This folder is created automatically the first time the game is played if
    #  it doesn't already exist.
    #
    # o Playing Videos when on the map.
    #
    #  - See script calls below.
    #
    # o Playing videos in battle.
    #
    #  - As when on the map the script event command can be used in battle also.
    #
    #  - As well as this you can setup skills as video skills which display
    #    a video before damaging the enemy.
    #
    #    To do this the following tags can be used in the skills notebox:
    #    1) <video_name = "filename">
    #        ~ name is the name of the video file. If the filename extension is
    #          missing the first file matching that name is used.
    #          (Quotes are necessary around the filename)
    #
    #      As well as the first tag 2 others are available. These tags will only
    #      take effect if placed on a line below the first tag.
    #      If these don't exist they are assumed true.
    #
    #      2) <video_exitable = n>  ~ Can the video be exited by the exit input?
    #      3) <video_pausable = n>  ~ Can the video be paused?
    #        ~ n is replaced with either t or f (t : true, f : false)
    #
    #      For other Video properties (x,y,width,height,fullscreen) the default
    #      settings are used. (See script calls below)
    #==============================================================================
    # Script Calls:
    #------------------------------------------------------------------------------
    # Commands (From the script call command on page three of event commands)
    #------------------------------------------------------------------------------
    # o To change default values for video properties.
    #
    #  1) Video.default_x = n
    #  2) Video.default_y = n
    #  3) Video.default_width  = n
    #  4) Video.default_height = n
    #  5) Video.fullscreen = bool

    #  In all 5 commands above:
    #  ~ n is an integer value
    #  ~ bool is either true or false
    #
    # o To play videos
    #
    #  play_video(filename,exitable,pausable)
    #  ~ filename : name of video file            (Must be in quotes)
    #  ~ exitable : Can the video be exited?      (When left out = true)
    #  ~ pausable : Can the video be paused?      (When left out = true)

    #  For all other values the default's are used.
    #==============================================================================
    # Compatibility:
    #------------------------------------------------------------------------------
    # o Skill videos will depend on the battle system but sould work.
    #==============================================================================
    # Credit:
    #------------------------------------------------------------------------------
    # o Credit goes to Trebor and Berka whose scripts helped be figure out the
    #  mci_send_stringA function.
    #==============================================================================

    module SOV
      module Video
      #--------------------------------------------------------------------------
      # Configuration
      #--------------------------------------------------------------------------
        # Name of folder for videos to be held in.
        DIR_NAME = "Videos"
        # Exit video input
        EXIT_INPUT  = Input::B
        # Pause video input
        PAUSE_INPUT = Input::R
      #--------------------------------------------------------------------------
      # End Configuration
      #--------------------------------------------------------------------------
      end
    end

    #==============================================================================
    # Import
    #------------------------------------------------------------------------------
    $imported = {} if $imported == nil
    $imported['Videos'] = true
    #==============================================================================

    #==============================================================================
    # ** SOV::Video::Commands
    #==============================================================================

    module SOV::Video::Commands
      #--------------------------------------------------------------------------
      # * Play a video
      #  filename : video's filename (with or without extension)
      #  exitable : Can the video be exited
      #  pausable : Can the video be paused
      #--------------------------------------------------------------------------
      def play_video(filename,exitable=true,pausable=true)
        video = Cache.video(filename)
        video.exitable = exitable
        video.pausable = pausable
        if $game_temp.in_battle    # In battle
          $scene.play_video(video)
        else                      # On map
          $game_map.video = video
        end
      end
      #---------------------------------------------------------------------------
      # Define as module function
      #---------------------------------------------------------------------------
      module_function :play_video
    end

    #==============================================================================
    # ** SOV::Video::Regexp
    #==============================================================================

    module SOV::Video::Regexp
      #--------------------------------------------------------------------------
      # * Skill
      #--------------------------------------------------------------------------
      module Skill
        FILENAME  = /<video[_ ]?(?:file)?name = "(.+)">/i
        PAUSABLE  = /<video[_ ]?paus(?:e|able) = (t|f)>/i
        EXITABLE  = /<video[_ ]?exit(?:able)? = (t|f)>/i
      end
    end

    #==============================================================================
    # ** SOV::Game
    #==============================================================================

    module SOV::Game
      #--------------------------------------------------------------------------
      # Constants
      #--------------------------------------------------------------------------
      INI = 'Game'
      #--------------------------------------------------------------------------
      # * Get the game windows handle
      #--------------------------------------------------------------------------
      def self.hwnd
        unless defined?(@@hwnd)
          find_window = Win32API.new('user32','FindWindow','pp','i')
          @@hwnd = find_window.call('RGSS Player',title) 
        end
        return @@hwnd
      end
      #--------------------------------------------------------------------------
      # * Get game title
      #--------------------------------------------------------------------------
      def self.title
        unless defined?(@@title)
          @@title = read_ini('title')
        end
        return @@title
      end
      #--------------------------------------------------------------------------
      # * Read ini (Returns nil or match)
      #--------------------------------------------------------------------------
      def self.read_ini(variable,filename=INI)
        reg = /^#{variable}=(.*)$/
        File.foreach(filename+'.ini') { |line| break($1) if line =~ reg }
      end
    end

    #==============================================================================
    # ** Cache
    #==============================================================================

    module Cache
      #--------------------------------------------------------------------------
      # Class Variables
      #--------------------------------------------------------------------------
      @@vcache = {}
      #--------------------------------------------------------------------------
      # Define as class methods
      #--------------------------------------------------------------------------
      class << self
        #------------------------------------------------------------------------
        # Alias List
        #------------------------------------------------------------------------
        alias sov_video_clear clear unless $@
        #------------------------------------------------------------------------
        # * Get a video object
        #  filename : basename of file
        #------------------------------------------------------------------------
        def video(filename)
          # Get full filename if extension is missing
          if File.extname(filename) == ''
            files = Dir["#{SOV::Video::DIR_NAME}/#{filename}.*"]
            filename = File.basename(files[0]) # Set as first matching file
          end
          # Create or get the video object.
          if @@vcache.has_key?(filename)
            @@vcache[filename]
          else
            @@vcache[filename] = Video.new(filename)
          end
        end
        #------------------------------------------------------------------------
        # * Clear
        #------------------------------------------------------------------------
        def clear
          @@vcache.clear
          sov_video_clear
        end
      end
    end

    #==============================================================================
    # ** RPG::Skill
    #==============================================================================

    class RPG::Skill < RPG::UsableItem
      #--------------------------------------------------------------------------
      # * Determine if skill has a video skill
      #--------------------------------------------------------------------------
      def video
        if @video == nil
          @note.each_line { |line|
            if @video == nil
              @video = Cache.video($1) if line =~ SOV::Video::Regexp::Skill::FILENAME
            else
              @video.pausable = ($1 == 't') if line =~ SOV::Video::Regexp::Skill::PAUSABLE
              @video.exitable = ($1 == 't') if line =~ SOV::Video::Regexp::Skill::EXITABLE
            end
          }
          @video = :invalid if @video == nil
        end
        return @video
      end
    end

    #==============================================================================
    # ** Video
    #------------------------------------------------------------------------------
    #  Class handling playing videos.
    #==============================================================================

    class Video
      #--------------------------------------------------------------------------
      # Constants
      #--------------------------------------------------------------------------
      TYPE_AVI  = 'avivideo'
      TYPE_MPEG = 'mpegvideo'
      #--------------------------------------------------------------------------
      # Class Variables
      #--------------------------------------------------------------------------
      @@default_x = 0
      @@default_y = 0
      @@default_width  = Graphics.width
      @@default_height = Graphics.height
      @@fullscreen = false
      #--------------------------------------------------------------------------
      # * Get and Set default_x/y/width/height
      #--------------------------------------------------------------------------
      for d in %w(x y width height)
        # Define setter method
        module_eval(%Q(def self.default_#{d}=(i); @@default_#{d} = i; end))
        # Define getter method
        module_eval(%Q(def self.default_#{d}; @@default_#{d}; end))
      end
      #--------------------------------------------------------------------------
      # * Get fullscreen
      #--------------------------------------------------------------------------
      def self.fullscreen
        @@fullscreen
      end 
      #--------------------------------------------------------------------------
      # * Set fullscreen
      #--------------------------------------------------------------------------
      def self.fullscreen=(val)
        @@fullscreen = val
      end
      #--------------------------------------------------------------------------
      # * Win32API
      #--------------------------------------------------------------------------
      @@mciSendStringA = Win32API.new('winmm','mciSendStringA','pplp','i')
      #--------------------------------------------------------------------------
      # * Video Command
      #  command_string : string following mci_command_string format
      #  buffer : string to retrieve return data
      #  buffer_size : number of characters in buffer
      #  callback_handle : handle of window to callback to. Used if notify is used
      #                    in the command string. (Not supported by game window)
      #--------------------------------------------------------------------------
      def self.send_command(cmnd_string,buffer='',buffer_size=0,callback_handle=0)
        # Returns error code. No error if NULL
        err = @@mciSendStringA.call(cmnd_string,buffer,buffer_size,callback_handle)
        if err != 0
          buffer = ' ' * 255
          Win32API.new('winmm','mciGetErrorString','LPL','V').call(err,buffer,255)
          raise(buffer.squeeze(' ').chomp('\000'))
        end
      end
      #--------------------------------------------------------------------------
      # * Play a video
      #--------------------------------------------------------------------------
      def self.play(video)
        # Make path and buffer
        path = "#{SOV::Video::DIR_NAME}/#{video.filename}"
        buffer = ' ' * 255
        # Initialize device and dock window with game window as parent.
        type = " type #{video.type}" if video.type != ''
        send_command("open #{path}#{type} alias VIDEO style child parent #{SOV::Game.hwnd}")
        # Display video in client rect at x,y with width and height.
        x = video.x
        y = video.y
        width  = video.width
        height = video.height
        send_command("put VIDEO window at #{x} #{y} #{width} #{height}")
        # Begin playing video
        screen = @@fullscreen ? 'fullscreen' : 'window'
        send_command("play VIDEO #{screen}")
        # Start Input and status processing loop
        while buffer !~ /^stopped/
          # Idle processing for a frame
          sleep(1.0/Graphics.frame_rate)
          # Get mode string
          send_command('status VIDEO mode',buffer,255)
          Input.update
          if Input.trigger?(SOV::Video::PAUSE_INPUT) and video.pausable?
            Sound.play_cursor
            if buffer =~ /^paused/                # If already paused
              send_command("resume VIDEO")        # Resume video
            else                                  # Otherwise
              send_command("pause VIDEO")          # Pause video
            end
          elsif Input.trigger?(SOV::Video::EXIT_INPUT) and video.exitable?
            Sound.play_cancel
            # Terminate loop on exit input
            break
          end
        end
        # Terminate the device
        send_command('close VIDEO')
      end
      #--------------------------------------------------------------------------
      # Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :x
      attr_accessor :y
      attr_accessor :width
      attr_accessor :height
      attr_writer :exitable
      attr_writer :pausable
      attr_reader :filename
      #--------------------------------------------------------------------------
      # * Initialize
      #--------------------------------------------------------------------------
      def initialize(filename)
        unless FileTest.file?("#{SOV::Video::DIR_NAME}/#{filename}")
          raise(Errno::ENOENT,filename)
        end
        @filename = filename
        @x = @@default_x
        @y = @@default_y
        @width  = @@default_width
        @height = @@default_height
        @exitable = true
        @pausable = true
      end
      #--------------------------------------------------------------------------
      # * Get Type
      #--------------------------------------------------------------------------
      def type
        if @type == nil
          case File.extname(@filename)
          when '.avi'; @type = TYPE_AVI
          when '.mpeg'||'.mpg'; @type = TYPE_MPEG
          else
            @type = ''
          end
        end
        @type
      end
      #--------------------------------------------------------------------------
      # * Is the video exitable?
      #--------------------------------------------------------------------------
      def exitable?
        @exitable
      end
      #--------------------------------------------------------------------------
      # * Is the video pausable?
      #--------------------------------------------------------------------------
      def pausable?
        @pausable
      end
      #--------------------------------------------------------------------------
      # Access
      #--------------------------------------------------------------------------
      private_class_method :send_command 
    end

    #==============================================================================
    # ** Game_Interpreter
    #==============================================================================

    class Game_Interpreter
      #--------------------------------------------------------------------------
      # Import
      #--------------------------------------------------------------------------
      include(SOV::Video::Commands)
    end

    #==============================================================================
    # ** Game_Map
    #==============================================================================

    class Game_Map
      #--------------------------------------------------------------------------
      # Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :video 
    end

    #==============================================================================
    # ** Scene_Map
    #==============================================================================

    class Scene_Map
      #--------------------------------------------------------------------------
      # Alias List
      #--------------------------------------------------------------------------
      alias sov_video_update update unless $@
      #--------------------------------------------------------------------------
      # * Play Video
      #--------------------------------------------------------------------------
      def play_video(video)
        # Memorize and stop current bgm and bgs
        bgm = RPG::BGM.last
        bgs = RPG::BGS.last
        RPG::BGM.stop
        RPG::BGS.stop
        # Play video
        Video.play(video)
        # Restart bgm and bgs
        bgm.play
        bgs.play
      end
      #--------------------------------------------------------------------------
      # * Update
      #--------------------------------------------------------------------------
      def update
        if $game_map.video != nil
          play_video($game_map.video)
          $game_map.video = nil
          Input.update
        else
          sov_video_update
        end
      end
    end

    #==============================================================================
    # ** Scene_Battle
    #==============================================================================

    class Scene_Battle
      #--------------------------------------------------------------------------
      # * Alias list
      #--------------------------------------------------------------------------
      alias sov_video_execute_action_skill execute_action_skill unless $@
      #--------------------------------------------------------------------------
      # * Play Video
      #--------------------------------------------------------------------------
      def play_video(video)
        # Memorize and stop current bgm
        bgm = RPG::BGM.last
        RPG::BGM.stop
        # Play video
        Video.play(video)
        # Restart bgm
        bgm.play
      end
      #--------------------------------------------------------------------------
      # * Execute Action Skill
      #--------------------------------------------------------------------------
      def execute_action_skill
        skill = @active_battler.action.skill   
        if skill.video.is_a?(Video)
          execute_action_video(skill)
        else
          sov_video_execute_action_skill
        end
      end
      #--------------------------------------------------------------------------
      # * Execute Action Video
      #--------------------------------------------------------------------------
      def execute_action_video(skill)
        text = @active_battler.name + skill.message1
        @message_window.add_instant_text(text)
        unless skill.message2.empty?
          wait(10)
          @message_window.add_instant_text(skill.message2)
        end
        wait(20)
        @message_window.clear
        # Fadout to black screen
        br = Graphics.brightness
        120.times { |i| Graphics.brightness = 255 - 255/60 * i; Graphics.update }
        # Play video
        play_video(skill.video)
        # Reset brightness
        Graphics.brightness = br
        targets = @active_battler.action.make_targets
        display_animation(targets, skill.animation_id)
        @active_battler.mp -= @active_battler.calc_mp_cost(skill)
        $game_temp.common_event_id = skill.common_event_id
        for target in targets
          target.skill_effect(@active_battler, skill)
          display_action_effects(target, skill)
        end
      end
    end

    #==============================================================================
    # Pre-Main Processing
    #==============================================================================

    unless FileTest.directory?(SOV::Video::DIR_NAME) # If directory doesn't exist.
      Dir.mkdir(SOV::Video::DIR_NAME)                # Make the directory
    end

    Screenshots

    Não necessário.

    demo

    Não necessário.

    Problemas com o download? avise que eu mudo o servidor...

    Créditos

    SuperOverlord por criar o script:D
    Samuka_Maker
    Samuka_Maker
    Aldeia Friend
    Aldeia Friend

    Medalhas : Video System - Sistema de Vídeos WBLhI
    Mensagens : 1199
    Créditos : 125

    Video System - Sistema de Vídeos Empty Re: Video System - Sistema de Vídeos

    Mensagem por Samuka_Maker em Seg Jun 25, 2012 5:34 pm

    TRANQUEM o tópico, usuario banido


    _________________

    Life rpg maker, suporte para criacao de jgoos online eoffline, link do forum:(v2.0)
    http://liferpgmakerv2.forumais.com/

    Video System - Sistema de Vídeos 6f4EA

    Video System - Sistema de Vídeos Bxvno
    Tópico original/Tópico de Recrutamento

      Data/hora atual: Ter Fev 18, 2020 8:29 am