UltimaForum

Skrypty [XP] - Intro [XP]

Sabikku - Sro 02 Cze, 2010 20:10
Temat postu: Intro [XP]
~ Intro [XP] ~

Krótki opis.
Skrypt wprowadza krótkie intro przed ekranem tytułowym. Pyta o uruchomienie gry w trybie pełnoekranowym, potem wyświetla po kolei ustawione loga gry.

Autor skryptu.
Sabikku/slabix, czyli ja.

Kompatybilność.
XP. Może się gryźć z niektórymi skryptami, choć wątpię.

Skrypt.
Spoiler:

Kod:

# ===========================================================
# Scene_Intro
# -----------------------------------------------------------
# * by Sabikku
# * 07.05.10
# * zamthir.net/forum
# * ultimateam.pl
# ===========================================================

SINGLE_LOGO_WAIT = 100
LOGOS_NAMES = []
LOGOS_NAMES << "Logo"
LOGOS_NAMES << "Logo2"
SPACE_OPTION = true

# ===========================================================

class Scene_Intro
  # Main. ---------------------------------------------------
  def main
    # Make system object
    $data_system        = load_data("Data/System.rxdata")
    $game_system = Game_System.new
    # Windows.
    @command_window=Window_Command.new(230, ["Pełny ekran.", "Tryb okienkowy."])
    @command_window.x=320-@command_window.width/2
    @command_window.y=240-@command_window.height/2
    @command_window.visible=true; @command_window.active=true   
    # Other variables.
    @active_logo=-1
    @logo_wait=0
    @logo_sprite=nil
    # Main loop.
    Graphics.transition
    while $scene==self
      Graphics.update
      Input.update
      update
    end
    Graphics.freeze
    # Disposing.
    @command_window.dispose
  end
 
  # Update. -------------------------------------------------
  def update
    @command_window.update
    if @logo_sprite!=nil
      @logo_sprite.update
      # Space.
      if SPACE_OPTION and Input.trigger?(Input::C)
        $scene=Scene_Title.new
      end
    end
    # Intro events.
    if @command_window.active
      # Controlling keyboard.
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        @command_window.active=false
        @command_window.visible=false
        # Fullscreen.
        if @command_window.index==0
          full = Win32API.new 'user32', 'keybd_event', %w(l l l l), ''
          full.call(18,0,0,0)
          full.call(13,0,0,0)
          full.call(13,0,2,0)
          full.call(18,0,2,0)
        end
      end
    else
      # Logos showing
      if @logo_wait==SINGLE_LOGO_WAIT
        @active_logo+=1
        if @active_logo == LOGOS_NAMES.size
          # Title screen.
          $scene=Scene_Title.new
        else
          @logo_sprite=Sprite.new(Viewport.new(0,0,640,480))
          @logo_sprite.bitmap=RPG::Cache.picture(LOGOS_NAMES[@active_logo])
          @logo_sprite.x=320-@logo_sprite.bitmap.width/2
          @logo_sprite.y=240-@logo_sprite.bitmap.height/2
          @logo_sprite.opacity=0
        end
        @logo_wait=0
      else
        @logo_wait+=1
        if @logo_sprite!=nil
          # Showing a single logo with 1/3 fading.
          if @logo_wait < SINGLE_LOGO_WAIT/3
            # Fade in
            @logo_sprite.opacity=[@logo_sprite.opacity + (255/(SINGLE_LOGO_WAIT/3)) , 255].min
          elsif @logo_wait < SINGLE_LOGO_WAIT/3*2
            # Do nothing.
          elsif @logo_wait < SINGLE_LOGO_WAIT
            # Fade out.
            @logo_sprite.opacity=[@logo_sprite.opacity - (255/(SINGLE_LOGO_WAIT/3)) , 255].min
          end
        end
      end
    end
  end
end



Instrukcja.
1. Wkleić skrypt w edytorze skryptów.
2. Wejść w zakładkę 'Main', po czym edytować linijkę:
Kod:
$scene = Scene_Title.new

na
Kod:
$scene = Scene_Intro.new


Na początku skryptu jest też ustawienie czasu między poszczególnymi logami:
Kod:
SINGLE_LOGO_WAIT = 100

oraz lista nazw obrazków do wyświetlenia, znajdujących się w folderze Pictures:
Kod:

LOGOS_NAMES << "Logo"
LOGOS_NAMES << "Logo2"


Powinno działać, ale w razie problemów - pisać.

Przy okazji dorzucę logo ultimy (wycięte z bannera):

pw115 - Sro 02 Cze, 2010 20:14

Dobry skrypt przyda się i wykorzystam ;)
10/10
A da się ustawić więcej obrazków ?

PS: Fajny userbar
PS2: Po co na końcu post logo ultimy ?

Sabikku - Sro 02 Cze, 2010 20:18

Oczywiście :>. Zamiast
Kod:
LOGOS_NAMES << "Logo"
LOGOS_NAMES << "Logo2"

dajesz na przykład:
Kod:
LOGOS_NAMES << "Logo"
LOGOS_NAMES << "Logo2"
LOGOS_NAMES << "trzecie logo"

