Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Alexankin

Pages: [1]
1
Спасибо)))

Пытаюсь в скрипт внедрить еще одну удочку))) можно до 3х...

буду пробовать)))


2
существует какой нибудь указатель который может перезапускать скрипт , например каждые 15 минут , не задерживая при этом скрипт ?

или

какое нибудь условие ? , ЕСЛИ в цикле не нажалась например Т в течении 2 минут , запустить скрипт заново !

Случайно не над FOR мне нужно ломать голову ?


3
:o Goto , как все просто оказывается  ;D (смеюсь над собой) и я же читал про то что можно было перекинуть на другую строчку и так туплю... надо передохнуть

Я вам очень благодарен за ваше терпение и помощь...

4
Во время использования , встретил проблему , когда скрипт выполняет свою задачу используя только $u, т.е. только одним зажатием G не доходя до $lovim , сбивается вся работа , хотя зачастую $lovim нужно для выполнения задачи :(

Подлечил так , но не вылечил судя по логам  :(

Code: [Select]
$nakonechnik=0
while($nakonechnik=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977, 486,255) // Красный наконечник удочки
$nakonechnik=1
KEYDOWN(#G)
LOGWRITE ("Зажал 1 G")
waitms (50)
END_IF
waitms (64)
END_CYC

waitms (10)

$lovim=0
while($lovim=0)
IF_PIXEL_IN (959,435,977,486,255) // Тянем
KEYDOWN(#G)
LOGWRITE ("Зажал 2 G")
GETSCREEN
IF_PIXEL_IN (913,717,930,732,4488494) // Макс. натяжение лески
KEYUP(#G)
LOGWRITE ("Отжал 2 G")
waitms (5)
KEYDOWN(#H)
LOGWRITE ("Зажал 1 H")
END_IF
END_IF

waitms (10)

GETSCREEN
IF_PIXEL_IN (917,703,931,714,4488494) //  Макс. натяжение удочки
KEYUP(#H)
LOGWRITE ("Отжал 1 H")
waitms (5)
KEYDOWN(#G)
LOGWRITE ("Зажал  3 G")
END_IF

waitms (10)

GETSCREEN
IF_PIXEL_IN (951,436,956,440,0) // --------
$lovim=1
wait (1)
KEYPRESS(#T)
waitms (5)
LOGWRITE ("Нажал Т")
wait (1)
END_IF
waitms (64)
End_cyc

waitms (10)

$poimali=0
while($poimali=0)
GETSCREEN
IF_PIXEL_IN (665,777,767,778,16750899) // Если рыбу поймал
$poimali=1
KEYUP(#G)
waitms (5)
LOGWRITE ("Отжал G")
waitms (5)
KEYUP(#H)
waitms (5)
LOGWRITE ("отжал H")
wait (2)
Keypress(#SPACE)
waitms (5)
LOGWRITE ("Нажал Space")
wait (2)
Keypress(#T)
waitms (5)
LOGWRITE ("Нажал T")
waitms (5)
END_IF
waitms (64)
End_cyc

Постоянно проскакивает "Зажал 2 G" Админам игры это точно не понравится  ;D , но дело не в ниХ...
А в том что это логично , так как я сам задал скрипту такую задачу , но не хватает знаний и опыта что бы излечить эту болезнь...

Как это лечится ? или с каким указателем поработать ?

Но зажатие G необходимо в $lovim

5
оО спасибо , а я уже все сделал после того как прочитал ваше сообщение в VK)))

Хотел еще кое что сюда засунуть , но пока мучаюсь сам... не хочется никого обременять)))

6
Vint , совсем не спешу и конечно буду ждать , главное разобраться , не то что бы сделать и пользоваться , но и самому понять как это сделано...

Буду пробовать дальше))) и ждать , хорошего отдыха...

7
Допиши обработку поймали по какому нибудь признаку, потом спейс, задержку и переход на начало. Думаю там не сложно.

По какому признаку ??? я ведь сделал что бы он нашел по цвету в определенной области  и как кинуть на начало ))) ? где об этом почитать ? что бы потом написать ! или где взять пример ?
Справку 100 раз уже открывал и даже не закрывал , но она явно написана для бывалых...

8
Все пробую и пробую , ппц.... и не получается  :(

Вот успешный лог !!!

Code: [Select]
Рыба клюнула - >зажал G
Леска слишком сильно натянулась ->  отжал G
Тянем удочку -> зажал H
Удочка сильно гнется -> отжал H
Тянем леску - > зажал G
Поймал рыбку -> Отжал G
Окно с уловом закрываю -> Нажал Space
Закинул удочку -> Нажал T

И вот что произошло при следующем клеве

Нажал T
зажал G
отжал G
зажал H
отжал H
зажал G - Леска лопнула так как вовремя не отжалась


Сам скрипт

Code: [Select]
$u=0
while($u=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977, 486,255)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
$u=1
END_IF
waitms (50)
END_CYC

$lovim=0
while($lovim=0)
$g=0
while($g=0)
GETSCREEN
IF_PIXEL_IN (913,717,930,732,6657107,7117147,4488494)
$g=1
KEYUP(#G)
LOGWRITE ("Отжал G")
waitms (50)
KEYDOWN(#H)
LOGWRITE ("Зажал H")
END_IF
waitms (50)
END_CYC

$h=0
while($h=0)
GETSCREEN
IF_PIXEL_IN (917,703,931,714,6657107,7117147,4488494)
$h=1
KEYUP(#H)
LOGWRITE ("Отжал H")
waitms (50)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
END_IF
waitms (50)
END_CYC

$poimali=0
while($poimali=0)
GETSCREEN
IF_PIXEL_IN (665,777,767,778,16750899)
$poimali=1
KEYUP(#G)
LOGWRITE ("Отжал G")
wait (2)
Keypress(#SPACE)
LOGWRITE ("Нажал Space")
wait (2)
Keypress(#T)
LOGWRITE ("Нажал T")
wait (2)
END_IF

END_CYC
END_CYC

9
попробовал проверить работу скрипта как мне подсказывал Андрей Оравин вписав LOGWRITE

скрипт заканчивает работу всегда с зажатым "G" может быть поэтому не продолжает работу дальше ? так как в первом IF_PIXEL_IN как раз и нужно зажимать G
Code: [Select]
IF_PIXEL_IN (959, 435, 977, 486,255)
KEYDOWN(#G) 

Code: [Select]
$u=0
while($u=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977, 486,255)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
$u=1
END_IF
waitms (50)
END_CYC

$lovim=0
while($lovim=0)
$g=0
while($g=0)
GETSCREEN
IF_PIXEL_IN (913,717,930,732,6657107,7117147,4488494)
$g=1
KEYUP(#G)
LOGWRITE ("Отжал G")
waitms (50)
KEYDOWN(#H)
LOGWRITE ("Зажал H")
END_IF
waitms (50)
END_CYC

$h=0
while($h=0)
GETSCREEN
IF_PIXEL_IN (917,703,931,714,6657107,7117147,4488494)
$h=1
KEYUP(#H)
LOGWRITE ("Отжал H")
waitms (50)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
END_IF
waitms (50)
END_CYC
END_CYC

10
Оуууу Vint вы красавчик , выуживание рыбы происходит на 5+ баллов))) , а не как у меня 1 раз keydown(#G) -> keyup(#G) -> keydown(#H) -> keyup(#H) и скрипт застывал , вы этот цикл сделали бесконечным.

Почему бы не сделать тупо и линейно прямо по твоему описанию? Написано ждем 255 - значит ждем, а не носимся по скрипту... дождались - нажимам G. И так далее.
Я думал раз программа всегда носится по скрипту , значит рано или поздно дождется и будет делать свое дело  :D

только непонятно, где обработка поймали? Или это всё в ручную?

Да , для полной автоматизации действии она безусловно нужна , просто на скорую руку (уже 4й день ковыряюсь) хотелось сделать что бы когда конец удочки сместился , происходило выуживание , что сейчас и происходит... НО к сожалению когда я закидываю удочку снова и происходит клев , скрипт не срабатывает , нужно заново его запускать , вот видео  http://youtu.be/s1xibpVFo-w тут первую рыбу поймал сам скрипт , а на вторую не обратил даже внимания....



11
Я немного все отредактировал !!! А проблема осталась  ;D

12
Сама игра http://rus-fishsoft.ru/ , весит всего 300 мб , вдруг какого нибудь Guru затянет на досуге и он за 5 минут напишет то , чем я занимаюсь 3-и сутки)))

Алгоритм действий:
1. Нажать "Т" (англ) закинуть удочку (всегда прямая и в одно и тоже место)
2. Когда рыба клюет (всегда разное время) , конец удочки цветом пикселя 255 загинается , нажимаем "G"
3. Ожидаем пока шкала "Леска" не заполнится до момента описанного цветом пикселя "4488494", после чего отпускаем "G" и нажимаем "H"
4. Заполняется шкала "Удочка" до момента описанного тем же цветом пикселя "4488494", отпускаем "H", нажимаем "G"
5. Повторяем пункты 3 и 4 до тех пор, пока не выловится рыба.

Скриншоты:
1. http://yadi.sk/d/8e2YI2od6jEpI
2. http://yadi.sk/d/4W39_vhq6km0W
3. http://yadi.sk/d/7zgd6gHH6kosi
4. http://yadi.sk/d/gd8KyzD66kosy

Вот что получается скриптом ниже : http://youtu.be/9KX9G5TGME4

Места IF_PIXEL_IN: http://yadi.sk/d/roL8_Pn86l3Fg

1 раз правильно все происходит , далее начинает работать только при нажатии "G" оно видимо заменяет первый
Code: [Select]
IF_PIXEL_IN (959, 434, 987, 486,255)
$key_g = 1
END_IF

Но 1 момент , когда я запускаю скрипт , изначально в зоне бокса первого IF_PIXEL_IN нет цвета 255 , он появляется чуть позже когда рыба клюет и скрипт начинает делать свое дело , но при продолжении там присутствует этот цвет , может быть поэтому и стопорится...

САМ СКРИПТ:

Code: [Select]
GETSCREEN

IF_PIXEL_IN (959, 435, 977, 486,255)
$key_g = 1
END_IF
IF_PIXEL_IN(913,717,930,732,6657107,7117147,4488494)
$key_g = 0
waitms (64)
$key_h = 1
END_IF
IF_PIXEL_IN(917,703,931,714,6657107,7117147,4488494)
$key_h = 0
END_IF

IF(($key_g = 1) & (iskeydown(#G)=0))
KEYDOWN(#G)
END_IF
IF(($key_g = 0) & (iskeydown(#G)=1))
KEYUP(#G)
END_IF
IF(($key_h = 1) & (iskeydown(#H)=0))
KEYDOWN(#H)
END_IF
IF(($key_h = 0) & (iskeydown(#H)=1))
KEYUP(#H)
END_IF

P.S. очень прошу помощи) так как уже замучился и всех уже достал))) , так как не могу понять что тут не так !!!
Ранее я много делал простых скриптов изучая самостоятельно (разовые клики и нажатия клавиш - правда этого хватало) и длинных и коротких в KFgame , PW , Karos и все работали на ура , выполняли утомительные задачи на которые тратились бы много часов жизни ,  без перебоев (ПРАВДА ПОСЛЕ НАПИСАНИЯ ВСЕГДА ТРАТИЛСЯ ИНТЕРЕС К ИГРАМ , так как ты мог все себе позволить и стремиться было уже не к чему) , но тут уже не интерес к игре))) , а сама цель разобраться , так как эти зажатия и отжатия клавиш уже достали.... Спасибо вам за помощь...

Pages: [1]