DenNC
28-06-2009, 12:06
Здравствуйте. Решил научиться писать программы на AutoIT и столкнулся с небольшой проблемой объявления переменных. Уверен, исправляеться она просто, но сижу уже сутки и никак сделать немогу, помогите пожалуйста.
Вобщем когда программа была в одном файле и без функций интерфейса GUI все работало нормально, но после GUI попросила объявить некоторые переменные, вот с одной то я и столкнулся, никак объявить не могу, прога пишет
"Variable used without being declared.:" на файле warp.au3 на строке "if $belt=1 Then $y=0"
файл Main.au3
#include <GuiConstantsEx.au3>
#include <start.au3>
Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)
Global $ExitID
Global $number_belt
GUI()
Func GUI()
Local $YesID
; GUI
GuiCreate("AI BOT 1.0", 400, 300)
; TAB
GuiCtrlCreateTab(10, 0, 380, 260)
GuiCtrlCreateTabItem("main")
GuiCtrlCreateLabel("Number of belts", 20, 40)
$YesID = GUICtrlCreateButton("Start", 10, 260, 100, 30)
GUICtrlSetOnEvent($YesID, "Start")
$ExitID = GUICtrlCreateButton("Exit", 290, 260, 100, 30)
GUICtrlSetOnEvent($ExitID, "OnExit")
GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")
GUISetState() ; display the GUI
While 1
Sleep(1000)
WEnd
EndFunc
Func Start()
main2()
EndFunc
Func OnExit()
Exit
EndFunc
файл start.au3
WinMove("EVE","",0,0)
#include "attack.AU3"
#include "warp.AU3"
Func main2()
Local $x
$x=1
MsgBox(0,1,"инициализация",2)
Do
warp($x)
sleep(30000)
attack()
$x=$x+1
Until $x=GUICtrlRead($numberbelt)
sleep(2000)
MsgBox(0,1,"завершение работы программы",2)
EndFunc
файл warp.au3
;WinMove("EVE","",0,0)
;инициализация точки
$WinPos = WinGetPos("EVE")
$tochkaX = $WinPos[0] + 57
$tochkaY = $WinPos[1] + 73
;инициализация меню
$WinPos = WinGetPos("EVE")
$menuX = $tochkaX + 70
$menuY = $tochkaY + 10
;инициализация меню астероидов
$WinPos = WinGetPos("EVE")
$asteroidX = $menuX + 200
$asteroidY = $menuY + 0
;инициализация первого белта
$WinPos = WinGetPos("EVE")
$beltX = $asteroidX + 190
$beltY = $asteroidY + 3
;функция варпа, передаваемое значение - номер белта
func warp($belt)
if $belt=1 Then $y=0
if $belt=2 Then $y=17
if $belt=3 Then $y=34
if $belt=4 Then $y=51
if $belt=5 Then $y=68
if $belt=6 Then $y=85
if $belt=7 Then $y=102
if $belt=8 Then $y=119
if $belt=9 Then $y=136
if $belt=10 Then $y=153
if $belt=11 Then $y=170
MouseClick("left", $tochkaX, $tochkaY, 1, 20)
sleep (1000)
MouseClick("left", $menuX, $menuY, 1, 20)
sleep (1000)
MouseClick("left", $asteroidX, $asteroidY, 1, 20)
MouseClick("left", $asteroidX, $asteroidY+$y, 1, 20)
sleep (1000)
MouseClick("left", $beltX, $beltY+$y, 1, 20)
MsgBox(0,1,"варпаем на "& $belt &" астероид",2)
EndFunc
Вобщем когда программа была в одном файле и без функций интерфейса GUI все работало нормально, но после GUI попросила объявить некоторые переменные, вот с одной то я и столкнулся, никак объявить не могу, прога пишет
"Variable used without being declared.:" на файле warp.au3 на строке "if $belt=1 Then $y=0"
файл Main.au3
#include <GuiConstantsEx.au3>
#include <start.au3>
Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)
Global $ExitID
Global $number_belt
GUI()
Func GUI()
Local $YesID
; GUI
GuiCreate("AI BOT 1.0", 400, 300)
; TAB
GuiCtrlCreateTab(10, 0, 380, 260)
GuiCtrlCreateTabItem("main")
GuiCtrlCreateLabel("Number of belts", 20, 40)
$YesID = GUICtrlCreateButton("Start", 10, 260, 100, 30)
GUICtrlSetOnEvent($YesID, "Start")
$ExitID = GUICtrlCreateButton("Exit", 290, 260, 100, 30)
GUICtrlSetOnEvent($ExitID, "OnExit")
GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")
GUISetState() ; display the GUI
While 1
Sleep(1000)
WEnd
EndFunc
Func Start()
main2()
EndFunc
Func OnExit()
Exit
EndFunc
файл start.au3
WinMove("EVE","",0,0)
#include "attack.AU3"
#include "warp.AU3"
Func main2()
Local $x
$x=1
MsgBox(0,1,"инициализация",2)
Do
warp($x)
sleep(30000)
attack()
$x=$x+1
Until $x=GUICtrlRead($numberbelt)
sleep(2000)
MsgBox(0,1,"завершение работы программы",2)
EndFunc
файл warp.au3
;WinMove("EVE","",0,0)
;инициализация точки
$WinPos = WinGetPos("EVE")
$tochkaX = $WinPos[0] + 57
$tochkaY = $WinPos[1] + 73
;инициализация меню
$WinPos = WinGetPos("EVE")
$menuX = $tochkaX + 70
$menuY = $tochkaY + 10
;инициализация меню астероидов
$WinPos = WinGetPos("EVE")
$asteroidX = $menuX + 200
$asteroidY = $menuY + 0
;инициализация первого белта
$WinPos = WinGetPos("EVE")
$beltX = $asteroidX + 190
$beltY = $asteroidY + 3
;функция варпа, передаваемое значение - номер белта
func warp($belt)
if $belt=1 Then $y=0
if $belt=2 Then $y=17
if $belt=3 Then $y=34
if $belt=4 Then $y=51
if $belt=5 Then $y=68
if $belt=6 Then $y=85
if $belt=7 Then $y=102
if $belt=8 Then $y=119
if $belt=9 Then $y=136
if $belt=10 Then $y=153
if $belt=11 Then $y=170
MouseClick("left", $tochkaX, $tochkaY, 1, 20)
sleep (1000)
MouseClick("left", $menuX, $menuY, 1, 20)
sleep (1000)
MouseClick("left", $asteroidX, $asteroidY, 1, 20)
MouseClick("left", $asteroidX, $asteroidY+$y, 1, 20)
sleep (1000)
MouseClick("left", $beltX, $beltY+$y, 1, 20)
MsgBox(0,1,"варпаем на "& $belt &" астероид",2)
EndFunc