PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [XP] Problem mit Animierten-TB



MGP
24.08.2008, 19:03
Guten Abend,
in letzter Zeit, habe ich mich mal wieder an's Makern gewagt, jedoch ein Problem, und zwar:
Ich benutze, dass Animierte-TB Script, ist schön und gut, ich wollte einen Bewegenden-Effekt machen, aber ich verstehe nicht wie ich das machen soll,
es kommt jedes mal von Rechts nach Links das eine Bild herüber...
Und die Zeit mich mit Ruby richtig auseinanderzusetzen hab ich momentan nicht.
Also, wo genau müsste ich jetzt was Umstellen ?

The_Burrito
24.08.2008, 19:57
Vielleicht postest du auch einfach mal das Script, denn ich glaube nicht, dass es nur eines gibt, und selbst wenn, dann kennt es vielleicht nicht jeder. Ohne das Script zu kennen, kann dir nämlich niemand helfen.

-KD-
24.08.2008, 20:03
Oder du verwendest ein Script, welches den Titelbildschirm überspringt, so dass du das Titelmenü gleich per EventCommands scripten kannst.

MGP
29.08.2008, 22:28
@The_Burrito:
Das Script ist in den Spoiler, ich hoffe es hilft...
#==============================================================================
# ** Scene_CTS Title Script
#------------------------------------------------------------------------------
#
# =/ ©opyright Markus Lechner -alias markusmks
# =/ Version = 1.00
# | Instructions:
# | Es handelt sich um ein Custom Title Script (Kurz: CTS)
# | Hiermit lassen sich schnell bewegliche, gefüllte Title Screens erstellen.
# | Man braucht sich nur die Daten aus den Optionen umändern und schon hat man
# | so ziemlich alles.
# |
# | Einfügen:
# | Um es recht unkompliziert zu halten, es muss über all
# | Scene_CTS.new statt Scene_Title.new stehen. Also in:
# | Main > line 11
# | Scene_End > line 84
# | Scene_Map > line 84
# | Scene_Gameover > line 56
# | Scene_Battle 1 > line 286
# |
# | - Oder du löscht Scene_Title und benennst Scene_CTS einfach danach um.
# | Einfacher zum Einbauen...
# |
# | $cts_back / Hintergrundbild, wenn nil wird standard verwendet.
# | Wenn ein String eingefügt wird, wird das Bild aus dem
# | Picture Ordner entnommen.
# | $cts_right_back / Rechtes Einblende Bild ( Hinter Command_Window )
# | $cts_moving / Bewegung des Bildes > Richtungen unten gezeigt...
# |
# | $cts_command_y / Höhe von Auswahl Fenster (Command_Window)
# |
# | $cts_layer_x / Man kann 9 Layers einfügen, wovon Layer 8,9 über alles andere
# | ist. Bsp: $cts_layer_8 = "bild.png"
# | _8 ist unter dem Command_Window / _9 ist darüber
# |
# |
# | $cts_cursor / Cursor Grafik
# | $cts_cursor_ani_size / Für bewegliche Cursor > Bilder immer in 32x32 halten.
# | Die einzellnen Grafiken in einer Bild-Datei horizontal einfügen.
# |
# | $cts_cursor_speed / Geschwindigkeit, wie schnell der Cursor die Animationen
# | durchführt. Je höher desto langsamer.
# |
# | $cts_show_transition / Fade out bein Spiel start Aktivieren od. Deaktivieren
# | $cts_transition_speed / Fade out geschwindigkeit > Je niedriger desto langsamer
# |
# | Zusatzfunktionen:
# | Es lassen sich direkt im Title Screen die Variablen sowie Switches ändern.
# | Wenn benötigt kann man auch das Vermögen ändern... (Gold)
# | Switch/Variablen = F5
# | Gold = F6
# |
# | Info:
# | Alle Grafiken müssen sich in [Spiele_Ordner/Graphics/Pictures/]
# | befinden, also im Picture Ordner.
# |
# $
# $ Bemerkung:
# $ Dieses Script baut auf die Community auf und darf somit frei verwendet
# $ werden, solang die Ersteller-Daten nicht verändert werden.
# $ Schreibfehler, Bugs bleiben dem Script überlassen, Sie werden jedoch auf
# $ Anfrage (Beschrängt) gerne verbessert.
# $ Mit diesem Anschreiben stelle ich mir keine Verpflichtungen gegenüber
# $ diesem Script, der Support steht auch der Community zu.
# $ Mit diesen Worten, Viel Spaß mit diesem Script!
# $
# |
# | -©- Markus Lechner alias markusmks
#==============================================================================
# OPTIONEN --------------------------------------------------------------------
$cts_back = "1.png" # nil ( Hintergrund Bild Bsp: "Bild.png" )
$cts_right_back = "1.png" # Anzeige Bild
$cts_moving = 1,2,4 # 3 (0=Nichts,1=Rauf,2=Runter,3=Links,4=Rechts)
$cts_command_y = 350 # 350| Command Fenster Y Anzeige
$cts_new_game = "Start the pain" # "Neues Spiel"
$cts_continue = "Continue the pain" # "Fortsetzen"
$cts_end_game = "End of pain" # "Beenden"
$cts_layer_1 = "1.png" # Bsp. Layer Grafik 1 (640x480)
$cts_layer_2 = "1.png" # Bsp. Layer Grafik 8
$cts_layer_3 = "1.png" # Bsp. Layer Grafik 2
$cts_layer_4 = "1.png" # Bsp. Layer Grafik 7
# $cts_layer_x || x austauschen mit einer Zahl von 1-9
$cts_cursor = "cursor.png" # Cursor Bild ( 32x32 )
$cts_cursor_ani_size = 4 # 4 | Animations Größe (Ablauf der Bilder)
$cts_cursor_speed = 3 # 3 | Cursor Ablauf Geschwindigkeit
$cts_show_transition = true # true | fadet Screen bei Spiel start ab.
$cts_transition_speed = 6 # 6 | Fadeout Zeit / Je niedriger desto langsamer
# OPTIONEN ####################################################################

