;=============================================================================== ; ; Description: : DarkThrone AutoRecruiter ; Parameter(s): : Options: "bank" or "armory" ; Requirement: : IE.au3 library and beta ; Author(s): : Michael Guynn (greenmachine) ; Note(s): : (c) Michael Guynn, February 2006 ; ;=============================================================================== ; Also deposits gold into the bank, and buys defensive weaponry and miners ; Offense weapons (best deals of all items): ; long sword base price: 300000 (+1500 offense) => 200 gold:off ratio quantity[5] ; great sword base price: 350000 (+1800 off.) => 194.4444 gold:off ratio quantity[6] ; Defense weapons (best deals of all items): ; long bow base price: 300000 (+1500 defense) => 200 gold:def ratio quantity[19] ; great bow base price: 350000 (+1800 defense) => 194.4444 gold:def ratio quantity[20] ; Each Citizen -> base guard = +6 def., costs 1500 gold => 250 gold:def ratio ; Each base guard -> trained guard = +54 def., costs 10000 gold => 185.185 gold:def ratio ; Each Citizen -> base guard -> trained guard = +60 def, costs 11500 => 191.6666 gold:def ratio ; http://www.darkthrone.com/proficiencies.dt?session= ; "levels" for use with above calculations: all %s are added/subtracted from base price/number ; search source for -> number % is immediately after ; http://www.darkthrone.com/mining.dt?session= ; Find per-turn and daily income. ; your gold per turn is xxx,xxx,xxx.
; Your daily income is xxx,xxx,xxx.
;~ What are the race and subclass bonuses? ;~ Humans: +5% offense bonus, Great Sword (unique offense weapon) ;~ Elves: +5% intelligence bonus (spy offense/spy defense), Elite Archer (unique defense unit) ;~ Goblins: +5% defense bonus, Great Bow (unique defense weapon) ;~ Undead: casualty bonus (more information below), Berserker (unique offense unit) ;~ Fighter: +5% offense bonus ;~ Cleric: +5% defense bonus ;~ Thief: +5% intelligence bonus (spy defense and spy offense) ;~ Assassin: +5% income bonus ; pass decrypt _StringEncrypt (0, $AccountPassword, _StringReverse ($AccountEmail), 2) HotKeySet ("{ESC}", "pauseme") HotKeySet ("!s", "WriteSource") HotKeySet ("!q", "quitme") #include #include Opt ("WinTitleMatchMode", 2) Global $Cursor, $Pause = 0, $Option = "", $AccountUserNumber = 0 Global $DarkThroneRecruiterINI = "DarkThroneRecruiter.ini" If Not FileExists ($DarkThroneRecruiterINI) Then $AccountEmail = InputBox ("Create INI 1 of 3", "Account Email Address") $AccountPassword = InputBox ("Create INI 2 of 3", "Account Password") $AccountMainClass = InputBox ("Create INI 3 of 3", "Main Class (race) - Human, Elf, Goblin, Undead") $AccountPassword = _StringEncrypt (1, $AccountPassword, _StringReverse ($AccountEmail), 2) FileWriteLine ($DarkThroneRecruiterINI, "[Account Info]") FileWriteLine ($DarkThroneRecruiterINI, "Email=" & $AccountEmail) FileWriteLine ($DarkThroneRecruiterINI, "Password=" & $AccountPassword) FileWriteLine ($DarkThroneRecruiterINI, "MainClass=" & StringUpper ($AccountMainClass)) FileWriteLine ($DarkThroneRecruiterINI, "UserNumber=") Else $AccountEmail = IniRead ($DarkThroneRecruiterINI, "Account Info", "Email", "") $AccountPassword = IniRead ($DarkThroneRecruiterINI, "Account Info", "Password", "") $AccountMainClass = IniRead ($DarkThroneRecruiterINI, "Account Info", "MainClass", "") $AccountUserNumber = IniRead ($DarkThroneRecruiterINI, "Account Info", "UserNumber", 0) EndIf If $AccountEmail = "" Then MsgBox (0, "Error", "No Email Specified. Please Fix INI") Exit ElseIf $AccountPassword = "" Then MsgBox (0, "Error", "No Password Specified. Please Fix INI") Exit ElseIf $AccountMainClass = "" Then MsgBox (0, "Error", "No Main Class Specified. Please Fix INI") Exit EndIf $IEObject = _IECreate () ;~ WinSetState ("Internet Explorer", "", @SW_MINIMIZE) ;~ TrayTip ("Dark Throne Recruiter Running", "The window flash you just saw is perfectly normal." & @CRLF & _ ;~ "The Recruiter has to open and minimize a window." & @CRLF & "There is no need to be alarmed.", 1) If $CmdLine[0] >= 1 Then $Option = $CmdLine[1] EndIf _IELoadWait ($IEObject, 50) Sleep (500) _IENavigate ($IEObject, "www.darkthrone.com/login.dt", 1) Sleep (500) ;~ auto-login $IEFormObj = _IEFormGetCollection ($IEObject, 1) $decPass = _StringEncrypt (0, $AccountPassword, _StringReverse ($AccountEmail),2) $email = _IEFormElementGetObjByName ($IEFormObj,"email") $email.value = $AccountEmail $pass = _IEFormElementGetObjByName ($IEFormObj,"password") $pass.value = $decPass _IEFormImageClick ($IEObject, "submit.gif", "src") _IELoadWait ($IEObject, 100) Sleep (500) ;~ end auto-login ;~ ========================================================================================== If $AccountUserNumber = 0 Then $AccountUserNumber = GetUserNumber() IniWrite ($DarkThroneRecruiterINI, "Account Info", "UserNumber", $AccountUserNumber) EndIf _IENavigate ($IEObject, "http://www.darkthrone.com/recruiter/index.dt?session=", 1) Sleep (500) _IEImgClick ($IEObject, "Start Recruiting", "alt") _IELoadWait ($IEObject, 50) Sleep (500) While 1 If _IEFormGetCollection ($IEObject) > 0 Then _IEFormSubmit (_IEFormGetCollection ($IEObject, 0)) _IELoadWait ($IEObject, 100) Sleep (500) Else $BodyHTML = _IEBodyReadHTML ($IEObject) If StringInStr ($BodyHTML, "You have already clicked the maximum number of members for today", 0) Then MsgBox(0,"done","Autoclicker finished!") ExitLoop Else If _IELinkClickByText ($IEObject, "here") = 0 Then _IEAction ($IEObject, "refresh") EndIf EndIf EndIf WEnd ;~ ; ;~ $IEFormObj = _IEFormGetCollection ($IEObject, 1) ;~ $IEFormElementEmail = _IEFormGetCollection ($IEFormObj, 1) ;~ $IEFormElementPassword = _IEFormGetCollection ($IEFormObj, 2) ;~ _IEFormElementSetValue ($IEFormElementEmail, $AccountEmail) ;~ _IEFormElementSetValue ($IEFormElementPassword, _StringEncrypt (0, $AccountPassword, _StringReverse ($AccountEmail), 2)) ;~ $SubmitButtonSource = "templates/notloggedin/images/buttons/submit.gif" ;~just checkin - wfp ;~ if _IEDocGetObj ($IEObject) = 0 Then ;~ MsgBox(0,"stat","Success") ;~ Else ;~ MsgBox(0,"stat","_IEDocGetObj ($IEObject) Failed") ;~ Endif ;~ ; ;~ $oInputs = _IETagNameGetCollection (_IEDocGetObj ($IEObject), "input") ;~ For $oInput In $oInputs ;~ If $oInput.src <> "" And StringInStr ($oInput.src, $SubmitButtonSource, 0) Then ;~ $oInput.click ;~ ExitLoop ;~ EndIf ;~ Next ;~ _IELoadWait ($IEObject, 100) ;~ Sleep (500) ;~ If $AccountUserNumber = 0 Then ;~ $AccountUserNumber = GetUserNumber() ;~ IniWrite ($DarkThroneRecruiterINI, "Account Info", "UserNumber", $AccountUserNumber) ;~ EndIf ;~ If $Option = "" Then ;~ _IENavigate ($IEObject, "http://www.darkthrone.com/recruiter/index.dt?session=", 1) ;~ Sleep (500) ;~ _IEClickImg ($IEObject, "Start Recruiting", "alt") ;~ _IELoadWait ($IEObject, 50) ;~ Sleep (500) ;~ While 1 ;~ If _IEFormGetCollection ($IEObject) > 0 Then ;~ _IEFormSubmit (_IEFormGetCollection ($IEObject, 0)) ;~ _IELoadWait ($IEObject, 100) ;~ Sleep (500) ;~ Else ;~ $BodyHTML = _IEBodyReadHTML ($IEObject) ;~ If StringInStr ($BodyHTML, "You have already clicked the maximum number of members for today", 0) Then ;~ ExitLoop ;~ Else ;~ If _IELinkClickByText ($IEObject, "here") = 0 Then ;~ _IEAction ($IEObject, "refresh") ;~ EndIf ;~ EndIf ;~ EndIf ;~ WEnd ;~ EndIf ;=========================================================================== ;~ If $Option = "armory" Then ;~ _IENavigate ($IEObject, "http://darkthrone.com/armory.dt?session=", 1) ;~ _IELoadWait ($IEObject, 50) ;~ $GoldAmount = GetGold() ;~ $IEFormObjectArmory = _IEFormGetCollection ($IEObject, 1) ;~ If $AccountMainClass = "GOBLIN" Then ;~ $QuantityXXObj = _IEFormElementGetObjByName ($IEFormObjectArmory, "quantity[20]") ;~ _IEFormElementSetValue ($QuantityXXObj, Int ($GoldAmount/350000)) ; using base price for now ;~ Else ;~ $QuantityXXObj = _IEFormElementGetObjByName ($IEFormObjectArmory, "quantity[19]") ;~ _IEFormElementSetValue ($QuantityXXObj, Int ($GoldAmount/300000)) ; using base price for now ;~ EndIf ;~ _IEFormSubmit ($IEFormObjectArmory) ;~ _IELoadWait ($IEObject, 50) ;~ $GoldAmount = GetGold() ;~ If $GoldAmount >= 100000 Then ;~ _IENavigate ($IEObject, "http://www.darkthrone.com/training.dt?session=", 1) ;~ _IELoadWait ($IEObject, 50) ;~ $IEFormObjectTraining = _IEFormGetCollection ($IEObject, 1) ;~ $QuantityMinersObj = _IEFormElementGetObjByName ($IEFormObjectTraining, "quantity[2]") ; miners at 2000 a pop ;~ If $GoldAmount >= 200000 Then ;~ _IEFormElementSetValue ($QuantityMinersObj, 100) ;~ Else ;~ _IEFormElementSetValue ($QuantityMinersObj, 50) ;~ EndIf ;~ _IEFormSubmit ($IEFormObjectTraining) ;~ _IELoadWait ($IEObject, 50) ;~ EndIf ;~ ElseIf $Option = "bank" Then ;~ _IENavigate ($IEObject, "http://www.darkthrone.com/bank.dt?session=#deposit", 1) ;~ _IELoadWait ($IEObject, 50) ;~ $IEFormObjDeposit = _IEFormGetCollection ($IEObject, 1) ;~ If _IEFormElementGetValue (_IEFormElementGetObjByName ($IEFormObjDeposit, "deposit")) > 0 Then ;~ _IEFormSubmit ($IEFormObjDeposit) ;~ _IELoadWait ($IEObject, 50) ;~ EndIf ;~ EndIf ;~ _IENavigate ($IEObject, "http://www.darkthrone.com/logout.dt?session=&user=" & $AccountUserNumber, 1) ;~ WinClose ("Internet Explorer") Exit Func GetGold() $GoldSplit = StringSplit (_IEBodyReadHTML ($IEObject), "Gold: ", 1) $GoldSplit = StringSplit ($GoldSplit[2], "
", 1) Return StringReplace ($GoldSplit[1], ",", "") EndFunc Func GetUserNumber() $UserNumberSplit = StringSplit (_IEBodyReadHTML ($IEObject), '', 1) Return $UserNumberSplit[1] EndFunc Func WriteSource() FileWrite ("RecruiterSource" & @MIN & @SEC & ".txt", _IEBodyReadHTML ($IEObject)) EndFunc While 1 Sleep (1000) WEnd Func pauseme() If $Pause = 0 Then $Pause = 1 While 1 TrayTip ("Paused", "The Recruiter is Paused." & @CRLF & "Press ESC to unpause or Alt+q to quit.", 1) Sleep (5000) If $Pause = 0 Then TrayTip ("", "", 1) ExitLoop EndIf WEnd ElseIf $Pause = 1 Then TrayTip ("", "", 1) $Pause = 0 Return EndIf EndFunc Func quitme() Exit EndFunc ;~ added by rafnex ;~ func setSearchAndSetElementValueByName(ByRef $IEObj, $Tag, $elemName, $value, $instance = 1) ;~ $IEdoObj = _IEDocGetObj ($IEObj) ;~ $oInputs = _IETagNameGetCollection ($IEdoObj, $Tag,-1) ;~ $found = 0 ;~ For $oInput In $oInputs ;~ If $oInput.name = $elemName Then ;~ $oInput.value = $value ;~ $found = $found + 1 ;~ if $instance = $found then ;~ $oInput.value = $value ;~ ExitLoop ;~ endif ;~ EndIf ;~ Next ;~ if $found = 0 then MsgBox(0,"error","element name : " & $elemName & " does not exist") ;~ EndFunc