Что нового

WarpTest Модуль

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Warp Test Модуль v0.1 Модуль проверки состояния варпа
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Применение:
;; Само тело функции расместить в любой удобной части скрипта.
;; Использовать ссылку на функцию из любой части скрипта, для инициализации проверки ухода в и выхода корабля из варпа.
;; Зависимость: ЕСТЬ
;; Данный модуль зависит от CS и TT модулей. Для его использования необходимо включить эти модули в тело скрипта.
;; Точные названия необходимых модулей: CS($Time); TT($Text).
;; Описание:
;; WarpTest Модуль - это модуль предназначенный для определения момента ухода корабля в варп и последующего момента выхода из варпа. На время варпа модуль приостанавливает исполнение скрипта.
;; WarpTest() - ссылка на функцию, иницирующая проверку корабля на выход и выход из варпа.
;; $WarpTestX - Х координата точки проверки состояния варпа корабля, расположенная на нижней панели интерфейса.
;; $WarpTestY - Y координата точки проверки состояния варпа корабля, расположенная на нижней панели интерфейса.
;; Принцип работы:
;; После того как корабль снизил скорость до 80% и меньшеи получил запрос на варп куда-либо, активация этого модуля приведет к приостановке исполнения скрипта до момента выхода корабля из варпа.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
Func WarpTest()
    $i = 0
    $WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY)
    Do
        CS(1000)
        PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 10 )
        If @error Then
            $i = 1
        EndIf
    Until $i = 1
    TT("Лечу")
    CS(9000)
    $WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY)
    Do
        CS(1000)
        PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 10 )
        If @error Then
            $i = 0
        EndIf
    Until $i = 0
    TT("Прилетел")
    CS(5000)
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

Belfigor сказал(а):
;; Точные названия необходимых модулей: CS($Time); TT($Text).
Где можно посмотреть, что это за модули?
Насколько я понял то CS это та же команда Sleep()... Что делает ТТ не пойму...

Правильно ли я понимаю синтаксис модуля?
Точка $WarpTestX, $WarpTestY находится в раёне 80% панели скорости.

Func WarpTest() - Название Функции.
$i = 0 - Присваиваем переменной значение 0
$WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY) - присваиваем перемеренной значение цвета в определенной точке.
Do - начинается цыкл пока выражение не станет верным.
CS(1000) - ждать 1 сек
PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 10 ) - Ищет значение цвета WarpTestCheckSum в указанном квадрате. А что такое 10?
If @error Then - когда цвет перестал совпадать присвоить переменной $i значение 1 и и закончить работу?
$i = 1
EndIf

Цвет в панели скорости поменялся значит корабль ушел в Варп илбо разогнался выше 80% своей скорости?

Until $i = 1 - Когда значение $i = 1 ждать 9 секунд
TT("Лечу")
CS(9000)
$WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY) - присвоить переменной цвет
Do - начинается цыкл пока выражение не станет верным.
CS(1000)
PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 10 ) - Ищет значение цвета WarpTestCheckSum в указанном квадрате. А что такое 10?
If @error Then - когда цвет перестал совпадать присвоить переменной $i значение 0 и и закончить работу?
$i = 0
EndIf
Until $i = 0
TT("Прилетел")
CS(5000) - Ждать 5 секунд (время остановки корабля после выхода из варпа) и закончить работу функции.
EndFunc

Правильно я все понимаю?
P.S.
Вопрос скорее всего глупый но мои знания в программировании и спиртовании стремятся к 0... вот и хочется понять принципы и азы. :smile:


Добавлено:
Сообщение автоматически объединено:

На один свой вопрос ответ нашел...

Belfigor сказал(а):
Видимо удалены ибо отпала в них надобность, замени CS и TT Sleepом и ToolTipoом
По поводу понимания работы модуля вопрос остается открытым. :smile:
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Re: WarpTest

да работает именно так, 10 - шейд, тоесть оно ищет не точный цвет а с погрешностью в 10 чисел.
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

Этот модуль дает сбои:
Когда корабль разворачивается на точку Варпа индикатор скорости постепенно заполняется... То есть когда корабль долго разворачивается индикатор скорости заполняется на 100% и срабатывает первая проверка "Лечу"...
В момент когда корабль развернулся индикатор скорости падает до 0 и корабль уходит в Варп срабатывает вторая проверка "Прилетели"...

То есть Бот во время Варпа считает, что он уже прилетел... со всеми вытекающими...

Если разворот не долгий (индикатор скорости во время разворота не доходит до 100%) то работает отлично.

Как это можно побороть?

Думаю при первой проверке "Лечу" можно мониторить еще и индикатор капаситора. (на Варп тратится капа и цвет индикатара меняется)

Но не знаю как сделать проверку сразу по 2 точкам? :wacko:
[Ой ошибсо кнопкой, хотел цитировать о_О (c) Belfigor]
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Re: WarpTest

