Wenns dann noch nicht geht, tippe ich auf fehlenden Codec (also nicht im System installiert).
Müsste aber eigentlich gehen, solange du es im Windows Media Player öffnen kannst.
Beiträge von L3viathan
-
-
Kristallkugel geht grad nicht.
Code?
edit:
Zitatwas willst mir mit ner Kristallkugel sagen?
und was fürn code`?Ich übersetze:
Was hast du probiert? Zeig mir deinen Versuch!Und bitte Antworten nicht per PM, sondern hier.
-
Hallo allerseits!
Viele kennen bestimmt die bekannte Quizshow Jeopardy!, die zumindest mir hauptsächlich durch das alljährliche Hacker-Jeopardy des CCC bekannt ist.
Ich habe das also mal in AutoIt nachgebaut, man kann es dann (wenn es fertig ist) als Partyspiel oder so verwenden.Es ist soweit funktionsfähig, nur leider fehlen noch Funktionen wie Double-Jeopardy-Felder. Und da ich die Hardware dazu noch nicht habe, sind die drei "Buzzer" vorerst auf den Tasten 1, 2 und 3 definiert.
Ich empfehle euch, das RAR-File herunterzuladen, da dort auch Bilder und Sounds enthalten sind. (Hinweis: Etwa 10 Sekunden nach Programmstart laut "This... is Jeopardy!" rufen)
Funktionen&Spielablauf
Nach einem kleinen Intro geht es los: Die Usernamen werden vergeben, wenn ihr nur 2 User braucht, einfach beim dritten Mal ESC drücken.
Dem Host steht es dann frei, die Person zu bestimmen, die das erste Feld auswählen darf (5 Kategorien à 5 Schwierigkeitsstufen). Dabei werden die Kategorien und Fragen aus der selbsterklärenden QDB.ini ausgelesen, man kann also die Thematik (hier: AutoIt & Co.) den Gegebenheiten anpassen.
So der entsprechende Button geklickt wurde, erscheint die Antwort unten im Benachrichtigungsbereich, der Host liest die Frage währenddessen vor. Nun können die Spieler die Tasten drücken und mit einer Frage antworten (z.B. "Das Wahrzeichen von Paris." - "Was ist der Eiffelturm?"). Der Host entscheided dann mittels Ja/Nein-MsgBox, ob die Frage richtig beantwortet wurde. Wenn nein, ist der nächste Spieler an der Reihe (das System "merkt" sich die Reihenfolge, in welcher die Spieler auf die Buzzer gehauen haben).
Wenn keiner antworten will, drückt der Host die Leertaste (der Button wird so auch deaktiviert).
Wenn alle Felder beantwortet wurden, wird der/die Sieger bekanntgegeben.Die Spielstände werden laufend gespeichert. Also wirklich laufend, nach jeder Aktion.
Dem Host steht eine Möglichkeit zur "Manipulation" des Spiels zur Verfügung, mit Shift-0 erhellt er eine Eingabezeile, mit der er Befehle wie Beenden und Spielstand löschen ("x"), Neustart und Spielstand verwerfen ("r"), Punkte jetzt auswerten und Spiel beenden ("e") sowie die Reaktivierung einzelner Buttons ("a$x$y", $x=Spalten 0-4, $y=Zeilen 0-4), die Manipulation der Punkte ("uc$x$y", $x=Spieler 0-2, $y=Punkte) sowie die Änderung des Usernames ("un$x$y", $x = Spieler 0-2, $y = neuer Name) zur Verfügung.Skriptvorschau
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;~ #include <WindowsConstants.au3>GUICreate("Jeopardy", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000)
[/autoit] [autoit][/autoit] [autoit]
;Berechnungen&Definitionen:
$ContinueGame = False
$sQDB = "QDB.ini"
$sAutoSave = "autosave.ini"
$sBGMusic = "10minbg.mp3"
If FileExists($sAutoSave) Then $ContinueGame = True
$xborder = 10; border
$xwidth = @DesktopWidth - 2 * $xborder
$yborder = 10; border
$ywidth = @DesktopHeight - 2 * $xborder;GUI-Aufbau:
[/autoit] [autoit][/autoit] [autoit];Developer/Host-Tool:
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("+0","_AdminPanel")
;--Dim $buttons[5][5]
[/autoit] [autoit][/autoit] [autoit]
Dim $captions[5]
Dim $names[3]
Dim $credits[3] = [0, 0, 0]
Dim $username[3] = ["User1", "User2", "User3"]
Dim $buttonsleft = 25For $x = 0 To 4
[/autoit] [autoit][/autoit] [autoit]
$captions[$x] = GUICtrlCreateLabel("Kategorie" & $x, $xborder + $x * ($xwidth / 5), $yborder, (($xwidth - 20) / 5), 50, 0x01)
GUICtrlSetFont(-1, 16)
For $y = 0 To 4
;~ $buttons[$x][$y] = GUICtrlCreateButton($y+1 & "00",$xborder+$x*($xwidth/5),$yborder+50+$y*120,(($xwidth-20)/5),100)
$buttons[$x][$y] = GUICtrlCreateButton($y + 1 & "00", $xborder + $x * ($xwidth / 5), $yborder + 50 + $y * ($ywidth / 8), (($xwidth - 20) / 5), 100)
GUICtrlSetFont(-1, 16)
Next
NextFor $x = 0 To 2
[/autoit] [autoit][/autoit] [autoit]
$names[$x] = GUICtrlCreateLabel("Username: 0", $xborder + $x * ($xwidth / 3), $yborder + 100 + 5 * ($ywidth / 8), (($xwidth - 20) / 3), 100, 0x01)
GUICtrlSetFont(-1, 20)
Next
GUICtrlSetColor($names[0], 0xff0000)
GUICtrlSetColor($names[1], 0x00ff00)
GUICtrlSetColor($names[2], 0x0000ff);Notify-feld:
[/autoit] [autoit][/autoit] [autoit]
$oNotify = GUICtrlCreateLabel("Willkommen!", 0, $yborder + 100 + 6 * ($ywidth / 8), @DesktopWidth, 100, 0x01)
GUICtrlSetBkColor(-1, 0xaaaaaa)
GUICtrlSetFont(-1, 26)$player1 = GUICtrlCreateDummy()
[/autoit] [autoit][/autoit] [autoit]
$player2 = GUICtrlCreateDummy()
$player3 = GUICtrlCreateDummy()
$host = GUICtrlCreateDummy()
Dim $accel[4][2] = [["1", $player1],["2", $player2],["3", $player3],["{SPACE}", $host]]
GUISetAccelerators($accel)
_Highlight(0, 0)
_Highlight(1, 0)
_Highlight(2, 0)
;GUI-Aufbau EndeGUISetState()
[/autoit] [autoit][/autoit] [autoit]_LoadCaptions($captions)
[/autoit] [autoit][/autoit] [autoit]If $ContinueGame Then
[/autoit] [autoit][/autoit] [autoit]
_LoadSaveFile()
Else
SoundPlay("3mintheme.mp3",0)
_ThisIsJeopardy()
_AskForNames()
EndIf
_updateCredits()
SoundPlay("10minbg.mp3",0)
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
Case Else
For $x = 0 To 4
For $y = 0 To 4
If $msg = $buttons[$x][$y] Then _ClickButton($x, $y)
Next
Next
EndSwitch
WEndFunc _Notify($sText = "", $iType = 0)
[/autoit] [autoit][/autoit] [autoit]
;iType: 0 = normal, 1 = Info, 2 = Error
GUICtrlSetData($oNotify, $sText)
Switch $iType
Case 1
GUICtrlSetColor($oNotify, 0x0000ff)
Case 2
GUICtrlSetColor($oNotify, 0xff0000)
Case Else
GUICtrlSetColor($oNotify, 0x000000)
EndSwitch
EndFunc ;==>_Notify
Func _LoadCaptions(ByRef $captions)
$sections = IniReadSectionNames($sQDB)
For $i = 1 To $sections[0]
GUICtrlSetData($captions[$i - 1], $sections[$i])
Next
EndFunc ;==>_LoadCaptions
Func _ClickButton($x, $y)
Local $text = IniRead($sQDB, GUICtrlRead($captions[$x]), $y, "")
_Notify($text, 1)
While 1
Switch GUIGetMsg()
Case $player1
$ret = _Play(0, $y)
If $ret Then ExitLoop
Case $player2
$ret = _Play(1, $y)
If $ret Then ExitLoop
Case $player3
$ret = _Play(2, $y)
If $ret Then ExitLoop
Case $host
ExitLoop
EndSwitch
WEnd
GUICtrlSetState($buttons[$x][$y], 128)
$buttonsleft -= 1
IniWrite($sAutoSave, "buttons", $x & $y, "1")
If $buttonsleft = 0 Then _FinishGame()
EndFunc ;==>_ClickButton
Func _Highlight($user, $set = 1)
Switch $set
Case 0
GUICtrlSetBkColor($names[$user], 0xffffff)
Case Else
GUICtrlSetBkColor($names[$user], 0xaaaaaa)
EndSwitch
EndFunc ;==>_HighlightFunc _Play($who, $y)
[/autoit] [autoit][/autoit] [autoit]
_Highlight($who, 1)
$res = MsgBox(4, "Jeopardy", "Gewonnen?")
Switch $res
Case 6;YES
$credits[$who] += GUICtrlRead($buttons[0][$y])
_Notify($username[$who] & " hat " & GUICtrlRead($buttons[0][$y]) & " Punkte gewonnen!")
Case 7;NO
$credits[$who] -= GUICtrlRead($buttons[0][$y])
_Notify($username[$who] & " hat " & GUICtrlRead($buttons[0][$y]) & " Punkte verloren!", 2)
EndSwitch
_updateCredits()
_Highlight($who, 0)
If $res = 6 Then Return True
Return False
EndFunc ;==>_PlayFunc _updateCredits()
[/autoit]
For $i = 0 To 2
GUICtrlSetData($names[$i], $username[$i] & ": " & $credits[$i])
IniWrite($sAutoSave, "credits", $i, $credits[$i])
Next
EndFunc ;==>_updateCredits
Func _LoadSaveFile()
For $i = 0 To 2
$credits[$i] = IniRead($sAutoSave, "credits", $i, 0)
$username[$i] = IniRead($sAutoSave, "usernames", $i, "User" & $i+1)
Next
For $x = 0 To 4
For $y = 0 To 4
If IniRead($sAutoSave, "buttons", $x & $y, 0) = 1 Then
GUICtrlSetState($buttons[$x][$y], 128)
$buttonsleft -= 1
EndIf
Next
Next
If $buttonsleft < 1 Then _Reset()
EndFunc ;==>_LoadSaveFile
Func _FinishGame()
If $credits[0] > $credits[1] And $credits[0] > $credits[2] Then $w=0
If $credits[1] > $credits[0] And $credits[1] > $credits[2] Then $w=1
If $credits[2] > $credits[1] And $credits[2] > $credits[0] Then $w=2
If $credits[0] = $credits[1] Or $credits[2] = $credits[1] Or $credits[0] = $credits[2] Then
If $credits[0] = $credits[1] And $credits[1] = $credits[2] Then
_Notify("Alle gewinnen! (Jeweils mit " & $credits[0] & " Punkten)",1)
ElseIf $credits[0] = $credits[1] Then
_Notify($username[0] & " und " & $username[1] & " teilen sich den Sieg mit jeweils " & $credits[0] & " Punkten.",1)
ElseIf $credits[0] = $credits[2] Then
_Notify($username[0] & " und " & $username[2] & " teilen sich den Sieg mit jeweils " & $credits[0] & " Punkten.",1)
Else
_Notify($username[2] & " und " & $username[1] & " teilen sich den Sieg mit jeweils " & $credits[1] & " Punkten.",1)
EndIf
Else
_Notify($username[$w] & " gewinnt mit " & $credits[$w] & " Punkten!",1)
EndIf
EndFunc
Func _Reset()
FileDelete($sAutoSave)
Exit ShellExecute(@ScriptFullPath)
EndFunc
Func _AskForNames()
For $i = 0 To 2
$answer = InputBox("Jeopardy","User " & $i+1 & ", wie möchten Sie heißen?","User" & $i+1)
$username[$i] = $answer
IniWrite($sAutoSave,"usernames",$i,$answer)
Next
EndFunc
Func _AdminPanel()
$cmd=InputBox("Jeopardy","Befehl?")
Select
Case $cmd = "r"
_Reset()
Case $cmd = "x"
FileDelete($sAutoSave)
Exit
Case $cmd = "e"
$buttonsleft = 0
_FinishGame()
Case StringInStr($cmd,"uc") = 1
$credits[StringTrimLeft(StringLeft($cmd,3),2)] = StringTrimLeft($cmd,3)
IniWrite($sAutoSave,"credits",StringTrimLeft(StringLeft($cmd,3),2),StringTrimLeft($cmd,3))
Case StringInStr($cmd,"un") = 1
$username[StringTrimLeft(StringLeft($cmd,3),2)] = StringTrimLeft($cmd,3)
IniWrite($sAutoSave,"usernames",StringTrimLeft(StringLeft($cmd,3),2),StringTrimLeft($cmd,3))
Case StringInStr($cmd,"a") = 1
GUICtrlSetState($buttons[StringTrimLeft(StringLeft($cmd,2),1)][StringRight($cmd,1)],64)
EndSelect
_updateCredits()
EndFunc
Func _ThisIsJeopardy()
$gui3 = GUICreate("This is BG",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000080)
GUISetBkColor(0x000000)
GUISetState()
$gui2 = GUICreate("This is Jeopardy!",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000080)
GUISetBkColor(0x000000)
GUICtrlCreatePic("jeopardy_logo.jpg",@DesktopWidth/2-221,@DesktopHeight/2-63,443,127)
WinSetTrans("This is Jeopardy!","",0)
GUISetState(@SW_SHOW,$gui2)
For $i=0 To 255 Step 2
Sleep(50)
WinSetTrans("This is Jeopardy!","",$i)
Next
GUIDelete($gui3)
Sleep(3000)
For $i=255 To 0 Step -5
Sleep(80)
WinSetTrans("This is Jeopardy!","",$i)
Next
GUIDelete($gui2)
EndFuncHinweis: Die Sounds sind von YouTube gerippt, dürfte kein Problem sein, oder?
-
Was steht denn unter Fehlercode 13? -
Geht nicht. Du kannst di Richtung des Marquee-Balken nicht beeinflussen.
-
Abgesehen davon, dass das:
ZitatAuch könnten Benutzer an den ini Dateien rumspielen
bewuust so ist:
Der Thread ist anderthalb Jahre alt. Seitdem gab es ein paar neue AutoIt-Versionen, daher vermutlich der Fehler.
Wegen deinen verlangten Funktionen:Ich stelle normalerweise hier nur Sachen hoch, die ich selber brauche. Offenbar brauchte ich das, was du brauchst, nicht.
Es gibt aber haufenweise andere (neuere, bessere) Setupskripte hier im Forum, einfach mal genauer suchen

-
Ohne den Code getestet zu haben: Vermutlich musst du erstens die Anführungszeichen um Chr(37) entfernen, zweitens das Array zweidimensional erstellen.
Momentan ist es eindimensional. Deshalb gibt es auch Fehler, wenn du versuchst auf $aRepl[1][$i] zuzugreifen.
Also dann auch das Array mit Local $aRepl[2] definieren. -
Schöne Sache, das hätte ich damals bei meinem Akkordprogramm brauchen können.
Wenn du nichts zu tun hast, dann mach doch das daraus, was ich damals versucht hatte: Ein Tool zum Transponieren.
-
-
Naja, GANZ billig kann man die Gleichung so lösen:
[autoit]
[/autoit]
$gleichung="x+6 == 0"
For $i=-1000 To 1000 Step 1
If(Execute(StringReplace($gleichung,"x",$i/100))) Then MsgBox(64,"Lösung","x ist " & $i/100)
ConsoleWrite(Execute(StringReplace($gleichung,"x",$i/100)) & @CRLF)
ConsoleWrite(StringReplace($gleichung,"x",$i/100) & @CRLF)
Next -
Das mit der Großzügigkeit ist nicht erst seit Vista/7 so. Schon vor Jahren erinnere ich mich, bei MS angerufen zu haben, und ohne einen Nachweis einen neuen Produkt-Key bekam... (war aber wirklich, ehrlich, legal
) -
ClearType? Also Schriftenglättungseinstellungen.
-
Kommt drauf an.
Wenn ich das richtig verstehe, arbeitet eine 128-bit-Verschlüsselung mit Primzahlen der Bit-Länge 128, also Zahlen bis 2^128 (38-stellig).
Eine 4096-Bit-Verschlüsselung (das stärkste, dass mir je untergekommen ist), arbeitet daher mit bis zu 1233-stelligen Zahlen. -
Fresapore: Stimmt! (Mathe ist lange her)
Aber wir haben ja jetzt AspirinJunkies Lösung.
-
Wenn wir das mal von autoit unabhängig sehen, wäre eine Vektorgleichung am einfachsten. Dann setzt du den Betrag des Vektors mit 1 gleich, und das Ergebnis müsste erscheinen

Aber hast du deine Lösung mal ausprobiert? Bei mir kommt je Wurzel 2 raus, was doch stimmen müsste... du musst allerdings noch die x- und y-Werte des ersten Punkts addieren.
edit: Hier als UDF umgeschrieben:
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
;; Bewegung des Punktes 3 in einer Sekunde auf der Schrägen:
$array=_Math_GetXYFromPointsandLength(1,1,3,3,1)
_ArrayDisplay($array)
Func _Math_GetXYFromPointsandLength($X1,$Y1,$X2,$Y2,$Schritt)
$h = Abs($X1-$X2)
$b = Abs($Y1-$Y2)$LaengeDia = Sqrt($h^2 + $b^2)
[/autoit] [autoit][/autoit] [autoit]$Prozent = ($LaengeDia/100)*$Schritt
[/autoit] [autoit][/autoit] [autoit]$x3 = (100/$h)*$Prozent + $x1
[/autoit]
$y3 = (100/$b)*$Prozent + $y1
Local $return[2] = [$x3,$y3]
Return $return
EndFunc -
Ich würde sagen, du kannst die Leertaste nicht doppelt verwenden. Soll heißen: Du brauchst eine andere Taste, die du gedrückt hältst (oder zweimal drückst - zum Starten und zum Beenden), während das Skript dann die Leertaste wiederholt drückt.
-
Das erste Skript sieht richtig aus.
Beim zweiten musst du STdYControlServer durch WarnService ersetzen. -
Das schon, aber nicht das:
[autoit]
[/autoit]
Func _CreateService($sComputerName, $sServiceName, $sDisplayName, $sBinaryPath, $sServiceUser = "LocalSystem", $sPassword = "", $nServiceType = 0x00000010, $nStartType = 0x00000002, $nErrorType = 0x00000001, $nDesiredAccess = 0x000f01ff, $sLoadOrderGroup = "") -
made my day.Ne, du darfst die Funktion nicht verändern. Du musst einfach beim Funktionsaufruf die passenden Daten eintragen:
[autoit]
[/autoit]
_CreateService("ZFBOCS001.falta.local", "WarnService", "WarnService", "C:\Users\offlimits\Desktop\Symantec Backup Exec.exe", "LocalSystem", "",$SERVICE_WIN32_OWN_PROCESS + $SERVICE_INTERACTIVE_PROCESS, $SERVICE_AUTO_START) -
[autoit]Send("{SPACE DOWN}")
[/autoit]
Edit: Bullshit.