Что нового

Скрипт для рыбалки в WoW

Nurgllz

Новичок
Сообщения
26
Репутация
2
Код:
Global $WinName = "World of Warcraft"
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
HotKeySet("{Pause}", "TogglePause")
HotKeySet("^{Pause}", "_Exit")
Global $Paused
Sleep(500)
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(500)
        ToolTip('Paused',180,0)
    WEnd
    ToolTip("")
Check()
EndFunc

Func _Exit()
	MsgBox(0,"","Выход")
	Exit
EndFunc

While 1
	TogglePause()
	Sleep(100)
WEnd

WinActivate($WinName)
WinWaitActive($WinName)

Func Check()
	Send ("1")
	ToolTip('Check',180,0)
	SLeep(2000)
Dim $coord1 = PixelSearch(256, 17, 1345, 627, 0xAF7A53, 10 )
If Not @error Then
	MouseMove ($coord1[0]+10, $coord1[1]+10)
EndIf
While 1
$coord2 = PixelSearch($coord1[0]-10, $coord1[1]-10, $coord1[0]+9, $coord1[1]+9, 0xAF7A53, 30  ) ;ошибка в этой строке
If @error Then EndCheck()
Sleep(100)
WEnd
EndFunc

Func EndCheck()
	ToolTip('EndCheck',180,0)
	MouseClick("Right")
	Sleep(2000)
	Check()
EndFunc


Возникает ошибка Subscript used with non-Array variable в строке $coord2 = PixelSearch($coord1[0]-10, $coord1[1]-10, $coord1[0]+9, $coord1[1]+9, 0xAF7A53, 30 )
 

SyDr

Сидра
Сообщения
651
Репутация
158
В случае, если в строке
Dim $coord1 = PixelSearch(256, 17, 1345, 627, 0xAF7A53, 10)
Функция не находит указанный пиксель, то $coord1 не является после этого массивом.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 597
Репутация
938
Пробежал глазами код. Почитай вот это: http://autoit-script.ru/index.php?topic=116.0


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

Еще могу добавить вот такую плюшку [смотрите ниже]. Все равно человек который просил меня написать ему этого бота, заплатил только половину оговоренной стоимости



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

Код относится к той теме ссылку на которую я уже привел. Т.к. это лишь пример то и работает он на соответствующем уровне :smile:
 
Автор
N

Nurgllz

Новичок
Сообщения
26
Репутация
2
На данный момент я привзял поиск поплавка по красному перышку, далее он сдвигает курсор на +10, +10 и сканирует небольшую область 10х10 пикселей. Когда поплавок исчезает(а он исчезает, снял на фрапс и потом медленно прокручивал видео так вот и догадался) в общем когда тело попловка исчезает в воде правый клик, думаю все просто и изящно. Хотя иногда бот лажает, но это из-за датчиков кривых)))) переделаю выложу доработаный вариант.

ПС что то я нифига не вкуриваю своими сонными извилинами твой код, ну в общем то как обычно) хотя если чесна, работа моего бота мне нравится больше, быстрее намного он)

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

Belfigor

Модератор
Локальный модератор
Сообщения
3 597
Репутация
938
Ты избрал мертвый путь. Смени локацию и ужаснись :smile:.
P.S. Под сменой я имею ввиду не переезд из шторм винда в бути бей, а например миграцию Шторм винд => Айрон Фордж => Какая-нибудь снежная локация => Что-нибудь типа того нубского леса где нежить бегает. Ну хотя даже смена времени суток в игре не пойдет твоему скрипту на пользу :smile:
 
Автор
N

Nurgllz

Новичок
Сообщения
26
Репутация
2
Эт я уже понял, буду оживлять своего франкенштейна)))) :laugh:
Попробую ввести кучу датчиков для разных локаций, может заработает)

Слушай Belfigor, а вариант пиксель сирч екс сделать для 2-х цветов(красного и синего перышка). поставить шейдов 20-30 и будет находить в любой локе.
Как вариант сделать гуй для разных локаций, в общем вскрытие покажет.

Последняя версия вроде стабильна.

ПС понял свою ошибку... попробую сделать несколько датчиков для поплавка, и проверять изменение курсора.
В общем завтра займусь)
ППС решил таки писать его под разрешение 1024х768 на минималках, как то он стабильнее стал.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 597
Репутация
938
Как я и говорил ранее, опираться на что-то кроме курсора - мертвый вариант
 
Автор
N

Nurgllz

Новичок
Сообщения
26
Репутация
2
Пока было лень вводить проверку на курсор, тестил датчики на 3-х локациях вроде работает. Проверю ночью если норм то выложу сюда.
Скинул другу, говорит работает, тесты продолжаются)

ПС В связи с работой разработка бота будет долгой
 
Автор
N

Nurgllz

Новичок
Сообщения
26
Репутация
2
Код:
Global $WinName = "World of Warcraft"
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна

