Что нового

Автоматизация процесса "заточки" вещей в Lineage 2. ПВП сервер.

skype4com

Новичок
Сообщения
11
Репутация
1
Автоматика фармит бабло, все идет отлично. Но вот когда дело доходит до "заточки" шмота, возникает вопрос: да сколько уже можно?. Собственно процесс происходит на пвп сервере, только там руки стачиваешь быстрее чем шмот на персе.
Стало быть надо чтоб это все еще и точилось само:smile:.

Скрипт точит пачку закупленных вещей. 12 вещей, по 6 штук в ряд. До +4.
расположение что где находится смотреть в скриншоте.
Собсно сам скрипт:
Код:
Opt("PixelCoordMode", 0) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 0) ;Отсчет координат мыши от левого верхнего угла клиентской части окна

Global $Paused
Global $sWinDo = "" ;хендл окна
;матрица слотов. точу 12 вещей одну за другой. по 6 в ряду.
Dim Const $LineX[2] = [370, 406]
Dim Const $LineY[6] = [1068, 1103, 1138, 1175, 1214, 1241]
;Конец блока

;MouseMove(727,528)    Координаты сброса шмотки на точку
;MouseUp("left")        Бросаем
;MouseClick ("left",645,639,1) жмем "Точить"

HotKeySet("{NUMPAD1}", "Enchant") ; команда к действию
HotKeySet("{NUMPAD2}", "TogglePause") ; пауза
HotKeySet("{NUMPAD3}", "Terminate") ; завершение скрипта
HotKeySet ( "{F1}", "_GetWinHandle1") ; по нажатию Ф1 скрипт подхватывает активное окно игры

While 1
    Sleep(100)
WEnd

Func Enchant()
WinMove($sWinDo, "", 0, 0)
WinActivate ($sWinDo)
;Sleep (10000)
$A = 0 ; горизонталь 0, первая линия
$C = 0 ; счетчик итераций. с нуля идем
While $C <1 ; итерации. сколько раз надо проходить по всему списку из 12 вещей.
	While $A < 2 ; цикл переключает горизонталь. с верхней на нижнюю
		$B = 0 ; Вертикаль 0, первый слот значит
		While $B < 6 ; В этом цикле вещи перебираются по горизонтали.
			Send("{F12}")
			Sleep (200)
			MouseMove($LineY[$B], $LineX[$A])
			Sleep (200)
			MouseDown("left")
			Sleep (500)
			MouseMove(736,560)   ; Координаты сброса шмотки на точку
			Sleep (500)
			MouseUp("left")       ; Бросаем
			Sleep (200)
			MouseClick ("left",653,672,1) ; жмем "Точить"
			Sleep (2000)
			$B = $B +1
		WEnd
	$A = $A +1
	WEnd
$C = $C +1
$A = 0 ; горизонталь 0, первая линия
WEnd
TrayTip ( "Заточка закончена", "Конец!", 3)
EndFunc


Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc


Func _GetWinHandle1 () ; функция определения хэндла первого окна
    $aAllWindows = WinList (); собираем все окна в массив
    For $i = 1 to $aAllWindows[0][0]; перебираем все окна в цикле и проверяем активно ли оно
        If _IsActive($aAllWindows[$i][1]) Then ; если окно активно, то это наше окно
            $sWinDo = $aAllWindows[$i][1] ; помещаем его хэндл в заранее приготовленную переменную
            TrayTip ( "Опознание окон", "1 Окно опознано!", 3)
			HotKeySet ( "{F1}")
        EndIf
    Next
EndFunc

Func _IsActive($handle); функция проверки активно ли окно
  If BitAnd( WinGetState($handle), 8 ) Then 
    Return 1
  Else
    Return 0
  EndIf
EndFunc


Не пинать меня. Сделано давно, и до сих пор работает. Как часы, тупо и беспощадно :rofl:
 
Верх