Anfängerproblem: "Equip nur für zu Hause" oder "meine Garderobe ist kaputt"

  • Hallo zunächst einmal. Ich bin neu hier und auf der Suche nach einer Lösung für das oben angedeutete Problem bzw. nach Hilfe bei der Lösung. Worum es mir geht, versuche ich einmal kurz zu beschreiben:


    Hauptziel:

    Ziel ist eigentlich eine funktionstüchtige Garderobe, die es dem Maincharakter (MC) erlaubt, Ausrüstungen wie Kleidung, Taschen, Schmuck etc. einzeln zu an-/abzulegen. Ähnlich wie über das Equip-Menü, aber dieses Ausrüsten soll nur an bestimmen Orten funktionieren, und zwar dort wo ein Garderobenschrank steht (etwa: zu Hause, Umkleide auf der Arbeit, Umkleide im Schwimmbad usw.). Läuft der MC umher, soll er KEINE Ausrüstung ändern können.


    Info/Details zum Problem:

    Ursprünglich hatte ich (und habe es noch immer) den Equip-Button aus dem Menü heausgedingst (dafür habe ich das class Window_MenuCommand < Window_Command unter Materials wie folgt als alias eingefügt:)

    Anschließend eine Garderobe mittels Event und "Auswahl zeigen" gebaut. Das funktioniert ausreichend gut, solange der MC nur wenige "Fix-und-Fertig-Outifts" an-/auszieht: ein Alltagsoutfit, eins für die Arbeit, ein drittes und ein viertes noch. Danach wirds umständlich/verschachtelt in der Bedienung, weil pro Auswahl nur vier (4) Optionen verfügbar sind. Das Problem lässt sich mit Common Events und Bedingungen/Variablen/Schaltern vermutlich noch etwas dehnen oder teilweise umgehen. Etwas umständlich gewiss(?) aber mein MC kann sich schon mal nicht auf der Straße umkleiden. So weit, so gut.


    Inzwischen hat sich jedoch herausgestellt, dass es im Spielersinne wohl besser wäre, wenn der Spieler diese Outfits selbst kombinieren könnte. Denn jedes Ausrüstungsteil fördert andere Eigenschaften und zudem sollen die Teile einzeln kaufbar sein. Wie binde ich all die Tiele in Fertig-Outfits ein? Hier versagt mein ohnehin nicht großes RPG Anfängerwissen nun.


    Folgende konkrete Fragen:

    1. ) Kann ich den den Equip-Bildschirm über ein (Garderoben)event irgendwie aufrufen, obwohl ich "Equip" im Menü herausgenommen habe? (Ich weiß halt nicht, was commands_enabled genau tut. Wirkt das nur auf den Menübefehl oder auf mehr?) Zu 1.) hat Google für mich nichts gefunden; auch die Liste der Skripte für die Ace-Standardbefehle hülfe mir selbst dann nicht weiter, wenn ich wüsste wie ich ein Skript richtig baue. Ich fand dort zwar "equip_..." aber nicht "open equip menü" oder so etwas.

    1. a) Falls man den Equip-Bildschirm trotzdem aufrufen kann, lässt sich dort der Menüpunkt "Optimieren(?)" entfernen? In dem Projekt wird nicht gekämpft, die Parameter sind situationsabhängig dennoch mal wichtig, mal nicht. Das Standard-Optimieren wäre dementsprechend kontraproduktiv.


    Weiterghende Infos, die nicht direkt mit dem Problem zu tun haben:

    Erst vor kurzem habe ich mir zu Testezwecken (den technisch wohl längst überholten) VX Ace geholt, meinen ersten Maker. Ich wollte einfach sehen warum so viele RPG-Maker-Spiele so sind wie sie sind. Und lässt sich damit auch mehr machen? Könnte ich das auch? Bisher experimentiere ich mit diversen Mini-Test-Projekten herum, doch nun soll erstmals etwas herzeigbares dabei entstehen - ich habe also so gut wie keine Ahnung von Coding und Skripting (oder wie immer die korrekten Begriffe dafür lauten mögen). Auftretende kleine Problemchen löse ich meist mit der Versuch-und-Irrtum-Methode. Das hat bei mir noch den besten Lerneffekt, ebenso halfen bereits diverse Tutorials und Hilfestellungen. Aber hier bin ich derzeit überfordert. Falls es euch interssiert zur Einordung der Frage/n: das "Projekt" soll, großspurig beschrieben, eine Art Simulation bzw. Adventure werden. Kämpfe gibt es nicht, wird es nicht geben, aber dafür aber auch keine Angel-Quest.


    Vielen Dank für Eure Mühen.

  • Code
    1. SceneManager.call(Scene_Equip)


    Danke euch, genau das hat geholfen!

    Jetzt muss ich nur noch herausfinden, wie ich das "Optimize/Optimieren" verhindere, weil es wie gesagt etwas ... nun, ... gewöhnungsbedürftig wäre, meinen Helden im Arbeitsschutzanzug mit Motoradhelm und Kettensäge (= mit der "stärksten" Ausrüstung) zur Bank zu schicken.

  • Das kannst du im Script-Editor im RPG Maker VX Ace machen.

    Gehe dazu unter dem Menüpunkt "Window_EquipCommand" ganz unten bei "add_command(Vocab::optimize, :optimize)" und kommentiere diese Zeile aus, indem du einfach ein # an den Anfang der Zeile schreibst. Dadurch wird die Codezeile grün und ist kein Befehl mehr, sondern ein Kommentar.


    Hoffe das klappt so!

  • Danke MOtega!


    Ohne deine Hilfe hätte ich nicht gewusst wo ich suchen soll. Hab das Problem nun mit einem Alias-dings lösen können, weil es in einem der vielen Tutorials hieß, so sei es sicherer als auskommentieren. Zumindest im Testmodus läuft es damit.

    Code
    1. class Window_EquipCommand < Window_HorzCommand
    2. alias :alt_make_command_list_345fdröa make_command_list
    3. def make_command_list
    4. add_command(Vocab::equip2, :equip)
    5. add_command(Vocab::clear, :clear)
    6. end
    7. end
  • Naja, das alias macht im Grunde nichts anderes, als den Bezeichner eines Objekts/einer Funktion, mit Hilfe dessen man dieses Ansprechen kann, zu ändern.

    Bei deinem Code-Beispiel gibt es die Original-Funktion make_command_list, die durch das alias nun nur noch über alt_make_command_list_345fdröa aufgerufen werden kann.

    Aufgrund dessen kannst du im weiteren Teil eine neue Funktion make_command_list schreiben, die ohne das alias sonst die alte Funktion einfach überschreiben würde, sodass diese nicht mehr nutzbar wäre, diese mit dem alias aber immer noch über den neuen Bezeichner nutzbar ist, während über das make_command_list deine neue Funktion nutzbar ist. (Gehört zwar nicht zum eigentlichen Thema, aber hilft dir hoffentlich etwas dabei zu verstehen, wie alias funktioniert, falls du es noch öfters benutzen willst)