Автор Тема: «Pearls before swine»  (Прочитано 500 раз)

0 Пользователей и 1 Гость просматривают эту тему.

dramster

  • Герой форума
  • *****
  • Сообщений: 786
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #30 : Декабрь 06, 2018, 11:38:11 pm »
 :o Шикарно.

 Работу скрипта даже не проверял  ;D, верю, работает. А шикарно то другое... КАК ты так сламал кликерман, что он невидим, ни окна, ни редактора, и никак не открыть его  :o ? ПРИЗНАВАЙСЯ!!!
 Еще бы файл скрипта както закодировать (дастал его за минуту  ;D)... Как вариант, можно както его заархивировать, и при запуске разархивировать куда-нибудь подальше от глаз пользоватиля, а далее уже запускать разархивированный скрипт. 


Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3225
  • Лечу куда хочу. cman 4.13.014x32, xp32
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #31 : Декабрь 07, 2018, 10:31:07 am »
Одну партию помогло и захватило мышь в центр кнопки GO.
Пока не прибил, не отпускало.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3275
  • Котэ
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #32 : Декабрь 07, 2018, 11:16:52 am »
А шикарно то другое... КАК ты так сламал кликерман, что он невидим, ни окна, ни редактора, и никак не открыть его  :o ? ПРИЗНАВАЙСЯ!!!

Просто в файле параметров кликера указано положение окна -200 -200

Graubart

  • Освоившийся
  • **
  • Сообщений: 30
  • Alles wird gut
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #33 : Декабрь 07, 2018, 02:29:05 pm »
Одну партию помогло и захватило мышь в центр кнопки GO.
Пока не прибил, не отпускало.

А можно, плз, поподробнее как это "помогло и захватило мышь"? И что значит "Пока не прибил, не отпускало"? Может быть мышка дернулась и Хельпер не успел сделать клик в GO?
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3225
  • Лечу куда хочу. cman 4.13.014x32, xp32
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #34 : Декабрь 07, 2018, 02:50:23 pm »
Как обычно это происходит  :D ;)
Зависло где-то в цикле с постоянным MOVE. При сдвиге мыши, она постоянно возвращается в одно место.
Дальше 200 px сдвинуть не успеваешь.

Кликов нет, кнопка не нажималась, да и не должна. Это был второй режим с подсказками. "помогло" в смысле это же помощник  :) Наверное нужно было точку поставить после "Одну партию помогло" {сыграть}.
« Последнее редактирование: Декабрь 07, 2018, 02:53:46 pm от Vint »


Graubart

  • Освоившийся
  • **
  • Сообщений: 30
  • Alles wird gut
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #35 : Декабрь 07, 2018, 03:39:53 pm »
Кликов нет, кнопка не нажималась, да и не должна. Это был второй режим с подсказками.

В режиме "2. «Референт»" игрок играет сам, то есть читает подсказку, снимает шары в рекомендованном ряду и жмет GO. Хельпер ждет пока Хуан сделает ход и тогда Хельпер считает шары и дает следующую подсказку. Так что не надо "прибивать", надо просто нажать GO.
В режиме "3. «Счетчик»" прямо написано: "Сделай ход и нажми GO"
« Последнее редактирование: Декабрь 07, 2018, 03:58:13 pm от Graubart »
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

dramster

  • Герой форума
  • *****
  • Сообщений: 786
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #36 : Декабрь 07, 2018, 11:00:11 pm »
Одну партию помогло и захватило мышь в центр кнопки GO.
Пока не прибил, не отпускало.

А можно, плз, поподробнее как это "помогло и захватило мышь"? И что значит "Пока не прибил, не отпускало"? Может быть мышка дернулась и Хельпер не успел сделать клик в GO?

Строка 498
Код: Clickermann
  1. WHILE($_cursor ! 45)
  2.   MOVE($gox,$goy)
  3.   WAIT(1)
  4. END_CYC

У меня в вин10 код курсора над кнопкой "GO" = 31. Сменил значение, и все заработало.

А что это за написание такое - WAIT(.1)  :-\ . Встретил пару раз в коде. Это наверно сокращенно WAIT(0.1), 100мс?

Еще по мелочам, ... лишний энд_иф 527 стр. ... больше не вникал, итак все работает  :D.

dramster

  • Герой форума
  • *****
  • Сообщений: 786
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #37 : Декабрь 07, 2018, 11:01:19 pm »
А шикарно то другое... КАК ты так сламал кликерман, что он невидим, ни окна, ни редактора, и никак не открыть его  :o ? ПРИЗНАВАЙСЯ!!!

Просто в файле параметров кликера указано положение окна -200 -200

 :o насколько все просто, а я бы и не догадался  ;D.

