Всем доброго времени суток! Долго думал, выкладывать или нет своё творение в открытый доступ, но тяга к прекрасному (ну или ужасному :stars
пересилила страх потерять перса, тем более что мне на него, в общем-то, пофиг уже давно =) На данный момент скрипт собирает любой ресурс с проверкой чтобы ресурс был "свободен". В данный момент скрипт настроен на сбор снежков, т.к. сейчас идёт событие - НГ.
Скрипт "заточен" под расширение экрана 1366 х 768 (потому что оно у меня стоит =) ) так что если хотите использовать с другим разрешением - поменяйте все координаты, там есть описание.
Есть проблемы:
1) Если ресурс занят, то скрипт ждёт пока другой игрок соберет его, а потом есть два варианта - или он кликает туда где был ресурс, или продолжает поиск. (Решено)
2) Проблема с нападениями - пытаюсь сделать так, чтобы при нападении напавший убивался, но он как-то против =) (Решено)
2.2) После боя не хочет выходить и ресаться =(( Идёт зацикливание - клик по полю боя, клик по квадрату смены поля для сбора ресурсов (их 4) (Вроде как решено)
3) Никак не определюсь, что делать, если получена заноза - можно сделать несколько заготовленных фраз которые пишешь в чат, чтобы вытащили занозу. (С ней невозможен сбор)
Вроде всё =) Буду очень благодарен помощи в оптимизации и устранении ошибок.
Да, буду благодарен за информацию, как сменить логин =)
UP1 - Иcправил свои ошибки в расположении цикла While, добавил функцию Proverka (), Сделал исключение пикселей-ошибок из квадрата поиска (в данный момент эту функцию не проверял на работоспособность - нет возможности зайти в игру)
UP2 06.12.2012 - Доведен до рабочего состояния игнор "занятых" ресурсов. Переделан код. Теперь с использованием функций
. Правда есть шанс что я с ними перестарался 
UP3 15.12.2012 Добавил:
-Выход при нажатии Esc
-Паузу при нажатии "Pause"
-Убрал включение клиента, теперь начинает работу через 4 сек. после запуска
Работающий код (работает сбор снега):

Скрипт "заточен" под расширение экрана 1366 х 768 (потому что оно у меня стоит =) ) так что если хотите использовать с другим разрешением - поменяйте все координаты, там есть описание.
Есть проблемы:
1) Если ресурс занят, то скрипт ждёт пока другой игрок соберет его, а потом есть два варианта - или он кликает туда где был ресурс, или продолжает поиск. (Решено)
2) Проблема с нападениями - пытаюсь сделать так, чтобы при нападении напавший убивался, но он как-то против =) (Решено)
2.2) После боя не хочет выходить и ресаться =(( Идёт зацикливание - клик по полю боя, клик по квадрату смены поля для сбора ресурсов (их 4) (Вроде как решено)
3) Никак не определюсь, что делать, если получена заноза - можно сделать несколько заготовленных фраз которые пишешь в чат, чтобы вытащили занозу. (С ней невозможен сбор)
Вроде всё =) Буду очень благодарен помощи в оптимизации и устранении ошибок.
Да, буду благодарен за информацию, как сменить логин =)
UP1 - Иcправил свои ошибки в расположении цикла While, добавил функцию Proverka (), Сделал исключение пикселей-ошибок из квадрата поиска (в данный момент эту функцию не проверял на работоспособность - нет возможности зайти в игру)
UP2 06.12.2012 - Доведен до рабочего состояния игнор "занятых" ресурсов. Переделан код. Теперь с использованием функций


