; Зависит от CheckPixel в модуле Colors.au3 link
; CheckLaser проверяет включён ли лазер номер $LaserNum (соответствует номеру клавиши F1-F8), работает при разрешени окна еве 1024*768. Проверка идёт в первых точках которые начинают светиться по окружности.
; LaserPress включает (при $on=1) или выключает (при $on=0) лазер с номером $LaserNum. Дополнительную проверку на включенность перед вызовом не требует, ибо проверяет сама.
; Естественно, работает только при настройках клиента уже описанных где-то в этом форуме - widescreen on.
; Вот тут примерно, только скрин брался старый, без widescreen включенного.
;;;;;;;;;;;;;;;;;;;;
Старый скрипт
[quote author=Archy26]С тримкалором, работать будет и БЕЗ вайдскрина, если задать значение яркости от 235 до 255
Хотя, может и подглючивать.[/quote]
Не уверен, там вроде не настолько яркая полоса, именно в том месте. Я вон с 0х101010 сравниваю. Хотя, возможно я и перестраховываюсь, не помню уже точно. Да и мало ли, вдруг солнце как раз там окажется, и всё, без вайдскрина никак.
Оказалось, скрипт всё же чуть-чуть сбоит. Поскольку область поиска пикселя задана чуть шире, иногда в неё попадает часть названия врека, которая отображается даже на чёрном фоне вайдскрина. Замирает собака, поскольку думает что сальвагер включён, когда он не включён, и ждёт когда врек отсальважится, до бесконечности.
Нужно либо чуть уменьшить зону поиска чтоб лишних пикселей не захватывать (если название никогда не залазит на ту тёмную окружность, по которой полоска активности бегает), либо проверять на зелёный цвет активации.
UPD. Также бывает достаточно просто отодвинуть камеру чуть дальше от корабля, чтобы все притаскиваемые вреки были в центре экрана. Хотя сделать распознавание зелёного все-равно стоит.
UPDATE 13.03.11
Текущий скрипт.
Тут "внешние" переменные $HUDx, $HUDy - координаты HUD-а, это самая левая яркая точка верхней полосы.
Работает только с хай-слотами, но легко доделывается и под мед, лоу, при желании и необходимости.
Зависит от модуля http://autoit-script.ru/index.php?topic=62.0
В вызове CheckPixel(...) последний параметр 0x40 - средняя яркость начала бегущей полосы. Когда был вайдскрин использовал 0x10, сбоев не было. Сейчас в режиме обычного космоса (не карты) иногда сбоит, но для хантера это некритично.
Проверка точки происходит дважды с интервалом 250 миллисекунд, хотите, можете добавить ещё одну проверку, всего-то несколько строк добавить по аналогии.
Функция _CS($param1, $param2) - просто тот же Sleep() на время, выбранное рандомом между 1м и 2-м параметрами.
; CheckLaser проверяет включён ли лазер номер $LaserNum (соответствует номеру клавиши F1-F8), работает при разрешени окна еве 1024*768. Проверка идёт в первых точках которые начинают светиться по окружности.
; LaserPress включает (при $on=1) или выключает (при $on=0) лазер с номером $LaserNum. Дополнительную проверку на включенность перед вызовом не требует, ибо проверяет сама.
; Естественно, работает только при настройках клиента уже описанных где-то в этом форуме - widescreen on.
; Вот тут примерно, только скрин брался старый, без widescreen включенного.
;;;;;;;;;;;;;;;;;;;;
Старый скрипт
Код:
Func CheckLaser($LaserNum)
if CheckPixel($WinPos[0]+614+51*($Lasernum-1), $WinPos[1]+671, $WinPos[0]+616+51*($Lasernum-1), $WinPos[1]+672, 0x101010)==1 then
return 1
else
return 0
endif
;;;;616+51 672 тут 616 - х координата точки проверки первого лазера, 51 - расстояние между иконками лазеров. 672 - y координата точки проверки.
EndFunc ; => CheckLaser
Func LaserPress($LaserNum, $on)
if CheckLaser($LaserNum)<>$on then
Send("{F"&$LaserNum&"}")
$Randc=Random(100, 500)
Sleep($Randc)
endif
EndFunc; => LaserPress
[quote author=Archy26]С тримкалором, работать будет и БЕЗ вайдскрина, если задать значение яркости от 235 до 255
Хотя, может и подглючивать.[/quote]
Не уверен, там вроде не настолько яркая полоса, именно в том месте. Я вон с 0х101010 сравниваю. Хотя, возможно я и перестраховываюсь, не помню уже точно. Да и мало ли, вдруг солнце как раз там окажется, и всё, без вайдскрина никак.
Оказалось, скрипт всё же чуть-чуть сбоит. Поскольку область поиска пикселя задана чуть шире, иногда в неё попадает часть названия врека, которая отображается даже на чёрном фоне вайдскрина. Замирает собака, поскольку думает что сальвагер включён, когда он не включён, и ждёт когда врек отсальважится, до бесконечности.
Нужно либо чуть уменьшить зону поиска чтоб лишних пикселей не захватывать (если название никогда не залазит на ту тёмную окружность, по которой полоска активности бегает), либо проверять на зелёный цвет активации.
UPD. Также бывает достаточно просто отодвинуть камеру чуть дальше от корабля, чтобы все притаскиваемые вреки были в центре экрана. Хотя сделать распознавание зелёного все-равно стоит.
UPDATE 13.03.11
Текущий скрипт.
Код:
;;;;;;;;;;;;;;;;;;;;
Dim $DeltaHUDHSlot1x=41 ; смещение 1-го слота по x от координат HUD-а
Dim $DeltaHUDHSlot1y=-80 ; смещение 1-го слота по y от координат HUD-а
Func CheckLaser($LaserNum)
if CheckPixel($HUDx+$DeltaHUDHSlot1x-1+51*($Lasernum-1), $HUDy+$DeltaHUDHSlot1y-1, $HUDx+$DeltaHUDHSlot1x+51*($Lasernum-1), $HUDy+$DeltaHUDHSlot1y-1, 0x40)==1 then
sleep(250)
if CheckPixel($HUDx+$DeltaHUDHSlot1x-1+51*($Lasernum-1), $HUDy+$DeltaHUDHSlot1y-1, $HUDx+$DeltaHUDHSlot1x+51*($Lasernum-1), $HUDy+$DeltaHUDHSlot1y-1, 0x40)==1 then
return 1
else
return 0
endif
endif
;616+51 672
EndFunc ; => CheckLaser
Func LaserPress($LaserNum, $on)
if CheckLaser($LaserNum)<>$on then
Send("{F"&$LaserNum&"}")
_CS(100, 300)
endif
EndFunc; => LaserPress
Тут "внешние" переменные $HUDx, $HUDy - координаты HUD-а, это самая левая яркая точка верхней полосы.
Работает только с хай-слотами, но легко доделывается и под мед, лоу, при желании и необходимости.
Зависит от модуля http://autoit-script.ru/index.php?topic=62.0
В вызове CheckPixel(...) последний параметр 0x40 - средняя яркость начала бегущей полосы. Когда был вайдскрин использовал 0x10, сбоев не было. Сейчас в режиме обычного космоса (не карты) иногда сбоит, но для хантера это некритично.
Проверка точки происходит дважды с интервалом 250 миллисекунд, хотите, можете добавить ещё одну проверку, всего-то несколько строк добавить по аналогии.
Функция _CS($param1, $param2) - просто тот же Sleep() на время, выбранное рандомом между 1м и 2-м параметрами.