McSkull сказал(а):
Этот модуль дает сбои:
Когда корабль разворачивается на точку Варпа индикатор скорости постепенно заполняется... То есть когда корабль долго разворачивается индикатор скорости заполняется на 100% и срабатывает первая проверка "Лечу"...
В момент когда корабль развернулся индикатор скорости падает до 0 и корабль уходит в Варп срабатывает вторая проверка "Прилетели"...

То есть Бот во время Варпа считает, что он уже прилетел... со всеми вытекающими...

Если разворот не долгий (индикатор скорости во время разворота не доходит до 100%) то работает отлично.

Как это можно побороть?

Думаю при первой проверке "Лечу" можно мониторить еще и индикатор капаситора. (на Варп тратится капа и цвет индикатара меняется)

Но не знаю как сделать проверку сразу по 2 точкам? :wacko:
[Ой ошибсо кнопкой, хотел цитировать о_О (c) Belfigor]
Модуль написан из расчета на то что перед варпом корабль остановится :smile:
проверку по двум точкам сделай с помощью двух пиксельсерчей :smile:
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

Belfigor сказал(а):
Модуль написан из расчета на то что перед варпом корабль остановится :smile:
проверку по двум точкам сделай с помощью двух пиксельсерчей :smile:
Я пробовал останавливать корабль.
После полной остановки начинал варп... Но при развороте Индикатор все равно начинает постепенно ползти вверх. А так как это Майнинг баржа с её черепашьей скоростью индикатор частенько успевает доползти до 100%.

По поводу 2-х ПиксельСерчей.
Если я правильно понял то можно сделать так.

$WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY)
$CapasitorCheckSum = PixelGetColor($CapasitorTestX, $CapasitorTestY)
Do
CS(1000)
PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 10 )
PixelSearch($CapasitorTestX, $CapasitorTestY, $CapasitorTestX+1, $CapasitorTestY+1, $CapasitorCheckSum, 10 )
If @error Then
$i = 1
EndIf
Until $i = 1
TT("Лечу")
CS(9000)

Так $i станет = 1 только в том случае когда изменятся оба цвета $WarpTestCheckSum и $CapasitorCheckSum ?

P.S.
Задаю такие вопросы так как на работе доступа к игре нет и проверить возможности тоже нет...
А так если зная, что мыслю в правильном направлении могу "переделать" и другие модули, чтобы дома уже было, что проверять... :smile:
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Re: WarpTest

нет.
Pixelserach
If not @error Then
Pixelsearch
If not @error
;и тут пишем что делать если и первый и второй пиксельсерч удачны
Else
; Если удачен только первый псерч
EndIf
Else
;Если ниодин псерч не удался
EndIf


за несколько лет игры у миня ну ниразу небыло такова чтобы из полностью остановленного положения корабль варпал позже чем 80% наберутся, тоесть сама скорость ухода в варп ниже максимальной скорости корабля.
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

Belfigor сказал(а):
за несколько лет игры у миня ну ниразу небыло такова чтобы из полностью остановленного положения корабль варпал позже чем 80% наберутся, тоесть сама скорость ухода в варп ниже максимальной скорости корабля.
Спасибо за ответ...
Попробую еще раз с остановкой шипа проверить...

А двойную проверку тоже есть где попробовать... :smile:


Добавлено:
Сообщение автоматически объединено:

Если я правильно понял то двойная проверка в модуле варпа выглядит вот так?

Код:
Func WarpTest()
    $i = 0
    $WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY)
	$CapasitorCheckSum = PixelGetColor($CapasitorTestX, $CapasitorTestY)
    Do
        Sleep(1000)
        PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 10 )
        If not @error Then
			PixelSearch($CapasitorTestX, $CapasitorTestY, $CapasitorTestX+1, $CapasitorTestY+1, $CapasitorCheckSum, 10 )
            If not @error Then
				$i=0
			Else
			$i=0
        EndIf
		Else
		$i=1
	EndIf
	Until $i = 1
    ToolTip("Лечу")
    Sleep(9000)
    $WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY)
    Do
        Sleep(1000)
        PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 10 )
        If @error Then
            $i = 0
        EndIf
    Until $i = 0
    ToolTip("Прилетел")
    Sleep(4000)
		EndFunc
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Re: WarpTest

Можно сказать и так :smile:
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

Belfigor сказал(а):
Можно сказать и так :smile:
Приду домой буду проверять... (Надеюсь будет работать)
Кажется потихоньку начинаю понимать как работают логические If...Then, Do...Until

P.S.
Спасибо, что отвечаете на вопросы. :smile:
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Re: WarpTest

Да не за что :smile:.
Триггеры выхода из цикла в виде $i уже утратили свою надобность. Используй ExitLoop и While цикл, так будет более полит корректно да и скорость вроде будет быстрее (счет идет на милисекунды)
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

Двойная проверка в этой ситуации не дает ровным счетом ничего...
Наступает на те же грабли, что и при одной проверке.

Самое просто это тормозить корабль.
Но там я тоже наткнулся на проблемку.

Корабль выходит со станции перпендикулярно ей и на полной скорости.
После остановки двигатели снова запускаются на полную мощность, что бы корабль стал параллельно станции.

