PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VX ACE, Menüpunkt/e hinzufügen /entfernen



MrRamonhk
18.10.2014, 21:48
Guten Abend,

Ich habe seit einiger Zeit eine Idee für ein oder mehrere Menüpunkte, da ich aber keine große Erfahrung mit Scripten habe wollte ich nun hier fragen. Ich möchte gerne ein oder zwei Menüpunkte hinzufügen, welche dann ein Bild öffnen, wenn man dann ESC drückt kommt man zurück zum Menü... Wäre dies irgendwie möglich? Gibt es dafür schon Scripts? Habe bis jetzt leider nichts gefunden. Außerdem würde ich gerne den Menüpunkt "Status" entfernen. Geht das auch irgendwie?

IronChef
19.10.2014, 11:34
Das sollte mit nahezu jeder custom Menü-Engine ziemlich einfach gehen, z.B. der von Yanfly (bei der müsste auch ne Beschreibung am Skriptanfang stehen wie man das Skript entsprechend verändert).

WeTa
19.10.2014, 14:31
Achtung: Hangover Coding + Keine Ahnung von Ruby/RGSS + Keine Ahnung vom Maker


Menüpunkt "Status" entfernen

Script Editor öffnen
Window → Window_MenuCommand öffnen
In der Definition der Methode add_main_commands (~Zeile 43) die Zeile add_command(Vocab::status, :status, main_commands_enabled) mit einem # auskommentieren oder löschen:

#--------------------------------------------------------------------------
# * Add Main Commands to List
#--------------------------------------------------------------------------
def add_main_commands
add_command(Vocab::item, :item, main_commands_enabled)
add_command(Vocab::skill, :skill, main_commands_enabled)
add_command(Vocab::equip, :equip, main_commands_enabled)
add_command("Eigener Menüpunkt", :custom, main_commands_enabled)
# add_command(Vocab::status, :status, main_commands_enabled)
end
Scene → Scene_Menu öffnen
In der Definition der Methode create_command_window (~Zeile 17) die Zeile @command_window.set_handler(:status, method(:command_personal)) mit einem # auskommentieren oder löschen:

#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
# @command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:custom, method(:command_custom))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
Script Editor beenden, F12 drücken, über Status-loses Menü freuen


Neuen Menüpunkt "Eigener Menüpunkt" hinzufügen, der ein Bild anzeigt

Script Editor öffnen
Window → Window_MenuCommand öffnen
In der Definition der Methode add_main_commands (~Zeile 43) die Zeile add_command("Eigener Menüpunkt", :custom, main_commands_enabled) mit einem # hinzufügen:

#--------------------------------------------------------------------------
# * Add Main Commands to List
#--------------------------------------------------------------------------
def add_main_commands
add_command(Vocab::item, :item, main_commands_enabled)
add_command(Vocab::skill, :skill, main_commands_enabled)
add_command(Vocab::equip, :equip, main_commands_enabled)
add_command("Eigener Menüpunkt", :custom, main_commands_enabled) # <- Hier!
# add_command(Vocab::status, :status, main_commands_enabled)
end
Scene → Scene_Menu öffnen
In der Definition der Methode create_command_window (~Zeile 17) die Zeile @command_window.set_handler(:custom, method(:command_custom)) hinzufügen:

#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
# @command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:custom, method(:command_custom)) # <- Hier!
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
Irgendwo weiter unten command_custom definieren:

#--------------------------------------------------------------------------
# * [Eigener Menüpunkt] Command
#--------------------------------------------------------------------------
def command_custom
SceneManager.call(Scene_Custom)
end
Die gerade aufgerufene Scene Scene_Custom im Script Editor anlegen (habe ich jetzt mal in Materials reingeboxt):

#==============================================================================
# ** Scene_Custom
#------------------------------------------------------------------------------
# Ayy lmao
#==============================================================================

class Scene_Custom < Scene_MenuBase
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
create_custom_window
end

def create_custom_window
@test_window = Window_Custom.new
@test_window.set_handler(:cancel, method(:return_scene))
end
end

Das gerade aufgerufene Window Window_Custom im Script Editor anlegen (habe ich jetzt mal direkt unter Scene_Custom platziert):

#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# Bestimmt fällt dir eine sinnvollere Beschreibung ein, ich bin gerade aufgewacht
#==============================================================================

class Window_Custom < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, Graphics.width, Graphics.height)
refresh
activate
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
draw_picture
end
#--------------------------------------------------------------------------
# * Draw Picture
#--------------------------------------------------------------------------
def draw_picture
bitmap = Cache.picture("1413223675541.jpg")

src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
ret_rect = Rect.new(0, 0, Graphics.width, Graphics.height)

contents.stretch_blt(ret_rect, bitmap, src_rect)
end
end



Wäre cool wenn jemand, der mehr als fünf Minuten Ruby Erfahrung hat, das etwas eleganter lösen könnte (Bild nicht in das Window hardcoden etc.)

Falls irgendwas unklar ist, hier das Testprojekt: http://puu.sh/cistn/d82b5f471f.zip

MrRamonhk
20.10.2014, 19:44
Sehr vielen Dank! :-)