Плохо! Плохо!:  0
Показано с 1 по 7 из 7

Тема: Playlist Manager [VXACE]

  1. #1
    Бывалый Аватар для caveman
    Информация о пользователе
    Регистрация
    15.02.2013
    Сообщений
    766
    Записей в дневнике
    47
    Репутация: 85 Добавить или отнять репутацию

    По умолчанию Playlist Manager [VXACE]

    Caveman's playlists
    Автор: caveman
    Версия: 1.01
    Тип: работа с игровой музыкой




    Описание:

    Скрипт позволяет создавать плейлисты BGM для игры и управлять ими.
    При запуске, треки проигрываются последовательно (либо шаффлом) до новых команд.
    Подробное описание доступных команд и пример заполнения есть прямо в скрипте.

    Скрипт:
    Спойлер Код:

    Код:
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
    # Caveman's playlists
    # Version: 1.01
    # Author : Caveman
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
    # Использование:
    #
    # Скрипт позволяет создавать плейлисты BGM для игры и управлять ими.
    # При запуске, треки проигрываются последовательно (либо шаффлом) до
    # новых команд.
    #
    # 1) Плейлист состоит из хэша: 'название' => список 
    # название_песни=длительность в виде mm:ss, как тут
    #  'night' => "
    #    brinkoftime=2:17
    #    bottomofnight=3:39
    #    "
    # Пример чуть ниже, в PL_MANAGER
    #
    # 2) Поддерживаются форматы mp3, mid, ogg, wav; но функция паузы
    # из-за особенностей движка работает только для ogg и wav
    #
    # 3) При загрузке игры автоматом загружается менеджер плейлистов, берущий
    # плейлисты из хэша CV_PLAYLIST::PL_MANAGER, и проверяет наличие треков
    # из плейлистов в папке Audio/BGM/
    #
    # 4) Доступные команды:
    #
    # pl_manager.play_pl(pl,n) - запускает n-ый трек плейлиста с номером pl
    # После окончания трека, запускается следующий (либо рандом, в зависимости
    # от режима mode плейлиста). Если треки закончились (в прямом режиме), 
    # плейлист начинает играть сначала.
    #
    # pl_manager.play(n) - запускает n-ый трек текущего плейлиста
    #
    # pl_manager.set_mode(n) - установка режима проигрывания
    # n=0 - прямой
    # n=1 - шаффл
    # 
    # pl_manager.next - играет следующий либо рандомный трек плейлиста
    #
    # pl_manager.prev - играет предыдущий либо рандомный трек плейлиста
    #
    # pl_manager.stop - остановка проигрывания
    #
    # pl_manager.pause - пауза (работает для ogg, wav)
    #
    # pl_manager.unpause - продолжить игру (работает для ogg, wav)
    #
    # pl_manager.volume=n - установка громкости
    # n - от 0 до 100
    #
    # pl_manager.pitch=n - установка скорости
    # n - от 50 до 150
    #
    # pl_manager.buffer=n - установка fade (затухания громкости) в конце песни, 
    # в секундах
    #
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
     
    ($imported ||= {})[:caveman_playlists] = 1.00
     
    module CV_PLAYLIST
      PL_MANAGER = { 
      'day' => "
          kvaato=00:51
          Peaceful_Days=3:57
          SecretOfTheForest=4:35
          Green_Memories=3:47
          ",
      'night' => "
        brinkoftime=2:17
        bottomofnight=3:39
        ",   
        }
     
    end
     
     
     
    class Song
      attr_accessor :name
      attr_accessor :length
     
      def initialize(name, length)
        self.name = name.strip
        self.length = parse(length)
      end
     
      # разбираем время вида 6:04 на секунды
      def parse(time)
        t = 0
        time.gsub(/\A(.*?):(.*?)\Z/) do
          t += $1.to_i * 60
          t += $2.to_i
        end
        return t
      end
    end
     
    class Playlist
      attr_accessor :name
      attr_accessor :songs
     
      def initialize(name, songs)
        self.name = name
        self.songs = songs
        @buffer = 1 # delay (+fading) between songs (sec)
        @volume = 80 # default BGM volume
        @pitch = 100 # default BGM pitch
        @mode = 0 # 0 - normal, 1 - shuffle
        @is_playing = false
        @current_song = 0
        @pos = 0
        @start_time = 0;
      end
     
      def update
        if @is_playing
          total_time = Time.now
          # время тут - сдвиг от запуска
          @pos = total_time - @start_time
          if @pos >= self.songs[@current_song].length
            # next track
            @current_song += 1
            play_new
          elsif @pos + @buffer >= self.songs[@current_song].length
            # fade
            Audio.bgm_fade(@buffer*1000) 
          end
        end
      end
     
      def play_new
        if @current_song >= songs.length
          if @mode == 0
            Audio.bgm_stop
            play(0)
          else
            p 'shuffle'
            Audio.bgm_stop
            play(rand(songs.length-1)) 
          end
        else
          if @mode == 0
            Audio.bgm_stop
            play(@current_song)
          else
            Audio.bgm_stop
            play(rand(songs.length-1)) 
          end
        end
      end
     
      def set_mode(mode)
        @mode = mode
      end
     
      def play(n)
        # PLAY n'th song
        stop
        @current_song = n
        @is_playing = true
        @start_time = Time.now
        Audio.bgm_play(sprintf("Audio/BGM/%s",self.songs[@current_song].name), @volume, @pitch, @pos)
      end
     
      def next
        @current_song += 1
        play_new
      end
     
      def prev
        @current_song -= 1
        if @current_song < 0
          @current_song = 0
        end
        play_new
      end
     
      def stop
        # STOP playlist (don't save @pos and current song)
        @current_song = 0
        @is_playing = false
        @pos = 0
        @start_time = 0
        Audio.bgm_stop 
      end
     
      def pause
        # PAUSE song (save @pos)
        @is_playing = false
        Audio.bgm_stop 
      end
     
      def unpause
        # PAUSE song (save @pos)
        @is_playing = true
        @start_time = Time.now - @pos
        Audio.bgm_play(sprintf("Audio/BGM/%s",self.songs[@current_song].name), @volume, @pitch, @pos)
      end
     
      def pitch
        @pitch
      end
     
      def pitch=(pitch)
        @pitch = pitch
        if @pitch < 50
          @pitch = 50
        end
        if @pitch > 150
          @pitch = 150
        end
     
        if @is_playing
          Audio.bgm_play(sprintf("Audio/BGM/%s",self.songs[@current_song].name), @volume, @pitch, @pos) 
        end
      end
     
      def volume
        @volume
      end
     
      def volume=(volume)
        @volume = volume
        if @volume < 0
          @volume = 0
        end
        if @volume > 100
          @volume = 100
        end
     
        if @is_playing
          Audio.bgm_play(sprintf("Audio/BGM/%s",self.songs[@current_song].name), @volume, @pitch, @pos) 
        end
      end
     
      def buffer=(buffer)
        @buffer = buffer
      end
     
      def test
        @songs.each {|song|
          if !FileTest.exist?(sprintf("Audio/BGM/%s.mp3",song.name)) and
             !FileTest.exist?(sprintf("Audio/BGM/%s.ogg",song.name)) and
             !FileTest.exist?(sprintf("Audio/BGM/%s.wav",song.name)) and
             !FileTest.exist?(sprintf("Audio/BGM/%s.mid",song.name))
     
            p sprintf("Не найден файл %s", song.name)
          end
        }
        return true
      end
    end
     
    class PL_Manager
      attr_accessor :playlists
     
      # INNER METHODS
      def initialize(data)
        # load from array and test exists
        load(data)
        test
        # set init pl
        @current_pl = 0
      end
     
      def load(data)
        self.playlists = []
        data.each {|d| load_pl(d) }
      end
     
      def load_pl(data)   
        name = data[0]
        songs = []
        data[1].to_s.split(/\n/).each {|a| 
          a.gsub(/\A(.*?)=(.*?)\Z/) do
            song = Song.new($1.to_s, $2.to_s)
            songs.push(song)
          end
        }
     
        self.playlists.push(Playlist.new(name, songs))
      end
     
      def update
        self.playlists[@current_pl].update
      end
     
      # METHODS FOR USE
      def play_pl(pl, n)
        @current_pl = pl
        play(n)
      end
     
      def play(n)
        self.playlists[@current_pl].play(n)
      end
     
      def stop
        self.playlists[@current_pl].stop
      end
     
      def pause
        self.playlists[@current_pl].pause
      end
     
      def unpause
        self.playlists[@current_pl].unpause
      end
     
      def pitch
        self.playlists[@current_pl].pitch
      end
     
      def pitch=(pitch)
        self.playlists[@current_pl].pitch = pitch
      end
     
      def volume
        self.playlists[@current_pl].volume
      end
     
      def volume=(volume)
        self.playlists[@current_pl].volume = volume
      end
     
      def buffer=(buffer)
        self.playlists[@current_pl].buffer = buffer
      end
     
      def test
        self.playlists.each {|pl| pl.test }
      end
     
      def set_mode(n)
        self.playlists[@current_pl].set_mode(n)
      end
     
      def next
        self.playlists[@current_pl].next
      end
     
      def prev
        self.playlists[@current_pl].prev
      end
    end
     
    class Game_System
      #--------------------------------------------------------------------------
      # * Playlist manager
      #--------------------------------------------------------------------------
      attr_accessor :pl_manager
      #--------------------------------------------------------------------------
      # * init_pl_manager
      #--------------------------------------------------------------------------
      def init_pl_manager
        @pl_manager = PL_Manager.new(CV_PLAYLIST::PL_MANAGER) 
      end
      #--------------------------------------------------------------------------
      # * initialize
      #--------------------------------------------------------------------------
      def initialize
        @save_disabled = false
        @menu_disabled = false
        @encounter_disabled = false
        @formation_disabled = false
        @battle_count = 0
        @save_count = 0
        @version_id = 0
        @window_tone = nil
        @battle_bgm = nil
        @battle_end_me = nil
        @saved_bgm = nil
        init_pl_manager
      end
    end
     
    class Scene_Base
      alias tm_update update
      def update
        tm_update
        if $game_system.pl_manager != nil
          $game_system.pl_manager.update
        end
      end
    end
     
    class Game_Interpreter
      def pl_manager
        return $game_system.pl_manager
      end
    end


    Также прикладываю демку с подсказками и описанием команд
    http://yadi.sk/d/ehaPx9WnNFeGd

    Скрипт будет еще дорабатываться (в частности, решать, что делать в боях, и при сейве/загрузке), ну и также приветствуются идеи и просьбы в коментах.
    back to the primitive

    http://cavemangame.blogspot.ru/ - разные идеи и новости
    http://cavescripts.blogspot.ru/ - мои скрипты
    http://cavecrusader.blogspot.ru/ - текущий проект

  2. #2
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    о да, как же я давно искал это, даже сам уже начинал писать что-то подобное, но дальше ошибок не уходил

  3. #3

    По умолчанию

    крутяк))) а можно запилить URL интернет радио и переключаться между радио ))))?

  4. #4
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    вдруг вспомнил про скрипт, и он мне пригодился
    вывел название песни в переменную для отображения названия песни во время игры
    но вот не могу забиньдить кнопки для команд плей, стоп, пауза и тд
    прописал в скрипте "сцен_мап иф инпут.тригер(кнопка), команда", реакции ноль
    можешь примерно указать как должно это выглядеть и через какой класс должно вызываться?
    через коммон ивенты притормаживает и не всегда отзывается на команду
    Последний раз редактировалось HopeBree; 09.08.2015 в 16:55.

  5. #5
    Бывалый Аватар для caveman
    Информация о пользователе
    Регистрация
    15.02.2013
    Сообщений
    766
    Записей в дневнике
    47
    Репутация: 85 Добавить или отнять репутацию

    По умолчанию

    def update_call_debug
    SceneManager.call(Scene_Debug) if $TEST && Input.press?(:F9)
    end

    думаю дело в press, а писать $game_system.pl_manager и далее
    back to the primitive

    http://cavemangame.blogspot.ru/ - разные идеи и новости
    http://cavescripts.blogspot.ru/ - мои скрипты
    http://cavecrusader.blogspot.ru/ - текущий проект

  6. #6
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    а все, не так блок составил оказывается (что самое интересное без ошибок без всего ) и это к лучшему, запихнул в сцен байс, чтоб и из меню можно было музыку менять

  7. #7
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    Допилил аддон

    PHP код:
    # 1. Добавлены кнопки управления плейлистом во время игры
    #    (Поддержка скрипта "Glitchfinder's Key Input Module")
    # 2. Добавлена переменная вывода названия трека 
    PHP код:
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
    # Caveman's playlists
    # Version: 1.01 + HB Addon
    # Author : Caveman
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
    # Использование:
    #
    # Скрипт позволяет создавать плейлисты BGM для игры и управлять ими.
    # При запуске, треки проигрываются последовательно (либо шаффлом) до
    # новых команд.
    #
    # 1) Плейлист состоит из хэша: 'название' => список 
    # название_песни=длительность в виде mm:ss, как тут
    #  'night' => "
    #    brinkoftime=2:17
    #    bottomofnight=3:39
    #    "
    # Пример чуть ниже, в PL_MANAGER
    #
    # 2) Поддерживаются форматы mp3, mid, ogg, wav; но функция паузы
    # из-за особенностей движка работает только для ogg и wav
    #
    # 3) При загрузке игры автоматом загружается менеджер плейлистов, берущий
    # плейлисты из хэша CV_PLAYLIST::PL_MANAGER, и проверяет наличие треков
    # из плейлистов в папке Audio/BGM/
    #
    # 4) Доступные команды:
    #
    # pl_manager.play_pl(pl,n) - запускает n-ый трек плейлиста с номером pl
    # После окончания трека, запускается следующий (либо рандом, в зависимости
    # от режима mode плейлиста). Если треки закончились (в прямом режиме), 
    # плейлист начинает играть сначала.
    #
    # pl_manager.play(n) - запускает n-ый трек текущего плейлиста
    #
    # pl_manager.set_mode(n) - установка режима проигрывания
    # n=0 - прямой
    # n=1 - шаффл

    # pl_manager.next - играет следующий либо рандомный трек плейлиста
    #
    # pl_manager.prev - играет предыдущий либо рандомный трек плейлиста
    #
    # pl_manager.stop - остановка проигрывания
    #
    # pl_manager.pause - пауза (работает для ogg, wav)
    #
    # pl_manager.unpause - продолжить игру (работает для ogg, wav)
    #
    # pl_manager.volume=n - установка громкости
    # n - от 0 до 100
    #
    # pl_manager.pitch=n - установка скорости
    # n - от 50 до 150
    #
    # pl_manager.buffer=n - установка fade (затухания громкости) в конце песни, 
    # в секундах
    #
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
    # HB Addon
    #
    # 1. Добавлены кнопки управления плейлистом во время игры
    #    (Поддержка скрипта "Glitchfinder's Key Input Module")
    # 2. Добавлена переменная вывода названия трека
    #
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:

    ($imported ||= {})[:caveman_playlists] = 1.00

    module CV_PLAYLIST
      
      USEBUTTON 
    true             # Использовать кнопки во время игры true/false
      
      
    GKIM      true             # Glitchfinder's Key Input Module true/false
      
                                   # Если используется скрипт 
                                   # "Glitchfinder's Key Input Module",  
                                   # кнопки указывать вида Keys::BUTTOM
      
      
    PAUSE     Keys::N8         # Кнопка паузы
      
    UNPAUSE   Keys::N9         # Снять с паузы
      
    NEXT      Keys::N0         # Кнопка следующего трека
      
    PREV      Keys::N7         # Кнопка предыдущего трека
      
    VOLUP     Keys::OEM_PLUS   # Кнопка увеличения громкости
      
    VOLDOWN   Keys::OEM_MINUS  # Кнопка уменьшения громкости
      
      
    SONG_VARIABLE 10           # Переменная для вывода информации о музыке
                                   # SONG_VARIABLE = 0 если переменная не используется
      
      
    PL_MANAGER = { 
      
    'day' => "
          kvaato=00:51
          Peaceful_Days=3:57
          SecretOfTheForest=4:35
          Green_Memories=3:47
          "
    ,
      
    'night' => "
        brinkoftime=2:17
        bottomofnight=3:39
        "
    ,   
        }

    end
      

      
    class Song
      attr_accessor 
    :name
      attr_accessor 
    :length
      
      def initialize
    (namelength)
        
    self.name name.strip
        self
    .length parse(length)
      
    end
      
      
    # разбираем время вида 6:04 на секунды
      
    def parse(time)
        
    0
        time
    .gsub(/\A(.*?):(.*?)\Z/) do
          
    += $1.to_i 60
          t 
    += $2.to_i
        end
        
    return t
      end
    end

    class Playlist
      attr_accessor 
    :name
      attr_accessor 
    :songs
      
      def initialize
    (namesongs)
        
    self.name name
        self
    .songs songs
        
    @buffer # delay (+fading) between songs (sec)
        
    @volume 80 # default BGM volume
        
    @pitch 100 # default BGM pitch
        
    @mode # 0 - normal, 1 - shuffle
        
    @is_playing false
        
    @current_song 0
        
    @pos 0
        
    @start_time 0;
      
    end
     
      def update
        
    if @is_playing
          total_time 
    Time.now
          
    # время тут - сдвиг от запуска
          
    @pos total_time - @start_time
          
    if @pos >= self.songs[@current_song].length
            
    # next track
            
    @current_song += 1
            play_new
          elsif 
    @pos + @buffer >= self.songs[@current_song].length
            
    # fade
            
    Audio.bgm_fade(@buffer*1000
          
    end
        end
      end
      
      def play_new
        
    if @current_song >= songs.length
          
    if @mode == 0
            Audio
    .bgm_stop
            play
    (0)
          else
            
    'shuffle'
            
    Audio.bgm_stop
            play
    (rand(songs.length-1)) 
          
    end
        
    else
          if @
    mode == 0
            Audio
    .bgm_stop
            play
    (@current_song)
          else
            
    Audio.bgm_stop
            play
    (rand(songs.length-1)) 
          
    end
        end
      end
      
      def set_mode
    (mode)
        @
    mode mode
      end
      
      def play
    (n)
        
    # PLAY n'th song
        
    stop
        
    @current_song n
        
    @is_playing true
        
    @start_time Time.now
        Audio
    .bgm_play(sprintf("Audio/BGM/%s",self.songs[@current_song].name), @volume, @pitch, @pos)
        
    $game_variables[CV_PLAYLIST::SONG_VARIABLE] = self.songs[@current_song].name
      end
      
      def next
        
    @current_song += 1
        play_new
      end
      
      def prev
        
    @current_song -= 1
        
    if @current_song 0
          
    @current_song 0
        end
        play_new
      end
      
      def stop
        
    # STOP playlist (don't save @pos and current song)
        
    @current_song 0
        
    @is_playing false
        
    @pos 0
        
    @start_time 0
        Audio
    .bgm_stop
        $game_variables
    [CV_PLAYLIST::SONG_VARIABLE] = "------"
      
    end
      
      def pause
        
    # PAUSE song (save @pos)
        
    @is_playing false
        Audio
    .bgm_stop 
      end
      
      def unpause
        
    # PAUSE song (save @pos)
        
    @is_playing true
        
    @start_time Time.now - @pos
        Audio
    .bgm_play(sprintf("Audio/BGM/%s",self.songs[@current_song].name), @volume, @pitch, @pos)
      
    end
      
      def pitch
        
    @pitch
      end
      
      def pitch
    =(pitch)
        @
    pitch pitch
        
    if @pitch 50
          
    @pitch 50
        end
        
    if @pitch 150
          
    @pitch 150
        end
        
        
    if @is_playing
          Audio
    .bgm_play(sprintf("Audio/BGM/%s",self.songs[@current_song].name), @volume, @pitch, @pos
        
    end
      end
        
      def volume
        
    @volume
      end
      
      def volume
    =(volume)
        @
    volume volume
        
    if @volume 0
          
    @volume 0
        end
        
    if @volume 100
          
    @volume 100
        end
        
        
    if @is_playing
          Audio
    .bgm_play(sprintf("Audio/BGM/%s",self.songs[@current_song].name), @volume, @pitch, @pos
        
    end
      end
      
      def buffer
    =(buffer)
        @
    buffer buffer
      end
      
      def test
        
    @songs.each {|song|
          if !
    FileTest.exist?(sprintf("Audio/BGM/%s.mp3",song.name)) and
             !
    FileTest.exist?(sprintf("Audio/BGM/%s.ogg",song.name)) and
             !
    FileTest.exist?(sprintf("Audio/BGM/%s.wav",song.name)) and
             !
    FileTest.exist?(sprintf("Audio/BGM/%s.mid",song.name))
             
            
    p sprintf("Не найден файл %s"song.name)
          
    end
        
    }
        return 
    true
      end
    end

    class PL_Manager
      attr_accessor 
    :playlists
      
      
    # INNER METHODS
      
    def initialize(data)
        
    # load from array and test exists
        
    load(data)
        
    test
        
    # set init pl
        
    @current_pl 0
      end
      
      def load
    (data)
        
    self.playlists = []
        
    data.each {|dload_pl(d) }
      
    end
      
      def load_pl
    (data)   
        
    name data[0]
        
    songs = []
        
    data[1].to_s.split(/\n/).each {|a
          
    a.gsub(/\A(.*?)=(.*?)\Z/) do
            
    song Song.new($1.to_s, $2.to_s)
            
    songs.push(song)
          
    end
        
    }
       
        
    self.playlists.push(Playlist.new(namesongs))
      
    end
      
      def update
        self
    .playlists[@current_pl].update
      end
      
      
    # METHODS FOR USE
      
    def play_pl(pln)
        @
    current_pl pl
        play
    (n)
      
    end
      
      def play
    (n)
        
    self.playlists[@current_pl].play(n)
      
    end

      def stop
        self
    .playlists[@current_pl].stop
      end
      
      def pause
        self
    .playlists[@current_pl].pause
      end
      
      def unpause
        self
    .playlists[@current_pl].unpause
      end
      
      def pitch
        self
    .playlists[@current_pl].pitch
      end
      
      def pitch
    =(pitch)
        
    self.playlists[@current_pl].pitch pitch
      end
      
      def volume
        self
    .playlists[@current_pl].volume
      end
      
      def volume
    =(volume)
        
    self.playlists[@current_pl].volume volume
      end
      
      def buffer
    =(buffer)
        
    self.playlists[@current_pl].buffer buffer
      end
      
      def test
        self
    .playlists.each {|plpl.test }
      
    end
      
      def set_mode
    (n)
        
    self.playlists[@current_pl].set_mode(n)
      
    end
      
      def next
        self
    .playlists[@current_pl].next
      end
      
      def prev
        self
    .playlists[@current_pl].prev
      end
    end

    class Game_System
      
    #--------------------------------------------------------------------------
      # * Playlist manager
      #--------------------------------------------------------------------------
      
    attr_accessor :pl_manager
      
    #--------------------------------------------------------------------------
      # * init_pl_manager
      #--------------------------------------------------------------------------
      
    def init_pl_manager
        
    @pl_manager PL_Manager.new(CV_PLAYLIST::PL_MANAGER
      
    end
      
    #--------------------------------------------------------------------------
      # * initialize
      #--------------------------------------------------------------------------
      
    def initialize
        
    @save_disabled false
        
    @menu_disabled false
        
    @encounter_disabled false
        
    @formation_disabled false
        
    @battle_count 0
        
    @save_count 0
        
    @version_id 0
        
    @window_tone nil
        
    @battle_bgm nil
        
    @battle_end_me nil
        
    @saved_bgm nil
        init_pl_manager
      end
    end

    class Scene_Base
      alias tm_update update
      def update
        tm_update
        
    if $game_system.pl_manager != nil
          $game_system
    .pl_manager.update
        end
        
    #-- KeyButton ------------------------------------------------------------------
        
    if CV_PLAYLIST::USEBUTTON == true
          
    if CV_PLAYLIST::GKIM == true
            
    if Keys.trigger?(CV_PLAYLIST::PAUSE)
              
    $game_system.pl_manager.pause
            end
            
    if Keys.trigger?(CV_PLAYLIST::UNPAUSE)
              
    $game_system.pl_manager.unpause
            end
            
    if Keys.trigger?(CV_PLAYLIST::NEXT)
              
    $game_system.pl_manager.next
            end
            
    if Keys.trigger?(CV_PLAYLIST::PREV)
              
    $game_system.pl_manager.prev
            end
            
    if Keys.trigger?(CV_PLAYLIST::VOLUP)
              
    $game_system.pl_manager.volume += 10
            end
            
    if Keys.trigger?(CV_PLAYLIST::VOLDOWN)
              
    $game_system.pl_manager.volume -= 10
            end
          
    else
            if 
    Input.trigger?(CV_PLAYLIST::PAUSE)
              
    $game_system.pl_manager.pause
            end
            
    if Input.trigger?(CV_PLAYLIST::UNPAUSE)
              
    $game_system.pl_manager.unpause
            end
            
    if Input.trigger?(CV_PLAYLIST::NEXT)
              
    $game_system.pl_manager.next
            end
            
    if Input.trigger?(CV_PLAYLIST::PREV)
              
    $game_system.pl_manager.prev
            end
            
    if Input.trigger?(CV_PLAYLIST::VOLUP)
              
    $game_system.pl_manager.volume += 10
            end
            
    if Input.trigger?(CV_PLAYLIST::VOLDOWN)
              
    $game_system.pl_manager.volume -= 10
            end
          end
        end
    #-------------------------------------------------------------------------------
      
    end
    end

    class Game_Interpreter
      def pl_manager
        
    return $game_system.pl_manager
      end
    end 
    Добавил только нужные кнопки, на мой взгляд.
    Запуск плейлиста и шафл можно указать ивентом во время запуска сцены, а кнопка стоп, отпдает из-за отсутствия кнопки запуска плейлиста.
    Скорость воспроизведения также указывается во время сцены.
    Переменная пригодится для отображения трека, который играет на данный момент.
    Последний раз редактировалось HopeBree; 10.08.2015 в 18:25.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Playlist Manager [VXACE]