Что нового

Уменьшить скрипт

Yuriy09

Новичок
Сообщения
11
Репутация
0
Скрипт по сути выполняет запись пикселей в текстовый файл. Чтоб в дальнейшем работать по ним. Получилось очень интересно если его запустить. :IL_AutoIt_1: . А проблема заключается в следующем: Нужно сделать его меньше! Сколько пробовал не получается :( Думаю по любому можно его как то сделать так.

Код:
#include <GUIConstantsEx.au3>
#include <Misc.au3>
HotKeySet("{ESC}","Close")
Func Close()
   savemobs()
   Exit
EndFunc

Global $but[10],$chk[10],$iut[10],$pix[5]
$INI=@ScriptDir&"/settings.ini"

GUICreate("Мой GUI", -1, -1, -1, -1)
GUISetState(@SW_SHOW)

$nacil=GUICtrlCreateButton("начать ",200,250,150,25)
For $i = 0 To 9
$but[$i]=GUICtrlCreateButton("+",200,25+20*$i,15,15)
$chk[$i]=GUICtrlCreateCheckbox("",60,25+20*$i,20,20)
$iut[$i]=GUICtrlCreateInput(IniRead($INI,"Options","iut"&$i,""),80,25+20*$i,90,20)
GUICtrlSetState($chk[$i],IniRead($INI,"Options","chk" & $i,"0"))
GUICtrlSetTip($but[$i],"Выбрать ?(Нажать)")
GUICtrlSetTip($iut[$i],"Имя ")
GUICtrlSetTip($chk[$i],"Включить / Выключить")

Next

Func savemobs()
      for $i = 0 to UBound($iut) - 1
   for $t = 0 to UBound($chk) - 1
	  IniWrite($INI,"Options","iut" & $i,GUICtrlRead($iut[$i]))
	  IniWrite($INI,"Options","chk" & $t,GUICtrlRead($chk[$t]))
   Next
Next
EndFunc



Func mobsv0()
While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color0"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox0",$pos[0])
IniWrite($INI,"Options","Coloy0",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv1()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color1"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox1",$pos[0])
IniWrite($INI,"Options","Coloy1",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv2()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color2"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox2",$pos[0])
IniWrite($INI,"Options","Coloy2",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv3()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color3"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox3",$pos[0])
IniWrite($INI,"Options","Coloy3",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv4()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color4"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox4",$pos[0])
IniWrite($INI,"Options","Coloy4",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv5()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color5"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox5",$pos[0])
IniWrite($INI,"Options","Coloy5",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv6()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color6"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox6",$pos[0])
IniWrite($INI,"Options","Coloy6",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv7()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color7"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox7",$pos[0])
IniWrite($INI,"Options","Coloy7",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv8()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color8"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox8",$pos[0])
IniWrite($INI,"Options","Coloy8",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func mobsv9()
   While 1
$pos=MouseGetPos()
ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1]+10)
Sleep(70)
If _IsPressed("11") Then
ToolTip("")
   For $i=0 To 4
$pix[$i]=PixelGetColor($pos[0]+$i,$pos[1])
IniWrite($INI,"Options","Color9"&$i,"0x"&Hex($pix[$i],6))
IniWrite($INI,"Options","Colox9",$pos[0])
IniWrite($INI,"Options","Coloy9",$pos[1])
Next
MsgBox(0,"","ok")
ExitLoop
EndIf
WEnd
EndFunc

