Войти на сайт

Авторизация, ждите ...
×

ТЕМА: [CCC]СЛАЙДЫ

[CCC]СЛАЙДЫ 9 года 7 мес. назад #80147

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Программист Ruby2 место Сбитая кодировкаДаритель СтимкеяПереводчикОрганизатор конкурсов2 место
Те, кто играл в Fallout или Dragon Age сразу поймут что нужно сделать.
Цель: сделать экран показа слайдов аля "концовка в фоллауте"
В тему выкладывать ТОЛЬКО ДЕМО ДЛЯ КОНКУРСА!
Скрипты будут приниматься до 12:00 в понедельник,
опоздавшие больше чем на пол часа будут злостно проигнорированны!
Надеюсь, будет поактивнее)
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Seibur, DeadElf79, Демий, NettySvit, Iren_Rin

[CCC]СЛАЙДЫ 9 года 7 мес. назад #80155

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • 1 место в ГотвОрганизатор конкурсовВетеранПисатель 3 местоПроект месяца 2 местоУчительПрограммист RubyПроект месяца 1 место3 место
Положу сюда демку, оформлю и напишу все инструкции по использованию потом. Хотя, вроде бы, всё кристально ясно: yadi.sk/d/LnIse-Vqg4WxK

Внимание: демо требует RTP XP, потом поправлю.

По просьбе EvilCat, прикладываю сюда код.
module DE79_SLIDESHOW_SETUP
  DIRECTORY_PATH = 'Graphics/Slides/'
  # Массив расширений файлов
  FILE_EXTENSION = ['.jpg','.png']
end
 
# Закоментируйте эти строки, если используете скрипты,
# меняющие размеры экрана
# vvvvvvvvvvvvv
module Graphics
  class <<self
    unless method_defined?(:width)
      def width
        640
      end
    end
    unless method_defined?(:height)
      def height
        480
      end
    end
  end
end
# ^^^^^^^^^^^^^^
# Комментируйте строки выше этой
 
module RPG::Cache
  def self.slide(filename)
    self.load_bitmap(DE79_SLIDESHOW_SETUP::DIRECTORY_PATH, filename)
  end
end
 
def draw_slides(index_min,index_max)
  Graphics.freeze
  for i in index_min..index_max
    filename=format('Slide%03d', i)
    for ext in 0...DE79_SLIDESHOW_SETUP::FILE_EXTENSION.size
      if FileTest.exist?(DE79_SLIDESHOW_SETUP::DIRECTORY_PATH+filename+
          DE79_SLIDESHOW_SETUP::FILE_EXTENSION[ext])
        logo=Sprite.new
        logo.bitmap=RPG::Cache.slide(filename)
        logo.ox=logo.bitmap.width/2
        logo.oy=logo.bitmap.height/2
        logo.x=Graphics.width/2
        logo.y=Graphics.height/2
        logo.opacity=0
        Graphics.transition 0
        loop do
          Graphics.update
          Input.update
          if Input.trigger?(Input::C)
            logo.opacity=245
          end
          logo.opacity<255 ? logo.opacity+=5 : break
        end
        loop do
          Graphics.update
          Input.update
          if Input.trigger?(Input::C)
            logo.opacity=15
          end
          logo.opacity>0 ? logo.opacity-=5 : break
        end
        Graphics.freeze
        logo.bitmap.dispose
        logo.dispose
      else
        next
      end
    end
  end
end

Инструкция: вызовите скрипт с параметрами так:
draw_slides(0,10)
где 0 - это первый слайд, 10 - последний. Все слайды с номерами между первым числом и вторым (включительно оба этих кадра) будут показаны автоматически. Сладйы должны находится в папке "Graphics/Slides" и иметь название Side000, Slide001, Slide002 и так далее.
Последнее редактирование: 9 года 7 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Iren_Rin

