Auch eine Spiegelung sollte möglich sein.
Mit GDI+ gehts, mit der Irrlciht-Engine keine Ahnung.
Beiträge von nuts
-
-
Schau mal hier rein: Game Launcher
Ist jetzt aber nicht ganz soooo einfach. Mit GDI+ gehts sicherlich auch. -
Ja, wollte den Server schonen (der hats ja grad eh schwer).
Müsste doch hier oder im englischen Forum zu finden sein? -
Bsp (Skripte natürlich noch trennen):
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;Script2 -> Sender
#include "MessageHandler.au3"$Local_ReceiverID_Name = "Script2sReceiverID";This is the ID that the other script will use to send data
[/autoit] [autoit][/autoit] [autoit]
$Remote_ReceiverID_Name = "Script1sReceiverID";This is the ID of the script we want to send data too$hwnd = _SetAsReceiver($Local_ReceiverID_Name)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite("hwnd of the Local_ReceiverID_Name is " & $hwnd & @crlf)
$myFunc = _SetReceiverFunction("_MyFunc2")
ConsoleWrite("My data receiver function is " & $myFunc & @crlf)$Str = InputBox(@ScriptName," I am " & @ScriptName & @crlf & "Enter some data to be sent to the other script")
[/autoit] [autoit][/autoit] [autoit]$iSent = _SendData($Str,$Remote_ReceiverID_Name)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
sleep(100)
WEndFunc _MyFunc2($vText)
[/autoit] [autoit][/autoit] [autoit]
Msgbox(0,@ScriptName,@ScriptName & " has received a message" & @crlf & $vText)
Exit
EndFunc;Script1 -> Empfänger
[/autoit] [autoit][/autoit] [autoit]
#include "MessageHandler.au3"$Local_ReceiverID_Name = "Script1sReceiverID";This is the ID that the other script will use to send data
[/autoit] [autoit][/autoit] [autoit]
$Remote_ReceiverID_Name = "Script2sReceiverID";This is the ID of the script we want to send data too$hwnd = _SetAsReceiver($Local_ReceiverID_Name)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite("hwnd of the Local_ReceiverID_Name is " & $hwnd & @crlf)
$myFunc = _SetReceiverFunction("_MyFunc2")
ConsoleWrite("My data receiver function is " & $myFunc & @crlf)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(1000)
WEndFunc _MyFunc2($vText)
[/autoit]
Msgbox(0,@ScriptName,"I am " & @ScriptName & " I have received some data" & @crlf & @crlf & $vText & @crlf & @crlf & "And now I'm sending the data back")
$iSent = _SendData($vText,$Remote_ReceiverID_Name)
Exit
EndFunc -
Mal ein Bsp. mit Sinus für den Wertebereich 0-3:
[autoit]
[/autoit]
Global Const $pi = 4 * ATan(1)
global $calc
for $i = 1 to 20 ; für $i gegen +/- unendlich bewegt sich $calc immer zwischen 0 und 3
$calc = 1.5*sin($i*$pi/2)+1.5 ;die Amplitude (Distanz bei dir) wäre innerhalb der Sinusfunktion zu beeinflussen.
ConsoleWrite($calc & @CRLF)
next -
Einfach das Skript in den Autostart schieben?
-
Das Script ist teil meine projektes und dient dazu ein Objekt in Raum hin un her zu bewegen.
Ohne dein Skript genau zukennen, aber wäre eine Sin / Cos Funktion ohne die Umkehr nicht besser?
Mit If ... then braucht die ganze Funktion länger, ist zwar nur minimal, könnte aber zum Ruckeln führen.Das Problem bleibt trotzdem, eine Erklärung wäre interessant.
-
Könntest du das nochmal langsam erklären? :wacko:
Die Bewegung wird doch in Zeile 38-40 berechnet. Wieso sollte man sich zwischen Start und Zielpunkt nur in ganzen Zahlen bewegen dürfen?edit \ Also am Array liegts schonmal nicht. Der Rechenfehler tritt auch bei einfachen Variablen auf.
Mal das Problem vereinfacht - bei nicht ganzzahliger Bewegung kommt es zum Fehler -> Nur warum?
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
global $X = 0
Global $Y = 9 ;Bei 10 funktionierts, da $Step ganzzahlig wird
global $step = ($y-$x)/5
global $pos = $xHotkeyset("{ESC}", "_Exit")
[/autoit] [autoit][/autoit] [autoit]
func _exit()
Exit
endfuncwhile 1
[/autoit] [autoit][/autoit] [autoit]
_Calc()
Sleep(150)
wendFunc _Calc()
[/autoit]
$pos += $step
if $pos = $x or $pos = $y then $step = -$step
ConsoleWrite($pos & @CRLF)
EndFunc -
Ja genau, dass ist nur ein Bsp. aus meinem Archiv (Zweck haste richtig erkannt) für WM_POWERBROADCAST damit du heute nacht bissle basteln kannst.
Das ist mit den neueren OS etwas "verwirrend" geworden. -
Unter Vista / Win7 (WinXP SP3?) können Anwendungen einen Systembefehl wie "Ruhezustand" nicht mehr verhindern/verzögern.
D.h. mit den 10 Sekunden verzögern wirds schwierig.Den Befehl zum Ruhezustand abfangen geht über WM_POWERBROADCAST
Vielleicht hilft das hier: http://msdn.microsoft.com/en-us/library/aa373247(VS.85).aspx ?Bsp. wie man WM_POWERBROADCAST verwenden kann:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Global $WM_POWERBROADCAST = 536
Global $PBT_APMRESUMESUSPEND = 0x0007$hGUI = GUICreate("", 1, 1, 1, 1)
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_POWERBROADCAST, "Standby")
GUISetState(@SW_HIDE, $hGUI)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$GUIMsg = GUIGetMsg()
Switch $GUIMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndFunc Standby($hWnd, $Msg, $wParam, $lParam) ;für die aktion nach dem standby/ruhezustand
[/autoit]
Switch $wParam
Case $PBT_APMRESUMESUSPEND
MsgBox(1, "", "Bin grad aufgewacht")
Exit
EndSwitch
EndFunc ;==>StandbyEdit \ Bzw. verhindern könnte noch klappen.
Befehl abfangen -> verhindern -> Aktionen -> warten -> selbst den Ruhezustand auslösen. -
Probiers doch mal aus
Beim Rechnen mit den Arraywerten wird $animator_array[$i][9]) nichtmehr 0 (warum auch immer) und die Vektoren werden nichtmehr umgedreht. -
Also verstehen tu ichs auch nicht.
[autoit]
Workaround:
[/autoit][autoit][/autoit][autoit]
Func zeichne_particle()For $i = 0 To UBound($animator_array) - 1
[/autoit]
$animator_array[$i][9] += ($animator_array[$i][6]) ; X Bewegung
$animator_array[$i][10] += $animator_array[$i][7] ; Y Bewegung
$animator_array[$i][11] += $animator_array[$i][8] ; Z Bewegung
If ($animator_array[$i][0] =Round($animator_array[$i][9],1)) Or ($animator_array[$i][3] = $animator_array[$i][9]) Then ; Wenn Start- oder Zielpunkt erreicht wurden.
_ArrayDisplay($animator_array)
If $animator_array[$i][12] = False Then
MsgBox(0,"","")
particle_delete_effect($i)
$i -= 1
Else
$animator_array[$i][6] = -1*$animator_array[$i][6]
$animator_array[$i][7] = -1*$animator_array[$i][7]
$animator_array[$i][8] = -1*$animator_array[$i][8]
EndIf
EndIf
Next
EndFuncEdit \ Gibt das eine grafische Bewegungsdarstellung?
Weil diese If ... Then Bedingung erzeugt dann ein Ruckeln (imho bin auch GDI+ Anfänger).
Vielleicht besser gleich auf eine Sin / Cos Funktion ausweichen? -
Design nicht im grafischen Sinn sondern im Skriptaufbau.

