UltimaForum

Skrypty [XP] - Napisy Końcowe [XP]

Ayene - Sro 13 Lip, 2011 12:36
Temat postu: Napisy Końcowe [XP]
~ Napisy Końcowe [XP] ~

Krótki opis
Ze względu na brak takowego na forum zamieszczam krótki skrypt, dzięki któremu można wyświetlać napisy końcowe (tzw. Credits), a także historie, opisy postaci, itd.

Autor skryptu
Ayene [yurika@o2.pl]

Kompatybilność
Tylko XP

Skrypt
Spoiler:

Kod:
#==============================================================================
# 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


Demo
niepotrzebne

Screenshot
Spoiler:


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

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

Wejdź w 'Scene_Title' i znajdź fragment:
Kod:
s1 = "New Game"
s2 = "Continue"   
s3 = "Shutdown"
@command_window = Window_Command.new(192, [s1, s2, s3])

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

Znajdź pod spodem:
Kod:
@command_window.y = 288

I zamień na:
Kod:
@command_window.y = 256

Następnie znajdź:

Kod:
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:
Kod:
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


Piszcie w razie problemów.

wojtas025c - Sro 13 Lip, 2011 12:40

0_o Dzięki Ayene znowu ^^

Szukałem tego do swojego projektu a jak zrobić aby był napisz Autorzy w menu. Tak jak w pustkowia Chaosu ^^

Ayene - Sro 13 Lip, 2011 12:42

W którym menu? Na ekranie tytułowym?
wojtas025c - Sro 13 Lip, 2011 12:47

Tak jak mam Ekran Tytułowy to tak jak w "Pustkowia Chaosu" zrobić aby byli "Autorzy"
Melvin - Czw 14 Lip, 2011 00:03

Pro.
Thx. A można jakoś wbić tam obrazek? :->

wojtas025c - Czw 14 Lip, 2011 00:33

No można.

Przejdź to:
[spoiler]
# Ustawienia tła obrazkowego (folder Graphics/Pitures)
BACKGROUND_IMAGE = '' # Tutaj piszesz nazwę obrazka jeśli jej nie będzie nie będzie obrazka czyli będzie wyłączony
BACKGROUND_OPACTIY = 255[spoiler]

Melvin - Czw 14 Lip, 2011 00:38

Ale mi nie chodzi o tło tylko obrazek jako napis.
Ayene - Czw 14 Lip, 2011 08:19

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

Wejdź w 'Scene_Title' i znajdź fragment:
Kod:
s1 = "New Game"
s2 = "Continue"   
s3 = "Shutdown"
@command_window = Window_Command.new(192, [s1, s2, s3])

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

Znajdź pod spodem:
Kod:
@command_window.y = 288

I zamień na:
Kod:
@command_window.y = 256

Następnie znajdź:

Kod:
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:
Kod:
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 z dodatkową opcją wyświetlania obrazków
Pierwszy post edytowany ;-)

wojtas025c - Czw 14 Lip, 2011 13:57

Dziękuje ci Ayene :3

Ogólnie bardzo mi pomagasz w skryptach <3

Melvin - Czw 14 Lip, 2011 15:56

Dzięki Ayene ;-)
wojtas025c - Czw 14 Lip, 2011 18:40

Hmm....

Mam mały problemik i chodzi o to że gdy się zamyka "Autorzy" pokazuje mnie się błąd:



A linia brzmi tak:

Kod:
   
@actor = $game_party.actors[0]


Ayene - Czw 14 Lip, 2011 21:22

A masz kogoś w drużynie? W skrypcie z tego tematu, co masz w linijce z konfiguracją NEXT_SCENE?
wojtas025c - Czw 14 Lip, 2011 21:41

Nie za bardzo kapuje co napisałaś ^^
Ayene - Czw 14 Lip, 2011 21:45

Zadałam dwa pytania:
1. Czy masz kogoś w drużynie?
2. Co masz w linijce z konfiguracją NEXT_SCENE? Domyślnie ta linijka wygląda tak w skrypcie:
Kod:
NEXT_SCENE = Scene_Map          # kolejna scena   

