Napisy Końcowe / Scene Credits [XP]

 

screen scene credits

 

Autor: Ayene [ Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie obsługi JavaScript. ]

Kompatybilność: RPG Maker XP

Krótki opis:

Krótki skrypt, dzięki któremu wyświetlać można napisy końcowe (tzw. Credits), a także historie, opisy postaci, itd.

Instrukcja - jak umieścić 'Autorów' w menu ekranu tytułowego:

Wejdź w 'Scene_Title' i znajdź fragment:

s1 = "New Game"
s2 = "Continue"   
s3 = "Shutdown"
@command_window = Window_Command.new(192, [s1, s2, s3])

Zamień go na:

s1 = "Nowa Gra"
s2 = "Kontynuuj"   
s3 = "Autorzy"
s4 = "Wyjście"
@command_window = Window_Command.new(192, [s1, s2, s3, s4])

Znajdź pod spodem:

@command_window.y = 288

i zamień na:

@command_window.y = 256

Następnie znajdź:

case @command_window.index
when 0  # New game
  command_new_game
when 1  # Continue
  command_continue
when 2  # Shutdown
  command_shutdown
end

i zamień na:

case @command_window.index
when 0  # New game
  command_new_game
when 1  # Continue
  command_continue
when 2  # Autorzy
  $game_system.se_play($data_system.decision_se)
  $scene = Scene_Credits.new
when 3  # Shutdown
  command_shutdown
end

Skrypt:

#==============================================================================
# Napisy Końcowe [XP] / Scene Credits [XP]       
#==============================================================================
# Autor: Ayene
# www.ultimateam.pl
# ver. 1.2 [15.07.2011]
#==============================================================================
# Skrypt wyświetla napisy końcowe (tzw. Credits).
# Może zostać wykorzystany również do wyświetlania historii, opisu, itd.
# Instalacja: Umieść skrypt nad Main.
#==============================================================================
# By wywołać napisy wpisz:
#     $scene = Scene_Credits.new
#==============================================================================

module AYENE
 
  # Ustawienia czcionki
  CREDITS_FONT = 'Comic Sans MS'    # nazwa czcionki (folder Fonts)
  CREDITS_SIZE = 30                 # rozmiar czcionki
  CREDITS_BOLD = true               # pogrubienie
  CREDITS_ITALIC = false            # kursywa
  WLH = 32                          # interlinia
 
  # Ustawienia muzyki w tle
  CREDITS_BGM = ''                  # nazwa pliku z muzyką (folder Audio/BGM)
  CREDITS_BGM_VOLUME = 100          # głośność
 
  # Ustawienia tła obrazkowego (folder Graphics/Pitures)   
  BACKGROUND_IMAGE = ''             # nazwa tła; '' wyłącza tło
  BACKGROUND_OPACTIY = 255          # przezroczystość tła   
 
  # Formatowanie tesktu
  # Poniżej można dodać własne kolory tekstu
  TEXT_COLOR = { # 'kod' => kolor
  '' => Color.new(255, 255, 255, 255),  # <- nie usuwać - kolor domyślny
  '<r>' => Color.new(255, 126, 126, 255),
  '<y>' => Color.new(255, 253, 92, 255),
  '<g>' => Color.new(92, 255, 150, 255)
  }
     
  CREDITS_OUTLINE = Color.new(0, 0, 0, 255)     # kolor obwódki tekstu
  CREDITS_SHADOW = Color.new(0, 0, 0, 100)      # kolor cienia
   
  BUTTON_CLOSE = true # włącza możliwość przewinięcia sceny za pomocą przycisku
 
  NEXT_SCENE = Scene_Map          # kolejna scena   
  PREVIOUS_SCENE = Scene_Title    # poprzednia scena
 
  # Dodawanie obrazków do tekstu
  # Żeby obrazek nie nachodził na tekst wystarczy - pod linijką z kodem na jego
  # wyświetlenie - dać większy odstęp.
  IMAGE = { # 'kod' => nazwa obrazka
  '<logo>' => 'logo',
  '<ranga>' => 'ranga',   
  }
 