-
Ist nett gemacht.
Es gibt ein paar Bug's, die imho ein Designfehler sind.
z.B. beim Beenden eines Alarms.
Ich würde alle Variablen, die innerhalb der Funktionen benutzt, jedoch nicht innerhalb deklariert werden, am anfang global deklarieren. -
Zeile 6 & 7
[autoit]
Du musst auch $Pos2 auswerten
[/autoit]
$pos = MouseGetPos()
$x1 = $pos[0]
$y1 = $pos[1]
Sleep(3000)
MouseMove($x1+100, $y1 +50)
$pos2 = MouseGetPos()
$x2 = $pos2[0]
$y2 = $pos2[1]
MsgBox(0, "Punkte", $x1 & " " & $y1 & " " & @LF & " " & $x2 & " "& $y2) -
Also bei mir wird nichts hell
Sobald eine Bedingung in Switch ... Endswitch erfüllt wird, wird die Schleife verlassen.
Ausnahme: ContinueCase (wofür mir bis heute noch keine sinnvolle Anwedungsmöglichkeit eingefallen ist) -
Mit _ArrayAdd haste jetzt eben die Redim-Bremse (um die ich mich, zugegeben wenig elegant, rumgemogelt habe) doch eingebaut.
Du könntest auch das return Array mit UBound($Matches) -1 deklarieren, befüllen und anschließend einmal Redimen.
Oder so ein Stringgebastel (das geht bestimmt noch besser ...).P.S. Der Regexbuddy ist ja cool

