LM2 - Neue Funktionen "Tutorial" + Custom Toolbar Tutorial

geschrieben am 06.05.2012 14:00:34
zuletzt bearbeitet von W4mp3 am 08.08.2012 7:23:12.
( Link )
Lunar Magic 2.01 - Neue Funktionen JETZT SOGAR MIT CUSTOM TOOLBAR TUTORIAL
Die Anführungszeichen im Titel deuten auf etwas nicht vollständiges hin

Zunächst einmal kurz zusammengefasst, was da neu ist:
-Eingebauter Emulator (bsnes!), Levels im Editor spielen
-Benutzerdefinierte Toolbar
-Strg+S zum Speichern (11,5 Jahre hat es dafür gebraucht)
-Bessere Kontrolle über ExAnimationen (separat einstellbar)

Eingebauter Emulator (bsnes!), Levels im Editor spielen

Das hier ist von allen mein Favorit, da das hier außergewöhnlich für nen Level Editor ist.
Neu ist das Feature nicht ganz: Ein SMB1-Editor hat so etwas schon gehabt.
Ach ja, schon erwähnt, dass der Emulator sich im Editor mitbewegt?
Glaubt ihr mir nicht? Hier der Beweis:
LM2-Screenshot
Das Feature selbst zu installieren ist auch ziehmlich leicht:
1. Lunar Magic 2.01 runterladen und entpacken
2. LSMW runterladen und in den selben Ordner wie LM2 entpacken
3. keyconfig.exe starten um Tasten für den Emulator zu konfigurieren
4. LM2.00 starten und bei "File->Emulator" "Run/Stop Internal Emulator" klicken
5. Level spielen.

Ziemlich einfach, nicht?
Wenn man will, dann kann man auch die Framerate (das heißt wieviele Bilder in einer Sekunde) für den Emulator einstellen, indem man bei LM die Animationsrate umstellt:
Geht auf "Options->Change Animation Rate..." und stellt die FPS ein, die ihr möchtet (für jede nächst höhere Einstellung braucht man mindestens die doppelte Leistung!)
Für Einkern-Computer und Laptops sollten 7.5 FPS genügen, Dual-Core PCs können mit 15 oder 30 FPS spielen und Quad-Cores können auf 60 FPS hochfahren. Das hier wirkt sich auch auf den Editor aus!
Wenn einem Strg+F4 zu umständlich ist, dann kann man einstellen, dass man nur mit F4 den internen Emulator startet und mit Strg+F4 den vorher selektierten Emulator (z.B. ZSNES, SNES9X, etc.) startet.
Man geht dafür auf "File->Emulator->Swap F4/Ctrl+F4" und schon kann man mit F4 den internen Emulator starten.
So, das müsste alles wichtige zum internen Emulator sein, fragen dürft ihr ja stellen .

Benutzerdefinierte Toolbar

Mit der Toolbar kann man nicht nur Lunar Magic interne Funktionen einfacher bedienen, sondern auch andere Programme öffnen und Tastenkürzel (wie Strg+C) auf die Toolbar legen.
Die Toolbar wird einfach unter die normale Toolbar geheftet.
ACHTUNG:
Es kann passieren, dass andere Programme die ROM nur einmal laden und beim Speichern einfach mal ein paar Sachen schlucken. Wenn man also ein Programm ausführt, dann sollte man NICHT in Lunar Magic irgendwelche Level bauen.

Wie erstellt man diese?

Info: Ich selber steig da noch nicht komplett durch, falls da Fehler sind, bitte korrigieren

Erstellt eine Datei "usertoolbar.txt" im selben Ordner wie Lunar Magic.

Zuerst schreiben wir "***START***" (achtet auf die Groß/Kleinschreibung).
Dann schreiben wir die Funktion auf, eine Liste der Funktionen ist in der Hilfedatei von LM.
Und am Ende steht "***END***".

Beispiel:
Code
***START***
LM_FILE_INT_EMULATOR_RUN
***END***

Das hier fügt einen kleinen Button in die zweite Toolbar rein.
Jetzt braucht das hier noch eine Grafik:
Zunächst einmal müssen wir eine Bitmap-Datei erstellen und LM sagen, dass er diese laden soll (die Datei in den selben Ordner wie LM2).
"LM_ADDIMAGE .bmp" lautet der Befehl.
Dann gehen wir wieder nach den Befehl und fügen , ein.
Beispiel (herpes.bmp[mit Rechtsklick Speichern unter...]):
Code

