Существует куча кликеров для AION со своими + и -, рабочих и не рабочих, требующий вмешательство в процессы и т.д. Вот и решил написать свой скриптовый кликер.
Качаем программу
Используемые функции:
$npcX = Int(109) - определение новой переменной npcX со значением int = 109
MouseClick("left", 500, 300, 2, 1) - клик мышкой в точку с x = 500, y = 300, совершаем 2 клика со скоростью 1 (1 - быстро, 100 - медленно)
MouseMove(200, 300) - перемещение мыши к точке с координатами (200, 300).
$p = PixelGetColor( 200, 300 ) - присвоение переменной $p цвета пикселя с координатами (200, 300). Функция возвращает цвет пикселя типом decimal.
Sleep(1000) - пауза в 1 сек.
; - комментирование 1 строки
#comments-start
...
#comments-end - комментирование нескольких строк
// - мои пояснения, при использовании кода удалить :)
При использовании скриптов, AION запускаю в оконном режиме.
СКРИПТ ДЛЯ КРАФТА
// Клик, чтобы сделать окно AION активным
MouseClick("left", 500, 500, 2, 1)
;Координаты НПС
$npcX = Int(109)
$npcY = Int(195)
;Кнопка увеличения кол-ва вещей крафта
$upButtonX = Int(516)
$upButtonY = Int(805)
;Кнопка начала крафта
$craftStartX = Int(563)
$craftStartY = Int(805)
;Кнопка ЗАКАЗЫ
$zakazX = Int(100)
$zakazY = Int(515)
;Верхний заказ
$upZakazX = Int(100)
$upZakazY = Int(327)
;Прокрутка заказа вниз
$moveZakazDownX = Int(415)
$moveZakazDownY = Int(550)
;Кнопка Согласия
$okButtonX = Int(326)
$okButtonY = Int(586)
;Выбор заказа
$ownZakazX = Int(106)
$ownZakazY = Int(457)
// А вот тут координаты точки, по которой мы определяем завершение крафта, я решил использовать первую ячейку панели с помещенной в нее иконкой поднятия лута. Если рука белая - крафт закончен, серый - крафт в процессе.
$podX = Int(415)
$podY = Int(930)
//задержка кликания, вечером увеличиваю, днем уменьшаю. ПИНГИ - ЗЛО
$sl = Int(1500)
// исходное состояние: задание на крафт не взято, открыто окно крафта, с привязанными к нему соответствующими переменными. Стоим в игре так, чтобы можно было брать задания и крафтить на одном месте. НПС в зоне видимости и соответствующие переменные с его координатами заданы.
For $k = 1 to 80 Step 1
// тыкаем на НПС 4 раза, 4 - вечером, днем или ночью достаточно 2 )))
MouseClick("left", $npcX, $npcY, 4, 1)
Sleep($sl)
// Кликаем на кнопку ЗАКАЗЫ
MouseClick("left", $zakazX, $zakazY, 1, 1)
Sleep($sl)
// Кликаем на верхний заказ
MouseClick("left", $upZakazX, $upZakazY, 1, 1)
Sleep($sl)
// Кликаем на стрелочку прокрутки заказа вниз
MouseClick("left", $moveZakazDownX, $moveZakazDownY, 30, 1)
Sleep($sl)
// Кликаем на принятие заказа
MouseClick("left", $okButtonX, $okButtonY, 1, 1)
Sleep($sl)
// В окне крафта кликаем на наш заказ
MouseClick("left", $ownZakazX, $ownZakazY, 1, 1)
Sleep($sl)
// Ставим на максимум количество вещей крафта
For $i = 1 to 20 Step 1
MouseClick("left", $upButtonX, $upButtonY, 1, 1)
Sleep(10)
Next
// Клик на старт крафта
MouseClick("left", $craftStartX, $craftStartY, 1, 1)
Sleep(2000)
// Вот тут и используем цвет руки поднятия лута для определения конца крафта
Do
Sleep(3000)
$p = PixelGetColor( $podX , $podY )
Until $p > 15000000
// Клик на НПС
MouseClick("left", $npcX, $npcY, 4, 1)
Sleep($sl)
// Клик на заказы
MouseClick("left", $zakazX, $zakazY, 1, 1)
Sleep($sl)
// Клик на верхний заказ
MouseClick("left", $upZakazX, $upZakazY, 1, 1)
Sleep($sl)
// Клик на сдачу заказа
MouseClick("left", $okButtonX, $okButtonY, 1, 1)
Sleep($sl)
Next
Достаточно 1 раз помучиться и 1000 раз юзать )))))
[/HIDE]
Добавлено через 20 минут
Авто-кач для гладиатора. Тут меньше пояснений, смысл был описан подробно выше.
MouseClick("left", 550, 50, 1)
// Основной бесконечный цикл
$n = 1
Do
// Ищем моба
FindMob(1)
// Бьем
AttacMob(1)
// Лечимся
Heal(10)
Until $n = 2
Func Heal($temp)
// координаты точки на полоске жизней, если красная полоска левее точки - нужно хилиться.
$healX = 290
$healY = 900
MouseMove($healX, $healY)
$p = PixelGetColor( $healX , $healY )
If $p > 13000000 AND $p < 15000000 Then
Return 0
ElseIf $p > 3000000 AND $p < 5000000 Then
//нужен хил - присели
UseSkil(12)
Do
Sleep(5000)
// 340 - точка максимального кол-ва HP (чуть-чуть правее)
$p = PixelGetColor( 340, $healY )
Until $p > 13000000 AND $p < 15000000
Return 1
Else
Return 0
EndIf
EndFunc
Func FindMob($value)
// Если это моб, то при его выборе появляется красная полоска HP )))
$isMobX = 545
$isMobY = 45
$isMobBool = 0
Do
// Send - Нажатие кнопок клавиатуры
Send("{A 50}")
Sleep(500)
Send("{TAB}")
MouseMove($isMobX, $isMobY)
$p = PixelGetColor( $isMobX , $isMobY )
If $p > 13000000 AND $p < 15000000 Then
;MsgBox(4096, "Test", "МБО", 10)
$isMobBool = 1
Else
Send("{A 50}")
EndIf
Until $isMobBool = 1
EndFunc
// атака моба. Тут нужно просчитывать нажатие бафов и атак. Так как этот скрипт для гладиатора, то бафов у него нет (1 вечный). А хил его как атака. Я расположил атаки в нужном мне порядке и всё.
Func AttacMob($value)
$isMobDead = 0
UseSkil(1)
Sleep(6000)
$k = 0
$i = 2
Do
UseSkil($i)
$isMobDead = IsMobDead(-1)
$i += 1
If $i = 11 Then $i = 2
$k += 1
Until $isMobDead = 1 OR $k = 20
Sleep(1000)
// убили - подобрали лут
UseSkil(11)
EndFunc
// А вот тут одна хитрость. Определение того, что моб умер, заключается в цвете левой точке его ХП.
Func IsMobDead($test)
// А вот хитрость. Иногда бывают моменты, что цвет неба светло-розовый и оно определяется как моб ))) Так вот нужно еще брать для проверки точку в правой части ИНФО-панели моба, которое появляется при выборе моба, эта точка коричневого цвета. Смысл надеюсь понятен, так как скрины смогу выложить позже ...
// точка справа на коричневых загогулинках
$isMobX = 699
$isMobY = 40
$p = PixelGetColor( $isMobX , $isMobY )
if $p < 12000000 OR $p > 12500000 Then
Return 1
EndIf
// точка слева на ХП
$mobISDeadX = 540
$mobISDeadY = 45
MouseMove($mobISDeadX, $mobISDeadY)
$p = PixelGetColor( $mobISDeadX , $mobISDeadY )
If $p > 13000000 AND $p < 15000000 Then
Return 0
ElseIf $p > 3000000 AND $p < 4000000 Then
Return 1
Else
Return 0
EndIf
EndFunc
// Скилы располагаем на первой панели 1,2,3,4,5,6,7,8,9,0,-,=
Ниже координаты центра скилов.
Func UseSkil($value)
$skilsY = 925
$skil1X = 415 ;атака
$skil2X = 455 ;Ослабляющий удар
$skil3X = 495 ;Яростный удар
$skil4X = 535 ;Критический удар
$skil5X = 575 ;Удар гнева
$skil6X = 605 ;Костолом
$skil7X = 645 ;Волна разрушения
$skil8X = 685 ;Пронзающий клинок
$skil9X = 735 ;Оздоровление
$skil10X = 775
$skil11X = 815 ;Подбор
$skil12X = 845 ;Сесть
Sleep(100)
If $value = 1 Then
MouseClick("left", $skil1X, $skilsY, 1)
Sleep(1000)
ElseIf $value = 2 Then
MouseClick("left", $skil2X, $skilsY, 1)
Sleep(1500)
ElseIf $value = 3 Then
MouseClick("left", $skil3X, $skilsY, 1)
Sleep(500)
ElseIf $value = 4 Then
MouseClick("left", $skil4X, $skilsY, 1)
Sleep(500)
ElseIf $value = 5 Then
MouseClick("left", $skil5X, $skilsY, 1)
Sleep(500)
ElseIf $value = 6 Then
MouseClick("left", $skil6X, $skilsY, 1)
Sleep(500)
ElseIf $value = 7 Then
MouseClick("left", $skil7X, $skilsY, 1)
Sleep(500)
ElseIf $value = 8 Then
MouseClick("left", $skil8X, $skilsY, 1)
Sleep(500)
ElseIf $value = 9 Then
MouseClick("left", $skil9X, $skilsY, 1)
Sleep(500)
ElseIf $value = 10 Then
MouseClick("left", $skil10X, $skilsY, 1)
Sleep(200)
ElseIf $value = 11 Then
MouseClick("left", $skil11X, $skilsY, 1)
Sleep(3000)
ElseIf $value = 12 Then
MouseClick("left", $skil12X, $skilsY, 1)
Sleep(1000)
EndIf
Return 1
EndFunc
[/HIDE]