-
Hm was habt ihr denn da für tolle Progs.? Demnach stimmt das Pattern.
Noch ein versuch zu später Stunde.
Spoiler anzeigen
[autoit]
[/autoit]
#include <Array.au3>
$String = "34.05.2009"&"|"&"19.14.1887"&"|"&"16.04.1990"&"|"&"01.01.1900"&"|"&"7.5.08"&"|"&"1.10.1900"&"|"&"31.5.08"&"|"&"40.13.09"
$split = StringSplit($String, "|")
global $sreturn
;_ArrayDisplay($split)
for $i = 1 to $split[0]
$Matches = StringRegExp($split[$i],"((([0-2][1-9])|(3[0-1]))|(\b[1-9]))\.(((0[1-9])|(1[0-2]))|([1-9]))\.((\d{4}\b)|(\d{2}\b))",2)
if IsArray($Matches) then $sreturn &= $Matches[0] &"|"
next
$sreturn = StringTrimRight($sreturn, 1)
$areturn = stringsplit($sreturn, "|")
MsgBox(1, "",$sreturn)
_ArrayDisplay($areturn)edit \ Rückgabe noch etwas angepasst.
-
Du möchtest quasi _Dateisvalid in sämtlichen Formatsvarianten als Regexp? Nur damit man auch weiss was dein Ergebnis sein soll.
Dein Input ist jetzt der ganze "String" geprüft soll aber jede Zeile einzeln werden:
[autoit]
[/autoit]
#include <Array.au3>
$String = "34.05.2009"&"|"&"19.14.1887"&"|"&"16.04.1990"&"|"&"01.01.1900"&"|"&"7.5.08"&"|"&"1.10.1900"&"|"&"31.5.08"&"|"&"40.13.09"
$split = StringSplit($String, "|")
_ArrayDisplay($split)
for $i = 1 to $split[0]
$Matches = StringRegExp($split[$i],"((([0-2][1-9])|(3[0-1]))|(\b[1-9]))\.(((0[1-9])|(1[0-2]))|([1-9]))\.((\d{4}\b)|(\d{2}\b))",1)
_ArrayDisplay($Matches)
next
exit
So siehts schon besser aus
Am Pattern muss noch was gedreht werden. -
Für ein Listview mit Windows-Standard Icons müsste ich noch ein Bsp. haben.
Bei Bedarf einfach melden.Ansonsten sehr schön.
