[AutoIt] D2Lounge Bet Bot
If you don't know how to use this please do not ask!
Just wanted to release it here and maybe get some new ideas what to implement. I've written this just for me and there is no error-handling.
The bot logs in for you and checks current matches. If there is a match wich starts in 10 mins or less it will bet items regarding to the percent of people who bet on this match and what kind of match it is.
edit: Btw I finished the invoker tool and improve MeepoIt but it has one issue i can't fix. CTRL. + Key Doesn't work. Should I release it?
Just wanted to release it here and maybe get some new ideas what to implement. I've written this just for me and there is no error-handling.
The bot logs in for you and checks current matches. If there is a match wich starts in 10 mins or less it will bet items regarding to the percent of people who bet on this match and what kind of match it is.
Code:
#include <WinHTTP.au3>
#include <String.au3>
#include <IE.au3>
#include <Array.au3>
#include <TrayConstants.au3>
#RequireAdmin
Opt("TrayMenuMode", 3)
Opt("TrayOnEventMode", 1)
$Status = TrayCreateItem("Status:")
TrayItemSetState ( $Status, $TRAY_DISABLE )
$InfoTray = TrayCreateItem("Starting up...")
TrayItemSetState ( $InfoTray, $TRAY_DISABLE )
$ArrayDisplay = TrayCreateItem("Display Match Array")
TrayItemSetOnEvent($ArrayDisplay, "_MyArrayDisplay")
$SETTINGSITEM = TrayCreateItem("Exit")
TrayItemSetOnEvent($SETTINGSITEM, "_exit")
$Username = InputBox("D2Lounge Bot", "Bitte steamnamen eingeben:", "HUANSOHN!")
If @error Then Exit
$Password = InputBox("D2Lounge Bot", "Bitte Steampasswort eingeben:", "HUANSOHN!", "*")
If @error Then Exit
Local $Time = "", $i = 0, $timeout = 0, $MatchesArray, $TrueMatchCount, $InvalidMatchArray[0], $RunningMatchCount = 0, $k = 0
;$MatchesArray[
$oIE = _IECreate("https://steamcommunity.com/openid/login?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=checkid_setup&openid.return_to=https%3A%2F%2Fdota2lounge.com%2Flogin&openid.realm=https%3A%2F%2Fdota2lounge.com&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select", 0, 1)
_IELoadWait($oIE)
_LoginIE($oIE)
_IELoadWait($oIE)
TrayItemSetText ( $InfoTray, "Logged in!" )
While 1
_GetAllBets($oIE)
_CheckMatches()
Sleep(60000)
WEnd
#cs
$MatchesArray[$i][0] = Time Left
$MatchesArray[$i][1] = Cup Name
$MatchesArray[$i][2] = Team1 Name
$MatchesArray[$i][3] = Team1 Percentage
$MatchesArray[$i][4] = Team2 Name
$MatchesArray[$i][5] = Team2 Percentage
$MatchesArray[$i][6] = MatchLink
$MatchesArray[$i][7] = Already Betted
#ce
Func _GetAllBets($oIE)
TrayItemSetText ( $InfoTray, "Collecting all matches." )
_IENavigate($oIE, "http://dota2lounge.com/", 1)
$AllBets = $oIE.document.getElementById("bets")
$BetObjects = $AllBets.getElementsByClassName("matchmain")
Dim $MatchesArray[$AllBets.childElementCount][8], $TrueMatchCount = 0, $i = 0
For $Objects In $BetObjects
$MatchDataString = $Objects.outerText
If StringInStr($MatchDataString, "now") Then
$MatchDataStringLines = StringSplit($MatchDataString, @CRLF)
$TimeString = StringSplit($MatchDataStringLines[3], " ")
If $TimeString[2] = "hours" Or $TimeString[2] = "hour" Then
$Time = $TimeString[1] * 60
Else
$Time = $TimeString[1]
EndIf
$MatchesArray[$i][0] = $Time
$MatchesArray[$i][1] = $MatchDataStringLines[7]
$MatchesArray[$i][2] = $MatchDataStringLines[19]
$MatchesArray[$i][3] = $MatchDataStringLines[21]
$MatchesArray[$i][4] = $MatchDataStringLines[33]
$MatchesArray[$i][5] = $MatchDataStringLines[35]
$MatchesArray[$i][6] = $oIE.document.getElementsByClassName("matchmain").item($i).getElementsByTagName("A").item(0).href
$TrueMatchCount += 1
Else
If $TrueMatchCount > 1 Then
_ArrayAdd($InvalidMatchArray, $i)
Else
$RunningMatchCount += 1
EndIf
EndIf
$i += 1
Next
For $j = 0 To UBound($InvalidMatchArray) - 1
_ArrayDelete($MatchesArray, $InvalidMatchArray[$j])
Next
ReDim $InvalidMatchArray[0]
For $j = 0 To $RunningMatchCount - 1
_ArrayDelete($MatchesArray, 0)
Next
$RunningMatchCount = 0
TrayItemSetText ( $InfoTray, "Collected all Matches." )
EndFunc ;==>_GetAllBets
Func _CheckMatches()
TrayItemSetText ( $InfoTray, "Checking Matches." )
For $i = 0 To UBound($MatchesArray) - 1
If $MatchesArray[$i][0] <= 15 Then
If $MatchesArray[$i][7] <> 1 Then
_IENavigate($oIE, $MatchesArray[$i][6], 1)
$BackPackItems = $oIE.document.getElementById("backpack").getElementsByClassName("item")
If IsObj($BackPackItems) = False Then
$MatchesArray[$i][7] = 1
Else
$PercentTeam1 = StringReplace($MatchesArray[$i][3], "%", "")
$PercentTeam2 = StringReplace($MatchesArray[$i][5], "%", "")
;MsgBox(0,$MatchesArray[$i][2]&" vs "&$MatchesArray[$i][4],$PercentTeam1&";"&$PercentTeam2)
If $PercentTeam1 > $PercentTeam2 Then
$BetterTeamName = $MatchesArray[$i][2]
$BetterTeamPercent = $PercentTeam1
Else
$BetterTeamName = $MatchesArray[$i][4]
$DiffPercent = $PercentTeam2 - $PercentTeam1
$BetterTeamPercent = $PercentTeam2
EndIf
;MsgBox(0,"Better Team",$BetterTeamName)
If StringInStr($oIE.document.getElementsByClassName("box-shiny-alt").item(0).getElementsByTagName("SPAN").item(0).outerText, $BetterTeamName) Then
$oIE.document.getElementsByClassName("team").item(0).click()
Else
$oIE.document.getElementsByClassName("team").item(1).click()
EndIf
;get item value document.getElementById("backpack").getElementsByClassName("item").item(0).getElementsByClassName("value").item(0).outerText
Dim $k = 0
;2 Games Series
;Best of 1
;Best of 3
$MatchStyle = $oIE.document.getElementsByClassName("box-shiny-alt").item(0).getElementsByClassName("half").item(1).outerText
If $MatchStyle = "Best of 1" Then
$BetterTeamPercent = $BetterTeamPercent - 20
ElseIf $MatchStyle = "2 Game Series" Then
$BetterTeamPercent = $BetterTeamPercent - 10
ElseIf $MatchStyle = "Best of 3" Then
$BetterTeamPercent = $BetterTeamPercent + 5
EndIf
For $Items In $BackPackItems
$CurrentItemPrice = StringReplace($oIE.document.getElementById("backpack").getElementsByClassName("item").item($k).getElementsByClassName("value").item(0).outerText, "$ ", "")
If $BetterTeamPercent >= 95 And $CurrentItemPrice <= 2 Then
$oIE.document.getElementById("backpack").getElementsByClassName("item").item($k).getElementsByClassName("value").item(0).click()
ElseIf $BetterTeamPercent >= 90 And $CurrentItemPrice <= 1 Then
$oIE.document.getElementById("backpack").getElementsByClassName("item").item($k).getElementsByClassName("value").item(0).click()
ElseIf $BetterTeamPercent >= 80 And $CurrentItemPrice <= 0.20 Then
$oIE.document.getElementById("backpack").getElementsByClassName("item").item($k).getElementsByClassName("value").item(0).click()
ElseIf $BetterTeamPercent >= 70 And $CurrentItemPrice <= 0.10 Then
$oIE.document.getElementById("backpack").getElementsByClassName("item").item($k).getElementsByClassName("value").item(0).click()
ElseIf $BetterTeamPercent >= 60 And $CurrentItemPrice <= 0.05 Then
$oIE.document.getElementById("backpack").getElementsByClassName("item").item($k).getElementsByClassName("value").item(0).click()
ElseIf $BetterTeamPercent >= 50 And $CurrentItemPrice <= 0.03 Then
EndIf
$k += 1
Next
$oIE.document.getElementById("placebut").click()
TrayItemSetText ( $InfoTray, "Betted for "& $BetterTeamName )
EndIf
EndIf
EndIf
Next
EndFunc ;==>_CheckMatches
Func _exit()
Exit
EndFunc ;==>_exit
Func _LoginIE($oIE)
$oForm = _IEFormGetCollection($oIE, 0)
$oUser = _IEFormElementGetObjByName($oForm, 'username')
$oPass = _IEFormElementGetObjByName($oForm, 'password')
$oImageLogin = _IEFormElementGetObjByName($oForm, 'imageLogin')
If IsObj($oImageLogin) Then $oImageLogin.click()
_IEFormElementSetValue($oUser, $Username)
_IEFormElementSetValue($oPass, $Password)
_IENavigate($oIE, "javascript:DoLogin();", 0)
EndFunc ;==>_LoginIE
Func _MyArrayDisplay()
_ArrayDisplay($MatchesArray)
EndFunc
edit: Btw I finished the invoker tool and improve MeepoIt but it has one issue i can't fix. CTRL. + Key Doesn't work. Should I release it?