Item-Screen anpassen (RPG Maker MV)

  • 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.


    Item-Screen Änderungen.png


    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

  • Kirimoar

    Hat den Titel des Themas von „Item-Screen anpassen“ zu „Item-Screen anpassen (RPG Maker MV)“ geändert.
    • Hilfreichste Antwort

    EDIT:

    Vergiss alles, was ich hier geschrieben habe. Ich habe überlesen, dass es um den Item-Menü-Einsetzen Screen geht :D


    EDIT2:

    Ok gerade gesehen, dass dort das gleiche Menü verwendet wird, wie das Status Menü im normalen Screen. Puh nochmal Glück gehabt ^^. Nur der Hintergrund ist verschoben, wenn man jemanden selektiert. Das müsste noch angepasst werden. Aber ich glaube meine Lösung ist dafür nicht so Optimal. Ich schau mal, wie man das besser löst.


    EDIT3:

    Habe es ausgebesert.

    --------------------------------------


    Eins vorweg, ich habe von der API von MV keine Ahnung, da ich es nicht nutze. Ich habe einfach mal anhand deines Links die Methode drawActorClass gefunden und nach ihr mit Visual Studio Code gesucht. Und dann habe ich drawActorClass durch drawActorName ersetzt. Anscheinend wird in der Methode drawActorSimpleStatus die Information angelegt, was im Menü zu sehen ist für die Helden. Das sollte zumindest einen Teil davon lösen. Wenn du das Level weg haben willst, einfach drawActorLevel entfernen.

    Code
    Window_Base.prototype.drawActorSimpleStatus = function(actor, x, y, width) {
        var lineHeight = this.lineHeight();
        var x2 = x + 180;
        var width2 = Math.min(200, width - 180 - this.textPadding());
        this.drawActorLevel(actor, x, y + lineHeight * 1);
        this.drawActorIcons(actor, x, y + lineHeight * 2);
        this.drawActorName(actor, x2, y);
        this.drawActorHp(actor, x2, y + lineHeight * 1, width2);
        this.drawActorMp(actor, x2, y + lineHeight * 2, width2);
    };

    pasted-from-clipboard.png



    EDIT:

    Ich hatte irgendwie Lust, damit ein bisschen zu spielen.
    So könntest du das Padding einbauen:


    Code
    Window_MenuStatus.prototype.itemRect = function(index) {
        const PADDING = 40
        var rect = new Rectangle();
        var maxCols = this.maxCols();
        rect.width = this.itemWidth();
        rect.height = this.itemHeight() + PADDING;
        rect.x = index % maxCols * (rect.width + this.spacing()) - this._scrollX;
        rect.y = Math.floor(index / maxCols) * rect.height - this._scrollY;
        return rect;
    };

    pasted-from-clipboard.png

  • Ja Doppelpost, schande über mich :cursing: Aber es ist eine Quall ein Post zu editieren, wo ein Bild drinne ist :D

    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?

    Also ein guter Ansatz ist es, nach sinnvollen begriffe zu suchen, die du verändern willst. So kannst du herausfinden, welche Methode dafür wahrscheinlich genutzt wird. Sobald du diese hast, kannst du dann mithilfe eines Editors, in meinem Fall Visual Studio Code, und dort nach dieser Methode suchen. Da hast du dann eine Auflistung, wo es alles was gefunden hast. Und dann müsstest du in sehr vielen Fällen fündig werden.


    Eine andere Möglichkeit wäre wohl ChatGPT, um hier Hinweise zu erhalten, wo was ist.

  • Einfach ein allgemeiner Ratschlag - Javascript arbeitet viel mit Vererbungen. Bei deinen Fall ist es somit (so ausm Kopf)

    Window Base -> Window Item Base -> Window Item


    Was bedeutet das nun?

    Wenn etwas in z.B. Window Base verändert wird, dann wird dies ebenfalls weiter an die Kinder vererbt. Wenn es jedoch nur für diese Szene sein soll, dann kann man die Vererbung auch überschreiben. Dabei ist der Aufbau recht simpel: "Speicher".prototype."Windowtyp"


    Als Konkretes Beispiel:


    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 könnte man somit anstatt in Scene_ItemBase in Scene_Item (glaube ich hieß die Szene) einspeichern. Das macht dann einen Sinn, wenn bei der Szene Items es zum Beispiel in 2 Reihen angezeigt werden soll und bei Szene Ausrüstung in 2. :)

  • Kirimoar

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • Danke für eure tollen Inputs, ihr seid die Besten :thumbup:


    Es war immer noch eine Spielerei, aber jetzt hab ich das Fenster Mal komplett so hinbekommen wie ich mir das vorgestellt habe :)


    Vielen Dank!


    Edit:

    Falls jemanden interessiert, wie das Ergebnis nun aussieht - ist im Spoiler!

Jetzt mitmachen!

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