Пару раз в момент "становления параллельно" Бот начинал варпать и тест варпа глючил... :(
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Re: WarpTest

Невиданные вещи какие то рассказываешь о_О. После того как ты нажал на стоп (ктр спейс) Если только никто тебя не бампанет все будет в порядке. Или же мы играем в разные игры.
Напоминаю репо кнопка там V. Без всякой отдачи даже мне помогать нет никакого стимула
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

По поводу репы исправлюсь... :smile:

А по поводу остановки шипа все так как я описал...
Думаю у вас наверное быстрая скорость выбора места варпа (для максимального ускорения процесса :smile:) а у меня пока мышка доползет до нужного пункта менюшки... корабль полностью останавливается и начинает выравниваться...

P.S.
Может не со всех станций корабли вылетают вертикально в низ? (не обращал внимания просто)
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Re: WarpTest

Ну мышь двигается со скоростью 10. Алгоритм такой: Андок, жмем на остановку корабля, ждем 10 секунд и выбираем куда варпаться :smile:
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

Belfigor сказал(а):
Ну мышь двигается со скоростью 10. Алгоритм такой: Андок, жмем на остановку корабля, ждем 10 секунд и выбираем куда варпаться :smile:
Сенкс попробую...

Я шел по этому пути но Sleep() был 24 сек. (Это время до остановки Ретривера...)
Вечером как раз хотел засечь время пока мышь от кнопки стоп доползет в меню до кнопки варпа... :smile:

Просто проверял утром вот так.
Код:
Func Undoc()
MouseClick("left", 20, 760)
UndokTest()
Sleep(1000)
MouseClick("left", 468, 731, 1, 20)
ToolTip("Торможу")
Sleep(24000)
EndFunc

Хотя модуль торможениявыложенный вами тоже работает как положено.
Думаю если проверять точку на индикаторе скорости в месте 40-50% то тоже будет без сбоев работать. Уход в Варп должен будет начаться в момент практически полной остановки.

P.S.
Пока писал пришла мысль, что можно сделать так.

Код:
Func _StopShip()
    $i = SSCheck()
    If $i = 282 Then
        MouseClick("left", $WinPos[0]+468, $WinPos[1]+728, 1, 20)
Тут отправить мыш к кнопке Меню...
        Do
            $i = SSCheck()
        Until $i = 281
    EndIf
    Return $i
EndFunc ;==>StopShip
 

McSkull

Новичок
Сообщения
66
Репутация
6
Re: WarpTest

Решил отказаться от проверки входа в Варп, а оставить только проверку выхода из него.

Код:
Манипуляции для ухода в варп
Sleep(25000)
WarpTest()


Код:
Func WarpTest()
    $i = 0
       $WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY)
    Do
        Sleep(1000)
        PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 10 )
        If @error Then
            $i = 1
        EndIf
    Until $i = 1
    Sleep(4000)
EndFunc


Но похоже с утра что-то не досмотрел... Так как скрипт отрабатывался без задержки в 25 секунд. Хотя по идее должен работать правильно.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 552
Репутация
930
Re: WarpTest

Дык включи задержку внутрь скрипта
 

Luke

Новичок
Сообщения
64
Репутация
14
Belfigor не обижайся, но McSkull прав твой WarpTest Модуль v0.1 глючит , и частенько (например при логине когда шип в космосе и надо подождать выхода из варпа чтоб определиться где мы). Уверен сейчас ты пользуешься более продвинутым вариантом :smile:.

Выкладываю мой старый модуль варп теста основаный на другом принципе:

Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;; Warp Test Модуль v0.2 Модуль проверки состояния варпа (приостанавливает скрипт до выхода из варпа)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
Func WarpTest()
	Local $x1 = 0, $y1 = 0, $RGB = 0, $R = 0, $G = 0, $B = 0, $Grad = 0, $WarpT = 0, $FlagTT = 0
	CS(3000)
	Do
		$WarpT = 0
		For $y1 = $ShipY - 13 To $ShipY - 10 Step 1
			For $x1 = $ShipX - 95 To $ShipX - 83 Step 1 ; $ShipX\Y -координаты треугольника худ 
				$RGB = Hex(PixelGetColor($x1, $y1), 6)
				$R = Dec(StringLeft($RGB, 2))
				$G = Dec(StringMid($RGB, 3, 2))
				$B = Dec(StringRight($RGB, 2))
				$Grad = Sqrt(($R ^ 2) + ($G ^ 2) + ($B ^ 2))
				If $Grad < 95 Then
					If $FlagTT = 0 Then
						TT("Лечу")
						$FlagTT = $FlagTT + 1
					EndIf
					$WarpT = 1
					CS(3000)
				EndIf
			Next
		Next
	Until $WarpT = 0
	If $FlagTT > 0 Then TT("Прилетел")
EndFunc   ;==>WarpTest
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Модуль работает ТОЛЬКО на русском клиенте, т.к. основан на разнице в длине надписи Гиперпрыжок и цифр скорости, просто ищет чёрные точки в заданой области.

P.S.
v0.3 ищет букву, а не точки и работает на любом клиенте, но это каждый пишет сам :smile:.
 
Верх