LM_ADDIMAGE "herpes.bmp"

***START***
LM_FILE_INT_EMULATOR_RUN
0,Start Internal Emulator
***END***

Screenshot:


Damit es mit LMs Toolbar etwas besser harmoniert fügen wir "LM_SPACER" davor ein:
Code

LM_ADDIMAGE "herpes.bmp"
***START***
LM_SPACER
***START***
LM_FILE_INT_EMULATOR_RUN
0,Start Internal Emulator
***END***


Ich belasse mal das bei dem hier, mehr steht in der Hilfedatei von LM oder lest den neuen Post.

Strg+S

Wie war speichern nochmal früher? Ach ja, Strg+S hat ja ein Fenster geöffnet! Jetzt speichert es direkt, erspart jetzt einige Sekunden an wertvoller Zeit! Mehr gibbets nedde zum sagen.

Bessere Kontrolle über ExAnimationen

Ich glaub, der Screenshot sagt alles:



Falls es Fragen zu irgendeinem Feature gibt:
Ich versuche sie zu beantworten, garantiere aber nicht, dass es umbedingt funktioniert.
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3
geschrieben am 09.05.2012 15:55:18
( Link )
UPDATE: Jetzt ein komplettes Tutorial zu der Custom Toolbar (das ist eigentlich saueinfach, nur erkläre ich es unnötig kompliziert)

Zuerst legen wir eine Textdatei mit dem Namen "usertoolbar.txt" im LM2.00 Verzeichnis an und öffnen diese in einem beliebigen Texteditor.
Jetzt schreiben wir unseren ersten Button:
Jeder Button beginnt mit "***START***". Nun müssen wir diesem Button eine Funktion zuweisen. Wir nehmen hier im Beispiel die Funktion "LM_FILE_INT_EMULATOR_RUN", die den internen Emulator startet und stoppt.
Am Ende fügen wir den Indikator zur ein molaren Salzsäure und stellen fest, dass diese den PH-Wert von 1 besitzt "***END***" hinzu, damit LM weiß, wann es keine Buttons mehr gibt.
Das Beispiel müsste jetzt so aussehen:
Code
;Mit Semikola/Semikolons kann man Kommentare wie diesen schreiben
***START*** ;Neuer Button
LM_FILE_INT_EMULATOR_RUN ;Starte/stoppe den internen Emulator
***END*** ;Mehr Buttons gibt es nicht

Nun speichert ihr das Textdokument ab und öffnet Lunar Magic (neu, falls der noch an sein sollte) und ladet eine ROM.
Jetzt MUSS ein kleiner Button unter dem Ordner oben in der Toolbar sein. Wenn der da ist, dann habt ihr alles richtig gemacht.
Ihr könnt den jetzt klicken, wenn ihr das Level mit dem internen Emulator spielen wollt.
Allgemein:
Mit "***START***" leitet man einen neuen Button ein. Danach kommt entweder ein Kommando von Lunar Magic ODER man kann ein externes Programm wie z.B. Spritetool öffnen.
Ja, ihr habt richtig gelesen, man kann Buttons machen, die z.B. Spritetool öffnen.
Ein Beispiel um Spritetool zu öffnen:
Code
***START***
"%2sprite_tool.exe" "%2%3" "%2sl.txt"
***END***

(%2 und %3 sind Platzhalter, wird weiter unten erklärt)
Dies öffnet nicht nur Spritetool, sondern gibt automatisch den ROM-Namen UND die Spriteliste ein. Die erste Zeile wird also wie ein Batch-Befehl behandelt.

Platzhalter:
Das hier wird (Schreib)Arbeit ersparen, klingt komisch, ist aber so. Man kann Platzhalter vor einem Programm schreiben, wenn das Programm in einem anderen Ordner ist.
Hier eine Liste aller verfügbaren Werte:
Code

