hiermit möchte ich nun die Alpha meiner AAL IDE vorstellen.
Bei der IDE handelt es sich um ein Opensource Projekt zum Entwickeln und Managen von AAL Projekten.
Das Projekt ist komplett Open Source und auf Github verfügbar:
Eine Kompilierte Version der IDE findet ihr im Release Verzeichnis des Git Repo. Außerdem lade ich als Anhang einen Installer hoch, welcher die neuste Version runterläd und Installiert.
Weitere Informationen zu der IDE und deren Funktionen findet sich als Dokumentation über Extras->Über->Hilfe
Shadow992 hat die erste Alpha seiner Scriptsprache AAL veröffentlicht.
Als ich damit ein wenig rumprobieren wollte habe ich sehr schnell einen vernünftigen Editor mit Syntax Highlight vermisst, und habe beschlossen selbst so einen zu bauen.
Ich versuche in der nächsten Zeit Stück für Stück die Komponenten zu entwickeln, und das ganze schließlich zu einer kleinen IDE zusammen zu bauen.
Bisher funktioniert der Syntaxhighlighter Vollständig und ein ganz grundlegender Editor mit Code Completion teilweise (Definitionsbereiche sind noch nicht vollständig implementiert). Und ich habe auch schon eine kleine Editor Anwendung auf Basis dieser Komponenten gebaut.
Aktuell fehlen mir allerdings auch noch ein Paar infos, wie z.B. wie werden in AAL Kommentare gekennzeichnet, oder wie ist der Definitionsbereich für Variablen (Also ist eine Variable in einem While abgeschlossen, oder außerhalb aufrufbar) oder gibt es eine Until Schleife, ich hoffe aber das sich dass mit Weiterentwicklung von AAL, mehr Beispielen und besserer Dokumention sich in Zukunft alles klären wird. Aber so lange kann ich halt diese dinge noch nicht Implementieren.
Das Projekt ist Komplett Open Source, und auf GitHub verfügbar:
Den Basis Editor findet ihr als Zip Archiv im Release Ordner des Repositorys.
Eine Kleine Erklärung zu dem Editor:
Der Editor muss in einem Verzeichnis liegen mit einer Keywords.lst, einer Textdatei welche alle Schlüsselwörter für die Code Vervollständigung enthält. Außerdem muss in diesem Verzeichnis noch die Funcs.lst liegen, eine Textdatei mit allen Standard Funktionen.
Außerdem muss ein Verzeichnis HL vorhanden sein mit einer Keywords.lst, und der Colors.cnf. Diese beiden Dateien sind Binärdateien für den Highlighter und werden mit dem HLCreator.exe erstellt. Die Keywords.lst enthält alle Schlüsselwörter und Informationen als was der Highlighter diese Interpretieren soll (Comment, Identifier, Variable, etc). Die Colors.cnf enthält alle Informationen über Schrift und Farbe der Highlighter Attribute (Comment, Identifier, Variable, etc).
Im Zip Archiv findet sich sowohl die 32 als auch 64 Bit version, sowie die oben bereits erwähnten Dateien von mir erstellt.
Der Editor funktioniert recht simpel, mit Strg+Space öffnet man die Code Vervollständigung, mit Pfeiltasten Navigiert man durch diese, mit Enter fügt man den Ausgewählten Code ein, mit ESC schließt man sie.
Die Liste der Autovervollsändigungen wird aktualisiert wenn man Enter Drückt, also einen neuen Zeilenumbruch einfügt.
Wenn euch Bugs auffallen könnt ihr diese gerne hier Posten damit ich mich mit ihnen auseinander setzen kann.
Sehr geile Sache!
Um etwas besser den Ablauf und den Aufbau von AAL zu verstehen kannst du dir die "./Getting Started/aal-developer-manual.pdf" anschauen, da stehen ein paar allgemeine Sachen drin, u.a. auch was Sichtbarkeitsbreich angeht (Wobei Sichtbarkeitsbereiche im Normalfall abgeschlossen sind, das heißt in While definierte Variablen sind auch nur dort sichtbar).
Aber du hast Recht es fehlt noch enorm viel Dokumentation.
Ich bin aber auf dem besten Weg das auszumerzen.
Der Editor ist aber echt schon einmal eine richtig geile Hilfe.
Hoffentlich können wir den Editor einigermaßen aktuell halten.
Edit:
Kommentare gibt es bisher nur einzeillige und werden mit ";" eingeführt.
Z.B.
So, ich habe mal ein etwas größeres Update (bzw. wer das Repository up to date hält hatte mehrere kleine).
Der Editor unterstützt nun grob alle Funktionen die ich mir vorgenommen habe vorerst zu implementieren (Liste steht im ersten Post).
Von nun an werde ich mich mit neuen Komponenten wie einem Compilerinterface auseinandersetzen, und natürlich noch Bugs fixen, aber vorerst werden keine großen neuen Features zum Editor hinzukommen
Update: die erste Grundversion der IDE mit Projektsystem und Formeditor ist fertig, natürlich fehlt noch eine menge wie das Compilerinterface oder Events im Formeditor, aber grundlegend lassen sich damit jetzt AAL GUI Anwendungen schreiben (Man muss sie nur manuell kompilieren)
Update: die erste Grundversion der IDE mit Projektsystem und Formeditor ist fertig, natürlich fehlt noch eine menge wie das Compilerinterface oder Events im Formeditor, aber grundlegend lassen sich damit jetzt AAL GUI Anwendungen schreiben (Man muss sie nur manuell kompilieren)
Die IDE sieht mal echt geil aus vor allem der Formeditor.
Ich hab das Gefühl das wird echt noch was richtig Großes, keep it up!
Als kleines Extra könntest du die Styles noch auswählbar machen (das sind die ganz normalen Style der WinApi, die da reinmüssen). Später werde ich dafür sicher noch Konstanten anlegen, nur als Anregung.
Edit:
Falls du gerade nicht verstehst was ich meine:
Die IDE sieht mal echt geil aus vor allem der Formeditor.
Ich hab das Gefühl das wird echt noch was richtig Großes, keep it up!
Als kleines Extra könntest du die Styles noch auswählbar machen (das sind die ganz normalen Style der WinApi, die da reinmüssen). Später werde ich dafür sicher noch Konstanten anlegen, nur als Anregung.
Edit:
Falls du gerade nicht verstehst was ich meine:
Ich werde nächste Woche sowieso nochmal einen Großteil des GUI Editors überarbeiten, er ist mir bisher noch viel zu statisch und schwer erweiterbar.
Ich hätte da nur noch 2 fragen zu aal:
Welche Funktionen gibt es bisher um die controls zu bearbeiten? Im Beispiel ist zwar das lesen des Textes, aber wie z.B. Setzt man den Wert einer checkbox?
Und zum anderen welche Events außer onClick gibt es, wäre cool wenn du eine Liste hättest
Ich hätte da nur noch 2 fragen zu aal:
Welche Funktionen gibt es bisher um die controls zu bearbeiten? Im Beispiel ist zwar das lesen des Textes, aber wie z.B. Setzt man den Wert einer checkbox?
Um Controls zu bearbeiten gibt es bisher kaum etwas und mehr Funktionen werden auch noch ein gutes Stück auf sich warten lassen. Und mir fällt tatsächlich auf, dass ich diese Funktionen in der Dokumentation vergessen habe (oder bin ich blind?)...
Momentan gibt es genau 3 Funktionen:
PHP Code:
ReadText($control) ; returns read text of control (should work for all kind of controls no matter if button, checkbox or inputbox)
SetText($control, $text) ; sets text of control (should work for all kind of controls no matter if button, checkbox or inputbox)
IsChecked($checkbox) ; returns true if given checkbox is checked
Um auf dem aktuellsten Stand zu bleiben (vor allem wenn ich Held wieder die Hälfte vergesse) kannst du auch in den AAL-Interpreter reinschauen. Ich habe das Hinzufügen neuer Funktionen extra so universell, einfach und extra gehalten, dass man praktisch kaum etwas vom Interpreter-Code verstehen muss und man trotzdem neue Funktionen hinzufügen kann oder zumindest sehen kann welches es so gibt (wenn man auch noch die parameter rausfinden will, muss man dann doch ein bisschen Einblick haben) aber nur um zu sehen was es gibt und um ganz grob abschätzen zu können was es macht, kann man einen Blick in "StandardFunctions.cpp" wagen.
Quote:
Originally Posted by warfley
Und zum anderen welche Events außer onClick gibt es, wäre cool wenn du eine Liste hättest
Da wird noch einiges dazu kommen, vor allem plane ich das ganze ähnlich wie Javascript aufzubauen, sodass man also auf allerlei Events reagieren kann wie "onClick", "onMouseOver" usw.
Folgende Events plane ich früher oder später einzufügen:
Quote:
onchange An HTML element has been changed
onclick The user clicks an HTML element
onmouseover The user moves the mouse over an HTML element
onmouseout The user moves the mouse away from an HTML element
onkeydown The user pushes a keyboard key
Quelle:
Aber momentan gibt es nur onClick und das wird wohl auch noch ein ganzes Stück so bleiben. Jetzt möchte ich erst einmal den Sprachumfang (was Klassen, Syntax und Semantik angeht) fertig haben und danach kommen noch allerlei Funktionen und Events dazu.
Zwar ist 0.0.2 erst 3 Tage alt, aber diese 3 Tage war ich doch schon sehr Produktiv, und bin nun mit Version 0.0.3 fertig.
Neue Features: Formeditor unterstützt Multiselektion
Es lässt sich nun ein Raster für den Formeditor einstellen, Aber achtung, das Zeichnen dieses Rasters benötigt sehr viel CPU last, bei Zu großen Fenstern beginnt es zu laggen (dann einfach über die Optionen ausschalten)
Hilfslinien im Formeditor zum Positionieren von Objekten
Sowie ein paar kleinere neue Funktionen, Bugfixes und Performance Fixes
Außerdem gibt es jetzt eine Update Funktion über den Menüreiter Extras, und ich habe das Zip Archiv durch einen Installer ausgetauscht, welcher immer die Aktuelle Version Runterläd und Installiert
Nun habe ich allerdings eine Frage:
Was wünscht ihr euch für Features, weil mit den gesamten Grundfeatures bin ich eigentlich schon durch, und mir fällt nichts großes Neues zur Zeit mehr ein.
PS: Falls in den nächsten 1-2 Monaten kaum Updates kommen nicht wundern, bald beginnt bei mir die Klausurphase, und da habe ich nun mal nicht so viel Zeit
Es gibt doch noch soviel... schau dir doch einfach mal andere IDE´s an..
z.b. Git Unterstützung (man sieht am Rand welche Sachen noch nicht committed bzw gepusht wurden...
Wie wäre es mit Plugin Unterstützung ?etc.. es gibt viel^^
Zwar ist 0.0.2 erst 3 Tage alt, aber diese 3 Tage war ich doch schon sehr Produktiv, und bin nun mit Version 0.0.3 fertig.
Neue Features: Formeditor unterstützt Multiselektion
Es lässt sich nun ein Raster für den Formeditor einstellen, Aber achtung, das Zeichnen dieses Rasters benötigt sehr viel CPU last, bei Zu großen Fenstern beginnt es zu laggen (dann einfach über die Optionen ausschalten)
Hilfslinien im Formeditor zum Positionieren von Objekten
Sowie ein paar kleinere neue Funktionen, Bugfixes und Performance Fixes
Außerdem gibt es jetzt eine Update Funktion über den Menüreiter Extras, und ich habe das Zip Archiv durch einen Installer ausgetauscht, welcher immer die Aktuelle Version Runterläd und Installiert
Nun habe ich allerdings eine Frage:
Was wünscht ihr euch für Features, weil mit den gesamten Grundfeatures bin ich eigentlich schon durch, und mir fällt nichts großes Neues zur Zeit mehr ein.
PS: Falls in den nächsten 1-2 Monaten kaum Updates kommen nicht wundern, bald beginnt bei mir die Klausurphase, und da habe ich nun mal nicht so viel Zeit
Ziemlich cool fände ich noch einen Shortcut, welcher einen erlaubt an der aktuellen Stelle (besonders vor Funktionen) einen automatisch generierten Kommentar einzufügen, der sich die Informationen der nächsten Zeile holt und sie "Dokumentier-Bereit" darstellt, also z.B. sowas:
Ist natürlich nur eine Idee, das Aussehen lässt sich sicher noch optimieren/anpassen.
Edit:
Auch interessant wäre eine statische Code-Analyse ala "Variable never used" oder "Unreachable Return"... Das Ganze wird zwar auch in den Compiler kommen, aber nur in der Form: "Unreachable Code? --> Schmeiss es raus"
Auch interessant wären Refactoring Sachen, sowas wie Vorschläge an der Seite, dass Funktionen immer klein/groß/mit _ anfangen sollten.
Eine Art TestUnit Unterstützung (oder zumindest eine automatische Generierung derselbigen) hätte auch was, ähnlich wie in C#. Wenn man z.B. die Funktion Fib testen möchte mit Parameter 10 und einmal mit 5:
Es gibt doch noch soviel... schau dir doch einfach mal andere IDE´s an..
z.b. Git Unterstützung (man sieht am Rand welche Sachen noch nicht committed bzw gepusht wurden...
Wie wäre es mit Plugin Unterstützung ?etc.. es gibt viel^^
Quote:
Originally Posted by Shadow992
Ziemlich cool fände ich noch einen Shortcut, welcher einen erlaubt an der aktuellen Stelle (besonders vor Funktionen) einen automatisch generierten Kommentar einzufügen, der sich die Informationen der nächsten Zeile holt und sie "Dokumentier-Bereit" darstellt, also z.B. sowas:
Ist natürlich nur eine Idee, das Aussehen lässt sich sicher noch optimieren/anpassen.
Edit:
Auch interessant wäre eine statische Code-Analyse ala "Variable never used" oder "Unreachable Return"... Das Ganze wird zwar auch in den Compiler kommen, aber nur in der Form: "Unreachable Code? --> Schmeiss es raus"
Auch interessant wären Refactoring Sachen, sowas wie Vorschläge an der Seite, dass Funktionen immer klein/groß/mit _ anfangen sollten.
Eine Art TestUnit Unterstützung (oder zumindest eine automatische Generierung derselbigen) hätte auch was, ähnlich wie in C#. Wenn man z.B. die Funktion Fib testen möchte mit Parameter 10 und einmal mit 5:
Edit2:
In der nächsten Version wird es wohl auch Klassen geben, die dann wie folgt erstellt/deklariert werden:
Code:
class Dog($CanBark_in)
$CanBark=$CanBark_in
$isRealDog=true
if $CanBark = false
$isRealDog=false
EndIf
Func bark()
if $CanBark = true
; do something
endif
EndFunc
EndClass
Erstellen geht dann über:
Code:
$A_Dog= new Dog(true)
Danke, die Ideen sind an alle gut. Ich werde mal sehen was ich wie implementieren werde. Vor allem die Klassen bereiten mir in wenig sorge, da ich dafür Variablentypen überprüfen muss und ich dafür noch keine vernünftige Lösung gefunden habe
Danke, die Ideen sind an alle gut. Ich werde mal sehen was ich wie implementieren werde. Vor allem die Klassen bereiten mir in wenig sorge, da ich dafür Variablentypen überprüfen muss und ich dafür noch keine vernünftige Lösung gefunden habe
Wieso willst du da Variablentypen überprüfen?
Das ist etwas, das passiert nicht mal zur Compilezeit, weil es einfach nicht möglichist.
Stell dir nur mal vor es gibt zwei Klassen, die jeweils unterschiedliche Funktionen besitzen.
PHP Code:
$var=0 If random() = 1 $var = new Class1() Elseif random() =2 $var = new Class2() Endif
$var.doSomething()
Es gibt praktisch keine Möglichkeit das zur Compilezeit herauszufinden.
Daher wird es auch in AAL selbst nur zur Laufzeit geprüft und auch nur wenn es in der jeweiligen Zeile ankommt.
Man hat also keine Chance heruaszufinden, ob 0 oder ein Objekt in $var steckt.
Wieso willst du da Variablentypen überprüfen?
Das ist etwas, das passiert nicht mal zur Compilezeit, weil es einfach nicht möglichist.
Stell dir nur mal vor es gibt zwei Klassen, die jeweils unterschiedliche Funktionen besitzen.
PHP Code:
$var=0 If random() = 1 $var = new Class1() Elseif random() =2 $var = new Class2() Endif
$var.doSomething()
Es gibt praktisch keine Möglichkeit das zur Compilezeit herauszufinden.
Daher wird es auch in AAL selbst nur zur Laufzeit geprüft und auch nur wenn es in der jeweiligen Zeile ankommt.
Man hat also keine Chance heruaszufinden, ob 0 oder ein Objekt in $var steckt.
Und das ist ja genau mein Problem, aber für z.B. die Autovervollständigung würde ich ungern alle Methoden und Felder aller Objekte angeben, daher hatte ich überlegt eine Liste mitzuführen, welche Objekte es überhaupt sein könnte. Da habe ich dann nur das Problem wenn man die Objekte von Funktionen zurückbekommt, und das würde meinen Parser deutlich verkomplizieren.
Und das ist ja genau mein Problem, aber für z.B. die Autovervollständigung würde ich ungern alle Methoden und Felder aller Objekte angeben, daher hatte ich überlegt eine Liste mitzuführen, welche Objekte es überhaupt sein könnte. Da habe ich dann nur das Problem wenn man die Objekte von Funktionen zurückbekommt, und das würde meinen Parser deutlich verkomplizieren.
Vielleicht stelle ich das auch erst mal zurück
Um später meinen Code leichter optimieren zu können, will ich sowieso demnächst ein internes Flussdiagramm erzeugen. Vielleicht kann man das später ausbauen und in ne Dll schmeissen, sodass du eine Zeile + den Code in die Dll schmeist und dir das Flussdiagramm alle möglichen Klassen + Datentypen zurückgibt, die die Variable haben kann.
Aber mal sehen das wird noch bissel dauern bis ich soweit bin. Von daher sollte man das vielleicht wirklich zurückstellen für die IDE.
Die IDE sieht sehr gut aus, ich würde aber empfehlen jetzt erstmal etwas abzuwarten was sich bei den folgenden Versionen von AAL noch ändert. Es würde nicht wirklich Sinn machen, wenn die IDE der Sprache "voraus" ist
[RELEASE](OpenSources/VB.NET) Map editing tools + LUA bonuses 03/29/2014 - Rappelz Private Server - 3 Replies Heyhalleleyho!
Here is an open source release of 2 tools.
First one is the tool that allows to edit NFM props data and save it to a file - NFM Props editor.
It allows to spawn static props on a map.
Second one is an NFA editor with grid/graphic interfaces
(no drawing edit as in previous version, but open source this time + possible to delete points/regions).
[TOOLS]All you Need in Editing KOM Files! 12/10/2010 - Grand Chase Hacks, Bots, Cheats & Exploits - 10 Replies All you Need Tools in Editing Kom Files are Here!
Download Link:TOOLS.rar
Including:
KomExtractor
Kompact
Phyton 2-6
[TOOLS]for editing .KOM FILES [UPDATED] 08/09/2010 - Grand Chase Hacks, Bots, Cheats & Exploits - 214 Replies here are the tools that you need on how to edit the KOM Files.
but i will not post here the tutorial on how to use the tools that i posted.
for the tutorials just use the search button ok?
TOOLS that you can use in the attachments
KOM files extrator (posted by 4jax)
crch2 (for crc files)
010 editor (for editing the hex files) or use any hex editor like winhex that i use in dekaron hacking
(for phyton just check 4jax thread about it)