JimmyN
Новичок
- Сообщения
- 20
- Репутация
- 0
Я написал простенький скрипт релоггера для бота которым пользуюсь в вове...
Единственно что незнаю как организовать механизм выбора персонажа. Проблема в том что каретка выбора персонажа всегда остаётся на месте последнего за которого заходил, на данный момент мой скрипт жмёт просто Enter, а я хочу сделать чтобы он выбирал персонажа, по имени скажем. Как вытащить значение имени из памяти я разобрался, точнее как получить его числовой эквивалент а вот что делать дальше не представляю.
Вот скрипт целиком
Единственно что незнаю как организовать механизм выбора персонажа. Проблема в том что каретка выбора персонажа всегда остаётся на месте последнего за которого заходил, на данный момент мой скрипт жмёт просто Enter, а я хочу сделать чтобы он выбирал персонажа, по имени скажем. Как вытащить значение имени из памяти я разобрался, точнее как получить его числовой эквивалент а вот что делать дальше не представляю.
Вот скрипт целиком
Код:
AutoItSetOption("WinTitleMatchMode", 4)
;AutoItSetOption("ExpandVarStrings", 0)
AutoItSetOption("SendKeyDelay", 20)
AutoItSetOption("SendKeyDownDelay", 20)
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Opt("GUIOnEventMode", 1)
Opt("TrayAutoPause", 0)
Opt("TrayOnEventMode",1)
Global $iRelogger
Global $iLogin
Global $iClicker
Global $StopClick
Global $iPaused
Global $title
TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE,"Show")
TraySetClick (8)
$settings_ini = @ScriptDir & "\Settings.ini"
$char_ini = IniRead($settings_ini, "", "$char", "Персонаж")
#region Главное окно
$mainwindow = GUICreate($char_ini, 154, 215)
GUISetBkColor(0x808080)
$settings = GUICtrlCreateButton("Настройки", 2, 157, 72)
$login = GUICtrlCreateButton("Логин", 2, 185, 72)
$relogger = GUICtrlCreateButton("Релоггер", 80, 185, 72)
$list = GUICtrlCreateList("", 1, 1, 152, 135)
$clicker = GUICtrlCreateButton("Кликер", 80, 157, 72)
$pause_button = GUICtrlCreateButton("Пауза", 2, 130, 150)
GUICtrlSetOnEvent($login, "Login_Event")
GUICtrlSetOnEvent($relogger, "Relogger_Event")
GUICtrlSetOnEvent($settings, "Settings")
GUICtrlSetOnEvent($clicker, "Clicker")
GUICtrlSetOnEvent($pause_button, "_PauseScript")
GUISetOnEvent($GUI_EVENT_CLOSE, "Exiting")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Tray")
GUISetState(@SW_SHOW, $mainwindow)
#endregion Главное окно
#region Настройки
$setwindow = GUICreate("Настройки", 260, 300)
GUISetBkColor(0x808080)
$acc_ini = IniRead($settings_ini, "", "$acc", "Логин")
$pass_ini = IniRead($settings_ini, "", "$pass", "Пароль")
$char_ini = IniRead($settings_ini, "", "$char", "Персонаж")
$bnet_ini = IniRead($settings_ini, "", "$bnet", "")
$wowpath_ini = IniRead($settings_ini, "", "$browse_wow", "Путь к WoW")
$botpath_ini = IniRead($settings_ini, "", "$browse_bot", "Путь к Боту")
$bnet_nini = IniRead($settings_ini, "", "$bnet_n", "")
;$lvl_ini = IniRead($settings_ini, "", "$lvl", "lvl")
$acc_input = GUICtrlCreateInput($acc_ini, 20, 20, 200, 20)
$pass_input = GUICtrlCreateInput($pass_ini, 20, 50, 200, 20, $ES_PASSWORD)
$wowpath = GUICtrlCreateInput($wowpath_ini, 20, 100, 200, 20)
$browse_button1 = GUICtrlCreateButton("...", 230, 100, 20, 20)
$botpath = GUICtrlCreateInput($botpath_ini, 20, 130, 200, 20)
$browse_button2 = GUICtrlCreateButton("...", 230, 130, 20, 20)
$char_input = GUICtrlCreateInput($char_ini, 20, 180, 120, 20)
$bnet_check = GUICtrlCreateCheckbox("Battlenet", 20, 220)
$bnet_ncheck = GUICtrlCreateCombo("", 90, 220, 40, 20)
$save = GUICtrlCreateButton("Сохранить", 140, 260, 80, 20)
GUICtrlSetData($bnet_ncheck, "1|2|3|4|5", $bnet_nini)
;$lvl_input = GUICtrlCreateInput($lvl_ini, 170, 180, 50, 20)
GUICtrlCreateLabel("№ Battlenet аккаунта", 138, 225 )
GUICtrlSetState($bnet_check, $bnet_ini)
GUISetOnEvent($GUI_EVENT_CLOSE, "Exiting")
GUICtrlSetOnEvent($browse_button1, "WoW_path")
GUICtrlSetOnEvent($browse_button2, "Bot_path")
GUICtrlSetOnEvent($save, "Save")
#endregion Настройки
#region Кликер
$clickwindow = GUICreate("Кликер", 141, 70)
GUISetBkColor(0x808080)
$key_ini = IniRead($settings_ini, "", "$key", "Кнопка")
$deley_ini = IniRead($settings_ini, "", "$deley", "Таймаут")
$key_input = GUICtrlCreateInput($key_ini, 10, 8, 50, 20)
$deley_input = GUICtrlCreateInput($deley_ini, 80, 8, 50, 20)
$start = GUICtrlCreateButton("Старт", 10, 40, 50, 20, $WS_GROUP)
$stop = GUICtrlCreateButton("Стоп", 80, 40, 50, 20, $WS_GROUP)
GUICtrlSetOnEvent($start, "Clicker_Event")
GUICtrlSetOnEvent($stop, "Clicker_Stop")
GUISetOnEvent($GUI_EVENT_CLOSE, "Exiting")
#endregion Кликер
#region Переменные
$acc = GUICtrlRead($acc_input)
$pass = GUICtrlRead($pass_input)
$char = GUICtrlRead($char_input)
$bnet = GUICtrlRead($bnet_check)
$browse_wow = GUICtrlRead($wowpath)
$browse_bot = GUICtrlRead($botpath)
$bnet_n = GUICtrlRead($bnet_ncheck)
;$lvl = GUICtrlRead($lvl_input)
$winname = $acc
;$str = StringLen($char)
;$str2 = StringLeft($char, $str - 2)
;$id = $str2 & " - " & $lvl
#endregion Переменные
TraySetToolTip ($char)
Func WoW_path()
$browse_wow = FileOpenDialog("Open", "C:\", "(*.exe)", 1)
GUICtrlDelete($wowpath)
$path_input = GUICtrlCreateInput($browse_wow, 20, 100, 200, 20)
EndFunc ;==>WoW_path
Func Bot_path()
$browse_bot = FileOpenDialog("Open", "C:\", "(*.exe)", 1)
GUICtrlDelete($botpath)
$path_input = GUICtrlCreateInput($browse_bot, 20, 130, 200, 20)
EndFunc ;==>Bot_path
Func Save()
$acc = GUICtrlRead($acc_input)
$pass = GUICtrlRead($pass_input)
$char = GUICtrlRead($char_input)
$bnet = GUICtrlRead($bnet_check)
$browse_wow = GUICtrlRead($wowpath)
$browse_bot = GUICtrlRead($botpath)
$bnet_n = GUICtrlRead($bnet_ncheck)
;$lvl = GUICtrlRead($lvl_input)
$winname = $acc
IniWrite($settings_ini, "", "$acc", $acc)
IniWrite($settings_ini, "", "$pass", $pass)
IniWrite($settings_ini, "", "$char", $char)
IniWrite($settings_ini, "", "$bnet", $bnet)
IniWrite($settings_ini, "", "$browse_wow", $browse_wow)
IniWrite($settings_ini, "", "$browse_bot", $browse_bot)
IniWrite($settings_ini, "", "$bnet_n", $bnet_n)
;IniWrite($settings_ini, "", "$lvl", $lvl)
GUISetState(@SW_HIDE, $setwindow)
EndFunc ;==>Save
Func _PauseScript()
$iPaused = Not $iPaused
if $iPaused then
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Пауза")
Else
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Продолжаем")
EndIf
EndFunc
Func _CheckPause()
While $iPaused
Sleep(100)
WEnd
EndFunc
Func Settings()
GUISwitch($setwindow)
GUISetState(@SW_SHOW, $setwindow)
EndFunc ;==>Settings
Func Clicker()
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Кликер")
GUISwitch($clickwindow)
GUISetState(@SW_SHOW, $clickwindow)
EndFunc ;==>Clicker
Func Clicker_Event()
$key = GUICtrlRead($key_input)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Жмём" & " < " & $key & " >")
$iClicker = 1
$StopClick = 0
EndFunc ;==>Clicker_Event
Func Clicker_Stop()
$key = GUICtrlRead($key_input)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Не жмём" & " < " & $key & " >")
$StopClick = 1
EndFunc ;==>Clicker_Stop
Func Clicker_func()
$key = GUICtrlRead($key_input)
$deley = GUICtrlRead($deley_input)
IniWrite($settings_ini, "", "$key", $key)
IniWrite($settings_ini, "", "$deley", $deley)
While $StopClick <> 1
ControlSend($winname, "", "", $key)
Sleep($deley)
WEnd
EndFunc ;==>Clicker_func
Func Tray()
If @GUI_WinHandle = $mainwindow Then
GUISetState(@SW_HIDE, $mainwindow)
EndIf
EndFunc
Func Show()
GUISetState(@SW_SHOW, $mainwindow)
EndFunc
Func Exiting()
If @GUI_WinHandle = $mainwindow Then
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Выход")
Sleep(300)
Exit (0)
ElseIf @GUI_WinHandle = $clickwindow Then
GUISetState(@SW_HIDE, $clickwindow)
ElseIf @GUI_WinHandle = $setwindow Then
GUISetState(@SW_HIDE, $setwindow)
EndIf
EndFunc ;==>Exiting
Func Login_Event()
$iLogin = 1
EndFunc ;==>Login_Event
Func Login()
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Запуск WoW")
Run($browse_wow)
WinWait("World of Warcraft")
_CheckPause()
Sleep(Random(10000, 20000))
WinSetTitle("World of Warcraft", "", $winname)
Sleep(100)
WinMove($winname, "", 0, 0, 328, 270)
_CheckPause()
Sleep(5000)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Логин")
_CheckPause()
Sleep(Random(1000, 5000))
$temp = ClipGet()
ClipPut($acc)
Sleep(100)
ControlSend($winname, "", 0, "{CTRLDOWN}v{CTRLUP}")
ClipPut($temp)
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{TAB}")
_CheckPause()
Sleep(1000)
ClipPut($pass)
_CheckPause()
Sleep(500)
ControlSend($winname, "", 0, "{CTRLDOWN}v{CTRLUP}")
ClipPut($temp)
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
_CheckPause()
Sleep(3000)
If $bnet = $GUI_CHECKED Then
If $bnet_n = 1 Then
ControlSend($winname, "", "", "{ENTER}")
_CheckPause()
Sleep(3000)
ElseIf $bnet_n = 2 Then
ControlSend($winname, "", "", "{DOWN}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
ElseIf $bnet_n = 3 Then
ControlSend($winname, "", "", "{DOWN 2}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
ElseIf $bnet_n = 4 Then
ControlSend($winname, "", "", "{DOWN 3}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
ElseIf $bnet_n = 5 Then
ControlSend($winname, "", "", "{DOWN 4}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
EndIf
EndIf
_CheckPause()
Sleep(10000)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Загрузка мира")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
_CheckPause()
Sleep(30000)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Запуск бота")
Run($browse_bot)
WinWait("Select process")
_CheckPause()
Sleep(1000)
WinSetTitle("Select process", "", $char)
_CheckPause()
Sleep(1000)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Выберите процесс")
_CheckPause()
Sleep(1000)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Готово")
_CheckPause()
Sleep(1000)
EndFunc ;==>Login
Func Relogger_Event()
$iRelogger = 1
EndFunc ;==>Relogger_Event
Func Relogger()
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Релоггер запущен")
While 1
_CheckPause()
Sleep(1000)
Do
Sleep(100)
$var = Ping("www.mail.ru", 1000)
Until $var
$title = WinGetHandle("[CLASS:WindowsForms10.Window.8.app.0.33c0d9d]", $char)
$line = ControlCommand($title, "", "[NAME:LogWin]", "GetLineCount", "")
$txt = ControlCommand($title, "", "[NAME:LogWin]", "GetLine", $line - 1)
$result = StringRegExp($txt, "Bot stopped", 0)
$result2 = StringRegExp($txt, "Please ress before starting the bot", 0)
$result3 = StringRegExp($txt, "Please enter the world", 0)
$result4 = StringRegExp($txt, "Attached", 0)
$result5 = StringRegExp($txt, "Not ingame", 0)
If $result = 1 Or $result4 = 1 Then
_CheckPause()
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Запуск бота")
ControlClick($title, "Start botting", "[NAME:StartStopEngine]", "left")
ElseIf $result5 = 1 Or $result3 = 1 Then
_CheckPause()
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Дисконект")
_CheckPause()
Sleep(5000)
ControlSend($winname, "", "", "{ENTER}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{Backspace 50}")
_CheckPause()
Sleep(5000)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Логин")
_CheckPause()
Sleep(Random(1000, 5000))
$temp = ClipGet()
ClipPut($acc)
_CheckPause()
Sleep(500)
ControlSend($winname, "", 0, "{CTRLDOWN}v{CTRLUP}")
ClipPut($temp)
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{TAB}")
_CheckPause()
Sleep(1000)
ClipPut($pass)
_CheckPause()
Sleep(500)
ControlSend($winname, "", 0, "{CTRLDOWN}v{CTRLUP}")
ClipPut($temp)
_CheckPause()
Sleep(1000)
If $bnet = $GUI_CHECKED Then
If $bnet_n = 1 Then
ControlSend($winname, "", "", "{ENTER}")
_CheckPause()
Sleep(3000)
ElseIf $bnet_n = 2 Then
ControlSend($winname, "", "", "{DOWN}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
ElseIf $bnet_n = 3 Then
ControlSend($winname, "", "", "{DOWN 2}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
ElseIf $bnet_n = 4 Then
ControlSend($winname, "", "", "{DOWN 3}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
ElseIf $bnet_n = 5 Then
ControlSend($winname, "", "", "{DOWN 4}")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
EndIf
EndIf
ControlSend($winname, "", "", "{ENTER}")
_CheckPause()
Sleep(10000)
GUICtrlSetData(6, @HOUR & ":" & @MIN & ":" & @SEC & " Загрузка персонажа")
_CheckPause()
Sleep(1000)
ControlSend($winname, "", "", "{ENTER}")
_CheckPause()
Sleep(30000)
EndIf
WEnd
EndFunc ;==>Relogger
While 1
Sleep(500)
If $iRelogger Then
$iRelogger = 0
Relogger()
ElseIf $iLogin Then
$iLogin = 0
Login()
ElseIf $iClicker Then
$iClicker = 0
Clicker_func()
EndIf
WEnd