wojtas025c - Pią 15 Lip, 2011 22:21

Tak mam 2 osoby ^^

A 2 znowu nie kapuje....

Jestem tępy...

Melvin - Pią 15 Lip, 2011 22:38

KUR#A!!!!!!!!!!
CO MASZ W LINIJCE:
Kod:
NEXT_SCENE =

PO "RÓWNA SIĘ"!!

SZLAG MNIE JASNY TRAFI!

Yoroiookami - Pią 15 Lip, 2011 23:00

Spokojnie Melvinku, nie chcemy przecież zrazić nowych twórców do dalszego tworzenia. Kto wie, może za rok to on stworzy dzieło, w które będziesz z radością grał :roll: przecież to nic osobistego, poza tym nikt nie każe ci odpowiadać. :mrgreen:
Melvin - Sob 16 Lip, 2011 15:14

Dobra, luz... Racja. Ale ściska mnie w żołądku jak widzę taki post:
wojtas025c napisał/a:
Jestem tępy...

Litości ludzie.... :kable:

wojtas025c - Sob 16 Lip, 2011 20:38

No co...

Każdy jest głupi na swój sposób...

Melvin wyślę ci projekt na PW i zobacz o co biega. Je jestem zielonkawy w Ruby...

Krashai - Sob 16 Lip, 2011 21:23

Niedawno zrobiłem podobny skrypcik ^^
Melvin - Sob 16 Lip, 2011 22:59

Krashai, mówić każdy może... Scooby Doo, Wam w tym pomoże...
matitus09 - Nie 25 Mar, 2012 23:14

Mam błond z linikom 223. :-(
Treść liniki:
Kod:
end

Melvin - Nie 25 Mar, 2012 23:19

Masz pewnie za dużo lub za mało "end".
Usuń jedno, albo dodaj.

PS.
Wróć do szkoły zamiast robić gry w RM'ie.

matitus09 - Pon 26 Mar, 2012 17:50

Usówałem, dodawałem i nic.
Ayene - Pon 26 Mar, 2012 19:13

Sprawdź, czy w linijce około 91, tam, gdzie jest:
Kod:
_CREDIT_

nie ma żadnej spacji po ostatniej stopce, czyli znaku '_'.

matitus09 - Pon 26 Mar, 2012 22:15

Spacja była. W skrypcie tekst nabrał kolory. :mrgreen:
Ale "end" nadal zły. :mrgreen:

NyanaPL - Pią 13 Lip, 2012 00:45

Ja mam taki mały problem, zrobiłem wręcz wszystko co napisałaś Ayene, ale bo wybraniu w menu Autorzy nic się nie dzieje.
Ayene - Pią 13 Lip, 2012 23:29

Może masz jakiś skrypt, który nadpisuje zmiany, które wprowadziłeś. Masz jakieś skrypty dodatkowe na ekran tytułowy?
NyanaPL - Pią 13 Lip, 2012 23:47

Nie nie mam,

Skrypty to tylko QuestLog Thieffer' a, ATP, Sabikku UMS, Pause i na zmianę Font's.

Więc nie wiem, co to może być

KhadarPL - Wto 14 Sie, 2012 11:30

O , wielkie dzięki za skrypcik , właśnie tego szukałem !

Pozdro .

Pepczak - Nie 28 Paź, 2012 17:43

mi usunęło shutdown, a zrobiłem wszystko tak jak w tutku
m4t3us2 - Sro 08 Maj, 2013 21:35

Mam pytanie co muszę zrobić żeby zaraz po zakończeniu tekstu przeniosło mnie na wybraną mapę ? (chciałem to dać jako intro)

[ Dodano: Sob 11 Maj, 2013 08:59 ]
Już nie trzeba, zrobiłem to w scene title ;d


Powered by phpBB modified by Przemo © 2003 phpBB Group