Deity's Gallery
Hier haben wir die totall überarbeitete Version von diesem Script. Alles wurde neu gemacht und "vereinfacht", so dass es wirklich einfach ist eine Bildergallerie zu erzeugen!
Was macht das Script?
Das Script ermöglicht es den Benutzer eine Gallerie, die aus Bildern besteht zu erzeugen und durchzublättern / anzuschauen. Dafür wird nichts weiter benötigt als die Bilder.
Wie nutze ich das Script?
Ich benutze mal die Erklärung aus dem Script:
# Benutzung:
# Um die Gallerie zu öffnen, muss man erstmal beachten, von wo man diese öffnen will.
# Der Befehl dafür ist folgender:
# $scene = Scene_Gallery.new(last_scene)
# wobei last_scene eine Zahl zwischen ist, die die vorherige Scene definiert. Dafür habe ich 2
# vor gegeben.
# 1 = Von der Map, sprich von einem Event etc.
# 2 = Vom Menü aufgerufen.
# Will man die Gallerie vom Titelbildschirm aufrufen, so muss man folgenden Befehl benutzen:
# $scene = Scene_File.new(false,true,false,true)
# das liegt daran, dass man vorher die Gallerien aus einem der gespeicherten Abenteuern aussuchen
# kann.
# Während des Spiels, soll man aber auch Bilder und Gallerien freischalten können, und dafür gibt
# es natürlich auch 2 Befehle, die man im Call Script eingeben kann:
# 1. Gallerie hinzufügen:
# $game_gallery.add_gallery(gallery_name)
# wobei gallery_name der Name für die Gallerie sein soll. Unbedingt beachten, dass der Name mit
# Anführungszeichen geschreiben werden muss.
# => $game_gallery.add_gallery("Gallerie 1")
# 2. Bild hinzufügen:
# $game_gallery.add_picture(gallery_name,picture_name,picture_description)
# wobei gallery_name der Name der Gallerie ist, in die man das Bild hinzufügen möchte,
# picture_name steht für den Namen des Bildes, und picture_descrition steht für
# die Beschreibung des Bildes. Bei allen 3 Weten, dürfen die Anführungszeichen nicht fehlen!
# => $game_gallery.add_picture("Gallerie 1","Bild 1", "Das ist das 1. Bild")
Sogut wie alles ist frei wählbar von den Größen der Fenster, bis zu den Farben der Schrift im Fenster! Dafür müsste ihr nur die Settings komplett definieren.
Demo
Ich denke, dass keine gebraucht wird.
Screenshots
Ich weiß zwar nicht, wie viel euch diese Bilder von Bildern bringen, aber ich füge 2 ein.
Die Auswahl zwischen den Gallerien:
(http://www.250kb.de/u/091021/p/75adbfb8.png)
Ein Screen mitten in der Gallerie: (Bild von ImNotJesus ^^)
(http://www.250kb.de/u/091021/p/b493f233.png)
Das Script
#????????????????????????????????????????????#
#----------------------------------------------------------------#
# Script: Deity's Gallery #
# by Ðeity #
# Big Thanks: MelekTaus for helping me. #
#----------------------------------------------------------------#
# Description: #
# Das Script öffnet eine/mehere Gallerie/n mit Bilder, die man sich anschauen kann. #
#----------------------------------------------------------------#
# Benutzung:
# Um die Gallerie zu öffnen, muss man erstmal beachten, von wo man diese öffnen will.
# Der Befehl dafür ist folgender:
# $scene = Scene_Gallery.new(last_scene)
# wobei last_scene eine Zahl zwischen ist, die die vorherige Scene definiert. Dafür habe ich 2
# vor gegeben.
# 1 = Von der Map, sprich von einem Event etc.
# 2 = Vom Menü aufgerufen.
# Will man die Gallerie vom Titelbildschirm aufrufen, so muss man folgenden Befehl benutzen:
# $scene = Scene_File.new(false,true,false,true)
# das liegt daran, dass man vorher die Gallerien aus einem der gespeicherten Abenteuern aussuchen
# kann.
# Während des Spiels, soll man aber auch Bilder und Gallerien freischalten können, und dafür gibt
# es natürlich auch 2 Befehle, die man im Call Script eingeben kann:
# 1. Gallerie hinzufügen:
# $game_gallery.add_gallery(gallery_name)
# wobei gallery_name der Name für die Gallerie sein soll. Unbedingt beachten, dass der Name mit
# Anführungszeichen geschreiben werden muss.
# => $game_gallery.add_gallery("Gallerie 1")
# 2. Bild hinzufügen:
# $game_gallery.add_picture(gallery_name,picture_name,picture_description)
# wobei gallery_name der Name der Gallerie ist, in die man das Bild hinzufügen möchte,
# picture_name steht für den Namen des Bildes, und picture_descrition steht für
# die Beschreibung des Bildes. Bei allen 3 Weten, dürfen die Anführungszeichen nicht fehlen!
# => $game_gallery.add_picture("Gallerie 1","Bild 1", "Das ist das 1. Bild")
#?-------------------------- Settings -----------------------------?#
# true = ja / yes false = nein / no #
module D_GALLERY
# Generel #
BGM_GAL = "Scene7" # Backgroundmusik für die Gallerien.
KEY_GAL = "Key" # Geräusch, das beim wechseln der Bilder ertönt.
WINSTYLE = "Window" # Der Still des Windows, der für die Fenster in der Gallerie verwendet
# werden soll.
SAVE_FILE = 1 # Speicherort der Bilder, die in den Gallerien vorkommen. [1 = System 2 = Pictures]
MENU_INDEX = 0 # Falls Gallerie aus dem Menu aufgerufen werden kann, ID für den Menüpunkt
# auswählen. [Fängt bei 0 an]
# Windows #
# Head Window#
HEAD = "Gallerie auswählen" # Text über der Gallerieauswahl.
HEAD_X = 0 # X-Koordinate des Fensters.
HEAD_Y = 0 # Y-Koordinate des Fensters.
HEAD_WIDTH = 544 # Breite des Fensters.
HEAD_HEIGHT = 62 # Höhe des Fensters.
SIZE_HEAD = 24 # Größe der Schrift im Fenster.
#Command Window
KIND = 1 # Platzirung des Auswahlfensters. [1 = Zentral 2 = Selbst definiert]
SPLIT = false # Mehere Reihen?
ROWS = 0 # Anzahl der Reihen.
COMMAND_X = 0 # X-Koordinate des Fensters.
COMMAND_Y = 0 # Y-Koordinate des Fensters.
COMMAND_WIDTH = 160 # Breite des Fensters.
COMMAND_OPACITY = 255 # Sichtbarkeit des Fensters. [0 = durchsichtig 255 = volle Sichtbarkeit]
# Gallery Name
GN_X = 0 # X-Koordinate des Fensters.
GN_Y = 0 # Y-Koordinate des Fensters.
GN_WIDTH = 544 # Breite des Fensters.
GN_HEIGHT = 62 # Höhe des Fensters.
GN_SIZE = 24 # Größe der Schrift im Fenster.
GN_OPACITY = 0 # Sichtbarkeit des Fensters. [0 = durchsichtig 255 = volle Sichtbarkeit]
GN_COLOR = Color.new(255,255,255,255) # Farbe der Schrift in diesem Fenster.
GN_SWITCH = true # Soll das Fenster beim drücken der Shifttaste ausgeblendet werden?
# Title Window
TITLE = "Titel:" # Text vor dem Namen des Bildes.
TITLE_X = 0 # X-Koordinate des Fensters.
TITLE_Y = 62 # Y-Koordinate des Fensters.
TITLE_HEIGHT = 62 # Höhe des Fensters.
TITLE_WIDTH = 544 # Breite des Fensters.
SIZE_TITLE = 24 # Größe der Schrift im Fenster.
COLOR_TITLE = Color.new(255,255,0,255) # Farbe der Schrift in diesem Fenster.
TITLE_OPACITY = 0 # Sichtbarkeit des Fensters. [0 = durchsichtig 255 = volle Sichtbarkeit]
TITLE_SWITCH = false # Soll das Fenster beim drücken der Shifttaste ausgeblendet werden?
# Description Window
DIS_X = 0 # X-Koordinate des Fensters.
DIS_Y = 124 # Y-Koordinate des Fensters.
DIS_HEIGHT = 62 # Höhe des Fensters.
DIS_WIDTH = 544 # Breite des Fensters.
SIZE_DIS = 24 # Größe der Schrift im Fenster.
COLOR_DIS = Color.new(0,255,100,255) # Farbe der Schrift in diesem Fenster.
DIS_OPACITY = 0 # Sichtbarkeit des Fensters. [0 = durchsichtig 255 = volle Sichtbarkeit]
DIS_SWITCH = true # Soll das Fenster beim drücken der Shifttaste ausgeblendet werden?
# Help Window
HELP = "Shift: Info L/R: Vor / Zurück ESC: Beenden" # Hilfestellung für den Benutzer,
# um durch die Gallerie zu navigieren.
HELP_X = 0 # X-Koordinate des Fensters.
HELP_Y = 416-62 # Y-Koordinate des Fensters.
HELP_HEIGHT = 62 # Höhe des Fensters.
HELP_WIDTH = 544 # Breite des Fensters.
SIZE_HELP = 18 # Größe der Schrift im Fenster.
COLOR_HELP = Color.new(255,255,255,255) # Farbe der Schrift in diesem Fenster.
HELP_OPACITY = 0 # Sichtbarkeit des Fensters. [0 = durchsichtig 255 = volle Sichtbarkeit]
HELP_SWITCH = false # Soll das Fenster beim drücken der Shifttaste ausgeblendet werden?
# Gallerien #
# Hier werden die Gallerien definiert, die von Anfang an des Spiels freigeschaltet sind.
# Um eine Gallerie hinzuzufügen, einfach folgendes nach dem ende der eckigen Klammer der vorherigen
# Gallerie hinzufügen:
# "Name der Gallerie" => [
# ["Name des Bildes","Bildbeschreibung"],
# ["Name des 2. Bildes","2. Bildbeschreibung"],
# ]
GALERIEN = {
"System" => [
["Title", "Der Titlebildschirm."],
["GameOver", "Der Game Over screen des Spiels."]
],
"System 2" => [
["IconSet", "Das Iconset des Spiels."],
["Window", "Das Window des Spiels."]
]
}
end
# Alles was ab jetzt folgt, sollte nur dann geändert werden, wenn man weis was man tut! #
#?-------------------------------------------------------------?#
#????????????????????????????????????????????#
include D_GALLERY
class Game_Gallery
def initialize
@data = GALERIEN
end
def add_gallery(gallery_name)
@data[gallery_name] = []
end
def add_picture(gallery_name,picture_name,picture_discription)
@data[gallery_name] = [] if @data[gallery_name] == nil
@data[gallery_name].push([picture_name, picture_discription])
end
def [](pic_name)
return @data[pic_name]
end
def gallery_name(id)
return @data.keys[id]
end
def value_from_id(id)
return @data.values[id]
end
def galleries
return @data.keys
end
end
class Scene_Title
alias create_game_objects_new create_game_objects
def create_game_objects
create_game_objects_new
$game_gallery = Game_Gallery.new
end
end
class Scene_File
alias initialize_new initialize
def initialize(saving, from_title, from_event,gallery = false)
@saving = saving
@from_title = from_title
@from_event = from_event
@gallery = gallery
end
alias determine_savefile_new determine_savefile
def determine_savefile
determine_savefile_new
if @saving
Sound.play_save
do_save
else
if @savefile_windows[@index].file_exist
Sound.play_load
if @gallery == false
do_load
else
read_gallery
end
else
Sound.play_buzzer
return
end
end
$game_temp.last_file_index = @index
end
def read_gallery
file = File.open(@savefile_windows[@index].filename, "rb")
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
$game_system = Marshal.load(file)
$game_message = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$game_gallery = Marshal.load(file)
file.close
$scene = Scene_Gallery.new(3)
end
alias write_save_data_new write_save_data
def write_save_data(file)
write_save_data_new(file)
Marshal.dump($game_gallery, file)
end
alias read_save_data_new read_save_data
def read_save_data(file)
read_save_data_new(file)
$game_gallery = Marshal.load(file)
end
end
class Window_Gallery_Name < Window_Base
def initialize
super(GN_X,GN_Y,GN_WIDTH,GN_HEIGHT)
self.windowskin = Cache.system(WINSTYLE)
self.opacity = GN_OPACITY
self.contents.font.color = GN_COLOR
self.contents.font.size = GN_SIZE
end
def refresh(gal_id)
self.contents.clear
self.contents.draw_text(0, 0, GN_WIDTH, GN_SIZE,$game_gallery.gallery_name(gal_id),1)
end
end
class Window_Gallery_Head < Window_Base
def initialize
super(HEAD_X,HEAD_Y,HEAD_WIDTH,HEAD_HEIGHT)
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0,0,self.contents.width,SIZE_HEAD,HEAD)
end
end
class Window_Gallery_Title < Window_Base
def initialize
super(TITLE_X,TITLE_Y,TITLE_WIDTH,TITLE_HEIGHT)
self.windowskin = Cache.system(WINSTYLE)
self.opacity = TITLE_OPACITY
self.contents.font.color = COLOR_TITLE
self.contents.font.size = SIZE_TITLE
end
def refresh(title)
self.contents.clear
@title = title
self.contents.draw_text(0, 0, 544, SIZE_TITLE,TITLE+" "+@title)
end
end
class Window_Gallery_Dis < Window_Base
def initialize
super(DIS_X,DIS_Y,DIS_WIDTH,DIS_HEIGHT)
self.windowskin = Cache.system(WINSTYLE)
self.opacity = DIS_OPACITY
self.contents.font.color = COLOR_DIS
self.contents.font.size = SIZE_DIS
end
def refresh(gallery_index,picture_index)
self.contents.clear
self.contents.draw_text(0, 0, 544, SIZE_DIS,$game_gallery.value_from_id(gallery_index)[picture_index][1])
end
end
class Window_Gallery_Help < Window_Base
def initialize
super(HELP_X,HELP_Y,HELP_WIDTH,HELP_HEIGHT)
self.windowskin = Cache.system(WINSTYLE)
self.opacity = HELP_OPACITY
self.contents.font.color = COLOR_HELP
self.contents.font.size = SIZE_HELP
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 544, SIZE_HELP,HELP)
end
end
class Scene_Gallery < Scene_Base
def initialize(last_scene)
@last_scene = last_scene
Audio.bgs_stop
Audio.bgm_stop
Audio.bgm_play("Audio/BGM/"+BGM_GAL.to_s, 100, 100)
@picture_index = 0
@hiden = false
end
def start
create_menu_background
create_command_window
create_windows
end
def create_command_window
if SPLIT == true
@command_window = Window_Command.new(COMMAND_WIDTH,$game_gallery.galleries,ROWS)
end
if SPLIT != true
@command_window = Window_Command.new(COMMAND_WIDTH,$game_gallery.galleries)
end
case KIND
when 1
@command_window.x = (544 - @command_window.width) / 2
@command_window.y = (544 - @command_window.height) / 2
when 2
@command_window.x = COMMAND_X
@command_window.y = COMMAND_Y
end
@head_window = Window_Gallery_Head.new
@command_window.opacity = COMMAND_OPACITY
@command_window.active = true
@command_window_index = @command_window.index
end
def create_windows
@help_window = Window_Gallery_Help.new
@help_window.visible = false
@title_window = Window_Gallery_Title.new
@title_window.visible = false
@des_window = Window_Gallery_Dis.new
@des_window.visible = false
@gn_window = Window_Gallery_Name.new
@gn_window.visible = false
end
def draw_picture(command_window_index1,picture_index1)
@pic = Sprite.new()
case SAVE_FILE
when 1
@pic.bitmap = Cache.system($game_gallery.value_from_id(command_window_index1)[picture_index1][0].to_s)
when 2
@pic.bitmap = Cache.picture($game_gallery.value_from_id(command_window_index1)[picture_index1][0].to_s)
end
@pic.x = (544-@pic.width)/2
@pic.y = (416-@pic.height)/2
if @menuback_sprite != nil
@pic.z = @menuback_sprite.z + 1
end
end
def delete_picture
@pic.dispose if @pic != nil
end
def close_windows
@command_window.dispose if @command_window != nil
@help_window.dispose if @help_window != nil
@title_window.dispose if @title_window != nil
@des_window.dispose if @des_window != nil
@head_window.dispose if @head_window != nil
@gn_window.dispose if @gn_window != nil
dispose_menu_background
end
def hide_windows(kind)
case kind
when 1
@help_window.visible = false
@title_window.visible = false
@des_window.visible = false
@gn_window.visible = false
when 2
if @hiden == false && @hiden != nil
@help_window.visible = false if HELP_SWITCH == true
@title_window.visible = false if TITLE_SWITCH == true
@des_window.visible = false if DIS_SWITCH == true
@gn_window.visible = false if GN_SWITCH == true
@hiden = true
elsif @hiden == true && @hiden != nil
@help_window.visible = true if HELP_SWITCH == true
@title_window.visible = true if TITLE_SWITCH == true
@des_window.visible = true if DIS_SWITCH == true
@gn_window.visible = true if GN_SWITCH == true
@hiden = false
end
end
end
def show_windows
@help_window.visible = true
@title_window.visible = true
@des_window.visible = true
@gn_window.visible = true
end
def refresh_windows
@title_window.refresh($game_gallery.value_from_id(@command_window_index)[@picture_index][0].to_s) if @title_window != nil
@des_window.refresh(@command_window_index,@picture_index)
@help_window.refresh
@gn_window.refresh(@command_window_index)
end
def update_command
if @command_window != nil
if @command_window.active == true
@command_window.update
@command_window_index = @command_window.index
if Input.trigger?(Input::C)
@command_window.active = false
@command_window.visible = false
@head_window.visible = false
show_windows
end
if Input.trigger?(Input::B)
Sound.play_cancel
Audio.bgm_stop
close_windows
case @last_scene
when 1
$scene = Scene_Map.new
when 2
$scene = Scene_Menu.new(MENU_INDEX)
when 3
$scene = Scene_File.new(false,true,false,true)
end
end
end
end
end
def update_gallery
if @command_window != nil
if @command_window.active == false
if Input.trigger?(Input::LEFT)
Audio.se_play("Audio/SE/"+KEY_GAL.to_s, 100, 100)
@picture_index -= 1
if @picture_index < 0
@picture_index = $game_gallery.value_from_id(@command_window_index).size - 1
end
end
if Input.trigger?(Input::RIGHT)
Audio.se_play("Audio/SE/"+KEY_GAL.to_s, 100, 100)
@picture_index += 1
if @picture_index > $game_gallery.value_from_id(@command_window_index).size - 1
@picture_index = 0
end
end
if Input.trigger?(Input::A)
hide_windows(2)
end
delete_picture
draw_picture(@command_window_index,@picture_index)
refresh_windows
if Input.trigger?(Input::B)
Sound.play_cancel
@picture_index = 0
hide_windows(1)
delete_picture
@command_window.active = true if @command_window != nil
@command_window.visible = true if @command_window != nil
@head_window.visible = true if @head_window != nil
end
end
end
end
def update
update_menu_background
if @command_window.active == true
update_command
else
update_gallery
end
end
end
Schlusswort
Es ist einer meiner ersten Scripts und von daher nur sehr einfach. Falls es einen Benutzer findet, wäre ein Crediteintrag gern gesehen.
Ich erwarte Kritik von euch!!! Und bin für jeden Verbesserungsvorschlag offen sei es Technisch oder Optisch.
Ein großes Danke an MelekTaus, der mich bei vielen Sachen unterstützt hat! Ebenfalls ein Dank an herendil, der es getestet hat.
MfG
Deity