Klasse im Kampf ändern

  • Ahoi Menschen,


    ich habe mir ein kleines Plugin gemacht, womit ich im Menü die Klasse ändern kann. Allerdings switcht er da immer zwischen classID und classId+1 hin un der, weil ich das nur nutze, damit der Chara automatisch kämpft. Das funktioniert auch wie es soll.


    Im Kampf bekomme ich das jetzt aber nicht mehr hin. Ich schaffe es, das der Command erscheint. Aber wenn ich ihm dann ne Funktion zuweißen will bekomme ich einen Error. "Cannot read property 'setHandler' of undefined"


    Kann mir da bitte jemand helfen?


    Mit verzweifelten Grüßen

    Alanshor

  • Streiche mal in Zeile 10 das partycommandwindow. Also dass es


    this.setHandler...


    heißt. Das partycommandwindow dürfte zu diesem Zeitpunkt noch nicht existieren, somit kannst du auch die setHandler-Funktion nicht ausführen. Zumal diese Funktion, glaube ich, nicht für die windows sondern für die scenes gedacht ist.


    Hab das aber nicht getestet, da ich aktuell nicht an meinem PC bin.

  • Erstmal vielen Dank für dein Kommentar. Leider funktioniert es immer noch nicht :/

    So steht es jetzt im Script:

    this.setHandler('autoClass', this.commandSolo.bind(this));


    Jetzt bekomme ich einen neuen Error raus:
    "Cannot read property 'bind' of undefined".


    Mit dankbaren Grüßen

    Alanshor


    PS: Wenn ich Zeile 10 mit 11 vertausche und das "partycommandwindow" da lasse, bekomme ich denn gleichen Error mit dem 'bind'.

  • Ich glaube ich habs. Kann das allerdings nicht testen, das obliegt dann dir ;)


    Also, du erstellst ja die commandSolo Funktion für Scene_Menu:

    Code
    1. Scene_Menu.prototype.commandSolo = function() {
    2. this._statusWindow.setFormationMode(false);
    3. this._statusWindow.selectLast();
    4. this._statusWindow.activate();
    5. this._statusWindow.setHandler('ok', this.onSoloOk.bind(this));
    6. this._statusWindow.setHandler('cancel', this.onPersonalCancel.bind(this));
    7. };


    Willst dann aber über Scene_Battle darauf zugreifen:

    Code
    1. var inBattleStartMenu = Scene_Battle.prototype.createPartyCommandWindow;
    2. Scene_Battle.prototype.createPartyCommandWindow = function(){
    3. inBattleStartMenu.call(this, arguments);
    4. this._partyCommandWindow.setHandler('autoClass', this.commandSolo.bind(this));
    5. }


    Das funktioniert nicht, da Scene_Battle nicht von Scene_Menu erbt. Es sollte klappen, wenn du die Funktionen onSoloOk und commandSolo Scene_Base zuweist, anstatt Scene_Menu.


    Die setHandler-Funktion ist ne Funktion für die windows, also passt das mit dem partycommandwindow. Zeile 10 und 11 müssen trotzdem getauscht werden, damit dieses Fenster auch existiert.


    Ich hoffe das klappt so.

  • Es scheint zu klappen, vielen, vielen Dank! Jetzt muss ich noch noch rumprobieren, wie ich da auch einen Actor auswählen kann. Aber da glaub ich an mich ;D
    Also nochmal Danke sehr!