class Scene_CTS
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
if $BTEST
battle_test
return
end
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_party = Game_Party.new
$game_system = Game_System.new
@sprite = Plane.new
if $cts_back == nil
back_picture = RPG::Cache.title($data_system.title_name)
else
back_picture = RPG::Cache.picture($cts_back)
end
@sprite.bitmap = back_picture
@sprite_move_timer = 0
@moving_actions = 0
s1 = $cts_new_game
s2 = $cts_continue
s3 = $cts_end_game
@layer_graphics = []
for i in 1..9
script = "$cts_layer_"+i.to_s+" != nil"
result = eval(script)
@layer_graphics.push(i) if result == true
end
for num in @layer_graphics
graphic = eval("$cts_layer_"+num.to_s)
eval("@cts_sprite_"+num.to_s+' = Sprite.new')
eval("@cts_sprite_"+num.to_s+'.bitmap = RPG::Cache.picture(graphic)')
eval("@cts_sprite_"+num.to_s+'.z = 99') if num == 8
eval("@cts_sprite_"+num.to_s+'.z = 106') if num == 9
end
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.back_opacity = 160
@command_window.x = 640 - @command_window.width
@command_window.y = $cts_command_y
@command_window.opacity = 0
@command_window.contents_opacity = 0
@command_window.active = false
@cts_cursor = Sprite.new
@cts_cursor.bitmap = RPG::Cache.picture($cts_cursor.to_s)
@cts_cursor.src_rect.set(0, 0, 32, 32)
@cts_cursor.z = 105
@cts_cursor.x = 600
@cts_cursor.y = $cts_command_y+8
@cts_cursor.opacity = 0
@cts_cursor_movin = 1
@cts_cursor_movin_timer = 0
@continue_enabled = false
@rigth_back_sprite = Sprite.new
@rigth_back_sprite.bitmap = RPG::Cache.picture($cts_right_back.to_s)
@rigth_back_sprite.x = 640
@wait_timer = 0
if $cts_show_transition
@transition_graph = Sprite.new
@transition_graph.bitmap = Bitmap.new(640,480)
@transition_graph.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0))
@transition_graph.opacity = 0
@transition_graph.z = 9999
end
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
if $DEBUG
@left_window = Window_DebugLeft.new
@left_window.opacity = 220
@left_window.z = 500
@right_window = Window_DebugRight.new
@right_window.opacity = 220
@right_window.z = 500
@help_window = Window_Base.new(192, 352, 448, 128)
@help_window.contents = Bitmap.new(406, 96)
@help_window.opacity = 220
@help_window.z = 500
@left_window.active = true
@right_window.active = false
@left_window.visible = false
@right_window.visible = false
@help_window.visible = false
@gold_window = Window_Base.new(170,208,300,128)
@gold_window.contents = Bitmap.new(268,96)
@gold_window.contents.draw_text(0,0,268,32,"Gold:")
@gold_window.contents.draw_text(0,0,268,32,$game_party.gold.to_s,2)
@gold_window.z = 505
@gold_window.opacity = 192
@gold_window.visible = false
@gold_window_trans = Sprite.new
@gold_window_trans.bitmap = Bitmap.new(640,480)
@gold_window_trans.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0,190))
@gold_window_trans.z = 500
@gold_window_trans.visible = false
end
@msc_active = false
@msc_active_gold = false
$game_system.bgm_play($data_system.title_bgm)
Audio.me_stop
Audio.bgs_stop
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@sprite.bitmap.dispose
@sprite.dispose
for num in @layer_graphics
eval("@cts_sprite_"+num.to_s+'.bitmap.dispose')
eval("@cts_sprite_"+num.to_s+'.dispose')
end
if $DEBUG
@left_window.dispose
@right_window.dispose
@help_window.dispose
end
@cts_cursor.bitmap.dispose
@cts_cursor.dispose
@rigth_back_sprite.bitmap.dispose
@rigth_back_sprite.dispose
if $cts_show_transition
@transition_graph.bitmap.dispose
@transition_graph.dispose
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
if $DEBUG
if Input.press?(Input::F5) or @msc_active == true
return if @msc_active_gold == true
@left_window.visible = true
@right_window.visible = true
@help_window.visible = true
update_msc
return
else
@left_window.visible = false
@right_window.visible = false
@help_window.visible = false
end
if Input.press?(Input::F6) or @msc_active_gold == true
return if @msc_active == true
update_gold
return
end
end
update_cursor
@sprite_move_timer+=1
if @sprite_move_timer % 2 == 0
case $cts_moving
when 1
@sprite.oy += 1
when 2
@sprite.oy -= 1
when 3
@sprite.ox += 1
when 4
@sprite.ox -= 1
end
end
case @moving_actions
when 0
if @rigth_back_sprite.x > 640 - @rigth_back_sprite.bitmap.width
@rigth_back_sprite.x -= 5
end
if @rigth_back_sprite.x <= 640 - @rigth_back_sprite.bitmap.width
@rigth_back_sprite.x = 640 - @rigth_back_sprite.bitmap.width
@moving_actions += 1
end
when 1
if @command_window.contents_opacity <= 255
@command_window.contents_opacity += 10
@cts_cursor.opacity += 12
@command_window.active = true
else
@command_window.contents_opacity = 255
end
when 2
if @command_window.contents_opacity >= 0
@command_window.contents_opacity -= 10
@cts_cursor.opacity -= 12
@command_window.active = false
@rigth_back_sprite.opacity -= 10
@rigth_back_sprite.x += 1
@wait_timer += 1
if $cts_show_transition
@transition_graph.opacity = @wait_timer*$cts_transition_speed
else
@wait_timer += 1
end
end
if @wait_timer >= 50
if $cts_show_transition and not @transition_graph.opacity >= 255
return
end
case @command_window.index
when 0 # New game
command_new_game
when 1 # Continue
command_continue
when 2 # Shutdown
command_shutdown
end
end
end
# Update command window
@command_window.update
# If C button was pressed
if Input.trigger?(Input::C)
@moving_actions = 2
if @command_window.index != 1
$game_system.se_play($data_system.decision_se)
end
if @command_window.index == 1
unless @continue_enabled
$game_system.se_play($data_system.buzzer_se)
@moving_actions = 1
return
end
$game_system.se_play($data_system.decision_se)
end
# Branch by command window cursor position
end
end
#--------------------------------------------------------------------------
# * Update Main Script Config
#--------------------------------------------------------------------------
def update_msc
@msc_active = true
@right_window.mode = @left_window.mode
@right_window.top_id = @left_window.top_id
@left_window.update
@right_window.update
if @left_window.active
update_left
return
end
if @right_window.active
update_right
return
end
end
#--------------------------------------------------------------------------
# * Update Main Script Config
#--------------------------------------------------------------------------
def update_gold
@msc_active_gold = true
@gold_window_trans.visible = true
@gold_window.visible = true
@gold_window.contents.clear
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
@gold_window.visible = false
@gold_window_trans.visible = false
@msc_active_gold = false
return
end
color = Color.new(100,100,255,100)
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@gold_window.contents.fill_rect(0,64,89,32,color)
$game_party.gain_gold(20)
end
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@gold_window.contents.fill_rect(97,64,101,32,color)
$game_party.lose_gold(20)
end
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@gold_window.contents.fill_rect(90,32,101,32,color)
$game_party.gain_gold(5)
end
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@gold_window.contents.fill_rect(0,32,77,32,color)
$game_party.lose_gold(5)
end
@gold_window.contents.draw_text(0,0,268,32,"Gold:")
@gold_window.contents.draw_text(0,0,268,32,$game_party.gold.to_s,2)
@gold_window.contents.fill_rect(0,30,268,3,Color.new(0,0,0))
@gold_window.contents.draw_text(0,32,268,32,"Links : -5 Rechts : +5")
@gold_window.contents.draw_text(0,64,268,32,"Rauf : +20 Runter : -20")
end
#--------------------------------------------------------------------------
# * Frame Update (when left window is active)
#--------------------------------------------------------------------------
def update_left
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
@msc_active = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Display help
if @left_window.mode == 0
text1 = "C (Enter) : Ein / Aus"
@help_window.contents.draw_text(4, 0, 406, 32, text1)
else
text1 = "Links : -1 Rechts : +1"
text2 = "L (RildRauf) : -10"
text3 = "R (BildRunter) : +10"
@help_window.contents.draw_text(4, 0, 406, 32, text1)
@help_window.contents.draw_text(4, 32, 406, 32, text2)
@help_window.contents.draw_text(4, 64, 406, 32, text3)
end
# Activate right window
@left_window.active = false
@right_window.active = true
@right_window.index = 0
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when right window is active)
#--------------------------------------------------------------------------
def update_right
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Activate left window
@left_window.active = true
@right_window.active = false
@right_window.index = -1
# Erase help
@help_window.contents.clear
return
end
# Get selected switch / variable ID
current_id = @right_window.top_id + @right_window.index
# If switch
if @right_window.mode == 0
# If C button was pressed
if Input.trigger?(Input::C)
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Reverse ON / OFF
$game_switches[current_id] = (not $game_switches[current_id])
@right_window.refresh
return
end
end
# If variable
if @right_window.mode == 1
# If right button was pressed
if Input.repeat?(Input::RIGHT)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# Increase variables by 1
$game_variables[current_id] += 1
# Maximum limit check
if $game_variables[current_id] > 99999999
$game_variables[current_id] = 99999999
end
@right_window.refresh
return
end
# If left button was pressed
if Input.repeat?(Input::LEFT)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# Decrease variables by 1
$game_variables[current_id] -= 1
# Minimum limit check
if $game_variables[current_id] < -99999999
$game_variables[current_id] = -99999999
end
@right_window.refresh
return
end
# If R button was pressed
if Input.repeat?(Input::R)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# Increase variables by 10
$game_variables[current_id] += 10
# Maximum limit check
if $game_variables[current_id] > 99999999
$game_variables[current_id] = 99999999
end
@right_window.refresh
return
end
# If L button was pressed
if Input.repeat?(Input::L)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# Decrease variables by 10
$game_variables[current_id] -= 10
# Minimum limit check
if $game_variables[current_id] < -99999999
$game_variables[current_id] = -99999999
end
@right_window.refresh
return
end
end
end
#--------------------------------------------------------------------------
# * Cursor Move Update
#--------------------------------------------------------------------------
def update_cursor
y = ($cts_command_y+8) + (@command_window.index*32)
if @cts_cursor.y < y
@cts_cursor.y = y - (y-@cts_cursor.y) / 2
elsif @cts_cursor.y > y
@cts_cursor.y = y + (@cts_cursor.y-y) / 2
end
@cts_cursor_movin_timer += 1
if @cts_cursor_movin_timer % $cts_cursor_speed == 0
if $cts_cursor_ani_size > 1
x = (@cts_cursor_movin-1)*32
@cts_cursor.src_rect.set(x, 0, 32, 32)
@cts_cursor_movin += 1
end
if @cts_cursor_movin >= $cts_cursor_ani_size+1
@cts_cursor_movin = 1
end
end
end
#--------------------------------------------------------------------------
# * Command: New Game
#--------------------------------------------------------------------------
def command_new_game
# Stop BGM
Audio.bgm_stop
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each type of game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up initial party
$game_party.setup_starting_members
# Set up initial map position
$game_map.setup($data_system.start_map_id)
# Move player to initial position
$game_player.moveto($data_system.start_x, $data_system.start_y)
# Refresh player
$game_player.refresh
# Run automatic change for BGM and BGS set with map
$game_map.autoplay
# Update map (run parallel process event)
$game_map.update
# Switch to map screen
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Command: Continue
#--------------------------------------------------------------------------
def command_continue
# Switch to load screen
$scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# * Command: Shutdown
#--------------------------------------------------------------------------
def command_shutdown
# Fade out BGM, BGS, and ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# Shutdown
$scene = nil
end
#--------------------------------------------------------------------------
# * Battle Test
#--------------------------------------------------------------------------
def battle_test
# Load database (for battle test)
$data_actors = load_data("Data/BT_Actors.rxdata")
$data_classes = load_data("Data/BT_Classes.rxdata")
$data_skills = load_data("Data/BT_Skills.rxdata")
$data_items = load_data("Data/BT_Items.rxdata")
$data_weapons = load_data("Data/BT_Weapons.rxdata")
$data_armors = load_data("Data/BT_Armors.rxdata")
$data_enemies = load_data("Data/BT_Enemies.rxdata")
$data_troops = load_data("Data/BT_Troops.rxdata")
$data_states = load_data("Data/BT_States.rxdata")
$data_animations = load_data("Data/BT_Animations.rxdata")
$data_tilesets = load_data("Data/BT_Tilesets.rxdata")
$data_common_events = load_data("Data/BT_CommonEvents.rxdata")
$data_system = load_data("Data/BT_System.rxdata")
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up party for battle test
$game_party.setup_battle_test_members
# Set troop ID, can escape flag, and battleback
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# Play battle start SE
$game_system.se_play($data_system.battle_start_se)
# Play battle BGM
$game_system.bgm_play($game_system.battle_bgm)
# Switch to battle screen
$scene = Scene_Battle.new
end
end