Graubart

  • Освоившийся
  • **
  • Сообщений: 30
  • Alles wird gut
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #38 : Декабрь 08, 2018, 03:52:44 pm »
Большое спасибо всем, кто нашел время протестировать проект.

У меня в вин10 код курсора над кнопкой "GO" = 31
Спасибо. Понятно, идея ожидания следующего левела по курсору чревата ошибками. Я совсем забыл, что не так давно установил новую тему курсоров, и у меня код курсора "рука" равен 45. Надо переделать по PXLCOUNT. Так будет универсальнее.

Цитировать
лишний энд_иф 527 стр.
Лишних энд_ифов нет и не может быть, иначе КМ выдаст ошибку или вовсе зависнет. Скорее всего ты принял метку в конце проекта "end:" за энд_иф. Строк в проекте всего 526.

Цитировать
А что это за написание такое - WAIT(.1)
Обычное короткое написание. Все языки програмирования и даже калькулятор это принимают. После того как Джонни сделал дробные значения для WAIT, я почти не пользуюсь WAITMS.
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

dramster

  • Герой форума
  • *****
  • Сообщений: 786
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #39 : Декабрь 08, 2018, 09:38:58 pm »
Лишних энд_ифов нет и не может быть, иначе КМ выдаст ошибку или вовсе зависнет. Скорее всего ты принял метку в конце проекта "end:" за энд_иф. Строк в проекте всего 526.
У тебя в конфиг файле syntax_check = 0, вот и не  выдает ошибку. А она есть:


Не знаю как у тебя в проекте строк 526, у меня в твоем проекте показывает вот столько  :) :




Цитировать
А что это за написание такое - WAIT(.1)
Обычное короткое написание. Все языки програмирования и даже калькулятор это принимают. После того как Джонни сделал дробные значения для WAIT, я почти не пользуюсь WAITMS.

 ::) ... буду знать.

Graubart

  • Освоившийся
  • **
  • Сообщений: 30
  • Alles wird gut
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #40 : Декабрь 09, 2018, 02:46:25 pm »
Не знаю как у тебя в проекте строк 526, у меня в твоем проекте показывает вот столько  :) :

