Wow, ist wirklich gut gelungen!
Ich musste allerdings bei mir noch die $__g_hGDIPDll durch "gdi32.dll" oder $ghGDIPDll ersetzen, weil ich die 3.3.10.2 verwende. Ist vermutlich nur ein Versionsbug.
Beiträge von alpines
-
-
Guten Abend,
Update! - 18.05.2017 -
Knapp 3 Jahre nach dem Release kommt endlich die Veranschaulichung sowie den Fix der UDF.
Die UDF unterstützt mittlerweile vernünftiges Error-Handling und kommt mit einer Funktionsdokumentation daher.Ich möchte hier ein Skript vorstellen welches mittels A*-Algorithmus (A-Star) den kürzesten Weg vom Start- bis zum Endpunkt findet.
Anleitungen zum A*-Algorithmus gibt es viele im Internet, einfach mal nachschauen.Die .mesh-Datei von der ihr die Koordinaten und Wegpunkte bezieht muss wie folgt aufgebaut sein.
Codex;y;verbindung_zum_wp;verbindung_zum_wp;... a;b;verbindung_zum_wp;verbindung_zum_wp;... m;n;verbindung_zum_wp;verbindung_zum_wp;...
Es sieht vielleicht unverständlich aus aber hier ist eine Beispieldatei (Die Verbindung zu einem Wegpunkt wird mittels Zeile dargestellt).
Ich habe einen Visualizer gebaut der den Graphen anzeigt und einen gewünschten Pfad berechnet.
Das Netz ist allerdings gestreckt, damit es in das schwarze Quadrat in der GUI passt.NavMesh Visualizer
[Blockierte Grafik: http://i.imgur.com/LT5nlGV.png]
Funktionen der NavMesh.au3
_NavMesh_GetPathDistance($aPath, $aMesh)
_NavMesh_GetPath($iStartWaypoint, $iEndWaypoint, $aMesh[, $bReturnWaypoints = True])
_NavMesh_ListWaypointsByWaypoint($iWaypoint, $aMesh)
_NavMesh_GetCoordinatesByWaypoint($iWaypoint, $aMesh)
_NavMesh_GetWaypointByCoordinates($iPositionX, $iPositionY, $aMesh)
_NavMesh_GetLowestInList($aList)
_NavMesh_GetNearestWaypoint($iX1, $iY1, $aMesh)
_NavMesh_GetDistance($iX1, $iY1, $iX2, $iY2)
_NavMesh_LoadMeshFromFile($sFilePath)Wichtig! Die UDF arbeitet mit gerichteten Graphen!
Wenn ihr überprüfen wollt, ob euer Netz ein gerichteter Graph ist, nutzt die Mesh Checker.au3!Wichtig! Die UDF arbeitet intern mit Indizes also sind im Netz eingetragene Wegpunkte immer um eins subtrahiert. Wenn ihr den Pfad von 1 zu 5 berechnen wollt, dann müsst ihr die Wegpunkte 0 und 4 nehmen. Der Grund warum ich in den Dateien es bei 1 anfangen lasse und im Script mit 0 arbeite ist der, dass man im Editor wenn man das Netz eintippt immer bei Zeile 1 anfängt und es einfach nur ekelhaft ist, wenn man beim Tippen immer eins abziehen oder draufaddieren muss!
Viel Spaß damit! Kritik und Lob sind gerne gesehen!

Bisherige Downloads (alte Versionen): 462
-
/Data ist doch nur ein Ordner bzw. eine Datei ohne Endung. Stimmt das so, oder hast du die Datei vergessen anzugeben?
-
Vielleicht hast du gar keinen Zugriff mit InetGet auf den Server, außerdem setz mal den OPTION FLAG auf 1, damit er die Dateien neu lädt - auch wenn sie im Cache sind.
-
Entweder switcht-cased du die $art durch, oder du Executest das (Execute wäre die nicht so gute Variante.).
Schlecht
[autoit]MsgBox(0, 0, Execute($zahl1 & $art & $zahl2))
[/autoit]
[autoit]
GutSwitch $art
[/autoit][autoit][/autoit][autoit]
Case "+"
MsgBox(0, 0, $zahl1 + $zahl2)Case "-"
[/autoit][autoit][/autoit][autoit]
MsgBox(0, 0, $zahl1 - $zahl2);...
[/autoit]
Wieso ist ein Einzeiler schlechter als das andere fragst du dich sicherlich? Ganz einfach, mit Execute kannst du auch AutoIt-Befehle ausführen. So könnte man $zahl1 = "Shutdown(1)" nehmen und $zahl2 und $art nichts und schon ist der PC, wenn man die Rechte dazu hat, aus. -
Algorithmen hören sich interessant an, aber bitte stelle das ASM Cookbook noch fertig

-
Kenne mich mit der FF.au3 nicht aus aber wenn es sowas wie _FFGetObjById gibt, hol dir das so und verwende
$oObj.Checked = False -
Auch von mir alles Gute! Möge deine RegEx-Weisheit uns noch lange erhalten bleiben!

-
AutoIt Window Info Tool liefert alles was du brauchst.
-
Ja!
Hat auf jeden Fall Spaß gemacht und hoffentlich findet so etwas häufiger statt.
Vielen Dank an dich minx für die Organisation, das Tracking und die Endauswertung.
-
Hallo,
ich möchte hier meinen Funktionsplotter vorstellen. Dieser kann Funktionen anzeigen und zeigt einem die Werte für die Funktion an, wenn man mit der Maus über das Fenster geht.
Im Moment zeigt er nur eine Funktion an, ich werde das aber bald ergänzen, sobald ich den Fehler mit dem falschen Intervall behoben hab.Info!
Leider sind die Formeln die ich zum errechnen verwende, nur für ein Intervall von [-x; y] geeignet. Es kann bei [x; y] Intervallen zu Fehlzeichnungen kommen.
Des Weiteren musste ich die Funktion musste ich leider per _GDIPlus_GraphicsFillRect zeichnen, da _GDIPlus_GraphicsDrawLine bei kleinen Koordinaten nichts zeichnet.Der Funktionsplotter selbst ist nicht komplett mein Werk, da mir ein Freund (K.K.) ein wenig bei den Formeln geholfen hatte.
Hoffentlich sind die Formeln im Script verständlich - wenn nicht, einfach fragen!
Lob, Kritik und sonstiges Feedback ist gerne gesehen!
-
Hallo,
nachdem Forum-Reset stelle ich hier wieder ein kleines Script vor.
Das Script wurzelt nach dem Heron-Verfahren und ermittelt somit die Quadratwurzel einer Zahl.Das Prinzip geht zurück auf die Rechtecksanpassung.
[autoit]Func _SquareRoot($fValue, $iDelta = 1e-15)
[/autoit][autoit][/autoit][autoit]
Local $a = 1, $b = $fValue, $cIf $fValue < 0 Then Return 0
[/autoit][autoit][/autoit][autoit]While Abs($a - $b) > $iDelta And $b <> $c
[/autoit][autoit][/autoit][autoit]
$c = $b
$a = ($a + $b) / 2
$b = $fValue / $a
WEndReturn $a
[/autoit]
EndFunc
Das Script im Anhang wurzelt eine Zufallszahl zwischen 1 - 1000. -
Wenn du zu AutoIT hier Hilfe suchst, dann bist du an der falschen Adresse, hier gibts Support für AutoIt.
-
@Xor, ja Interpreter sowie AutoIt-Sourcecode werden mitgeliefert in der Exe.
Man bräuchte vermutlich nen vServer auf dem man den Compiler laufen lassen könnte. Unter Linux geht das ganze auch (WINE) aber es ist wesentlich umständlicher.
-
Dann lass dir den Kuchen mal schmecken, zum Glück hat sich alles zum Guten gewendet!
-
Nette Geschichte, schade das es solche Menschen gibt.
Die 8er Reihe gibts tatsächlich wie oben schon genannt wurde als OEM Version. -
Die steht im Source-Code der Seite drinne.
-
Entweder {TAB}st du alle durch, oder du nutzt
[autoit]
IE.au3 und_IEAction($oObject, "focus")
[/autoit]und das Objekt holst du dir mit
[autoit]_IEGetObjById($oIE, "id")
[/autoit].
-
[autoit]Außerdem istHotKeySet("{Esc}", _Pause)
[/autoit]falsch, da das "_Pause" sein muss, da HotKeySet sonst die nicht existente Funktion 0 aufrufen würde.
Hab bemerkt das das in der 3.3.10.2 nicht mehr so ist. -
Finde ich toll, allerdings ist der Name der Funktion ein wenig irreführend bzw. sagt über die Funktion selbst nichts aus.
Unter _RAMGetUsage würde man beispielsweise mehr verstehen als _RAM.