Что нового

Требуется проверка грамматики скрипта

Andeangl

Новичок
Сообщения
62
Репутация
4
Всем добрый вечер! Написал скрипт, он, зараза, не работает =( Т.к. я как автор, и не могу трезво оценить свою работу (во избежание- не пью, совсем :smile:) хочу попросить тех кто может это сделать посмотреть, где я навалял =)

Код:
Run()
Sleep(5000)
MouseClick("primary", 504, 474)
Sleep (10000)
MouseClick("primary", 201, 377)
Send('{ENTER}')
Sleep (5000)
MouseClick("primary", 418, 126)
Sleep(2000)
Send('{F7}')
Sleep(2000)
Send('{F11}')
Dim $x, $y, $x15, $y15, $coord
While 1
While PixelGetColor(796, 382) <> 0xF8DEA4
$coord = PixelSearch ( 130, 140, 880, 730, 0x5B0D0A)
If Not @error Then
$x = $coord[0]
$y = $coord[1]
Sleep(100)
EndIf
$x15 = $x-15
$y15 = $y-15
If PixelGetColor($x15, $y15) <> (0x5D1102 or 0x411701 or 0x860200 or 0xC04B00 or 0xE07C00 or 0xF69F00 or 0xFFB900 or 0xFFEE00 or 0xFFD900 or 0xDBC800 or 0xB69800 or 0xB68700 or 0xB68000 or 0x906500 or 0x906B00 or 0x907200 or 0x907700 or 0x908000 or 0x7E6F00 or 0x3A2700 or 0x3A3400) Then
   MouseClick("primary", $x, $y) 
   Sleep(100)
   MouseClick("primary", $x, $y)
EndIf
Sleep(10000)
If PixelGetColor(600, 450) = 0xFFEFC0 Then
   MouseClick("primary", 513, 496)
EndIf
If PixelGetColor(482, 392) = 0x760000 Then
   MouseClick("primary", 505, 455)
EndIf
Sleep(50000)
$1 = "Random(1000, 10000)"
Sleep($1)  
WEnd
$Stop="Random(90000, 120000)"
Sleep($Stop)
MouseClick("primary", 359, 31)
$4="Random(3000, 15000)"
Sleep($4)
MouseClick("primary", 678, 340)
$5="Random(6000, 10000)"
Sleep($5)
MouseClick("primary", 511, 513)
$6="Random(4000, 8000)"
Sleep($6)
MouseClick("primary", 796, 238)
$7="Random(2, 3)"
If $7=2 Then 
   MouseClick("primary", 798, 259)
   EndIf
If $7=3 Then 
   MouseClick("primary", 797, 302)
EndIf
WEnd


Что после Run следует писать путь к файлу я знаю, он там есть, просто в данном случае он не имеет значения =) Тем более что думаю те кто разбираются и так отлично определят для чего сей скрипт, а кто не разбирается тому и не надо =)

Кроме того буду благодарен любой критике по оптимизации кода!

За умные ответы заранее спасибо =)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Re: Неработает созданный скрипт, требуется проверка сторонним наблюдаетелем =)

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Неработает созданный скрипт, требуется проверка сторонним наблюдаетелем =)" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
Так подойдёт?