HotKeySet("{Pause}", "TogglePause")
HotKeySet("^{Pause}", "_Exit")
Global $Paused
Sleep(500)
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(500)
        ToolTip('Paused',180,0)
    WEnd
    ToolTip("")
Check()
EndFunc

Func _Exit()
	MsgBox(0,"","Выход")
	Exit
EndFunc

While 1
	TogglePause()
	Sleep(100)
WEnd

WinActivate($WinName)
WinWaitActive($WinName)

Func Check()
MouseMove (40, 110)
Send ("1") ; закидывает удочку
	ToolTip('Check',180,0) ; выводит сообщение о проверке
	Sleep(3000)
	Dim $coord1 = PixelSearch(40, 110, 1400, 649, 0x53443F); 1 датчик
	If Not @error Then 
	MouseMove ($coord1[0]+15, $coord1[1]+15) ; если находит передвигает мыша на поплавок, возможно будет больше датчиков
EndIf
$pos = MouseGetPos() 
$var = PixelSearch($pos[0], $pos[1], $pos[0], $pos[1], 0x000000) ; проверяет курсор, если изменился то....
If Not @error Then Fish1()
If @error Then Check1() ; если не нашел то в функцию поиска
EndFunc ; возможно уберу эту функцию, прекрасно работает только на check1()

Func Check1()
While 1
ToolTip('Check1',180,0)
$pos1 = MouseGetPos()	
$coord2 = PixelSearch(40, $pos1[1], 1400, 649, 0x53443F, 5); $pos1[1] уменьшает квадрат поиска по вертикали
	If Not @error Then 
	MouseMove ($coord2[0]+15, $coord2[1]+15)
EndIf
$coord2 = PixelSearch(40, $pos1[1], 1400, 649, 0x2A4459, 5); $pos1[1] уменьшает квадрат поиска по вертикали
	If Not @error Then 
	MouseMove ($coord2[0]+15, $coord2[1]+15)
$pos3 = MouseGetPos()
$var = PixelSearch($pos3[0], $pos3[1], $pos3[0], $pos3[1], 0x000000)
If Not @error Then Fish1()
EndIf
WEnd	
EndFunc ; думаю здесь все понятно, скорее всего введу проверку хода ловли т.е. если по каким то 
;         причинам не видит зеленую полоску которая сообщает о ходе рыблки то снова закидывает удочку

Func Fish1() ; если не находит поплавок то подсекает(функция EndCheck)
$GetPos = MouseGetPos()
$Poplavok = PixelGetColor ($GetPos[0]-15, $GetPos[1]-15)
While 1
PixelSearch($GetPos[0]-20, $GetPos[1]-20, $GetPos[0]+15, $GetPos[1]+15, $Poplavok, 15)
If @error Then EndCheck()
PixelSearch(699, 809, 699, 809, 0x007500, 15)
If @error Then Check()
WEnd
EndFunc

Func EndCheck()
	ToolTip('EndCheck',180,0)
	MouseClick("Right")
	Sleep(2000)
	Check()
EndFunc


Последнее творение))) переделал за 10 минут, так что будут фиксы. Если кому интересно можете подсказывать на явно неудачные моменты в скрипте, думаю что их не мало ;)
Данная версия для разрешения 1680х1050, работала в 2-х локациях. Над временем суток буду работать позжее, зато уже сейчас отличает мой поплавок от чужих)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 597
Репутация
938
Курсоооор, я тебя уверяю, лучшее решение
 
Автор
N

Nurgllz

Новичок
Сообщения
26
Репутация
2
Ну отчасти он по курсору ориентируется)
По поводу курсора согласен, ибо поплавок меняет свой цвет от черного, к зеленому, синему, желтому и тп... В общем буду искать решение))) Ну пока мне это интересно, буду этой хренью заниматься)

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

ПС Мне выкладывать новые версии или хватит тему засирать?!)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 597
Репутация
938
Выкладывай, глядишь кому-нибудь пригодится.
 

Wfaut

Новичок
Сообщения
6
Репутация
4
Сделал так.
Критикуйте.

Работает в окне ~1000/700.
Разрешение в игре менять не надо, достаточно установить оконный режим и нужный размер экрана.
Должна быть установлена опция Hardware Cursor.
Вид от первого лица.
Обрабатывается верхняя середина экрана.
Устойчиво работает в Шторме, Даларане, Винтерграспе.
 

botomoto

Новичок
Сообщения
1
Репутация
0
пытаюсь адаптировать данный скрипт под актуальную версию игры, но пока не получается :(
в игре изменился курсор... может быть из-за этого и не работает...
если кто-то пользуется подобным скриптом или подобным ему то просьба подсказать
что нужно изменить в этом скрипте чтобы работало на текущей версии wow.
(речь о скрипте Wfaut из архива fwow01.rar)
 

Wfaut

Новичок
Сообщения
6
Репутация
4
щас...
ищу последнюю версию :laugh:
и, типа, проверяю :shok:

PS
А может сделать скрипт для спама в форум? :blum:

ЗЗЫ
А вот и ответ во вложении )
 
Верх