Item-Screen anpassen

  • Hallo an die Coding-Fraktion!


    Ich würde gerne ein wenig die "Standard-Screens" anpassen und finde einfach nicht die passende Lösung.

    Konkret geht es aktuell um den Item-Einsetzen Screen.


    Ich habe es bereits geschafft, das generelle Fenster in Höhe und Position anzupassen mit Hilfe folgender Funktionen:


    Code
    Scene_ItemBase.prototype.showSubWindow = function(window) {
            window.x = this.isCursorLeft() ? Graphics.boxWidth - window.width : 0;
            window.y = 400; // Kirimoar Edit
            window.show();
            window.activate();
    };

    Das passt mir die Position an, und mit


    Code
        Window_MenuActor.prototype.windowHeight = function() {
            return 680;
        };
        
        Window_MenuActor.prototype.windowWidth = function() {
            return 900;
        };

    habe ich mir die Höhe und Breite angepasst.


    Jetzt sieht es aus wie im Anhang ohne die roten Markierungen.



    Jetzt würde ich aber gerne auch noch die Klasse "Vampir" streichen, stattdessen den Namen anzeigen, den Lvl-Text entfernen und zwischen den einzelnen Charakteren mehr Abstand (Padding) lassen.

    Also quasi, das ganze Template ein bisschen anpassen.


    Aber - wo finde ich das?


    Auf die Klasse/Scene/den Menünamen an sich bin ich nur durch Zufall im Internet gestoßen und habe eine MV-Library gefunden wo einige Attribute, Funktionen, etc.. beschrieben werden:

    Window_MenuActor | RPGMakerMV Library


    Leider werde ich daraus aber nicht schlau bzw. finde nicht -> was befindet sich IM Window_MenuActor? Ich suche ja jetzt nicht das Fenster selbst, sondern den Inhalt.


    Wobei ich mir auch generell die Frage stelle - wie finde ich solche Scenes/Windows wenn ich nicht gerade zufällig im Netz darüber stoße und weiß überhaupt, welche wofür ist?


    Ich hoffe, jemand kann mir etwas Erleuchtung bringen :)


    MFG Kirimoar

  • Sooo - tatsächlich habe ich es geschafft (mit Hilfe von ein paar anderen Leuten)!


    Durch überschreiben der Funktionen Window_Base.prototype.drawActorSimpleStatus bzw. Window_MenuStatus.prototype.itemRect ist es möglich, die verschiedenen Elemente wegzulassen (z.B. drawActorLevel) bzw. auch deren Position anzupassen!


    Ob das jetzt noch wo anders Auswirkung hätte, kann ich nicht sagen - vermutlich ja, ist in meinem Fall aber wie obern erwähnt egal.


    Ich danke jedenfalls dennoch für die angebotene Hilfe =)

    Falls du dich jetzt schon eingelesen hast, wäre ich allerdings sehr an einer Art "Tutorial" interessiert - weil so ganz durchblicken tu ich es noch nicht :D


  • Hallo,

    freut mich schonmal zu hören :)

    Ich kann dir die Empfehlung geben, die drawActorSimpleStatuts bzw. die itemRect nicht zu überschreiben. Du kannst jedoch die Funktion kopieren und dann zB noch ein zB C (wie für Custom) oder so zum Schluss hinzufügen und dann darin die Änderungen durchführen. Dadurch behaltest du die Ursprüngliche Funktion weiterhin und kannst dann einfach dort wo diese alte Funktion aufgerufen wird auf deine Methode ändern. Ist zumindest eine Methode, welche ich selbst gern anwende, da es so leichter in der Wartung ist.

    Weiters ist es auch sehr ratsam, das ganze als eigenes Plugin umzusetzen und über den Plugin Manager aktiv zu schalten. Dadurch verhinderst du dann das Problem, dass du dich an das ganze in dem Projekt gewöhnst und dich dann wunderst, warum dies nicht mehr so ist wie im Vorherigen.


    Damit du rausfinden kannst, in welchem Window du welche Änderungen machen willst/musst gibt es einen relativ "leichten" Trick.

    In dem Beispiel von dir handelt es sich um das Item-Window. Ich empfehle hierfür in einem Coding-Programm die rpg_scene.js zu öffnen. Jetzt suchst du einfach nur nach Scene_Item.

    Dort gibt es sehr häufig eine Methode die setup oder initialize heißt. Sieh dir diese an und hangel dich da etwas im Code an die Stelle weiter, an denen die Fenster generiert werden. Dort erfährst du dann den Namen vom Window.

    Jetzt würde ich empfehlen im Coding-Programm die rpg_windows.js zu öffnen und dann nach der Window_*.js suchen. Den * solltest du damit ersetzten, je nach dem welches Fenster du bearbeiten willst. Dadurch grenzt du die Suche schon stark ein. Manche Methoden die im Window_Item aufgerufen werden, stammen zum Beispiel aus der Window_Base oder einer weiteren dazwischen, sollten aber alle Suchbar sein.


    Das ist so generell ein Tipp, den ich geben kann, wenn man die Zusammenspiele noch nicht ganz kennt.


    lg Flip

  • Danke für den Tipp bzl. Suche nach Scenes! Werd ich mir Mal ansehen.


    Mit "überschreiben" meinte ich eigentlich sogar, die Funktion kopieren und in einem eigenen Plugin von mir zu aktivieren und nur bestimmte Bereiche der Funktion zu ändern.


    Das mit dem eigenen Buchstaben verstehe ich aber nicht ganz - dann müsste ich ja wieder im "originalen" Code herumpfuschen, oder?

  • Mit "überschreiben" meinte ich eigentlich sogar, die Funktion kopieren und in einem eigenen Plugin von mir zu aktivieren und nur bestimmte Bereiche der Funktion zu ändern.


    Das mit dem eigenen Buchstaben verstehe ich aber nicht ganz - dann müsste ich ja wieder im "originalen" Code herumpfuschen, oder?

    Selbst wenn du es in einem anderen Plugin bearbeitest, gilt es dann für überall.

    Das was ich meinte ist, du kopierst dir einmal die Methode, die du verändern willst und hängst beim Namen der Methode noch einen Zusatz dazu, damit die originale nicht überschrieben wird.

    Dann kopierst du noch die Funktion in der die zu ändernde Funktion enthalten ist und benennst dort die alte ebenso auf den Namen um, den deine neue Funktion hat. Dadurch hast du zwar immer noch eine Änderung am originalen Code, aber falls weitere Plugins, die du eventuell zukünftig nutzen willst, die Funktion weiterhin im Original vorhanden ist und somit nicht zu "Fehlern" führt. Im Spoiler hab ich dir noch ein Beispiel angeführt.


    lg Flip

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!