Показать сообщение отдельно
Старый 22.01.2010, 20:33   #1
FFFZZZ
Гость
Аватар для FFFZZZ
Сообщений: n/a
Благодарностей:
0 всего

Кликер - СделайСам


Существует куча кликеров для AION со своими + и -, рабочих и не рабочих, требующий вмешательство в процессы и т.д. Вот и решил написать свой скриптовый кликер.


Качаем программу www.autoitscript.com/autoit3/

Используемые функции:
$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]

Последний раз редактировалось FFFZZZ; 23.01.2010 в 05:26. Причина: Добавлено сообщение
 
Ответить с цитированием
Сказали спасибо:
Недоступно (14.03.2014), Недоступно (01.10.2012), Недоступно (15.04.2011), Недоступно (26.01.2010), Gaara (23.01.2010)