[CCC]СЛАЙДЫ 9 года 7 мес. назад #80265

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Программист Ruby2 место Сбитая кодировкаДаритель СтимкеяПереводчикОрганизатор конкурсов2 место
Слайды, сделанные лично мной.
Инструкция по работе в ШАПКЕ.
Скрипт немного недоработан, диалоги не скрываются при показе и нет чёрного фона.
Скрипт:
=begin
    Слайды
    Автор: strelokhalfer
    Требования: Мозг и прямые руки :)
    Описание:
      Упращает вывод картинок, делает возможным их вывод перед
      главным меню или перед концом игры.
    Лицензия: 
      Бесплатно для для не- и комерческих проектов,
      но вы ОБЯЗАНЫ указать меня в благодарностях.
    Использование:
      Создайте свой массив по образцам ниже, и вызвоите его
        slides(имя_массива)
      В массиве есть два типа данных, фоновая музыка и картинка.
      Фоновая музыка указывается строкой
        ["BGM", "Имя", громкость, темп]
          BGM - Указывает, что это музыка
          Имя - Имя музыки из папки 'Audio/BGM/'
          Громкость - от 0 до 100
          Темп - от 50 до 150(100 стандарт)
      Картинка определяется
        ["PIC", "Имя", время, переключатель, "Альтернатива"]
          Имя - Имя картинки из папки, указанной в Slide_Path
          Время - как долго будет висеть картинка
          Переключатель - номер переключателя, картинка будет видна,
            если он включон, необязателен.
          "Альтернатива" - имя картинки, если переключатель выключен, необязателен. 
      Для конца игры вызовите 
        end_game
      Для отключения слайдов в начале игры, заккоментируйте строки в Start_scene
=end
module Halfer_Slide
  Slide_Path = "Graphics/Slides/"
  Transition = 60
  # Массивы ниже могут быть пусты, НО ОБЯЗАТЕЛЬНЫ!
  End_scene = [ #Слайды для концовок
    ["BGM", "Scene3", 100, 100],
    ["PIC", "End1", 2],
    ["PIC", "End2_1", 2, 1, "End2_2"],
    ["BGM", "Scene2", 100, 100],
    ["PIC", "End3_1", 2, 2, "End3_2"],
    ["PIC", "End4", 2]
  ]
  Start_scene = [ #Слайды для показа перед титульным меню
    ["PIC", "Start1", 2],
    ["PIC", "Start2", 2]
  ]
  # Ваши шаблоны
  Dali = [ 
    ["PIC", "Dali1", 2],
    ["PIC", "Dali2", 2],
  ]
  def make_slides(array)
    return if array.size == 0
    b_black = Bitmap.new(Graphics.width, Graphics.height) 
    b_black.fill_rect(0, 0, Graphics.width, Graphics.height, Color.new(0, 0, 0)) 
    black = Sprite.new
    black.bitmap = b_black
 
    has_bgm = false
    $game_message.visible = false
    array.each_index { |c|
      if array[c][0] == "BGM"
        Audio.bgm_play('Audio/BGM/' + array[c][1], array[c][2], array[c][3], 0)
        has_bgm = true
      elsif array[c][0] == "PIC"
        disp = false
 
        if array[c][3] == nil
          image = array[c][1]
        else
          if $game_switches[array[c][3]]
            image = array[c][1]
          else
            if array[c][4] == nil
              disp = true
            else
              image = array[c][4]
            end
          end
        end
        break if disp
        Graphics.freeze
        slide = Sprite.new
        slide.bitmap=Cache.frame(image)
        Graphics.transition Transition
        loop do
          Graphics.update
          Input.update
          if Input.trigger?(Input::B)
            slide.opacity=245
          end
          slide.opacity<255 ? slide.opacity+=5 : break
        end
        sleep array[c][2]
        loop do
          Graphics.update
          Input.update
          if Input.trigger?(Input::B)
            slide.opacity=15
          end
          slide.opacity>0 ? slide.opacity-=5 : break
        end
        slide.bitmap.dispose
        slide.dispose
 
      end
    }
    if has_bgm
      RPG::BGM.stop
    end
    black.bitmap.dispose
    black.dispose
  end
end
 
($imported ||= {})["Halfer_Slides"] = true
 
module Cache
  include Halfer_Slide
  def self.frame(filename)
    load_bitmap(Slide_Path, filename)
  end
end
 
class Game_Interpreter
  include Halfer_Slide
 
  def slides(array)
    wait 20
    make_slides(array)
  end
 
  def end_game
    wait 20
    slides(End_scene)
    SceneManager.goto(Scene_Gameover)
  end
end
 
class << SceneManager
  include Halfer_Slide
  alias halfer_pre_title first_scene_class
  def first_scene_class
    make_slides(Start_scene)
    halfer_pre_title
  end
end
Ссылка. [VX ACE]
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 9 года 7 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Iren_Rin
Время создания страницы: 0.190 секунд