Es funktioniert wie es soll. Allerdings, wenn ich das Blizz ABS ganz nach unten in die Script Liste installiere, sind die Schatten verschwunden.
Installiere ich das Schatten Script jedoch hinter das Blizz ABS, so bekomme ich wenigstens einen Hinweis wo genau das Poblem liegen könnte.
Beim start des Levels, also nach dem Hauptmenü, erhalte ich die Fehlermeldung "Script Shadows line 151: Argument error occured. wrong number of arguments (2 for 1)"
Ich habe die Zeile oben in dem Script fett markiert.
Hat jemand damit schon Erfahrungen gemacht? Oder kann jemand aus der Fehlermeldung und der betreffenden Zeile ungefähr herleiten was das Problem ist, bzw
ob es sich halbwegs einfach lösen ließe?
Die Quelle für den Fehler ist leicht zu erklären: Beide Scripte versuchen die gleiche Basis-Klasse aus dem RPG-Maker zu überschreiben. Das funktioniert so natürlich nicht, da sie sich gegenseitig in die Quere kommen. Die Scripte sind wohl einfach inkompatible. Du könntest natürlich etwas Mühe auf dich nehmen und versuchen beide Scripte so umzuschreiben, dass ihre Änderungen miteinander vereinbar sind.
Ich habe mich entschlossen zu versuchen das Script umzuschreiben. Es ist dann egal bei welchem von beiden Scripts ich die Klasse ändere, oder?
Kann ich daraus, dass der Fehler in der Zeile "shadow_initialize(viewport, @character)" entsteht schließen, dass es etwas mit der Doppelbelegung von @character zu tun hat?
Oder hat irgendjemand einen Tipp für mich was, in drei Sätzen ausgedrückt, das genaue Problem ist und wie man es in der Theorie beheben könnte?
Ich habe mich nie mit RGSS beschäftigt, kann aber einiges in Javascript. Demnach würde ich mich dann nur in den wesentlichen Teilbereich einarbeiten.
Ein mit dem BLIZZ-Abs kompatibles Schattenskript wäre sicherlich für andere auch sinnvoll.
Das Problem bei diesen Scripten ist, dass man Methoden im Nachhinein umbenennen kann. Dies wird mit dem Schlüsselwort "alias" eingeleitet.
Das von dir verwendete Schatten-Script verwendet zum Beispiel:
in der Klasse "Sprite_Character".
Also die Methode "initialize" aus der Klasse wird umbenannt zu "shadow_initialize".
Danach schreibt das Shadow_Script eine eigene "initialize"-Methode in die Klasse "Sprite_Character". Bei dieser neuen Methode wird ganz am Ende "shadow_initialize" aufgerufen, also die ursprüngliche Methode.
Dies wird getan um Code vorne an die Methode dran zu hängen.
Ich gehe davon aus, dass das Blizz-ABS-Script genau das selbe tut. Also irgendwo eine eigene "initialize"-Methode für "Sprite_Character" definiert und sich diese Definitionen nun im Wege sind. Die Lösung wäre es, falls ich mit dieser Vermutung richtig liege, einfach beide Versionen zusammenzupacken soweit es möglich ist.
Aber um genaueres sagen zu können müsste man sich erstmal durch das gesamte Script lesen um sicherzustellen, dass es nicht noch andere Gründe haben kann.
Ich verstehe. Und, dass es die initialize Methode verwendet ist notwendig? Deshalb, weil Code aus dieser Methode verwendet wird?
Ich kann also nicht einfach eine eigene Methode erstellen, oder die initialize Methode kopieren und umbenennen?