The_Burrito
30.08.2008, 08:48
Eine letzte Frage bleibt jetzt noch:
Was genau soll umgestellt werden?

MGP
30.08.2008, 12:39
Es sollte, eine Art flimmer Effekt sein, also, dass sich das TB aus mehreren veränderten Picture's zusammensetzt, und dadurch dieser Effekt kommt.
Ich habe mal schnell dazu, ein Beispiel mit Animake zusammengeschustert..
Klick mich, ich bin ein Beispiel xD (http://npshare.de/files/37/9774/TB.gif)

The_Burrito
01.09.2008, 20:40
Diesen Effekt kann dieses Script nicht erzeugen. Es scrollt immer nur ein bestimmtes Bild in die angegebene Richtung.

Das was du willst lässt sich allerdings sehr einfach bewerkstelligen.
Wenn du so eine Animation schon hast, dann wird es doch wohl nicht sonderlich schwer sein, die einzelnen Bilder aus dieser Animation zu exportieren.
Nenne sie einfach "titleX.png". X steht dabei für die Nummer, welches das Bild in der Animation hat. Angenommen deine Animation besteht aus 10 Bildern, dann nennst du sie einfach "title1.png", "title2.png" und so weiter bis "title 10.png".

Folgendes Script sollte dann dafür sorgen, dass die Bilder der reihe nach angezeigt werden.



class Scene_Title
TITLE_FRAMESKIP = 4
TITLE_FILE_SUFFIX = "jpg"

def main
# If battle test
if $BTEST
battle_test
return
end
# Load database
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
# Preload title graphics
@title_bitmaps = []
i = 1
while File.exist? "Graphics/Titles/title#{i}.#{TITLE_FILE_SUFFIX}"
@title_bitmaps << RPG::Cache.title("title#{i}")
i += 1
end
@current_bitmap = 0
@frame = 0
# Make title graphic
@sprite = Sprite.new
@sprite.bitmap = @title_bitmaps[0]
# Make command window
s1 = "New Game"
s2 = "Continue"
s3 = "Shutdown"
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
# Continue enabled determinant
# Check if at least one save file exists
# If enabled, make @continue_enabled true; if disabled, make it false
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# If continue is enabled, move cursor to "Continue"
# If disabled, display "Continue" text in gray
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
# Play title BGM
$game_system.bgm_play($data_system.title_bgm)
# Stop playing ME and BGS
Audio.me_stop
Audio.bgs_stop
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of command window
@command_window.dispose
# Dispose of title graphic
@title_bitmaps.each do |bitmap|
bitmap.dispose
end
@sprite.dispose
end

def update
# Update background
@frame = (@frame + 1) % TITLE_FRAMESKIP
if @frame == 0
@current_bitmap = (@current_bitmap + 1) % @title_bitmaps.size
@sprite.bitmap = @title_bitmaps[@current_bitmap]
end
# Update command window
@command_window.update
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 0 # New game
command_new_game
when 1 # Continue
command_continue
when 2 # Shutdown
command_shutdown
end
end
end
end


Einfach über Main eine neue Sektion anlegen und dieses Skript dort einfügen. Selbstverständlich musst du das andere Animierte Titelbild Skript noch löschen.

Wenn du für TITLE_FRAMESKIP den Wert höher schraubst wird die Animation langsamer, und wenn du den Wert runterschraubst wird die Animation schneller. Wenn die Dateien eine andere Endung als png haben, dann musst du das bei TITLE_FILE_SUFFIX entsprechend ändern.

Ich hab das zwar jetzt nur mal schnell zusammengeschrieben, aber ich hab es getestet, und es hat einwandfrei funktioniert.

BTW: Ich hoffe du hast nicht vor genau diesen Effekt nachzubilden, denn ich finde der wirkt einfach nur total nervig.