wito35 - Nie 20 Cze, 2010 23:03

Skrypt jest zajefajny daje 10/10

PS: Czy da się zlikwidować to na początku, czyli pełny ekran i tryb okienkowy tak żeby od razu przechodził w tryb okienkowy ?

Sabikku - Pon 21 Cze, 2010 08:15

Znajdź
Kod:
@command_window.visible=true; @command_window.active=true

i zamień na:
Kod:
@command_window.visible=false; @command_window.active=false

wito35 - Pon 21 Cze, 2010 15:11

Oki dzięki, jesteś wielki. a czy da się umieścić muzykę na początku bo tak trochę głupio jak wszędzie jest a na początku jej brak.

PS: Proszę o pomoc.

Izaya - Sro 23 Cze, 2010 14:33

Chyba można.
Musisz chyba odegrać tą muzykę, lub zmienić coś w skrypcie.
Nie jestem pewien. Lecz nie mogę Ci w tym pomóc nie za bardzo idzie mi Skrypt owanie :-> .
A logo Ultima Forum to chyba dla tego że jak by ktoś chciał na początku gry mieć Ultimę.
Widziałem takie coś chyba właśnie w "Dragon Adventure".
Ładny efekt :-D

wito35 - Czw 24 Cze, 2010 08:48

Aha, no dobra spróbuje coś zrobić, a czy da się skasować to znikanie i pojawianie się obrazka na nowo, tak żeby szło to płynnie ( jednolity obraz) ? Proszę o pomoc.
raffallo - Wto 24 Maj, 2011 16:31

Proszę mi powiedzieć jak można zrobić że po naciśnięcu jakiegoś klawisza wyłącza się intro
Kumpel - Wto 24 Maj, 2011 18:33

Ja również mam pytanie odnośnie skryptu. Czy dało by rade przy ostatnim (5) obrazie, gdy tylko się wciśnie spację to przechodzisz do titla ? :?: :-/ :-| :-| :-? :-(
Melvin - Wto 24 Maj, 2011 20:02

Dodajcie pod tym:
Kod:
if @logo_wait < SINGLE_LOGO_WAIT/3
83 linijka
To:
Kod:
if Input.trigger?(Input::C)
   $scene = Scene_Title.new
end

Sabikku - Sro 25 Maj, 2011 07:47

Wkleiłem uaktualnioną wersję skryptu z obsługą przewijania spacją do pierwszego postu.
raffallo - Sro 25 Maj, 2011 08:07

A jak jeszcze zrobić żeby po naciśnięciu jakiegokolwiek przycisku intro się wyłączało?
Sabikku - Sro 25 Maj, 2011 12:51

Podmień
Kod:
if SPACE_OPTION and Input.trigger?(Input::C)

na
Kod:
if SPACE_OPTION and (Input.trigger?(Input::C) or Input.trigger?(Input::B) or Input.trigger?(Input::A) or Input.trigger?(Input::L) or Input.trigger?(Input::R) or Input.trigger?(Input::X) or Input.trigger?(Input::Y) or Input.trigger?(Input::Z))

Ale wiedz, że to wciąż nie będą Wszystkie klawisze, tylko Wszystkie wspierane standardowo przez rpg makera.

raffallo - Sro 25 Maj, 2011 18:19

A nie ma jakiegoś kodu że jak coś naciśniesz to po prostu się wyłącza??
wojtas025c - Czw 02 Cze, 2011 16:33

Można zrobić tak aby muzyka leciała podczas intro
Melvin - Czw 02 Cze, 2011 22:12

wojtas025c napisał/a:
Można zrobić tak aby muzyka leciała podczas intro

Jaki to rodzaj zdania? Pytające? Jeśli tak, to można.

raffallo - Pią 03 Cze, 2011 13:29

no to jak zrobić z tą muzyką??
Sabikku - Pią 03 Cze, 2011 14:09

Pod
Kod:
def main

wklej
Kod:

 Audio.bgm_play("Audio/BGM/nazwa_pliku", 100, 100)

wojtas025c - Pią 03 Cze, 2011 18:12

Ok thenks
wojtas025c - Pią 03 Cze, 2011 18:32

A ta się tak aby ta muzyka ciągle leciała w menu Tak że od intro do kliknięcia czegoś będzie leciała ta sama muzyka :D
Feniks - Pią 03 Cze, 2011 18:36

to ustaw w database -> title bgm tą samą muzykę.
Melvin - Pią 03 Cze, 2011 18:45

wojtas025c napisał/a:
A ta się tak aby ta muzyka ciągle leciała w menu Tak że od intro do kliknięcia czegoś będzie leciała ta sama muzyka :D

A o menu jakie chodzi Ci i o muzykę jaką chodzi Tobie? Nie rozumiem zdania Twojego.
Po polsku pisz Ty.

MoD - Nie 15 Sty, 2012 09:19

Mi wogóle sie nie pojawia intro na początku
Ayene - Pon 16 Sty, 2012 13:19

MoD, a zrobiłeś punkt drugi instrukcji?
MoD - Pon 16 Sty, 2012 14:01

1. Wkleić skrypt w edytorze skryptów. ZROBIONE


2. Wejść w zakładkę 'Main', po czym edytować linijkę: ZROBIONE

NIEWIEM CZEMU SIE NIE POJAWIA ;p MOGE WSTAWIĆ MOJE PLIKI NA NETA I TY COŚ POGRZEBIERZ

artekwnc - Pon 16 Sty, 2012 18:09

Może dlatego że masz polskiego makera?
SaNq - Wto 17 Sty, 2012 13:01

ja też mam problem jak wlaczam gre intro sie nie pojawia mam RPG maker XP ENG
Tracker009 - Pią 13 Kwi, 2012 20:04

Mam problem, skrypt chyba koliduje z skryptem na opcje Ayene, który jest na forum
http://imageshack.us/f/201/badmz.png/
Błąd pojawia się gdy próbuje kliknąć pełny ekran lub cokolwiek zrobić na początku.

Ayene - Pią 13 Kwi, 2012 20:51

Tracker009, w skrypcie na Opcje gry znajdź linijkę:
Kod:
class Scene_Title

zamień na:
Kod:
class Scene_Intro

Przesuń skrypt na Opcje pod skrypt na Intro.

Tracker009 - Pią 13 Kwi, 2012 21:58

Ayene czy ktoś ci mówił że jesteś wielka? Dziękuje bardzo działa ;).
Falkret - Pon 24 Gru, 2012 14:18