%1 - Pfad zur ROM (z.B. "C:\Hack\SMW.smc")
%2 - Pfad zum Ordner mit der ROM (z.B. "C:\Hack\")
%3 - Dateiname der ROM (z.B. "SMW.smc")
%4 - Pfad zum Ordner mit Lunar Magic (z.B. "C:\LM\")
%7 - Levelnummer in HEX (z.B. "12B")

Wenn ihr das Programm im selben Ordner wie der Hack ist, dann könnt ihr anstelle von "C:\Hack\programm.exe" "%2programm.exe" schreiben.
Mehr braucht man hierzu nicht sagen.

Buttons mit Symbol UND Tooltip (sozusagen die Beschreibung):
Es ist ja schön und gut Buttons zu erstellen, jedoch sind diese mit dem, was wir wissen zu klein und haben kein schönes Symbol darauf.
Zwei Möglichkeiten wie man die einbindet:
Wenn ihr ein Programm mit einem eigenen Symbol habt, dann kann LM dieses auslesen.
Beispiel:
Code
***START***
"%2programm.exe"
0,Starte Programm ;Man beachte, dass das hier in der zweiten Zeile steht
***END***

Wenn es das Programm nicht findet, zeigt es ein Standartsymbol an, aber die meisten Tools besitzen eh kein Symbol selber.
Nun zur anderen Methode:
Wir binden ein Bild ein. Man kann natürlich auch mehrere Bilder einbinden, aber man kann auch alles in eine Bilddatei stopfen (so wie ich).
Dazu fügen wir VOR ALLEM LM_ADDIMAGE ".bmp" hinzu:
Code
LM_ADDIMAGE "herpes.bmp" ;Mein Bild heißt tatsächlich herpes.bmp
***START***
LM_FILE_INT_EMULATOR_RUN
0,Starte/Stoppe den internen Emulator
***END***

Dies sollte jetzt ein Bild in den Button machen. Beachtet, dass Lunar Magic so die Bildgröße der Buttons berechnet:
Höhe der Bilddatei=Breite UND Höhe des Buttons. Nx16 erzeugt gleichgroße Buttons wie LM, wobei N ein vielfaches von 16 sein muss.
Somit ist jedes 16x16 ein Index.
Die Zweite Zeile beim Button gibt also das Erscheinungsbild und die Beschreibung aus.
Syntax der zweiten Zeile:
,
Mit Index gibt man den Bildindex an, da das schriftlich umständlich zu erklären ist gibt es hier ein Bild (mit der herpes.bmp):

Nach 9 wird einfach weiter gezählt wie gewohnt, also 10, 11 usw.
Achja, falls die Programmicons benutzt werden: Das lässt Lunar Magic beim starten etwas verlangsamen, da LM die Symbole laden muss, deswegen empfehle ich eher Methode 2.

Es gibt noch kleinere Einstellmöglichkeiten, z.B. Tastenkürzel definieren oder wenn man ein anderes Symbol für ein Programm benutzen möchte.
Hier ein Beispiel, dass ALLE Einstellmöglichkeiten benutzt:
Code
LM_ADDIMAGE "herpes.bmp"
***START***
"%2sprite_tool.exe" "%2%3" "%2sl.txt" ;Öffne Spritetool und füge Sprites ein
9,Insert Custom Sprites ;Benutze Index 9
LM_USEIMAGE_LIST,LM_CLOSE_ON_CLOSE ;Benutze anstelle des Programmiconindexes (doof formuliert) die Bilddatei mit dem Bildindex 9 und Schließe Spritetool, wenn LM Geschlossen wird.
***END***

Wie ihr sehen könnt, benutzt dies jetzt drei Zeilen. Die Dritte Zeile sind die Einstellungsmöglichkeiten des Buttons.
Folgendes kann man benutzen:
LM_DEFAULT - Macht gar nichts (kann man weglassen)

LM_USEIMAGE_LIST - Benutzt anstelle des Programmicons das aktuell geladene Bild

LM_NOBUTTON - Macht den Button unsichtbar. Ist für Shortcuts gedacht.

LM_UPDATE_MENUKEY - Puh, das hab ich noch nicht begriffen, ich übersetze (frei Schnauze) mal das, was in der Hilfedatei steht:
Zitat
[...]
Für LM-interne Kommandos, dies schaut nach dem korrespondierenden Menüeintrag in Lunar Magic und ändert den Tastenkürzeltext auf dem Button.
[...]


LM_ALLOW_MULT_INSTANCES - Erlaubt mehrere Instanzen des selben Programms auszuführen. LM stellt standardmäßig ein, dass nur eine Instanz erlaubt ist, nicht mehrere.

LM_OPEN_OTHER - Öffnet Dateien mit anderen Programmen, z.B. einen Link mit einem Internetbrowser. Notiz: Die Programme können von LM_CLOSE_ON_CLOSE nicht geschlossen werden!

LM_DIR_PROGRAM - Standardmäßig schon definiert. Öffnet das Programm und setzt das Verzeichnis auf den Ordner (z.B. "C:\SpriteTool\").

LM_DIR_ROM - Das Verzeichnis der ROM wird für das Programm gewählt (z.B. "C:\Hack\").

LM_DIR_LM - Wie bei LM_DIR_ROM, nur anstelle das Verzeichnis der ROM das Verzeichnis von Lunar Magic (z.B. "C:\Lunar Magic\").

LM_CLOSE_ON_CLOSE - Beendet alle Programme, die über Buttons geöffnet wurden, wenn LM geschlossen wird. Notiz: Programme, die per LM_OPEN_OTHER geöffnet wurden, werden nicht geschlossen!

LM_CLOSE_ON_NEW_ROM - Beendet alle Programme, die über Buttons geöffnet wurden, wenn eine neue ROM geöffnet wird.

LM_NOTIFY_ON_NEW_ROM - Nur für Programmierer wichtig, andere Leute können das Ignorieren.

LM_NOTIFY_ON_NEW_LEVEL - Nur für Programmierer wichtig, andere Leute können das Ignorieren.

Das sind alle Befehle mehr oder minder gut erklärt.

Shortcuts:
Falls ihr Shortcuts hinzufügen wollt (z.B. Shift+S zum einfügen von Sprites) dann müsst ihr eine vierte Zeile einbauen.
Die Liste der Tasten ist in der Hilfedatei bei "Technical Information->Custom User Toolbar->Lunar Magic Keyboard Definitions List", Buchstaben muss man mit VK_# schreiben, wobei # ein Buchstabe ist, oder man schreibt den Buchstaben in Apostrophen ('#').
Beispiel mit Spritetool (SHIFT+S):
Code

LM_ADDIMAGE "herpes.bmp"
***START***
"%2sprite_tool.exe" "%2%3" "%2sl.txt"
9,Insert Custom Sprites
LM_USEIMAGE_LIST,LM_CLOSE_ON_CLOSE
VK_SHIFT,VK_S
***END***

Falls ein eigener Shortcut die selbe Tastenfolge wie ein Shortcut von LM, dann wird der Shortcut von LM ausgeschaltet. Wenn mehrere, eigene Buttons den selben Shortcut besitzen, dann werden alle gleichzeitig ausgeführt.

Verzeichnis für die externen Programme setzen:
Kurze Notiz: Ist an sich nicht wichtig, muss also nicht gelesen werden.
Auf der fünften Zeile kann man das Verzeichnis für die externen Programme setzen. Es gelten auch die Platzhalter mit dem Prozentzeichen (%).
Beispiel (diesmal von der Hilfedatei geklaut und übersetzt):
Code
***START***
"notepad.exe" "readme.txt"
0,Lese die readme.txt - Datei für Lunar Magic
LM_CLOSE_ON_CLOSE ;Wenn LM geschlossen wird, dann schließe das auc
'n',VK_CONTROL ;Ctrl+N als Tastenkürzel
"%4" ;im Verzeichnis von LM starten (blöde Idee eigentlich)
***END***

Der Nutzen dieser Zeile ist mir noch fremd.

Noch Allgemeiner:
Klingt jetzt blöd, ist aber wirklich allgemeiner
Kurze Syntax Übersicht:

LM_ADDIMAGE
***START***
oder
,
,,...,


***END***

Sonstiges:
Mit dem, was wir jetzt alles gelernt haben können wir eine Toolbar selber erstellen, jedoch kuscheln die Buttons noch. Diese können wir einfach trennen indem wir einen Button schreiben, der nur aus LM_SPACER besteht.
Beispiel:
Code
***START***
"%2Blocktool Super Deluxe.exe" "%3"
12,Start Blocktool Super Deluxe
LM_USEIMAGE_LIST
***START***
LM_SPACER
***START***
"%2slogger.exe" "%3"
13,Find Freespace
LM_USEIMAGE_LIST
***END***

Mehr gibt es für die Toolbar nicht zu sagen.

Hier mal meine Toolbar, einfach in den Ordner von LM2.00 entpacken:

Download

[NOTIZ: WER RECHTSCHREIB-/GRAMMATIKFEHLER FINDET, DARF SIE BEHALTEN]
Tutorials: ExAnimation | YouTube: W4mp3 | Twitter: https://twitter.com/SMWW4mp3