Ушёл минут на 20, если тема всё ещё не удовлетворяет условиям прошу подождать! :whistle:
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Лично мне не нравится вот это
Код:
If PixelGetColor($x15, $y15) <> (0x5D1102 or 0x411701 or 0x860200 or 0xC04B00 or...

скорее всего подразумевается
Код:
If PixelGetColor($x15, $y15) <> 0x5D1102 or PixelGetColor($x15, $y15) <> 0x411701 or PixelGetColor($x15, $y15) <> 0x860200 or PixelGetColor($x15, $y15) <> 0xC04B00 or...

или
Код:
$Color = PixelGetColor($x15, $y15)
If $Color <> 0x5D1102 or $Color <> 0x411701 or $Color <> 0x860200 or $Color <> 0xC04B00 or...
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
InnI проблема собственно в том, что всё работало, причём именно с такой системой! Потом что-то изменил и работать перестало, причём я не понимаю как так- я отменил все действия с момента когда работало корректно, и всё равно работать не хочет :'( Эта система просто заставляет его прогонять полученный пиксель по всем этим цветам, и если он удовлетворяет хотя бы одному то ничего не происходит, если не удовлетворяет цикл идет дальше


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

Да, судя по всему проблема где-то в цикле While потому что до этого момента всё работает корректно
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Тогда вот эти вещи
Код:
$Stop="Random(90000, 120000)"
Sleep($Stop)

У вас переменным присваиваются строки, а затем скрипт прерывается на значения этих строк.
Я даже не знаю, как Sleep отработает :-[
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Andeangl
Если нет ошибки то выполянем...
Код:
If Not @error Then
$x = $coord[0]
$y = $coord[1]
Sleep(100)
EndIf
$x15 = $x-15
$y15 = $y-15

А если ошибка то $x15 и $y15 в лучшем случае будут -15 но PixelGetColor не работает с отрицательными координатами.
Код:
If PixelGetColor($x15, $y15) <> (0x5D1102 or ...
Результат в скобках все время возвращаяет TRUE - в этом нет смысла..
Код:
Sleep(50000)
$1 = "Random(1000, 10000)"
Sleep($1)


"Random(1000, 10000)" - не нужно заключать в ковычки - иначе результат вернется строкой.
Зачем два раза sleep можно ведь Sleep(51000,60000,1) - третий параметр нужен для того, что бы sleep возвращала целое число

Код:
MouseClick("primary", $x, $y)
четвертым параметром можно указать количество нажатий.
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
Andeangl
Так это записывается
Код:
Switch PixelGetColor($x15, $y15)
	Case 0x5D1102, 0x411701, 0x860200, 0xC04B00, 0xE07C00, 0xF69F00, 0xFFB900, 0xFFEE00, 0xFFD900, 0xDBC800, 0xB69800, 0xB68700, 0xB68000, 0x906500, 0x906B00, 0x907200, 0x907700, 0x908000, 0x7E6F00, 0x3A2700, 0x3A3400
		Sleep(10) ; можно убрать эту строку
	Case Else
	   MouseClick("primary", $x, $y) 
	   Sleep(100)
	   MouseClick("primary", $x, $y)
EndSwitch
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
Так это записывается
Есть проблема =) у меня программа не воспринимает это =(


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

Если нет ошибки то выполянем...
А если ошибка то $x15 и $y15 в лучшем случае будут -15 но PixelGetColor не работает с отрицательными координатами.

Здесь врятли есть ошибка - там изначальные значения ($x и $y) в несколько раз больше 15, так что там всегда положительное значение.
Да и работало оно раньше =) Сейчас думаю "обнулить" код до того момента когда работает и меееедленно-мееедленно добавлять компоненты.

Результат в скобках все время возвращаяет TRUE - в этом нет смысла..
Смысл в различной задержке, тут всё норм
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
У меня в справке три параметра
Посмотрел справку 3.3.9.5 бета - там тоже один параметр. На 3.3.8.0 запуск с тремя параметрами ошибку пишет. Чего-то я, видимо, не знаю или не понимаю :(
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
inververs
У меня в справке три параметра
Во всех справках (англ, Иванова) посмотрел, везде один параметр.

Andeangl
Есть проблема =) у меня программа не воспринимает это =(
Я естественно не тестировал программу, я правильно записал идею, которая была записана по придуманным правилам. Результат в скобках выполняется первее и возвращает True, то есть PixelGetColor не сравнивается с числом 0x5D1102 или 0x411701 или... Если сравнивать положительность то зачем там куча чисел. То что скрипт работал это не говорит о правильности записи, скрипт может работать и с бессмыслецой, просто пропустив её или наоборот исполнив подусловие в ней.
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Зачем два раза sleep можно ведь Sleep(51000,60000,1) - третий параметр нужен для того, что бы sleep возвращала целое число
Кажется я понял. Это - опечатка. Вместо Sleep подразумевалось Random.
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
AZJIO
Смысл должен быть (по идее) в том, что скрипт ищет пиксель заданного цвета. Обнаружив, запихивает его в условие что цвет пикселя расположенного на 15 пикселей левее и на 15 выше не равен ни одному из заданных, тогда скрипт дважды тыкает в самый первый полученный пиксель и радуется.

К сожалению даже если я выложу программу полностью с файлами и т.д. Вы не сможете проверить её правильность т.к. она ещё и "заточена" под определённое разрешение экрана, и прийдётся либо ставить такое разрешение и все сопутствующие проги, либо менять все данные :(
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
InnI
:whistle: Упс, это для Random естественно
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
Смысл должен быть (по идее) в том, что скрипт ищет пиксель заданного цвета. Обнаружив, запихивает его в условие что цвет пикселя расположенного на 15 пикселей левее и на 15 выше не равен ни одному из заданных, тогда скрипт дважды тыкает в самый первый полученный пиксель и радуется.

Кто может подсказать как сделать подобную проверку?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
InnI проблема собственно в том, что всё работало, причём именно с такой системой! Потом что-то изменил и работать перестало, причём я не понимаю как так- я отменил все действия с момента когда работало корректно, и всё равно работать не хочет Эта система просто заставляет его прогонять полученный пиксель по всем этим цветам, и если он удовлетворяет хотя бы одному то ничего не происходит, если не удовлетворяет цикл идет дальше

Andeangl, тебе ж сказали что это не работает
Код:
$x = (0x5D1102 or 0x411701 or 0x860200 or 0xC04B00 or 0xE07C00 or 0xF69F00 or 0xFFB900 or 0xFFEE00 or 0xFFD900 or 0xDBC800 or 0xB69800 or 0xB68700 or 0xB68000 or 0x906500 or 0x906B00 or 0x907200 or 0x907700 or 0x908000 or 0x7E6F00 or 0x3A2700 or 0x3A3400)
MsgBox(0, "итого", $x )


По сути ты ставишь проверку условия
Код:
If PixelGetColor($x15, $y15) <> True
 
Верх