A można zwiększyć czas wyświetlania poszczególnych obrazków? Żeby np. nie wyświetlało 15 sekund tylko 10

I jeszcze jedno, da się ściszyć tą muzykę którą się puszcza, i czy można pominąć to początkowe wybieranie okienka i od razu przejdź w tryb pełnoekranowy?

Ayene - Czw 27 Gru, 2012 15:12

Sabcio już na forum nie wchodzi, więc pomogę.
Skillet, czytaj konfigurację:
Kod:
SINGLE_LOGO_WAIT = 100


Nie wiem, o jaką muzykę Tobie chodzi... Co do pozbycia się okienka, podmień skrypt na poniższy:
Spoiler:

Kod:
# ===========================================================
# Scene_Intro
# -----------------------------------------------------------
# * by Sabikku
# * 07.05.10
# * zamthir.net/forum
# * ultimateam.pl
# ===========================================================

SINGLE_LOGO_WAIT = 100
LOGOS_NAMES = []
LOGOS_NAMES << "Logo"
LOGOS_NAMES << "Logo2"
SPACE_OPTION = true

# ===========================================================

class Scene_Intro
  # Main. ---------------------------------------------------
  def main
    # Make system object
    $data_system        = load_data("Data/System.rxdata")
    $game_system = Game_System.new
    # Other variables.
    @active_logo=-1
    @logo_wait=0
    @logo_sprite=nil
    # Main loop.
    Graphics.transition
    while $scene==self
      Graphics.update
      Input.update
      update
    end
    Graphics.freeze
    # Disposing.
    @logo_sprite.dispose
  end
 
  # Update. -------------------------------------------------
  def update
    if @logo_sprite!=nil
      @logo_sprite.update
      # Space.
      if SPACE_OPTION and Input.trigger?(Input::C)
        $scene=Scene_Title.new
      end
    end
    # Intro events.
    if @logo_wait==SINGLE_LOGO_WAIT
      @active_logo+=1
      if @active_logo == LOGOS_NAMES.size
        # Title screen.
        $scene=Scene_Title.new
      else
        @logo_sprite=Sprite.new(Viewport.new(0,0,640,480))
        @logo_sprite.bitmap=RPG::Cache.picture(LOGOS_NAMES[@active_logo])
        @logo_sprite.x=320-@logo_sprite.bitmap.width/2
        @logo_sprite.y=240-@logo_sprite.bitmap.height/2
        @logo_sprite.opacity=0
      end
      @logo_wait=0
    else
      @logo_wait+=1
      if @logo_sprite!=nil
        # Showing a single logo with 1/3 fading.
        if @logo_wait < SINGLE_LOGO_WAIT/3
          # Fade in
          @logo_sprite.opacity=[@logo_sprite.opacity + (255/(SINGLE_LOGO_WAIT/3)) , 255].min
        elsif @logo_wait < SINGLE_LOGO_WAIT/3*2
          # Do nothing.
        elsif @logo_wait < SINGLE_LOGO_WAIT
          # Fade out.
          @logo_sprite.opacity=[@logo_sprite.opacity - (255/(SINGLE_LOGO_WAIT/3)) , 255].min
        end
      end
    end
  end
end


The Big Master - Sob 29 Gru, 2012 12:19

Hehe użyłem tego skryptu wszystko ładnie cacy, wyłanczam gre tesotową a tam BUM klawa mi przesraje działać xD, nawet ekranowa odmawiała posłuszeństwa :C musiałem wywalić skrypt a na pewno by mi się przydał :C:C ale to pewnie wina mojego kompa lub RMXP'ka.
No cóż bywa i tak D:


Powered by phpBB modified by Przemo © 2003 phpBB Group