UP3 15.12.2012 Добавил:
-Выход при нажатии Esc
-Паузу при нажатии "Pause"
-Убрал включение клиента, теперь начинает работу через 4 сек. после запуска
Работающий код (работает сбор снега):
Код:
Dim $Left, $Up, $Right, $Down, $x, $y, $x15, $y15, $x20, $y20, $coord, $d, $15coord, $res, $zan, $a, $b, $time, $time1, $time2, $break, $Paused
;*************************************************************************************
;*************************|НЕОБХОДИМО ЗАДАТЬ ПЕРЕМЕННЫЕ: |****************************
;*************************************************************************************
$res=0xD0DFDB ;Один из пикселей ресурса который нужен (необходимо выбрать уникальный по цвету пиксель,
;чтобы пиксель такого цвета был только один в локации (иначе просто будет тыкать в этот пиксель без смысла)
$time = 17 ;Время в секундах, которе занимает сбор ресурса (засекается с таймером)
;*************************************************************************************
;*************************| Дальше всё автоматическое |*******************************
;*************************************************************************************
$break = Random(349,874)
$d = 2 ;данная переменная отвечает за окно сбора ресурсов (их 4)
$time1 = $time * 1000 + 1000 ;Минимальная задержка при начале сбора ресурса
$time2 = $time * 1000 + 3000 ;Максимальная задержка при начале сбора ресурса
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet('{Esc}', '_Exit')
;Базовые координаты - квадрат поиска.
$Left = 301
$Up = 153
$Right = 1048
$Down = 734
Sleep(4000)
While (PixelGetColor(654,368)<>0xED1C24)
While (PixelGetColor(654,368)<>0xED1C24)
$coord = PixelSearch ( $Left, $Up, $Right, $Down, $res) ;Поиск пикселя заданного ресурса
If @error Then
Search()
Else ; Not @error
$a = $coord[0]
$b = $coord[1]
Square () ;Задаётся квадрат вокруг ресурса, для проверки что ресурс не занят
$15coord = PixelSearch ( $x15, $y15, $x20, $y20, 0xFFD500,15) ;Поиск вокруг найденной точки пикселей жёлтого цвета,
;то есть проверка чтобы ресурс не был занят
If Not @error Then
Zaniatii_Resurs () ;Действия, есл ресурс занят
Boy ()
Else ;@error
Sbor () ;Сбор свободного ресурса
Boy ()
EndIf
EndIf
WEnd
Boy ()
WEnd
Func _Exit()
Exit
EndFunc
Func TogglePause()
$Paused = Not $Paused
While $Paused
Sleep(100)
ToolTip('Скрипт приостановлен')
WEnd
ToolTip("")
EndFunc
Func Time_To_Sleep ()
If $break = 0 Then
Sleep (Random(600000,1200000))
$break = Random(149,394)
EndIf
EndFunc
Func Obnulenie ()
$Left = 301
$Up = 153
$Right = 1048
$Down = 734
EndFunc
Func Search()
If $d=1 Then
MouseClick("primary", 689, 108)
Sleep(Random(500, 750))
Obnulenie ()
Proverka ()
EndIf
If $d=2 Then
MouseClick("primary", 696, 129)
Sleep(Random(500, 750))
Obnulenie ()
Proverka ()
EndIf
If $d=3 Then
MouseClick("primary", 632, 130)
Sleep(Random(500, 750))
Obnulenie ()
Proverka ()
EndIf
If $d=4 Then
MouseClick("primary", 635, 107)
Sleep(Random(500, 750))
Obnulenie ()
Proverka ()
EndIf
if $d < 4 then
$d = $d + 1
else
$d = 1
EndIf
EndFunc
Func Proverka ()
;Проверка чтобы не выскакивали ошибки
If PixelGetColor(629, 96) = 0x730000 Then
MouseClick("primary", 593, 34)
Sleep(100)
EndIf
If PixelGetColor(756, 432) = 0xFF0000 Then
MouseClick("primary", 671, 465)
Sleep(100)
EndIf
If PixelGetColor(725, 250) = 0xB70000 Then
MouseClick("primary", 683, 497)
Sleep(100)
EndIf
If PixelGetColor(729, 434) = 0xFF0000 Then
MouseClick("primary", 675, 462)
Sleep(100)
EndIf
If PixelGetColor(774, 433) = 0xFF0000 Then
MouseClick("primary", 674, 464)
Sleep(100)
EndIf
Boy ()
EndFunc
Func Zaniatii_Resurs ()
If $Up < $b Then ;Меняет область поиска, чтобы ошибочный пиксель в неё не попадал
$Up= $b + 1
EndIf
If $Up > $b Then
$Up = $Up + 1
EndIf
EndFunc
Func Sbor ()
Sleep(Random(217,482))
MouseClick("left", $a, $b,2)
Sleep(Random($time1, $time2))
Sleep(Random(401, 897))
$break = $break - 1
Boy ()
EndFunc
Func Square ()
$x15 = $a - 25
$y15 = $b - 25
$x20 = $a + 25
$y20 = $b + 25
EndFunc
Func Boy ()
If PixelGetColor(716, 305)=0xF8DEA4 Then ;Проверка что напали
While (PixelGetColor(530, 441)<>0x7A0000)
Sleep(3000)
MouseClick("primary", 483, 318)
Sleep(Random(2000,3500))
MouseClick("primary", 483, 318)
Sleep(Random(2000,3500))
MouseClick("primary", 483, 318)
Sleep(Random(2000,3500))
MouseClick("primary", 454, 371)
Sleep(Random(2000,3500))
WEnd
MouseClick("primary", 539, 36) ;локция
Sleep(Random(3500,5000))
MouseClick("primary", 685, 262) ;рес
Sleep(Random(3500,5000))
MouseClick("primary", 683, 498)
Sleep(Random(3500,5000))
MouseClick("primary", 1131, 157)
Sleep(Random(3500,5000))
MouseClick("primary", 595, 33)
Sleep(Random(3500,5000))
EndIf
EndFunc