Да, ты прав стопудово!  :-[ Оказывается, я в SFX на файлообменнике залил сырой промежуточный вариант кода. А твои веские замечания сравнивал с конечным домашним файлом. Но когда я распаковал тот файл, то всё понял. Там дофига фигни :-\, даже бинар-массив в начале, который благодаря твоему алгоритму теперь совсем не нужен и энд_иф лишний и мувов лишних наворочено. Потому и строк больше. В общем надо найти время и хорошо всё отредактировать. А главное, заменить пикселькаунтом код курсора.
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Graubart

  • Освоившийся
  • **
  • Сообщений: 30
  • Alles wird gut
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #41 : Декабрь 09, 2018, 03:35:05 pm »
Может достаточно просто привязаться и все заработает без  всяких постмесаджей?
Ну ты мой код просмотрел теперь. Какие замечания к привязке?
Вообще я бы хотел, чтоб привязка происходила автоматом,  без всяких хоткеев Alt+W, но так не получается. И когда окно плеера передвигаешь по экрану (правда, только при открытом меню) при следующем ходе код пересчитывает новые координаты. А вот как от этого избавиться, пока не знаю. Я понимаю так, что если привязался, то ничего не надо пересчитывать, КМ сам всё сделает.

Кстати,
  Проблемы при привязке? Есть решение!!!
Код: Clickermann
  1. //A_GETSCREEN
  2. SUB(A_GETSCREEN, $A_x1, $A_y1, $A_x2, $A_y2, $A_hwnd)
  3.   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
  4.   IF($A_x1+$A_y1+$A_x2+$A_y2 = 0)
  5.      $A_x2 = $A_width
  6.      $A_y2 = $A_height
  7.   END_IF
  8.   GETSCREEN($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2)
  9. END_SUB
попробовал этот код, выдаёт ошибку при вызове функции:РОР


« Последнее редактирование: Декабрь 09, 2018, 03:39:23 pm от Graubart »
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3225
  • Лечу куда хочу. cman 4.13.014x32, xp32
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #42 : Декабрь 09, 2018, 10:48:17 pm »
Ошибка POP() появляется при вызове подпрограммы выше её описания.


dramster

  • Герой форума
  • *****
  • Сообщений: 786
    • Просмотр профиля
Re: «Pearls before swine»
« Ответ #43 : Декабрь 10, 2018, 12:22:52 am »
Может достаточно просто привязаться и все заработает без  всяких постмесаджей?
Ну ты мой код просмотрел теперь. Какие замечания к привязке?
Вообще я бы хотел, чтоб привязка происходила автоматом,  без всяких хоткеев Alt+W, но так не получается. И когда окно плеера передвигаешь по экрану (правда, только при открытом меню) при следующем ходе код пересчитывает новые координаты. А вот как от этого избавиться, пока не знаю. Я понимаю так, что если привязался, то ничего не надо пересчитывать, КМ сам всё сделает.

Сорри, но я в твоем коде не смог разобраться  :( . Уж очень много там прыжков на метки  :(.

Взял твой  подсчет шаров... и полностью переделал :D

Если привязаться через hset по WNDFIND, то клики не проходят. Hwnd игрового поля отличается от hwnd окна. Поэтому нужно привязываться либо горячими клавишами, либо брать hwnd с помощью HGET.

Написал для теста код для работы в привязке.  Скрипт считает шары в неактивном окне и убирает лишние. Больше он ничего не делает, при старте шары должны быть на столе, и кнопку go жмем вручную.

Из минусов, у меня картинка на игровом поле при привязке иногда искожается. Скорее всего это чето плееру не нравится.

Код: Clickermann
  1. //размер и привязка
  2. $hwnd=WNDFIND("Player.swf")
  3. wait(1)
  4. IF($hwnd = 0)
  5.  print("окна нет")
  6.  halt
  7. END_IF
  8.  
  9. WNDSIZE ($hwnd,736,736)
  10. waitms(200)
  11.  
  12.  
  13. //hwnd игровой области отличен от hwnd окна
  14. //поэтому привязку приходится делать по  HGET
  15. //WNDGETINFO ($hwnd, $var1, $var2, $var3, $var4)
  16. //HSET (HGET($var1+60, $var2+60) , 1)
  17. waitms(200)
  18.  
  19. $stepx=22
  20. $stepy=18
  21. $stepz=0.36
  22. $y = 456
  23.  
  24.  
  25. //считаем шары
  26. GETSCREEN
  27. FOR($a=0,$a<7)
  28.   $ball[$a]=0
  29.   $ball_new[$a] = 0
  30.   FOR($kx=0,$kx<23)
  31.      $x=INT(($stepx+$stepz*$a)*$kx+5)
  32.  
  33.      IF(PXL($x,$y)>15000000)
  34.         $ball[$a]=$ball[$a]+1
  35.         $ball_new[$a]=$ball[$a]
  36.         arrpush($ball_xy, $x)
  37.         arrpush($ball_xy, $y)
  38.      END_IF
  39.   END_CYC
  40.   $y = $y + $stepy
  41. END_CYC
  42.  
  43.  
  44. print("было - ",$ball[0] , " ", $ball[1], " ",$ball[2], " ", $ball[3], " ",$ball[4], " ", $ball[5], " ",$ball[6])
  45.  
  46.  
  47. //расчеты
  48. $i = 0
  49. $l_mem = $ball_new[$i]
  50. WHILE($ball_new[0] ^ $ball_new[1] ^ $ball_new[2] ^ $ball_new[3] ^ $ball_new[4] ^ $ball_new[5] ^ $ball_new[6])
  51.   $ball_new[$i] = $ball_new[$i] - 1
  52.   IF($ball_new[$i] = -1)
  53.      $ball_new[$i] = $l_mem
  54.      inc($i)
  55.      $l_mem = $ball_new[$i]
  56.   END_IF
  57. END_CYC
  58.  
  59. print("должно быть - ",$ball_new[0] , " ", $ball_new[1], " ",$ball_new[2], " ", $ball_new[3], " ",$ball_new[4], " ", $ball_new[5], " ",$ball_new[6])
  60.  
  61. //клики по шарам
  62. FOR($a=0,$a<7)
  63.   IF($ball_new[$a] < $ball[$a])
  64.  
  65.      $i = $ball[$a]
  66.      FOR($i_xy=0,$i_xy<$a)
  67.         $i = $i + $ball[$i_xy]
  68.      END_CYC
  69.  
  70.      LCLICK(451,678)  //клик в пустоту на всякий случай.    
  71.      FOR($n=0,$n<$ball[$a]-$ball_new[$a])    
  72.         $x_click = $ball_xy[$i*2 - 2]
  73.         $y_click = $ball_xy[$i*2 - 1]
  74.         $i = $i - 1
  75.         lclick($x_click,$y_click)
  76.         waitms(500)
  77.      END_CYC
  78.  
  79.   END_IF
  80. END_CYC
  81.  
  82.  
  83. halt




По поводу ошибки POP(), Vint уже оветил. Но скорее всего ты параметр  $A_hwnd упустил.
« Последнее редактирование: Декабрь 10, 2018, 12:33:05 am от dramster »