link? Meinst du den mit den mit der Fee, der mit den hässlichen Ohren und ein Schwert, mit dem er alles zerstören kann? xD
Neee, ein Link. Wozu? Zu dem Script. Ist, wenn ich mich nicht täusch hier in den Thread, wo alle Skripte reinkommen, die man eigentlich brauch. Also Standartskripte, oder wie der auch hieß xD
Guten Morgen Community,
mal eine wirklich ganz bescheidene Frage und zwar: Wie kann man bei der Auswahl im Titelbild (Neues Spiel, Spiel laden, Spiel beenden) die Textbox länger ziehen?
Also über "Scene_Title" im der RGS Library kann man ja u.a. die Breite ändern aber für die Länge habe ich da nichts gefunden. Und wenn man mehr machen muss als Zahlen ändern, hört's bei mir auch schon auf...
Vielleicht kann mir jemand helfen?
Die Frage ist eher wieso du die Länge ändern willst.
Die Textbox im Titelmenü ist ein "Window_Command" und das passt sich in der Länge automatisch der Anzahl der Optionen an. An Window_Command rumzufummeln würde ich aber nicht vorschlagen (da diese Klasse auch an einigen anderen Stellen Verwendung findet).
Der Grund liegt darin das ich die Optionen (Neues Spiel, Spiel laden, Spiel beenden) direkt auf das Titelbild geschrieben habe, es also dem Stil der weiteren Textzeilen auf dem TB angepasst habe. Diese sind jedoch zu weit auseinander als das die Standarteinstellung reichen würde.
Im "Scene Titel" habe ich diese 3 einfach offen gelassen. Windowskin ist auch stark beschränkt.^^
Nun, wenn es doch nicht so einfach ist... gibt es eine Möglichkeit das ganze über Tastendruck zu regeln?
Eine "Scene_Title" Klasse selbst zu erstellen ist eigentlich kein Problem, soetwas kann in ein paar wenigen Minuten erledigt werden. Wenn es ein Titelbildschirm im standart Format ist kann man die Optionsauswahl auch ganz einfach ohne ein Window_Command durchführen.
Wenn du möchtest könnte ich dir gerne einmal ein einfaches Beispiel geben, es ist wirklich keine Arbeit die Länger als ein paar wenige Minuten dauern sollte.
Hier, ein kleines Beispiel.
Es ist nicht besonders kompliziert und bietet daher auch nicht allzu viele Möglichkeiten. Lässt sich allerdings perfekt in jegliche standard XP-Projekte integrieren. Im Moment ist es lediglich eine Art kopie des normalen Titelscreens nur ohne ein Command Window sondern stattdessen ein dynamischer sprite als Cursor.
An diesem Titelbildschirm kann natürlich noch sehr viel gefeilt werden um ihn besser zu machen. Vielleicht schaffst du es selbst nötige Updates vor zu nehmen, falls nicht kannst du immernoch nachfragen.
Verändert werden müsste lediglich die Klasse "Scene_Title" und dazu wird die neue Klasse "Scene_Title" hinzugefügt. Man könnte dies auch ohne zwei Klassen lösen allerdings denke ich ist es so wie es im Moment ist am einfachsten zu bearbeiten und zu konfigurieren.
Schau dir einmal das Beispielprojekt an.
Alles was du erledigen musst um es zu implementieren ist folgendes:
Kopiere den Code im Beispielprojekt aus der Klasse "Scene_Title_Base" und füge ihn in die Klasse "Scene_Title" aus deinem Projekt ein.
Kopiere die Klasse "Scene_Title" aus dem Beispielprojekt und füge sie in dein Projekt ein.
In den ersten Zeilen der Klasse "Scene_Title" kannst du den Pfad für das "Background" und "Pointer" Bitmap eingeben.
Hier ist der Code beider Klassen falls du das Projekt nicht downloaden und testen willst:
Hey, danke für die ausführlichge Beschreibung.
Jedoch hat sich wohl ein Bug eingeschlichen. Habe das Projekt, welches du angehängt hast gedownloaded und getestet, wenn ich jedoch die Pfeil nach oben- oder unten Taste drücke, erscheint folgende Fehlermeldung:
Wäre echt super wenn du das beheben könntest. Scheint ja für dich kein Problem darzustellen...
Ersetze das 2. Scene_Title im Script durch dieses:
class Scene_Title < Scene_Title_Base
BACKGROUND_BITMAP = "Graphics/Pictures/Test-Background.png"
POINTER_BITMAP = "Graphics/Pictures/Test-Pointer.png"
POINTER_X = 224 #Cursor X position
POINTER_Y = 166 #Cursor Y position for first command
POINTER_Y_STEP = 55 #Cursor Y Addition for
OPTIONS = 3 #number of commands
NEW_GAME = 0 #Index number for command: New Game
LOAD_GAME = 1 #Index number for command: Load Game
QUIT_GAME = 2 #Index number for command: Quit Game
MAX_INDEX = OPTIONS - 1 #total number of indices
def main
#visual stuff
@sprite_background = Sprite.new
@sprite_background.bitmap = Bitmap.new(BACKGROUND_BITMAP)
@sprite_background.src_rect = @sprite_background.bitmap.rect
@sprite_pointer = Sprite.new
@sprite_pointer.bitmap = Bitmap.new(POINTER_BITMAP)
@sprite_pointer.src_rect = @sprite_pointer.bitmap.rect
@index = 0
@sprite_pointer.x = POINTER_X
self.update_pointer
#standard "Scene_Title" initialization stuff
super
#end of scene title
@sprite_pointer.bitmap.dispose
@sprite_pointer.dispose
@sprite_background.bitmap.dispose
@sprite_background.dispose
end
def update
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index = @index > 0 ? @index - 1 : MAX_INDEX
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_STEP
end
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index = @index < MAX_INDEX ? @index + 1 : 0
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_STEP
end
if Input.trigger?(Input::C)
case @index
when NEW_GAME
self.command_new_game
when LOAD_GAME
self.command_continue
when QUIT_GAME
self.command_shutdown
end
end
end
def update_pointer
@sprite_pointer.y = POINTER_Y + @index * POINTER_Y_STEP
end
end
Vielen Dank an Shisu, es schlich sich tatsächlich ein kleiner Fehler hinein. Hauptsache es funktioniert jetzt.
Doch wie gesagt, im Moment ist es nur sehr grundlegend.