also ich benutze 3.3.8.0 und bei mir klappt es auch nicht
Beiträge von gem
-
-
also ich arbeite auch schon an einem netten skript

-
vielen dank für die antworten
ich werde mir das mal genauer anschauen und versuchen zu verstehen

-
guten morgen
ich suche verzweifelt an einer möglichkeit in gdiplus einen kreis transprarent zu machen und den rest schwarz. der transparente kreis soll sich auch bewegen können. also ungefähr so wie eine fernrohransicht in einem computerspiel.
ich habe mal ein beispiel gemacht damit ihr versteht was ich meine. wie man sieht ist das nicht sehr schön geskriptet und der kreis ist ein rechteck.
ich würde mich freuen wenn mir jemand ein tipp geben könnte wie ich das machen könnte.example
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
$gui = GUICreate("Example", 400, 400)
GUISetOnEvent(-3, "close")
_GDIPlus_Startup()
$graphics = _GDIPlus_GraphicsCreateFromHWND($gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(400, 400, $graphics)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$rot = _GDIPlus_BrushCreateSolid(0xFF0000FF)
GUISetState()$x = 0
[/autoit] [autoit][/autoit] [autoit]
$y = 0While True
[/autoit] [autoit][/autoit] [autoit]
$info = GUIGetCursorInfo($gui)
If $info <> 0 Then
If $x <> $info[0] Or $y <> $info[1] Then
_GDIPlus_GraphicsClear($buffer, 0xFFFFFFFF)_GDIPlus_GraphicsFillRect($buffer, 100, 100, 100, 100, $rot)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsFillRect($buffer, 0, 0, $x - 100, 400)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillRect($buffer, $x + 100, 0, 400 - $x + 100, 400)
_GDIPlus_GraphicsFillRect($buffer, $x - 100, 0, 200, $y - 100)
_GDIPlus_GraphicsFillRect($buffer, $x - 100, $y + 100, 200, 400 - $y + 100)_GDIPlus_GraphicsDrawImage($graphics, $bitmap, 0, 0)
[/autoit] [autoit][/autoit] [autoit]
$x = $info[0]
$y = $info[1]
EndIf
EndIf
WEndFunc Close()
[/autoit]
_GDIPlus_Shutdown()
Exit
EndFunc ;==>Close -
doch habe ich

komisch bei mir bleibt die fps zahl konstant egal ob die maus drin oder draußen ist.aber ich werde trozdem nächstes mal das mit dem oneventmode arbeiten,danke. benutzt du zufällig vista oder win7
jo das mit adlib und dem oneventmode werde ich ändern
leider funktioniert das spielt in deiner version nicht mehr aber ich werde die beiden sachen mal ändern, danke -
das die animation so unflüssig ist liegt nicht an der GUImessage schleife, sondern daran das sich die felder immer ruckartig um 25px verschieben
oder ruckelt bei dir auch das bitmap das gezeichnet wird? wieviel fps hast du? -
danke

1. ich glaub das liegt daran das sich die felder nicht dynamisch sondern ruckartig bewegen . das werde ich aber in der nächsten version ändern. da wird dann auch das blaue feld einen eigeen bilschirm bekommen
2. achso das habe ich vergessen ich nutze die GDIP.au3 LINK weil dort mehr funktionen drin sind, die ich aber bei diesem skript garnicht genutzt habe . das habe ich vergessen, nächstes mal nehm ich die normale
-
[Blockierte Grafik: http://www10.pic-upload.de/27.11.12/lajan65nrtq.jpg]
ich habe mal aus spaß ein multiplayer spiel geskriptet.
das rote feld wird mit den pfeiltasten gesteuert und muss versuchen das, das blaue feld nicht mehr auf dem feld zusehen ist. das blaue feld wird mit wasd gesteuert und muss versuchen auf das rote feld zukommen.ändern der konstanten
$MAP_SIZE die größe der karte auf der gespielt wird
$SCREEN_SIZE bildschirmgröße
$SPEED geschwindigkeit. je niedriger desto schneller
$DENSITY die dichte der schwarzen felder. je niedriger desto mehr schwarze feldermit q könnt ihr die musik an oder aus machen
neu
ich habe nun das ganze auch nochmal in purebasic programmiert um mal den unterschied zu sehen
autoit 50fps
purebasic 60fpsfreue mich über kritik
-
@kunstlust
du hast recht nicht nur die geschwindigkeit ist wichtig, wie du schon sagtest auch das handhaben einer programmiersprachen. allerdings musste ich in letzter zeit viele mathematische berechnungen in kurzer zeit erledigen und dann merkt man wie langsam autoit ist. ich erhoffe mir durch die vergleiche das man sieht welche schleife schneller ist und wie diese im gegensatz zu anderen programmiersprachen sind um dann eventuell programme wo die geschwindigkeit wichtig ist in einer anderen programmiersprachen zu schreiben. mit diesen vielen beispielen kann man sich ja dann eine raussuchen man sieht sehr schnell wie die schleifen in der jeweiligen sprachen aussehen.
-
könntet ihr mal ein beispiel skript in autoit schreiben das die geschwindigkeit in mehreren berreichn (funktionen,verzweigungen,schleifen) am besten testet. ich könnte dieses dann in mehren programmiersprachen schreiben, damit hätte man dann ein besseren vergleich. allerdings fällt mir nicht ein perfektes geshwindigkeitsskript ein.
-
ich habe mal aus interesse das gleiche skript so gut wie möglich in mehreren programmiersprachen geschrieben um zu messen wie viel zeit diese dafür benötigen. in dem skript wird eine variable so lange um 10 erhöht bis diese variable 100000000 erreicht. dieser vorgang wird viermal ausgeführt damit man einen durchschnittswert erhält. ich hoffe das die skripte auch stimmen und die zeitwerte auch.
AutoIt
[autoit]$diff = 0
[/autoit]
for $a = 0 to 3
$i = 0
$timer = TimerInit()
while $i <> 100000000
$i += 10
WEnd
ConsoleWrite(TimerDiff($timer)&@CRLF)
$diff += TimerDiff($timer)
Next
ConsoleWrite($diff/4&@CRLF)
1. durchlauf: 10584.4285381053ms
2. durchlauf: 10586.5284718916ms
3. durchlauf: 10490.6476379452ms
4. durchlauf: 10606.4572835072ms
durchschnitt: 10567.0634941793msBlitz3D
FreeBASIC
Code
Alles anzeigenDeclare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long dim as long i,diff,timer1 dim as integer a diff = 0 For a = 0 To 3 i = 0 timer1 = GetTickCount() While i <> 100000000 i += 10 Wend Print GetTickCount() - timer1 diff += GetTickCount() - timer1 Next Print diff/4 sleep
1. durchlauf: 31ms
2. durchlauf: 31ms
3. durchlauf: 32ms
4. durchlauf: 31ms
durchschnitt: 31.25msJava
Code
Alles anzeigenpublic class Time { public static void main(String[] args) { long diff = 0; for(int a = 0; a < 4; a++){ long i = 0; long timer = System.currentTimeMillis(); while(i!=100000000){ i += 10; } System.out.println(System.currentTimeMillis()-timer); diff += System.currentTimeMillis()-timer; } System.out.println(diff/4); } }
1. durchlauf: 31ms
2. durchlauf: 15ms
3. durchlauf: 16ms
4. durchlauf: 16ms
durchschnitt: 19msPython
Code
Alles anzeigenimport time diff = 0 for a in range(0,4): i = 0 timer = time.time() while i <> 100000000: i += 10 print time.time() - timer diff += time.time() - timer print diff/4
1. durchlauf: 2797.00016975ms
2. durchlauf: 2812.00003624ms
3. durchlauf: 2796.99993134ms
4. durchlauf: 2812.99996376ms
durchschnitt: 2804.75002527msLua
Code
Alles anzeigenrequire "socket" diff = 0 for a = 0,3 do i = 0 timer = socket.gettime()*1000 while i ~= 100000000 do i = i + 10 end print(socket.gettime()*1000 - timer) diff = diff + socket.gettime()*1000 - timer end print(diff/4)
1. durchlauf: 2031.25ms
2. durchlauf: 2046.875ms
3. durchlauf: 2062.5ms
4. durchlauf: 2062.5ms
durchschnitt: 2050.78125msRuby
ActionScript
Code
Alles anzeigenonFrame (1) { var diff = 0; var a:int; var i:uint = 0 var timer = 0 for(a = 0; i < 4;i++){ i = 0; timer = flash.utils.getTimer(); while(i != 100000000){ i += 10; } trace(flash.utils.getTimer() - timer); diff += flash.utils.getTimer() - timer; } trace(diff/4) }
komischerweise stürzt swish max immer ab wenn ich es starte aber ohne error meldung.was haltet ihr davon?
welche skripte könnte man noch schneller machen? -
ich habe mal eine verständnis frage:
werden bei windows standard button schon im vorraus für jedes event (hot, disabled etc.) bitmaps angelegt oder wird ein bitmap erst erstellt wenn dieses evnet eintritt. z.b wenn die maus über ein button geht das dieser button dann im hot modus gemalt wird. -
super danke für die ganzen antworten

-
wie bekomm ich ein string return von einer freebasic dll in autoit angezeigt so hat es leider nicht geklappt:
[autoit]$dll = DllOpen("Test.dll")
[/autoit]
$result = DllCall($dll,"wstr","Text")
MsgBox(0,"",$result[0]) -
ich hab zwar rumprobiert aber habs nicht hinbekommen

vieleicht so:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 442, 192, 124)
$Dummy1 = GUICtrlCreateDummy()
Dim $Form1_AccelTable[1][2] = [["a", $Dummy1]]
GUISetAccelerators($Form1_AccelTable)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Dummy1
MsgBox(0,"","")
a()
EndSwitch
WEndFunc a()
[/autoit]
MsgBox(0,"","")
EndFunc -
die rechnung ist einfach falsch
-
das ging ja schnell

vielen dank
-
also ich finde wenn man es sorgfältig durchliest fällt einem der fehler auf. aber auf alle fälle ganz lustig

-
bei mir ist noch die task- und fensterleiste sichtbar. ich fände es halt gut wenn man nur noch das video sehen würde.
-
gefällt mir richtig gut.
ich hätte noch eine kleine idee, vielleicht das man mit einer taste das video im fullscreen bekommt