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. Developer30

Beiträge von Developer30

  • Graph mit bewegter Zeitachse

    • Developer30
    • 5. Juni 2012 um 18:37

    Um effektiv auf GUIs zu zeichnen benutzt du am besten die GDIPlus Funktionen.
    Wenn du damit noch nicht gearbeitet hast empfehle ich dir Tutorials anzuschauen (das von Ubuntu zum Beispiel).
    Das hier könnte möglicherweise auch interessant für dich sein: Graphen zeichnen, Unicalc Grafik.

    Ich hoffe ich konnte dir weiterhelfen ;)

    mfg
    Developer30

  • AutoIt Anfänger Tutorials

    • Developer30
    • 4. Juni 2012 um 18:23

    hey,

    ich hab mir mal dein #001 Tut angeguckt. Echt verständlich gemacht für jemanden, der noch fast überhaupt kein Plan hat :thumbup:
    Auch das Beispiel mit der Schublade etc. gut dargestellt..

    Allerdings ist mir eine Kleindigkeit aufgefallen: Und zwar ist ein Character meines Wissens nach ein einzelnes Zeichen.. Sprich "Schrift" (im Video iwo bei 10:10) wäre eine Zeichenkette (also String) und ein Charakter ist nur ein Zeichen wie 'a' oder ' " ', daher bei DllStruct ja auch der Datentyp char (bzw generell in C/C++ oder Java)... Und Global geht glaub ich nicht nur über mehrere Funktionen sondern auch über mehrere Includes.. Aber das sind wie gesagt Kleinigkeiten über die sich der Anfänger ja keine Gedanken macht.. Insgesamt gut gelungen :thumbup:

    mfg
    Developer30

  • Herzlichen Glühstrumpf minx, manuel6000 & GtaSpider!

    • Developer30
    • 27. Mai 2012 um 16:31

    Alles Gute! :party:

  • Hexadezimale Farbwerte Fragen

    • Developer30
    • 19. April 2012 um 20:48

    ok. Nehmen wir mal als Beispiel die hexadezimale Zahl 57C2.

    5 * 16^3 + 7 * 16^2 + 12 * 16^1 + 2 * 16^0

    Jede Stelle, die du von rechts nach links eins weiter gehst, tust du den Exponenten um 1 erhöhen. Das heißt du fängst bei der Ziffer ganz rechts an. In dem Fall ist das "2". Du multiplizierst 2 mit 16 hoch 0. (16 weil es das Hexadezimalsystem ist. Das ganze ginge auch mit 10. Dann wär es das Dezimalsystem. Oder mit 2, dann hast du das Binärsystem...). Dann gehts du eins weiter nach links. C entspricht 12. Demnach 12 * 16^1. Das addierst du zu dem 1. Ergebnis usw...

    Nach dieser Rechnung entspricht 57C2 = 22466.
    Ich hoffe ich konnte dir weiterhelfen.

    Edit:

    Zitat

    F steht ja für 15 und bei 2x F , addiere ich diese doch und da kommt 30 raus?

    Ein kleines Gegenbeispiel. Die normale Zahl "11" wird ja auch nicht 1 + 1 (oder 2 * 1) gerechnet, sondern 1 * 10^1 + 1* 10^0.

    mfg
    Developer30

  • Hexadezimale Farbwerte Fragen

    • Developer30
    • 19. April 2012 um 20:16
    Zitat von Julien

    F steht ja für 15 und bei 2x F , addiere ich diese doch und da kommt 30 raus?


    man rechnet 15*16^1 + 15*16^0 = 255

    schau hier

    mfg
    Developer30

  • Happy Birthday i2c

    • Developer30
    • 18. April 2012 um 19:08

    Alles Gute zum Geburtstag auch von mir! Feier schön und hab weiterhin gute Ideen :party:

  • Unterbrechung von Funktionen vermeiden

    • Developer30
    • 15. April 2012 um 21:31

    wieso eigentlich mit Adlib? so ginge doch auch:

    Spoiler anzeigen
    [autoit]

    Global $fReady=False
    Global $aArray[1]

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

    _Funktion1(10)

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

    Func _Funktion1($variablerParam)
    _Funktion2()
    For $x=0 to UBound($aArray)-1
    $aArray[$x]*=$variablerParam
    _Funktion3()
    Next
    $fReady=True
    _Funktion3()
    EndFunc

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

    Func _Funktion2()
    ; mache irgendwas
    $aArray[0]=5
    EndFunc

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

    Func _Funktion3()
    If $fReady Then
    ; tue das, was erst nach Funktion 1 und Funktion 2 getan werden darf
    MsgBox(0, "", "jetzt!")
    EndIf
    EndFunc

    [/autoit]

    Edit:
    oder mit 2 Prüfvariablen:

    Spoiler anzeigen
    [autoit]

    Global $fReady1=False, $fReady2=False
    Global $aArray[50]

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

    _Funktion2()
    _Funktion1(10)

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

    Func _Funktion1($variablerParam)
    For $x=0 to UBound($aArray)-1
    $aArray[$x]*=$variablerParam
    _Funktion3()
    Next
    $fReady1=True
    _Funktion3()
    EndFunc

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

    Func _Funktion2()
    ; mache irgendwas
    For $x=0 to UBound($aArray)-1
    $aArray[$x]+=Random(0, 2,1)
    Next
    $fReady2=True
    EndFunc

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

    Func _Funktion3()
    If $fReady1 And $fReady2 Then
    ; tue das, was erst nach Funktion 1 und Funktion 2 getan werden darf
    MsgBox(0, "", "jetzt!")
    EndIf
    EndFunc

    [/autoit]

    mfg
    Developer30

  • 2 Skripts verbinden

    • Developer30
    • 13. April 2012 um 23:18
    Zitat von Niccoo

    Oder ich verbinde sie einfach in ein Skript

    das meinte ich...

    Zitat von Niccoo

    irgendwie mit #incloud oder soo

    das geht auch. du kannst deine Login Funktionen in dein Spiel includen, oder umgekehrt.

  • 2 Skripts verbinden

    • Developer30
    • 13. April 2012 um 22:41

    wenn ich dich richtig verstanden habe, dann vielleicht so:
    Mach die GUI von deinem Spiel einfach solange auf @SW_HIDE, bis das Login erfolgreich war. Aus den beiden while Schleifen kannst du ja einfach eine while Schleife machen und mit einer globalen Variablen $fGame (true/false) prüfen, ob das Spiel schon läuft - wenn ja, dann wird der while-Inhalt deines Spiels ausgeführt.

  • Mehrere Gegner Bewegungen

    • Developer30
    • 11. April 2012 um 19:11

    Hey Niccoo,

    ich hab mal was mit deinem Script rumgespielt :D, paar Dinge geändert. Das hier ist bei rausgekommen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <array.au3>

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

    OnAutoItExitRegister("_EXIT")
    AutoItSetOption("GUIOnEventMode", 1)

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

    _GDIPlus_Startup()

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

    Global $aGegner[1][3]
    Global $iGegnerWidth = 50, $iGegnerHeight = 50
    Global $aGegnerFarben[5] = [_GDIPlus_BrushCreateSolid(0xFF630304), _GDIPlus_BrushCreateSolid(0xFF2E5B92), _GDIPlus_BrushCreateSolid(0xFFFDD00A), _GDIPlus_BrushCreateSolid(0xFF65583A), _GDIPlus_BrushCreateSolid(0xFF000000)]
    Global $Gui, $graphic, $bitmap, $buffer, $brushWeiss, $brushArmbrust, $brushGegner1, $brushGegner2, $brushGegner3, $brushGegner4, $brushGegner5

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

    $Gui = GUICreate("Defender", 800, 400)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEClicked")
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(800, 400, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

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

    $brushWeiss = _GDIPlus_BrushCreateSolid(0xFF00592A)

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

    GUISetState(@SW_SHOW)

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

    While 1
    _SpawnEnemy(5) ; Gegner spawnen
    _Draw() ; Scene zeichnen
    WEnd

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

    Func _Draw()
    _GDIPlus_GraphicsFillRect($buffer, 0, 0, 800, 400, $brushWeiss)
    _DrawEnemies()
    _GDIPlus_GraphicsDrawImageRect($graphic, $bitmap, 0, 0, 800, 400)
    EndFunc ;==>_Draw

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

    Func _SpawnEnemy($iSpawnRate)
    If Random(0, 100, 1) < $iSpawnRate Then
    If $aGegner[0][0] <> "" Then ReDim $aGegner[UBound($aGegner) + 1][UBound($aGegner, 2)]
    $aGegner[UBound($aGegner) - 1][0] = 750
    $aGegner[UBound($aGegner) - 1][1] = Random(100, 300, 1)
    $aGegner[UBound($aGegner) - 1][2] = Random(0, UBound($aGegnerFarben) - 1, 1)
    EndIf
    EndFunc ;==>_SpawnEnemy

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

    Func _DrawEnemies()
    $i = 0
    While 1
    If $i >= UBound($aGegner) - 1 Then ExitLoop
    If String($aGegner[$i][0]) = "" Then ExitLoop
    $aGegner[$i][0] -= 2
    _GDIPlus_GraphicsFillEllipse($buffer, $aGegner[$i][0], $aGegner[$i][1], $iGegnerWidth, $iGegnerHeight, $aGegnerFarben[$aGegner[$i][2]])
    If $aGegner[$i][0] < -$iGegnerWidth Then ; Gegner löschen
    If UBound($aGegner) > 1 Then
    _ArrayDelete($aGegner, $i)
    Else
    $aGegner[$i][0] = ""
    $aGegner[$i][1] = ""
    $aGegner[$i][2] = ""
    EndIf
    $i -= 1
    EndIf
    $i += 1
    WEnd
    EndFunc ;==>_DrawEnemies

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

    Func _CLOSEClicked()
    Exit
    EndFunc ;==>_CLOSEClicked

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

    Func _EXIT()
    For $i = 0 To UBound($aGegnerFarben) - 1
    _GDIPlus_BrushDispose($aGegnerFarben[$i])
    Next
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_Shutdown()
    EndFunc ;==>_EXIT

    [/autoit]


    Das Script spawnt endlos viele Gegner. Wenn du Fragen zu meinem Lösungsansatz hast, nur zu.

    Edit:
    Hab mein Script mal was korrigiert...

    Zitat

    aber sie bewegen sich nicht konstant.

    aus dem Grund benutzt man für Spiele besser den EventMode, statt eine MsgSchleife mit Switch.

    mfg
    Developer30

  • MP3 schneiden

    • Developer30
    • 3. April 2012 um 21:51

    zum Schneiden eines Streams mit der Bass.dll hatte ich auch mal ein Thread gestartet. Hilft dir vielleicht weiter:
    [gelöst] Stream schneiden (Bass.dll)

  • Stream mit BASS_SAMPLE_3D Flag gibt unbekannten Fehler zurück

    • Developer30
    • 18. Dezember 2011 um 14:18

    hi,
    hm ok,
    ja der Datenpfad stimmt.. das seltsame ist, wenn ich BASS_SAMPLE_3D weglasse, funktionierts

    Code
    HSTREAM stream=BASS_StreamCreateFile(false, "audio\\test.wav", 0, 0, BASS_STREAM_AUTOFREE);
  • Stream mit BASS_SAMPLE_3D Flag gibt unbekannten Fehler zurück

    • Developer30
    • 18. Dezember 2011 um 00:17

    Hallo @ all,

    ich möchte einfach nur ein Stream mit BASS_SAMPLE_3D erstellen, was komischer Weise BASS_ERROR_UNKNOWN und das Handle 0 zurückgibt.
    Woran liegts? ?(

    Hier ein Codeaussschnitt:

    Spoiler anzeigen
    C
    #include <iostream>
    #include "bass.h"
    #pragma comment(lib, "bass.lib")
    
    
    using namespace std;
    
    
    int main(int argc, char *argv[]) {
        if (!BASS_Init(-1,44100,BASS_DEVICE_3D | BASS_DEVICE_MONO,0,NULL)) {
                cout<<"BASS failed"<<endl;
                return 0;
        }
        HSTREAM stream=BASS_StreamCreateFile(false, "audio\\test.wav", 0, 0, BASS_SAMPLE_3D | BASS_STREAM_AUTOFREE);
        cout<<stream<<endl;
        cout<<BASS_ErrorGetCode()<<endl;
        BASS_Stop();
        BASS_Free();
    }
    Alles anzeigen

    Hoffe auf eure Hilfe,

    mfg
    Developer30

  • feststellen, ob ein Punkt auf der Fläche liegt

    • Developer30
    • 16. Dezember 2011 um 22:21

    Ich hab die Idee von Ijens und AspirinJunkie mal mit einem Beispiel getestet. Es scheint zu funktionieren. :whistling:
    Danke :thumbup:

  • feststellen, ob ein Punkt auf der Fläche liegt

    • Developer30
    • 16. Dezember 2011 um 17:38

    ahh 8o, jetzt seh ichs auch.. das könnte klappen.. ich melde mich wieder wenns ichs getestet hab.
    danke :)

  • feststellen, ob ein Punkt auf der Fläche liegt

    • Developer30
    • 16. Dezember 2011 um 15:12
    Zitat von Ijens

    Und wegen auf der Fläche liegen: Wenn der Punkt erstmal sicher auf der gleichen Ebene ist müsste man das einfach begrenzen können.
    Also zB. Z-Achse weglassen --> also von oben drauf schaun --> wenn der Punkt innerhalb des Vierecks ist, ist er auf der Fläche.
    Wie man das dann berechnet fällt mir aber jetzt auf die schnelle leider auch wieder nicht ein


    die Punkte müssen aber nicht auf der gleichen Ebene sein. Es könnte sich auch um ein Dreieck handeln, dessen Punkte in 3 verschiedenen Ebenen sind (also z.B. für die z-Achse 3 verschiedene Werte).

  • feststellen, ob ein Punkt auf der Fläche liegt

    • Developer30
    • 15. Dezember 2011 um 22:04
    Zitat von AspirinJunkie

    Edit: Jetzt verstehe ich: Deine Frage war gar nicht ob die Punkte in der selben Ebene liegen sondern ob ein Punkt in einem bestimmten Polygon liegt.


    genau das ;D.. sry für meine unpräzise Fragestellung...

    Zitat von AspirinJunkie

    Schau dir dazu mal diesen Thread an: >>Klickmich<<


    in diesem Thread geht es um Polygone im 2D Umfeld.. die Komplikation bei meinem Problem liegt darin, dass ich wissen möchte, ob der Punkt auf der die Fläche eines Körpers (3D) liegt.. Wobei dieser aus ganz vielen kleinen Vierecken und Dreiecken besteht.

  • feststellen, ob ein Punkt auf der Fläche liegt

    • Developer30
    • 15. Dezember 2011 um 21:13

    Zunächst thx @ Ijens für die Bemühungen, die mir leider nicht viel gebracht haben.

    Zitat

    Da du die Vektorenrechnung im notwendigen Umfang in der Schule noch nicht gehört hast

    ja leider :/

    Danke für den Rechenweg. Wobei ich da etwas nicht ganz verstehe. Die Punkte A, B, und C bilden doch ein Dreieck.
    Wenn x die horizontale Achse ist und die z-Achse in die "Tiefe" nach hinten geht, wäre y also die Höhe. Ich kam noch garnicht dazu, dein gesamtes Script anzuschauen, weil es mich verblüfft hat, dass folgende Punkte d=0 ergeben:

    [autoit]

    Global $A[3] = [1, 1, 1]
    Global $B[3] = [10, 1, 1]
    Global $C[3] = [5, 5, 1]

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

    Global $P[3] = [-50, 1, 1]

    [/autoit]

    z kann man bei meinen Punkten jetzt quasi ignorieren, weil wir uns überall in der gleichen "Tiefe" befinden. Ich verstehe nicht, warum mein Punkt $P auf dem Dreieck sein soll? -50 ist meilenweit von A (1|1|1) entfernt. Oder habe ich etwas falsch verstanden?

    Edit: Oh.. nunja, ich sehe gerade, dass du geschrieben hast "Berechnet den Abstand des Punktes von der Ebene - wenn d=0 - Punkt ist auf Ebene".. aber das sagt noch nicht 100% darüber aus, ob der punkt auf der Fläche liegt, oder?

  • Punkt eines Körpers rechnerisch um eine Achse rotieren

    • Developer30
    • 15. Dezember 2011 um 17:01

    oh hab ich 128 geschrieben :wacko: .. das ist jetzt ein bisschen peinlich^^.. ich meinte auch 180.. die Hälfte von 360..

  • feststellen, ob ein Punkt auf der Fläche liegt

    • Developer30
    • 15. Dezember 2011 um 16:01

    Hey @ all,

    ich habe eine 4eckige Plane in einem 3 dimensionalem Raum. Ich kenne nur die 4 Eckpunkte (A, B, C, D). Nun möchte ich herausfinden, ob irgendein Punkt P (x|y|z) auf der Fläche liegt. Der Winkel zwischen den 4 Ecken muss nicht zwangsläufig 90° sein. Wie findet man heraus, ob P auf der Fläche liegt oder nicht?

    mfg
    Developer30

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™