Func nacil0()
If GUICtrlRead($chk[0])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox0","")
	  $my0=IniRead($INI,"Options","Coloy0","")
	  $cv=IniRead($INI,"Options","Color0"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

Func nacil1()
   If GUICtrlRead($chk[1])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox1","")
	  $my0=IniRead($INI,"Options","Coloy1","")
	  $cv=IniRead($INI,"Options","Color1"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

Func nacil2()
   If GUICtrlRead($chk[2])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox2","")
	  $my0=IniRead($INI,"Options","Coloy2","")
	  $cv=IniRead($INI,"Options","Color2"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

Func nacil3()
   If GUICtrlRead($chk[3])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox3","")
	  $my0=IniRead($INI,"Options","Coloy3","")
	  $cv=IniRead($INI,"Options","Color3"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

Func nacil4()
   If GUICtrlRead($chk[4])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox4","")
	  $my0=IniRead($INI,"Options","Coloy4","")
	  $cv=IniRead($INI,"Options","Color4"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

Func nacil5()
   If GUICtrlRead($chk[5])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox5","")
	  $my0=IniRead($INI,"Options","Coloy5","")
	  $cv=IniRead($INI,"Options","Color5"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

Func nacil6()
   If GUICtrlRead($chk[6])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox6","")
	  $my0=IniRead($INI,"Options","Coloy6","")
	  $cv=IniRead($INI,"Options","Color6"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

Func nacil7()
   If GUICtrlRead($chk[7])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox7","")
	  $my0=IniRead($INI,"Options","Coloy7","")
	  $cv=IniRead($INI,"Options","Color7"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
   EndIf
EndFunc

Func nacil8()
   If GUICtrlRead($chk[8])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox8","")
	  $my0=IniRead($INI,"Options","Coloy8","")
	  $cv=IniRead($INI,"Options","Color8"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

Func nacil9()
   If GUICtrlRead($chk[9])=$GUI_CHECKED Then
   For $i=0 To 4
	  $mx0=IniRead($INI,"Options","Colox9","")
	  $my0=IniRead($INI,"Options","Coloy9","")
	  $cv=IniRead($INI,"Options","Color9"&$i,"")
	  $res=PixelSearch($mx0-20,$my0-20,$mx0+20,$my0+20,$cv)
	  If Not @error Then
 MouseMove($res[0],$res[1])
		 EndIf
	  Next
	  EndIf
EndFunc

While 1
   Switch GUIGetMsg()
   Case $GUI_EVENT_CLOSE
	  ExitLoop
   Case $but[0]
	  mobsv0()
	  Case $but[1]
	  mobsv1()
	  Case $but[2]
	  mobsv2()
	  Case $but[3]
	  mobsv3()
	  Case $but[4]
	  mobsv4()
	  Case $but[5]
	  mobsv5()
	  Case $but[6]
	  mobsv6()
	  Case $but[7]
	  mobsv7()
	  Case $but[8]
	  mobsv8()
	  Case $but[9]
	  mobsv9()
   Case $nacil
	  nacil0()
	  nacil1()
	  nacil2()
	  nacil3()
	  nacil4()
	  nacil5()
	  nacil6()
	  nacil7()
	  nacil8()
	  nacil9()
   EndSwitch
WEnd
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Меньше сделать что? Код, скомпилированный файл или файл, куда записывается результат?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
С точки зрения оптимизации кода, можно делать так (функционал сохранён, только оптимизация кода):

Код:
#include <GUIConstantsEx.au3>
#include <Misc.au3>

HotKeySet("{ESC}", "Close")

Func Close()
	savemobs()
	Exit
EndFunc

Global $but[10], $chk[10], $iut[10], $pix[5]
$INI = @ScriptDir & "\settings.ini"

GUICreate("Мой GUI", -1, -1, -1, -1)
GUISetState(@SW_SHOW)

$nacil = GUICtrlCreateButton("начать ", 200, 250, 150, 25)

For $i = 0 To 9
	$but[$i] = GUICtrlCreateButton("+", 200, 25 + 20 * $i, 15, 15)
	$chk[$i] = GUICtrlCreateCheckbox("", 60, 25 + 20 * $i, 20, 20)
	$iut[$i] = GUICtrlCreateInput(IniRead($INI, "Options", "iut" & $i, ""), 80, 25 + 20 * $i, 90, 20)
	GUICtrlSetState($chk[$i], IniRead($INI, "Options", "chk" & $i, "0"))
	GUICtrlSetTip($but[$i], "Выбрать ?(Нажать)")
	GUICtrlSetTip($iut[$i], "Имя ")
	GUICtrlSetTip($chk[$i], "Включить / Выключить")
Next

Func savemobs()
	For $i = 0 To UBound($iut) - 1
		For $t = 0 To UBound($chk) - 1
			IniWrite($INI, "Options", "iut" & $i, GUICtrlRead($iut[$i]))
			IniWrite($INI, "Options", "chk" & $t, GUICtrlRead($chk[$t]))
		Next
	Next
EndFunc

Func mobsvN($iN)
	While 1
		$pos = MouseGetPos()
		
		ToolTip("Наведите и нажмите CTRL (Нужно навести на отличающие цвета от других)", $pos[0], $pos[1] + 10)
		Sleep(70)
		
		If _IsPressed("11") Then
			ToolTip("")
			
			For $i = 0 To 4
				$pix[$i] = PixelGetColor($pos[0] + $i, $pos[1])
				IniWrite($INI, "Options", "Color" & $iN & $i, "0x" & Hex($pix[$i], 6))
				IniWrite($INI, "Options", "Colox" & $iN, $pos[0])
				IniWrite($INI, "Options", "Coloy" & $iN, $pos[1])
			Next
			
			MsgBox(0, "", "ok")
			ExitLoop
		EndIf
	WEnd
EndFunc

Func nacilN($iN)
	If GUICtrlRead($chk[$iN]) = $GUI_CHECKED Then
		For $i = 0 To 4
			$mx0 = IniRead($INI, "Options", "Colox" & $iN, "")
			$my0 = IniRead($INI, "Options", "Coloy" & $iN, "")
			$cv = IniRead($INI, "Options", "Color" & $iN & $i, "")
			$res = PixelSearch($mx0 - 20, $my0 - 20, $mx0 + 20, $my0 + 20, $cv)
			If Not @error Then
				MouseMove($res[0], $res[1])
			EndIf
		Next
	EndIf
EndFunc

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $but[0] To $but[9]
			For $iN = 0 To 9
				If $iMsg = $but[$i] Then
					mobsvN($iN)
				EndIf
			Next
		Case $nacil
			For $iN = 0 To 9
				nacilN($iN)
			Next
	EndSwitch
WEnd
 
Верх