Что нового

[Мышь, клавиатура] [TERA] Бот для сбора ресурсов

dimok-punk

Новичок
Сообщения
3
Репутация
0
Версия: 3.3.6.1

Описание: При создании небольшого бота, спамящего "F" в окно игры, возникла трудность: делал через оболочку GUI, присутствует 2 кнопки: 1 включает бота(тут всё в порядке), 2 выключает, т.е. останавливает скрипт кнопки 1. Проблема в том, что кнопка 2 не выполняет поставленной задачи. Помогите, пожалуйста. Скрипт в примечании.

Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

#NoTrayIcon ; не показывать иконку в трее

Global $var = 0

Local $Button_1, $Button_2, $msg, $hGUI
$hGUI = GUICreate("Сбор ресурсов" , 300 , 50 ) ; cоздаёт окно

Opt("GUICoordMode", 2)
$Button_1 = GUICtrlCreateButton("Начать сбор ресурсов", 10, 20, 120)
GUICtrlSetBkColor(-1, 0x0)
GUICtrlSetColor(-1, 0x0FFFFF)
$Button_2 = GUICtrlCreateButton("Закончить сбор ресурсов", 20, -25, 140)
GUICtrlSetBkColor(-1, 0x0)
GUICtrlSetColor(-1, 0x0FFFFF)

GUISetState() ; показывает созданное окно


While 1
    Switch GUIGetMsg()
        Case $Button_1 ; нажатие кнопки "Начать сбор ресурсов"
			$var = 1
			While $var = 1
				ControlSend("TERA", '', '', 'F') ; включает функцию отправки отправки в окно клавиши f
				Sleep(200)
			WEnd
		Case $Button_2 ; нажатие кнопки "Закончить сбор ресурсов"
			ExitLoop
		Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
А если так
Код:
While 1
    Switch GUIGetMsg()
        Case $Button_1 ; нажатие кнопки "Начать сбор ресурсов"
            $var = 1
        Case $Button_2 ; нажатие кнопки "Закончить сбор ресурсов"
            $var = 0
        Case $GUI_EVENT_CLOSE
            ExitLoop
	EndSwitch
	
    if $var = 1 Then
		ControlSend("TERA", '', '', 'F') ; включает функцию отправки отправки в окно клавиши f
    EndIf
WEnd
 
Автор
D

dimok-punk

Новичок
Сообщения
3
Репутация
0
Спасибо огромное, вы мне очень помогли. Буду пытаться дальше разобраться в данной программе) Надеюсь больше трудностей возникать не будет.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
dimok-punk,
Можно заменить
Код:
;~ ...
If $var = 1 Then
	ControlSend("TERA", '', '', 'F') ; включает функцию отправки отправки в окно клавиши f
EndIf
;~ ...
;~ на
;~ ...
If $var Then ControlSend("TERA", '', '', 'F') ; включает функцию отправки отправки в окно клавиши f
;~ ...
А еще лучше на
Код:
$hTera = WinGetHandle('TERA')
If Not $hTera Then Exit 13
;~ ...
If $var Then ControlSend($hTera, '', '', 'F') ; включает функцию отправки отправки в окно клавиши f
;~ ...



Добавлено:
Сообщение автоматически объединено:

А кнопку можно оставить одну:
Код:
#include <GUIConstantsEx.au3>

Global $iSend = 0, $idBtn, $asBtnTxt[2] = ['Начать сбор ресурсов', 'Закончить сбор ресурсов']

GUICreate('Сбор ресурсов', 300, 50)
$idBtn = GUICtrlCreateButton($asBtnTxt[$iSend], 75, 10, 150, 30)
GUICtrlSetBkColor(-1, 0x0)
GUICtrlSetColor(-1, 0x0FFFFF)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $idBtn
			$iSend = Not $iSend
			GUICtrlSetData($idBtn, $asBtnTxt[$iSend])
			ConsoleWrite('$iSend: ' & $iSend & @LF)
	EndSwitch
	If $iSend Then ConsoleWrite('ControlSend()' & @LF)
WEnd
 
Автор
D

dimok-punk

Новичок
Сообщения
3
Репутация
0
Для чего?


Добавлено:
Сообщение автоматически объединено:

Второй макрос под спойлером отказывается запускаться, причину не говорит.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
madmasles сказал(а):
Можно заменить....
Мне просто странным показалось, что ради отсылки f делать такой скрипт. По этому и предположил, что там скорей всего будет ещё что-то.
А если идти по пути упрощения, то можно вообще обойтись без GUI, задав горячую клавишу.
 
Верх