Ok, wenn man während der Scriptausführung Fenster öffnet, dann "Reisswolft" es etwas^^
Also Script starten, Desktop (ohne Fenster) anzeigen, zurücklehnen, schneien lassen, entspannen.....
Wer es abwarten kann, zuzuschauen, bis der gesamte Bildschirm voller "Schnee" liegt, der ist wahrlich entspannt
(Screeeeeeeen!!!!)
Beiträge von Andy
-
-
Hi,
ich frag mal vorsichtig, wie du überhaupt auf dieses Thema kommst....Denn:
a) brauchst du für "normale" Programmierung keine Structs => Thema erledigt
b) falls externe Dll´s verwendet werden, die einen Pointer auf einen Datenbereich als Parameter benötigen, kommst du um Structs nicht herum =>Bugfixens Tut, erledigtEine Struct ist nichts anderes als ein Bereich von Daten, auf deren Position im Speicher du direkt Zugriff hast.
Wenn du das nicht benötigst, dann brauchst du auch keine Struct!
Allerdings hindert dich niemand daran, deine Daten (Variablen) ausschliesslich in Structs zu schreiben, und dann über Pointer zu schreiben/lesen. Dann brauchst du auch sicher keinen Obfuscator mehr, denn diesen Code kann und will sicher keiner mehr lesen^^. Funktionieren wird es schon, schneller oder langsamer ist es nicht, einfach nur eine andere Art, mit den Daten umzugehen. -
Hi,
ZitatIch habe bereits dieses Zeug von Dyndns geholt [zap]
Eins von Dyndns.com und eins von no-ip...Welches "Zeug" und warum no-ip?
Dyndns sorgt dafür, dass deine sich spätestens alle 24 Std (oder je nach Router noch öfter) von der Telekom geänderte "externe" IP (unter der du im Internet bekannt bist) den Nameservern mitgeteilt wird.
Ich kann in meinem Router den Dyndns eintragen, somit teilt mein Router jedes mal, wenn ich eine neue IP zugeteilt bekomme, diese IP automatisch den Nameservern mit. Die Nameserver lösen dann den "Namen" (Domain) in die richtige IP auf.
Somit ist mein Router nicht nur einige Stunden unter einer bestimmten IP erreichbar, sondern 24/7 unter einer Domain. (DynDNS = Dynamischer Domain Name Service)
Weiterhin ist zu beachten, dass es nur bei sehr wenigen Routern möglich ist, vom "internen" Netz aus auf den (per portforwarding weitergeleiteten) Serverdienst (mit der externen IP) zuzugreifen. Es wird also fast immer ein Zugriff über einen Rechner von "außerhalb" benötigt, zur Not geht auch ein Smartphone (mit eigenem Internetzugang) zum testen...ZitatWenn ich diese nun mit TCPNameToIP "umwandel", bekomme ich verschiedene IP's raus.
Script?

