Beiträge von draien
-
-
Folgende dinge sollten dir helfen:
- _INetGetSource (gibt Quellcode als String zurück)
- StringRegExp (wie Autolaser schon gesagt hat), oder für Anfänger besser eine Kombination aus StringInString (zur positionsfindung) und daraufhin Stringmid (position +100)
Wenn du mal etwas gemacht hast, kannst du es gerne hier posten
-
chip:
Um ihn dann wieder zu bestellen?Ton-Sensitive LED-Beleuchtung für mein Faschings-Kostüm (Guggenkostüm). Das war mal ein kurzes gebastel, allerdings mittlerweile wieder entfernt und durch nen Arduino ersetzt.
Das hört sich mal geil an. Ist da der Arduino soviel besser?
Hab mir ja schon überlegt mein Roboterarm in die Küche zu stellen und dann mir morgens per Handy bereits den Kaffee rauslassen zu können (natürlich bereits umgerührt vom Arm hahaha)Ich freue mich mit dem Modell 2 B+, einem Windows 10 und AutoIt so einiges damit anzustellen . Allerdings dauert es scheinbar bei MS noch was
Muss ich dich leider enttäuschen. Auch im englischen Forum gab es keine Aussichten, dass AutoIt für dieses Windows bereit stehen wird (hatte mich auch schon gefreut) -
Da morgen mein Raspberry Pi 2 eintreffen sollte(so kurz vor dem Umzug >.<), wollte ich euch mal Fragen was Ihr mit so einem Teil alles anstellen würdet :)?
Meiner wird für folgendes benutzt:
- XBMC/Kodi/MediaCenter (ganz klar :>), verbunden mit ner NAS
- Retrospiele Konsole (RetroPie sei dank) , aber dafür muss ich mein alten SNES controller noch irgendwie Funk-fähig machen
- IRC Bot (extra dafür gerade am Python lernen)
- Steuerung für meinen Roboterarm (evtl. in Verbindung mit dem IRC Bot?)
Was fällt euch noch so ein ? Mit Sensoren etc. kann ich leider wenig anfangen... evtl. Hausautomation? -
Hab ich zwar aktuell kein Nutzen für, kommt aber bestimmt noch.
Daher savedThx!
Edit: Und alles gute zum Geburtstag!
-
Generell ware es nicht schlecht dein Code in den Tag [autoit][/autoit] zu packen für die Lesbarkeit.
Dann hat dein Script einige Fehler.
- "Case" ohne Switch/Select ?
- x und y müssen noch ersetzt werden durch die pixelangabe (0,0 für linke obere ecke; 0,Y für linke untere ecke, wobei Y am besten mit @DesktopHeight oder so angegeben wird, eben nach fenstergröße)
- Warum die While nicht direkt abhängig von der Farbe machen?Habe mal 2 Versionen wie sie funktionieren könnten gemacht:
[autoit][/autoit][autoit][/autoit][autoit]For $i=1 To 100 ;dass ganze soll 100 mal passieren
[/autoit][autoit][/autoit][autoit]
;hier passiert viel ist aber unnötig zu postenWhile 1
[/autoit]
Local $iColor1 = PixelGetColor(x,y) ;get pixelcolor to detect SAP mask at the top
Local $iColor2 = PixelGetColor(x,y) ;get pixelcolor to detect SAP mask at the bottom
If $iColor1="13752028" OR $iColor2="13752028" then
;Hier dein Code
sleep (100)
exitloop
EndIf
WEnd
$sRow = $sRow + 1 ; go to the next row and search the next
Nextoder die while direkt abhängig ohne exitloop(ist einfach sauberer, aber das ist nur meine meinung :> )
[autoit][/autoit][autoit][/autoit][autoit]For $i=1 To 100 ;dass ganze soll 100 mal passieren
[/autoit]
;hier passiert viel ist aber unnötig zu posten
$bGreen = False
While Not $bGreen
Local $iColor1 = PixelGetColor(x,y) ;get pixelcolor to detect SAP mask at the top
Local $iColor2 = PixelGetColor(x,y) ;get pixelcolor to detect SAP mask at the bottom
If $iColor1="13752028" OR $iColor2="13752028" then
;Hier dein Code
sleep (100)
$bGreen = True
EndIf
WEnd
$sRow = $sRow + 1 ; go to the next row and search the next
Next -
Wenn ich einen Channel abfrage der nicht online ist wird mir nur returnt das er offline ist und nicht welchen Streamtitle er zuletzt etc hatte.
In Version 0.2 hinzugefügt Danke Alpines!
-
Für einen HTTP-Code eine Konstante definieren?
Ja, da für HTTPPost, welches ich aktuell gerade am überarbeiten bin, weitere konstanten benötige (denke ich)Wenn der Channel offline ist dann wird mir 0 zugesendet aber die Info nicht, die ist eigentlich immer noch abrufbar
Sorry, wie genau meinst du das? (Tut mir leid für die dumme frage, aber is wie gesagt meine erste udf)_HTTPPost wird überhaupt nicht gecalled und ist somit überflüssig.
Ist mal rausgenommen, wird aber wieder einzug finden, sobald benötigt (nächste version)Aber vielen Danke für das Feedback !
-
Hallo zusammen,
Bin aktuell sehr mit Twitch etc. beschäftigt und habe mal eine kleine "UDF" (wenn man das in dem Stadium schon sagen kann) geschrieben und wollte die nicht vorenthalten. Bin offen für jegliche Kritik und Verbesserungen.
Bisher wird nur Info erhalten, aber auch posten wird in Zukunft noch kommenWenn ihr diese UDF benutzten möchtet, müsst ihr eure Client-ID in die UDF eintragen. Diese bekommt ihr hier
Sourcecode UDF:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
; ===================================================================
; Twitch.au3 - UDF
; v0.2
;
; By: Matthäus "Draien" Häußler
; Last Updated: 24.02.2015
; Tested with AutoIt Version 3.3.12.0
;
; Discription: Paste your twitch client ID into the global const
;
; Special Thanks:
; "FaridAgl" - For the HTTPGet / HTTPPost (soon to come) function
;
; Main functions:
; _KRAKENINFO
; ===================================================================
#include-onceGlobal Const $HTTP_STATUS_OK = 200
[/autoit] [autoit][/autoit] [autoit]
Global Const $KRAKEN_URL = "https://api.twitch.tv/kraken/"
Global Const $CLIENT_ID = "xxxxxx" ;Your Client ID
; #FUNCTION# ====================================================================================================================
; Name ..........: _KRAKENINFO
; Description ...: Function to grab information from the KRAKEN/Twitch API
; Syntax ........: _KRAKENINFO($sChannel)
; Parameters ....: $sChannel - Name of the Stream/Channel to check as string
; Return values .: Successful - Returns an array with information about the stream/channel
; $aINFO[0] = Status (1, if online ; 0, if offline)
; $aINFO[1] = Displayname (String)
; $aINFO[2] = Game (String)
; $aINFO[3] = Title (String)
; $aINFO[4] = Followercount (Number)
; $aINFO[5] = Total Views (Number)
; $aINFO[6] = Live-Viewercount (Number, if online ; empty, if offline)
; Failure - Returns 0 and sets @error:
; |1 = Invalid Channel, sets @extended: (1, if empty; 2, if whitespace is found)
; |2 = Problem with _HTTPGet
; Author ........: Draien
; ================================================================================================================================
Func _KRAKENINFO($sChannel)
Local $aINFO[7]
Local $iEND = ','
Select ;Parameter Checking, Trust No One
Case $sChannel = ""
Return SetError(1, 1, 0)
Case StringInStr($sChannel," ")
Return SetError(1, 2, 0)
EndSelect
$sGet = _HTTPGet($KRAKEN_URL & "streams/" & $sChannel)
If (@error) Then Return SetError(2, 0, 0)
If StringInStr($sGet,'"stream":null') Then
$sGet = _HTTPGet($KRAKEN_URL & "channels/" & $sChannel)
$aINFO[0] = 0
Else
$aINFO[0] = 1
$aINFO[6] = '"viewers":'
EndIf
$aINFO[1] = '"display_name":"'
$aINFO[2] = '"game":"'
$aINFO[3] = '"status":"'
$aINFO[4] = '"followers":'
$aINFO[5] = '"views":'
For $x = 1 To UBound($aINFO) -1
If $aINFO[$x] <> "" Then ;Avoid searching for live-viewers when offline
$iINFOs = StringInStr($sGet,$aINFO[$x])+StringLen($aINFO[$x]) ;Total start position for a value
$iINFOe = StringInStr($sGet,$iEND,0,1,$iINFOs) ;Total end position for a value
$aINFO[$x] = StringMid($sGet,$iINFOs,$iINFOe-$iINFOs)
EndIf
Next
;Last Stripping of unecessary things
$aINFO[1] = StringTrimRight($aINFO[1],1)
$aINFO[2] = StringTrimRight($aINFO[2],1)
$aINFO[3] = StringTrimRight($aINFO[3],1)
Return $aINFO
EndFunc ;==>_KRAKENINFO; #FUNCTION# ====================================================================================================================
[/autoit]
; Name ..........: _HTTPGet
; Description ...: Get function to interact with Kraken / Twitch-API
; Syntax ........: _HTTPGet($sData)
; Parameters ....: $sData - Data to get as string.
; Return values .: Success - Returns ResponseText
; Failure - Returns 0 and sets @error
; Author ........: FaridAgl
; Modified ......: -
; Remarks .......:
; Related .......: _HTTPPost
; Link ..........:
; Example .......: No
; ================================================================================================================================
Func _HTTPGet($sURL, $sData = "")
Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("GET", $sURL & "?" & $sData, False)
If (@error) Then Return SetError(1, 0, 0)
$oHTTP.SetRequestHeader("Client-ID: " & $CLIENT_ID)
$oHTTP.Send()
If (@error) Then Return SetError(2, 0, 0)
If ($oHTTP.Status <> $HTTP_STATUS_OK) Then Return SetError(3, 0, 0)
Return SetError(0, 0, $oHTTP.ResponseText)
EndFuncExample (kayokensa is übrigens mein stream :P):
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include "Twitch.au3"
#include <Array.au3>$sGet = _KRAKENINFO("kayokensa")
[/autoit]
_ArrayDisplay($sGet)Changelog
Spoiler anzeigen
Und als Anhang hier:
-
@ShitDown
Danke für die ausführliche Erklärung Hat geholfen -
Das bedeutet, 2 AI's spielen mehrere Runden gegeneinander und sammeln Punkte, jene AI welche die meisten Punkte sammeln konnte, rückt in die nächste Runde vor. Dies wird solange wiederholt bis wir einen endgültigen Sieger haben
Bin etwas verwirrt. Ist die Anzahl der Runden nun vorerst fix und wird nur bei Gleichstand erweitert bis es einen Sieger gibt oder wann tritt der "endgültige Sieg" ein? Und wenn die Anzahl fix ist, wieviele Runden sind es bis es zur "Verlängerung" kommt? Speziell der Satz "rückt in die nächste Runde vor"... Ist das eine andere Runde als die genannten "Runden"?Edit:
Desweiteren steht im Regelthread:_AIFight_Register($hFunc, $sName, $bDB)
während hier geschrieben ist: _AIFight_Register ( $sUser, $hFunction [, $sDatabase = Null ])Also ist Func und Name vertauscht. Sollte man vielleicht anpassen oder im Regelthread auf das jeweilige Spiel verweisen
-
Du sagst der String muss mit einem Punkt enden (\.). Aber in deinem Beispiel ist das nicht der Fall.
Folgendes Pattern würde für die angegeben Beispiele funktionieren (auch bei mehrstelligen Zahlen): _\d+$Me noob.
Danke. -
Hallo,
Aktuell beschäftige ich mich ein wenig mit StringRegExp(Replace).
Ich habe im Array $aArray etwa 1000 Elemente bei denen manchmal am Ende des Elements ein Unterstrich gefolgt von einer Zahl steht. Diese soll entfernt bzw. mit "" ersetzt werden.Beispiel:
Sodass darauswird.
Was mache ich mit folgendem Code falsch:
[autoit]
[/autoit]
For $x = 1 To $aArray[0]
$aArray[$x] = StringRegExpReplace($aArray[$x],"_\d\.$","")
Next
Vielen Dank für die Hilfe. Das tutorial hier hat mir sehr weiter geholfen! -
Will auch noch mein Senf dazugeben, wenn es um's überprüfen einer Checkbox geht:
[autoit]
[/autoit]
;Returns Value if Checkbox is checked
Func _IsChecked($idControlID)
Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc -
Ich glaub jetzt haben wir dann bald alle möglichkeiten durch oder ? Darf er sich ja eine raussuchen
-
Hallo,
für meine Anwendung ist auch ImageSearch keine Lösung, da während des Ladevorgangs der Datei (dessen Länge ich überwachen will) die ganze Anwendung einfach "busy" ist also auf nichts reagiert. Meine Frage, kann man nicht diesen Status irgenwie abfragen, nach dem Motto wenn Busy dann warten, wenn nicht mache weiter
Bin Dankbar für jeden Tip
Grusss GriessbxOhne konkrete Angaben um was es hier genau geht (welches Grafikprogramm?) lässt sich das nur schwer sagen. Du könntest Referenzzeiten erstellen.
Sprich du lädst Dateien versch. Größe in das Programm, misst die Ladezeiten und erstellst eine Formel. Dann überprüfst du vorher die Größe der Datei und erstellst ungefähr eine Ladezeit.
Alle Bilder/Dateigrößen werden in einem Array gespeichert etc.
Beispiel:
Referenzladezeit: t_ref in sek./MB
Ladezeit für Bild: t in sek.
Offset Zeit: t_off in sek.
Größe des Bilds in MB: xt = t_ref * x + t_off
t_off wäre z.B. die Zeit die bei jedem Bild, unabhängig der Größe, zusätzlich hinzukommt.
Zwar umständlich, aber wie oben schon gesagt, ohne konkrete Angaben welches Grafikprogramm, welches window gehandled werden soll etc. kann ich dir nicht weiter helfen -
Es ware so möglich:
[autoit]
[/autoit][autoit][/autoit][autoit]
$string = "\\asdf\jkl\dsl\tzu\567\-GoogleChrome\Chrome Icons\"$secondSlash = StringInStr($string,"\",0,-2) ; Hier könnte man noch abfragen ob das letzte Zeichen überhaupt ein \ ist, und je nachdem, die Occurrence auf -1 oder -2 setzen
[/autoit][autoit][/autoit][autoit]$string = StringTrimLeft($string,$secondSlash)
[/autoit][autoit][/autoit][autoit]
$string = StringTrimRight($string,1) ; Selbe gilt auch hier für den letzten BackslashMsgBox(0,"",$string)
[/autoit][autoit][/autoit][autoit][/autoit]Oder mid StringMid oder StringRegExp...
Generell kann ich dir doch die folgende Funktion/UDF ans Herz legen wenn man mit Pfaden arbeitet :
http://www.autoitscript.com/forum/topic/41…hsplitbyregexp/ -
Möchtest du den Captcha in deiner GUI anzeigen lassen und dort lösen? Dann müsstest du evtl. schauen welcher Captcha dienst verwendet wird und ob dieser das überhaupt zulässt (viele haben Restriktionen in den AGB etc.)
Captchas sind namlich nicht dazu gedacht autmatisch gelöst zu werden. Es gibt jedoch eine Seite bei der du durch lösen von Captchas "Guthaben" bekommst (auch kaufbar glaube ich) und die API verwenden kannst, den Captcha von anderen Leuten lösen zu lassen.
https://www.9kw.eu/Gibt sogar eine AutoIt API
https://www.9kw.eu/api.htmlDu könntest dann in deiner GUI dein Guthaben etc anzeigen lassen etc.
Oder habe ich die Frage falsch verstanden?
-
Frage dazu: geht es nun darum die KI zu schreiben, welche das Spiel gewinnt oder jene, die am besten auf bestimmte Situationen reagiert (oder vielleicht beides irgendwie Punktemässig)? Wichtiger Unterschied, schliesslich kann auch eine random KI mal Glück haben und zufällig gewinnen.Das hab ich mich auch schon gefragt. Meinem Verständnis nach sollte es eher ein Wettbewerb sein, in dem die KI lernt, das spiel gegen einen vorgefertigten Gegner zu gewinnen. Gewinner wäre derjenige, der die wenigsten Durchläufe/Generationen benötigt zum gewinnen .
-
Das sind die Attribute:
_XMLGetAttrib ( strXPath, strAttrib, strQuery = "" ) Get XML attribute based on XPath input from root node.(Requires: #include <_XMLDomWrapper.au3>)
_XMLGetAllAttrib ( strXPath, ByRef aName, ByRef aValue, strQry = "" ) Get all XML Field(s) attributes based on XPath input from root node.(Requires: #include <_XMLDomWrapper.au3>)
_XMLGetAllAttribIndex ( strXPath, ByRef aName, ByRef aValue, strQry = "", NodeIndex = 0 ) Get all XML Field(s) attributes based on Xpathn and specific index.(Requires: #include <_XMLDomWrapper.au3>)Wenn du mehrere hast, musst du es über Index angeben