#--------------------------
# Tekst
#--------------------------
CREDIT = <<_CREDIT_

<logo>

<y>Tytuł Gry



<r>~ Reżyser ~
...
---------------

<r>~ Skrypty ~
...
---------------

<r>~ Grafika ~
...
---------------

<r>~ Dźwięk i muzyka ~
...
---------------

<r>~ Mapy ~
...
---------------

<g>www.ultimateam.pl

_CREDIT_
#--------------------------
# Koniec tekstu
#--------------------------
end

#==============================================================================
# ** Bitmap
#==============================================================================

class Bitmap
  include AYENE
  #--------------------------------------------------------------------------
  # * Draw Text Outline
  #--------------------------------------------------------------------------
  def draw_text_outline(x, y, width, height, text, align, color)
    font.name = CREDITS_FONT
    font.size = CREDITS_SIZE
    font.bold = CREDITS_BOLD
    font.italic = CREDITS_ITALIC
    font.color = CREDITS_OUTLINE
    draw_text(x + 1, y, width, height, text, align)
    draw_text(x - 1, y, width, height, text, align)
    draw_text(x, y + 1, width, height, text, align)
    draw_text(x, y - 1, width, height, text, align)
    font.color = CREDITS_SHADOW
    draw_text(x + 2, y + 8, width, height, text, align)   
    font.color = color   
    draw_text(x, y, width, height, text, align)
  end
end

#==============================================================================
# ** Scene_Credits
#==============================================================================

class Scene_Credits
  include AYENE   
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main       
    color = []
    image = []
    if CREDITS_BGM != ''
      Audio.bgm_play("Audio/BGM/" + CREDITS_BGM, CREDITS_BGM_VOLUME, 100)
    end     
    if BACKGROUND_IMAGE != ''
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture(BACKGROUND_IMAGE)
      @background.opacity = BACKGROUND_OPACTIY
    end   
    text = CREDIT.split(/\n/)     
    @credits = Sprite.new
    @credits.bitmap = Bitmap.new(640, WLH * text.size)
    @credits.z = 9999
    @credits.oy = -470     
    text.each_index { |i|
      color[i] = TEXT_COLOR[0]     
      TEXT_COLOR.each { |st, c|
        if text[i].include?(st)       
          text[i].sub!(st, '')
          color[i] = c           
        end         
      }
      IMAGE.each { |st, im|
        if text[i].include?(st)       
          text[i].sub!(st, '')
          image[i] = im           
        end         
      }
      if image[i] != nil
        bitmap = RPG::Cache.picture(image[i])
        cw = bitmap.width
        ch = bitmap.height
        src_rect = Rect.new(0, 0, cw, ch)
        @credits.bitmap.blt((640 - cw) / 2, i*WLH, bitmap, src_rect)         
      end
      @credits.bitmap.draw_text_outline(0,i*WLH,640,32,text[i],1,color[i])     
    }         
   
    Graphics.transition   
    loop do     
      Graphics.update     
      Input.update     
      update     
      if $scene != self
        break
      end
    end   
    Graphics.freeze
    unless @background.nil?
      @background.bitmap.dispose
      @background.dispose
    end
    @credits.bitmap.dispose
    @credits.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    @credits.oy += 1
    if BUTTON_CLOSE
      if Input.trigger?(Input::C)       
        next_scene               
      elsif Input.trigger?(Input::B)
        previous_scene
      end
    end   
    if @credits.oy >= @credits.bitmap.height
      next_scene
    end   
  end
  #--------------------------------------------------------------------------
  # * Next Scene
  #--------------------------------------------------------------------------
  def next_scene
    Audio.bgm_fade(1500) if CREDITS_BGM != ''
    $scene = eval("#{NEXT_SCENE}.new")
  end
  #--------------------------------------------------------------------------
  # * Previous Scene
  #--------------------------------------------------------------------------
  def previous_scene
    Audio.bgm_fade(1500) if CREDITS_BGM != ''
    $scene = eval("#{PREVIOUS_SCENE}.new")     
  end
end

Dodatkowe informacje:

1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.