Diese fruchtose Diskutiererei hatten wir schon x-mal....aber weil heute Weihnachten ist, bin ich gut drauf und geb noch nen Link
Zitat@IPAddress1 gibt mir 172.16.1.2 aus (die wird von mir auch im Server angegeben), doch wenn ich sie dort eintrage, bekomme ich folgende Meldung:
Als IP-Adresse darf nicht die IP-Adresse des Alice IAD/Modem verwendet werden.Von wem kommt diese Meldung? Vom Serverprogramm^^ ? Dann wäre es echt mal interessant, dieses Script zu sehen
Aber das hatten wir ja bereits.... -
Hi,
ich hatte schon (im Zusammenhang mit Assembler) die Geschwindigkeit von Arrays und Structs verglichen, aber diese ist in etwa gleich.
Wenn du also selbst Dll´s schreibst und dort keine Structs benötigst, dann lass es^^Für GDI benötigt man Structs nur bei einigen wenigen Funktionen, Geschwindigkeitsrelevant ist das also nicht.
Allerdings lässt sich in der Kombination mit einer Assembler-UDF und AssembleIt die Geschwindigkeit u.a. von Grafikfunktionen vervielfachen, da kommt man allerdings um die Verwendung von Structs nicht herum.
Aber auch in "native" AutoIt lässt sich eine Bitmap pixelweise recht einfach und schnell bearbeiten, wenn man sie in eine Struct kopiert und byteweise bearbeitet.
-
Zitat
Meine Frage war nur, welche IP ich dort eintragen muss und wo ich sie finde.
Verarschen kann ich mich alleine, denn wenn du schon so schlau bist, das Server-AutoItscript als IRRELEVANT zu bezeichnen, dann solltest du wissen, dass die IP in diesem Script enthalten ist....
Falls der DHCP-Server dir nicht jedes mal eine neue IP verpasst....daher die Frage nach der Infrastruktur! -
Hi,
generell kannst du eine Struct wie ein Array benutzen bei gleicher Verarbeitungsgeschwindigkeit.
Der große Vorteil gegenüber einem Array ist, daß man die Speicherstelle bzw. den Zeiger (Pointer) auf die einzelnen Inhalte der Struct benutzen kann.
Viele (DLL-)Funktionen benötigen diese Pointer als Ubergabeparameter.
Weiterhin sind alle Operationen, welche mit Speichern/Verändern von Daten zusammenhängen, einfach machbar, sobald deren Struktur (Struct) bekannt ist.Bugfix hat in seinem Tutorial einige Anwendungen beschrieben.
-
Zitat
Jedenfalls wäre es viel einfacher zu sagen, wo ich diese IP finde, als mich blöd anzumachen...
Entschuldigung bitte, dass ich keine Gedanken lesen kann!
Um WELCHE IP handelt es sich? Welcher Router, welches Serverprogramm, welches AutoIt-Script.
Du gibst KEINERLEI relevante Informationen und erwartest, dass dir hier jemand hilft, und anstatt mit Infos rauszurücken, wird rumgeheult....genau der professionelle Ton, um Spezialisten dazu zu ermutigen, dir hier aus DEINER Lage zu helfen!
Als ob die an Heiligabend nix besseres vorhätten, als darauf zu warten daß DU hier vorstellig wirst... -
Zitat
und es gibt auch keine gescheiten Erklärungen dafür.
das ist wahrscheinlich auch der Grund, warum einige Leute das Portforwarding in 3 Handgriffen erledigen.
Die können bestimmt zaubern, oder denen fliegt knowhow einfach so zu ohne was dafür zu tun.
Aber ganz bestimmt haben diese Leute keinerlei Ahnung von dem was sie tun und lesen weder die Handbücher von ihrem Router noch googeln sie nach Informationen.Ich denke, alle diese Leute haben einfach nur in irgendeinem Forum gepostet:"...doch da blicke ich überhaupt nicht durch und es gibt auch keine gescheiten Erklärungen dafür.." und irgendwer hat sich dann erbarmt und ne Kristallkugel rausgeholt und heftigst daran gerubbelt um an weitere wichtige Informationen zu kommen :pinch:
-
Zitat
Sieht nett aus übermalt die Fenster mit dem Desktophintergrund
öööhm, auf XP32 erscheint de rDesktop und es "schneit"
Am unteren Bildschirmrand bleiben die Flocken dann liegen und werden höher.
Wie sieht das bei euch aus?Edit //Ahhhhh, jetzt weiss ich, was ihr meint^^//
-
Hi,
beim weihnachtlichen Stöbern auf der Festplatte hat sich etwas gefunden, was zumindest optisch den fehlenden Schnee ersetzt^^
Wenn man lange genug wartet, bleibt der Schnee auch "liegen"
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Hi,
hier ist das schön erklärt....
Es reicht aber, wenn du die "teure" Drehung nur für einen Punkt berechnest, also die Verschiebung in x- und in y-Richtung ermittelst.
Alle anderen Eckpunkte verschieben sich um genau dieses Verhältnis.Und ja, es gibt auch eine Drehfunktion in GDI^^
Die erhält man, wenn *drehen* in die Suche der AutoIt-Hilfe eingegeben wird... -
Hi,
oberste linie vom "Balken" =Gerade und Umfang vom Ball=Kreis
Wenn Gerade und Kreis sich schneiden, dann Berührung^^ -
Hi,
Beispiel mit Buttons, aber das auf Slider auszuweiten solltest du können^^Spoiler anzeigen
[autoit];by Andy
[/autoit] [autoit][/autoit] [autoit]$numberofbuttons = 24 ;number from 1 to 30
[/autoit] [autoit][/autoit] [autoit]
Dim $buttoncontrolID[$numberofbuttons + 1]GUICreate("test")
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $numberofbuttons ;we make an array of buttons
$buttoncontrolID[$i] = GUICtrlCreateButton(" Button " & $i, 10 + ((($i > 10) + ($i > 20)) * 100), 30 + ($i - (($i > (($i > 20) + 1) * 10) * (($i > 20) + 1) * 10)) * 30,85,30)
Next
$somethingbutton=guictrlcreatebutton("do something ",310,30,80,30 );here you could give the buttons an other text or color
[/autoit] [autoit][/autoit] [autoit]
guictrlsetdata($buttoncontrolID[1] ,"Push!")
GUICtrlSetColor($buttoncontrolID[1],0xFF00FF)
guictrlsetdata($buttoncontrolID[13],"Push ME!")
GUICtrlSetColor($buttoncontrolID[13],0x000FFF)
guictrlsetdata($buttoncontrolID[17],"Push ME TOO!")
GUICtrlSetColor($buttoncontrolID[17],0xFF0000)GUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $msg = ' & $msg & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Switch $msg
Case -3 ;exit is pressed
Exit
case $somethingbutton
Msgbox (0,"","Button ""do something"" is pressed")Case $buttoncontrolID[1] To $buttoncontrolID[$numberofbuttons] ;one of the "array"-Buttons is pressed
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
call ("_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg))) ;names oft the functions are _arraybutton_1() _arraybutton_2().....
If @error = 0xDEAD And @extended = 0xBEEF Then MsgBox(4096, "ERROR", "Function "&"_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg))&" does not exist!")
EndSwitch
WEnd;*******************functions********************************
[/autoit] [autoit][/autoit] [autoit]
func _arraybutton_1()msgbox(0,"_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg)),"arraybutton pressed: "&GUICtrlRead($msg))
[/autoit] [autoit][/autoit] [autoit]
endfunc
;
; here are the funcs of the buttons
;
;
func _arraybutton_13()
msgbox(0,"_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg)),"arraybutton pressed: "&GUICtrlRead($msg))
endfuncfunc _arraybutton_17()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
msgbox(0,"_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg)),"arraybutton pressed: "&GUICtrlRead($msg))
endfunc -
Hi,
Punkt in Fläche in 3D => kompliziert und extrem aufwendig^^. Bei Polygonen nur ohne weiteres berechenbar, wenn das Polygon selbst nur Punkte in einer Ebene hat.In 2D sehr simpel:
Koordinaten des Polygons im Uhrzeigersinn "ablaufen". Zwischen 2 aufeinanderfolgenden "Ecken" besteht eine Gerade. Wenn Punkt immer rechts von allen Geraden ist, ist er innerhalb des Polygons, ansonsten ausserhalb. -
Hi, coole Idee!
Ich würde aber eher eine Auswahlliste der verfügbaren Maps vorziehen.
Einige Karten sind ziemlich schwer^^ -
Zitat
da nehm ich wohl doch lieber GDI+.
mit was du die "Sprites" machst, ist dir überlassen^^
Ich würde die Sprites als X*Y Pixel große Bitmaps zeichnen (mit irgendeinem Zeichenprogramm, zur Not geht Paint) und dann in den Backbuffer blitten.UEZ, Marsi und viele andere haben hier im Forum schon gezeigt, daß sich auch in Autoit schnelle grafische Spiele realisieren lassen.
An der reinen "Darstellung", egal ob durch GDI oder per Win-API, hapert es eher selten^^, siehe Beispiel! 50 transparente Sprites bewegen sich auf einem rotierenden Hintergrund mit 50-60FPS@2.5Ghz.
Meistens liegt es an den mehr oder weniger aufwendigen Berechnungen, die durch Autoit extrem ausgebremst werden, Kollisionsberechnung, Positionsvergleiche usw.
Aber die Berechnungen im "inner Loop" lassen sich auch in eine einfache C- oder Assembler-dll auslagern und dann einfach callen. -
Hi,
irgendwo hier im Forum geistert ein Script von mir rum, ich habs aber selbst nicht mehr gefunden^^
Hier nochmal eine Demo, was man ohne GDI machen kann....
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Hi Spider,
ich hab mich jetzt nicht genau reingefuchst, aber wenn dir die Funktion einen Pointer zurückgibt, dann kannst du sehr wohl mit dllstruct() diesen Datenbereich auslesen.
Einfach an der Position des Pointers mit dllstructcreate("dword[10000]",$pointer_zum_overview-Buffer) eine Struct erstellen und dann per dllstructgetdata() die Daten lesen. -
Hi,
dafür sind die "_Crypt"-Funktionen in AutoIt geeignet!
Diese solltest du in der Hilfe finden -
Hi,
die Punkte auf dem Kreis sind auch ohne trigonometrische Funktionen (sin, cos usw.) zu berechnen.
Kreisfunktion: x²+y²=1 (Einheitskreis) bzw. (x-xm)²+(y-ym)²=r²Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit];Kreisfunktion: x²+y²=1 bzw. (x-xm)²+(y-ym)²=r²
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;Kreisdaten
$mittelpunkt_x = 350
$mittelpunkt_y = 350
$radius = 300
$radius_2 = $radius ^ 2$hgui = GUICreate("Kreis", 700, 700)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hgui)
$hPen = _GDIPlus_PenCreate();zu jeder x-Koordinate den passenden Pixel auf der y-Achse bestimmen
[/autoit] [autoit][/autoit] [autoit]
For $x = 0 To $radius * 0.7071; 8 mal ein Achtelkreis ergibt einen ganzen Kreis; 0.771 = 1/2 * Wurzel aus 2 = sin(45) = cos(45)
$y = Sqrt(($radius_2) - ($x ^ 2)) ;Punkt auf Kreis berechnen
;einzelne Pixel setzen
_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x + $x, $mittelpunkt_y + $y, 1, 1, $hPen)
_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $x, $mittelpunkt_y + $y, 1, 1, $hPen)_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x + $x, $mittelpunkt_y - $y, 1, 1, $hPen)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $x, $mittelpunkt_y - $y, 1, 1, $hPen)_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x + $y, $mittelpunkt_y - $x, 1, 1, $hPen)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x + $y, $mittelpunkt_y + $x, 1, 1, $hPen)_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $y, $mittelpunkt_y - $x, 1, 1, $hPen)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $y, $mittelpunkt_y + $x, 1, 1, $hPen)Next
[/autoit] [autoit][/autoit] [autoit];Vergleich zum GDI+ -Kreis, der den vorhergehenden Kreis "übermalt"
[/autoit] [autoit][/autoit] [autoit]
Sleep(1000)
$hPen = _GDIPlus_PenCreate(0xFF00FF00,2,2)
_GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $radius, $mittelpunkt_y - $radius, $radius * 2, $radius * 2, $hPen); Loop until user exits
[/autoit] [autoit][/autoit] [autoit]
Do
Until GUIGetMsg() = -3; Clean up resources
[/autoit]
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()Für die (schnelle) grafische Darstellung des Kreises ist wichtig, daß jedem "x-Pixel" nicht mehr als die benötigten "y-Pixel" zugeordnet sind!
Daher wird meist nicht ein "ganzer" Kreis berechnet, sondern nur ein Achtel-Kreis, und die Punkte an der x- und y-Achse gespiegelt!
Somit reduziert sich die aufwändige Berechnung auf 12.5%, bzw beschleunigt die Darstelllung um Faktor 8!Weiterhin besteht der Vorteil, zu zu jeder x-Koordinate auch nur genau eine y-Koordinate berechnen zu müssen.
Denn zwangsläufig benötigt man für die Dastellung eines geschlossenen Kreises mehr als die Anzahl von 4*Radius Pixel, nämlich Wurzel aus 2 (1.414) mal mehr...