1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Mars

Beiträge von Mars

  • Doppelte Einträge List

    • Mars
    • 26. Mai 2014 um 11:17
    [autoit]

    _ArrayUnique

    [/autoit]
  • Australien, ein verrücktes Land

    • Mars
    • 25. Mai 2014 um 11:54

    Das SSpanisch ist am Handy entstanden. Nachts, betrunken, mit einer Hand, im Halbschlaf. Da passiert sowas schonmal. :thumbup:

  • Australien, ein verrücktes Land

    • Mars
    • 25. Mai 2014 um 01:42

    Verstehe ich das richtig, ein Knollen fürs zu langsam fahren von einem netten Mann auf einem Fahrrad ? Das klingt irgendwie SSpanisch :huh:

  • Arithmetisches Kodieren

    • Mars
    • 23. Mai 2014 um 01:57

    Update: Fast alles was geplant war ist nun drin, fast ;)

  • Hello :D

    • Mars
    • 21. Mai 2014 um 22:47

    Willkommen im Forum,
    Um ein bisschen reinzukommen ist es sinnvoll die Tutorialabteilung zu besuchen. Mit etwas Übung kommst du auch schnell dahinter welche Bereiche dich interessieren (Tools, Programme, Spiele, usw).

    lg
    M

  • Prüfen ob sich 2 Grafiken überlagern

    • Mars
    • 18. Mai 2014 um 17:05

    Funktionen für einige Kollisionsabfragen habe ich mal gesammelt und auf Tempo hin optimiert. (Damals gab es den ternären operator noch nicht, daher kann man sicherlich noch etwas Geschwindigkeit rausholen).
    Klick mich !
    Um zwei rechtecke zu überprüfen gibts das hier:
    Klick Mich !
    (ganz runter scrollen. Der letzte Codeabschnitt ist eine effiziente Kollisionsfunktion)
    Hier die AutoIt Funktion für 2 Rechtecke:

    [autoit]

    Func _Kollision_Viereck_Viereck($x1, $y1, $b1, $h1, $x2, $y2, $b2, $h2) ;Selbsterklärend
    Return ($x1 + $b1 > $x2 And $y1 + $h1 > $y2 And $x1 < $x2 + $b2 And $y1 < $y2 + $h2)
    EndFunc ;==>_Kollision_Viereck_Viereck

    [/autoit]
  • GrooveLoad - ein Grooveshark Downloader

    • Mars
    • 10. Mai 2014 um 19:11

    Windows 8.1, x64, GrooveLoad 1.8.0.0
    Wenn ich ein Lied herunterlade wird es "zerhackt" (also in kleinen Teilen heruntergeladen und anschließend zusammengesetzt). Das ist soweit auch in Ordnung, aber leider gibt es immer ca. 0.5 Sekunden lange Pausen zwischen den Einzelteilen -> Das Lied läuft wie gewohnt ab, aber alle ca. 4 Sekunden kommt eine halbe Sekunde Stille.

    Edit: Scheint wohl ein einmaliges Problem mit meinem Computer zu sein. Habe eben einen Test gemacht wo bei Programmen die definitiv früher funktioniert haben das gleiche Problem auftritt. Also falscher Alarm :)

    lg
    M

  • AutoIt & ASM

    • Mars
    • 10. Mai 2014 um 12:00

    Interessant, die von mir benutzte FASM liegt doch in der zip mit drinnen ?
    Das einzige was ich bemerkt habe sind die <FASM.au3> statt "FASM.au3". Wenn man das ändert wird die Version im Ordner bevorzugt eingesetzt (glaube ich jedenfalls).

    Zu den Variablen: Da bin ich mir immernoch nicht soo sicher, funktionieren müsste es natürlich, sofern der ASM erst zusammenbebaut wird wenn die Structs schon fertig sind.

    bollen: Wenn der Code länger ist stürzt es ab ? Bitte um Beispiel...

    lg
    M

  • Von Fliehkräften, oder wo der Wurm im LAN ist :D

    • Mars
    • 10. Mai 2014 um 00:05

    Wenn er das geschrieben hätte um zu provizieren, dass jemand ihm unterstellt, er hätte das geschrieben, damit die anderen sich erniedrigen, (zu viele Kommas) so ist er ebenso schlau wie als wenn er nicht berücksichtigt hätte, dass ihm jemand unterstellt, dass er das nur geschrieben hat um andere dazu zu bewegen sich zu erniedrigen. Villeicht sogar noch schlauer.
    Und wenn er diesen Kommentar ebenfalls einkalkuliert hat muss er Gott gewesen sein

  • Von Fliehkräften, oder wo der Wurm im LAN ist :D

    • Mars
    • 9. Mai 2014 um 23:38

    Wenn der Mensch der den Thread erstellt hat villeicht absichtlich so einen Unfug fabriziert hat, damit andere sich erniedrigen, wärend er selbst mit IQ150 an seinem PC sitzt und die anderen auslacht ?

  • Von Fliehkräften, oder wo der Wurm im LAN ist :D

    • Mars
    • 8. Mai 2014 um 22:40

    Ich hab auch nicht daran gezweifelt, dass du sowas weißt. Wollte nur mal prahlen dass ich es auch weiß ;)

  • Von Fliehkräften, oder wo der Wurm im LAN ist :D

    • Mars
    • 8. Mai 2014 um 22:20

    Synchrotonstrahlung entsteht wenn bewegte Ladungen auf eine nicht gradlinige Bahn gebracht werden. Sie skaliert allgemein mit v³ in Bezug auf (v/c)³.
    Wir wissen, dass Ladungen in Kabeln nur mit einigen mm/s unterwegs sind. -> v/c ist ca 0m/s -> (v/c)³ ist noch viel viel näher an 0 ! -> Abstrahlungsverluste = 0 !
    Ich tippe daher auf Käfer :huh:

  • AutoIt & ASM

    • Mars
    • 7. Mai 2014 um 22:36

    Ohje, das ist aus 2 Gründen ziemlich gewagt...
    1. Der ASM Code wird nicht mehr synchron zu den Frames gerendert. Vorher: Jeder Frame = 1 Durchlauf
    2. Zum Glück ist die Aufenthaltswahrscheinlichkeit im ASM zu sein recht gering. Wenn der Timer dazwischenfunkt kann es Abstürze geben.

    Wenn du den Code schneller haben willst, dann stell einfach die FPS in Zeile 13 auf 9999, dann arbeitet er so schnell er kann.

    Edit: Das klang jetzt viel negativer als gewollt :S, ich meine es nicht böse ;)

  • AutoIt & ASM

    • Mars
    • 7. Mai 2014 um 20:17

    Moin,

    Wie sagt Andy immer so schön: "Damals war alles besser... int21h, dann direkt in den Grafikspeicher ab 0B000h (PS: Diese Adresse ist für monochromatische Grafik :thumbup: ) reingeballert, und die Welt programmiert sich fast von alleine"
    (Der korrekte Wortlaut muss nicht mit Obigem übereinstimmen ;) )

    Was das Skript können soll:
    Es stellt eine Umgebung bereit (ein Fenster variabler Größe, einen Grafikpuffer, etwas RAM) in der man mit ASM ohne weiteres "direkt" (das ist die schönste Lüge die mir heute über die Lippen geht) ins Fenster zeichnen kann.

    Was es wirklich tut:
    Es stellt eine Umgebung bereit (ein Fenster variabler Größe, einen Grafikpuffer, etwas RAM) in der man mit ASM ohne weiteres so tun kann als würde man "direkt" ins Fenster zeichnen. :thumbup:

    Tatsächlich zeichnet man nur in eine Struct, die wiederum Teil eines WinAPI-GDI Puffers ist (kein GDI+), der wiederum mit einer voreingestellten Framerate ins Fenster verfrachtet wird (BitBlt). Dabei werden zwar nanosleep und Timer benutzt, zu 100% trifft man den vsync aber nicht, es ruckelt wenn es möchte. Ein sehr kleines, aber gut Kommentiertes Beispiel ist dabei. Wenn man selbst basteln will, so möge man NUR den ASM Code im Beispiel ändern, das restliche Skript stellt die Umgebung bereit. Wer Erweiterungen oder Sonstiges vornehmen will darf dies gerne tun :)

    Und wenns keiner braucht nehm ichs selbst :P

    lg
    M

    Dateien

    AutoIt & ASM 01.zip 58,34 kB – 550 Downloads
  • Prozesslisten (Arrays) vergleichen

    • Mars
    • 6. Mai 2014 um 10:50

    Die verschachtelte For Methode müsste genau das gleiche Ergebnis liefern (und ist dabei mindestens 50x schneller).
    Da ArrayDelete auch 2D Arrays verdaut kann man ohne Probleme auch 2D Arrays benutzen (im Vergleich dann aber ein [0] oder ein [1] dranhängen, je nachdem ob du PID oder Name vergleichen willst)

  • Prozesslisten (Arrays) vergleichen

    • Mars
    • 6. Mai 2014 um 07:25

    Brauchst 3 Schritte:
    1. Verbinde beide Arrays (a und b) zu einem Array (c1) mit allen Einträgen
    2. Benutze ArrayUnique bei Array (c1)
    2.1 Kopiere (c1) in (c2)
    3. Lösche alle Einträge aus Array (c1) die in Array (a) vorkommen -> (c1) = Liste 1
    3. Lösche alle Einträge aus Array (c2) die in Array (b) vorkommen -> (c2) = Liste 2
    (nimm am Besten PIDs damit es keine Namenskonflikte gibt)

  • [GDI+] Einfaches Laden und Anzeigen von Animationen

    • Mars
    • 4. Mai 2014 um 18:59

    Moin,

    Es ist nur ein sehr kleines Skript, kann aber sicherlich vielerorts gebraucht werden.
    Das Prinzip habe ich aus CreepTD abgeschaut. (Dort werden Gegner und Tower mit dieser Methode animiert)

    Funktionsweise:
    Man erstellt ein mit GDI+ kompatibeles Bild (z.B. png) welches nebeneinander gereiht sämtliche Frames enthält. Das resultierende Bild ist ein Pixel höher als eigentlich nötig und die obere Zeile ist vollkommen transparent. Zu Beginn jedes Frames setzt man oben links (also außerhalb des angezeigten Bereichs) einen Pixel mit der Hexadezimalen Darstellung der Framedauer. (z.B. 0xFF0000FF = 255 ms).

    Ist ein Bild so präpariert kann man es direkt laden und animiert anzeigen lassen.
    Ähnliche Skripte gibt es schon (auch für gif), aber ich denke dieses hier ist sehr einfach (selbst für völlige Laien) verständlich und leicht zu benutzen.

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGUI, $hGFX, $hBMP, $hBUF, $hANI

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate('Test', 300, 300)
    $hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBMP = _GDIPlus_BitmapCreateFromGraphics(300, 300, $hGFX)
    $hBUF = _GDIPlus_ImageGetGraphicsContext($hBMP)
    $hANI = _GDIPlus_AnimationCreateFromFile('Test.png')

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsSetInterpolationMode($hBUF, 5)
    _GDIPlus_GraphicsSetPixelOffsetMode($hBUF, 2)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While GUIGetMsg() <> -3
    _GDIPlus_GraphicsClear($hBUF, 0xFF808080)
    _GDIPlus_GraphicsDrawAnimationRect($hBUF, $hANI, 50, 50, 200, 200)
    _GDIPlus_GraphicsDrawImage($hGFX, $hBMP, 0, 0)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_AnimationDispose($hANI)
    _GDIPlus_GraphicsDispose($hBUF)
    _GDIPlus_BitmapDispose($hBMP)
    _GDIPlus_GraphicsDispose($hGFX)
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_AnimationCreateFromFile($sPath)
    Local $aRET[8] ; 0 - ImageHandle, 1 - Breite, 2 - Höhe, 3 - Anzahl, 4 - Timer, 5 - Aktuelles Bild, 6 - TimeArray
    $aRET[0] = _GDIPlus_ImageLoadFromFile($sPath)
    If @error Then Return SetError(@error, 0, 0)
    $aRET[2] = _GDIPlus_ImageGetHeight($aRET[0]) - 1
    Local $iW = _GDIPlus_ImageGetWidth($aRET[0])
    For $i = 1 To $iW - 1 Step 1
    If Not _GDIPlus_BitmapGetPixel($aRET[0], $i, 0) = 0 Then ExitLoop
    Next
    $aRET[3] = Int(Round($iW / $i, 0))
    $aRET[1] = $i
    Local $aTIME[$aRET[3]]
    For $i = 0 To $aRET[3] - 1 Step 1
    $aTIME[$i] = BitAND(0xFFFFFF, _GDIPlus_BitmapGetPixel($aRET[0], $i * $aRET[2], 0))
    Next
    $aRET[4] = TimerInit()
    $aRET[5] = 0
    $aRET[6] = $aTIME
    Return $aRET
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_GraphicsDrawAnimationRect($hGFX, ByRef $hANI, $iX, $iY, $iW, $iH)
    Local $aTIME = $hANI[6]
    If TimerDiff($hANI[4]) > $aTIME[$hANI[5]] Then
    $hANI[4] = TimerInit()
    $hANI[5] += 1
    If $hANI[5] = $hANI[3] Then $hANI[5] = 0
    EndIf
    ToolTip(Int(TimerDiff($hANI[4])) & '/' & $aTIME[$hANI[5]]) ; Nur zur demonstration, daher später unbedingt auskommentieren !
    _GDIPlus_GraphicsDrawImageRectRect($hGFX, $hANI[0], $hANI[1] * $hANI[5], 1, $hANI[1], $hANI[2], $iX, $iY, $iW, $iH)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_AnimationDispose(ByRef $hANI)
    _GDIPlus_ImageDispose($hANI[0])
    $hANI = 0
    EndFunc

    [/autoit]


    PS: Da ImageDrawRectRect benutzt wird ist ggf ein Pixeloffset zu setzen (wie im Beispiel), da ansonsten die Ränder falsch angezeigt werden. Der Interpolationmode ist nur optischer Schnickschnack, weil das Bild 16x16 Px groß ist.

    [Fix]: Grober Schnitzer in der Annahme jedes Bild wäre 16px breit :D

    lg
    M

    Dateien

    GDIPlusAni.zip 5,08 kB – 409 Downloads
  • Pixel-Graphiker für Mini-Strategie Spiel gesucht

    • Mars
    • 3. Mai 2014 um 17:03

    Schielst du da auf mich :P ?
    Ich kann sowas mehr oder weniger, finde aber oft nicht die Lust irgendwas zu erstellen.
    Wenn relativ genaue Spezifikationen vorliegen kann ich ja mal versuchen ein paar Kleinigkeiten zu basteln.

    Wichtig ist da folgendes:
    - Welche Farbpaletten sollen genutzt werden (16 Farben, 32, 256, usw...)
    - Um wie viele Avatare, Gebäude, usw handelt es sich, gibt es überhaupt eine feste Anzahl
    - Welcher Stil soll gewahrt bleiben, für PixelArt gibt es unmengen Stile
    - Wie verstehst du "Pixel-Grafik" ? Grafik mit geringer Auflösung, oder Flash-ähnliche Grafik ?
    - Wird eine eigene "Pixel"-Schriftart benötigt ?

  • Direct2D UDF

    • Mars
    • 2. Mai 2014 um 12:08

    Sehr schöne Sache, und vorallem greifbar.
    Direct2D wandert aus großer Ferne, schrittweise, immer weiter zu uns :)
    Bin ja mal gespannt wie es hier weitergeht, ich wollte schon eine ganze Weile umsteigen, aber die UDF von trancexx hat mir irgendwie nicht gefallen :pinch:

  • Was ist euch an einem RPG wichtig? [UMFRAGE]

    • Mars
    • 29. April 2014 um 12:32

    Was die Leute heutzutage alles studieren^^
    Als langweiliger Physik-, oder Informatikstudent fühlt man sich zwar wie MacGyver, hat aber kein Fach mit übergeilem Namen studiert :D

    Edit: OT in einem OT-Thread ist was feines :)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™