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 - vasyapro

Pages: [1] 2
1
Ладно. Исправил сам, судя по всему проблема с работой с одной переменной в двух потоках. Пришлось еще создать очередь на удаление игнора клетки. Авсоь кому пригодится:
Code: (clickermann) [Select]
Thread(removeignore)
 waitms(30)
 if($i > $i3)
if ($ri[$i3] < $_ms)
$ig[$clx[$i3]*6+$cly[$i3]] = 0
$i3 = $i3 + 1
end_if
 end_if
end_thread

Thread(click)
 waitms(30)
 if ($i2 > $i)
  if ($cl[$i] < $_ms)
lclick(404 + $clx[$i] * 50,302 + $cly[$i] * 50)
arrpush($ri,$_ms+500)
$i = $i + 1
  end_if
 end_if
end_thread

setthread(removeignore,0)
setthread(click,0)
for ($i=0,$i<72)
 arrpush($ig,0)
end_cyc
$i = 0
$i2 = 0
$i3 = 0
setthread(removeignore,1)
setthread(click,1)
while(1)
 getscreen
 if (PXL(402,476) = 15887871)
  LClick(444,524)
  wait(4)
  getscreen
 end_if
 if (PXL(677,511) = 15887871)
  halt
 end_if
 for ($x = 0, $x < 12)
  for ($y = 0, $y < 6)
   if ($ig[$x*6+$y] ! 1)
    if (colorR(PXL(404 + $x * 50,302 + $y * 50)) > 50)
     arrpush($cl,$_ms+300)
     arrpush($clx,$x)
     arrpush($cly,$y)
     $ig[$x*6+$y] = 1
     $i2 = $i2 + 1
    end_if
   end_if
  end_cyc
 end_cyc
end_cyc

2
Даблклик так никто и не видит?

3
Да там как бы без разницы. Условие для клика не выполняется, поскольку $i2 будет меньше (во время создания массива) или равно $i аж до первой записи в очередь.

4
Спасибо за совет, сделал через $ig[$x*6+$y]. Действительно со старым кодом иногда пропускались точки.
Однако, основная проблема от этого не пропала. В половине случаев всё так же делается два клика вместо одного, практически сразу после предыдущего.
Code: (clickermann) [Select]
THREAD(click)
 waitms(30)
 if ($i2 > $i)
  if ($cl[$i] < $_ms)
lclick(404 + $clx[$i] * 50,302 + $cly[$i] * 50)
$ig[$clx[$i]*6+$cly[$i]] = 0
$i = $i + 1
  end_if
 end_if
END_THREAD

for ($i=0,$i<72)
 arrpush($ig,0)
end_cyc
$i = 0
$i2 = 0
SetThread(click,1)
while(1)
 getscreen
 if (PXL(402,476) = 15887871)
  LClick(444,524)
  wait(4)
  getscreen
 end_if
 if (PXL(677,511) = 15887871)
  halt
 end_if
 for ($x = 0, $x < 12)
  for ($y = 0, $y < 6)
   if ($ig[$x*6+$y] = 0)
    if (colorR(PXL(404 + $x * 50,302 + $y * 50)) > 50)
     arrpush($cl,$_ms+300)
     arrpush($clx,$x)
     arrpush($cly,$y)
     $ig[$x*6+$y] = 1
     $i2 = $i2 + 1
    end_if
   end_if
  end_cyc
 end_cyc
end_cyc
Кликов не более 100 за раз. Может когда разберусь с основной проблемой то сделаю перезапуск с обнулением вместо halt.

5
Code: (clickermann) [Select]
THREAD(click)
 waitms(30)
 if ($i2 > $i)
  if ($cl[$i] < $_ms)
   lclick(404 + $clx[$i] * 50,302 + $cly[$i] * 50)
   $f = $clx[$i]  // Удаляем из очереди
   $igx[$f] = 0 // $igx[$clx[$i]] выдаёт ошибку, потому используем левак
   $f = $cly[$i]
   $igy[$f] = 0
   $i = $i + 1
  end_if
 end_if
END_THREAD

$f = 0
for ($i=0,$i<12) // Если этого не сделать - позже выдаст ошибку
 arrpush($igx,0)
 arrpush($igy,0) // Тут можно всего 6 раз, но зачем делать еще один цикл
end_cyc
$i = 0
$i2 = 0
SetThread(click,1)
while(1)
 getscreen
 if (PXL(402,476) = 15887871) // Запуск из меню
  LClick(444,524)
  wait(4)
  getscreen
 end_if
 if (PXL(677,511) = 15887871) // Конец
  halt
 end_if
 // Вот тут начинается основной код
 for ($x = 0, $x < 12)
  for ($y = 0, $y < 6)
   if (($igx[$x] = 0) or ($igy[$y] = 0)) // Что бы десять раз не записало одну и ту же точку в очередь надо проверять не в очереди ли эта точка уже
    $cx = 404 + $x * 50 // Эти переменные уже не нужны, остались после версии где ожидать после обнаружения не надо было вообще
    $cy = 302 + $y * 50
    if (colorR(PXL($cx,$cy)) > 50) // Если цвет не тот, то добавляем в очередь
     arrpush($cl,$_ms+300)
     arrpush($clx,$x)
     arrpush($cly,$y)
     $igx[$x] = 1
     $igy[$y] = 1
     $i2 = $i2 + 1
    end_if
   end_if
  end_cyc
 end_cyc
end_cyc
Таблица 12х6, в случайных местах со случайным промежутком времени (могут и 5 одновременно) цвет ячейки меняется и через 300мс после появления нужно по ней кликнуть. То бишь если появится 5 одновременно, то простой waitms(300) после обнаружения уже не канает.
Сделал через очередь в другом потоке. Всё работает, но где то в 70% случаев вместо одного клика по ячейке происходит два и я не могу понять почему.

6
Нужно набрать большой текст, для чего я использую KeyString. Поскольку вне привязки текст немного попортится - пришлось привязать к окну. Всё бы хорошо, но перестаёт работать KeyDown, и в итоге я не могу даже перейти на новую строку с помощью энтера или ввести другой знак.
Code: (clickermann) [Select]
//Тут туча $str[n] = "текст"
HSet(HGet(700,430),1)
for ($i=1,$i<40)
 KeyString($str[$i],30)
 KeyDown(13) //
 waitms(30) // Не работает
 KeyUp(13) //
end_cyc
wait(5) //тут надо ввести кое что вручную
for ($i=40,$i<47)
 KeyString($str[$i],30)
 waitms(600) //сейчас это юзаю и выше вместо keydown, что бы вручную нажать энтер
end_cyc
HSet(0,0)
Halt

7
Общие вопросы / Re: PostMessage на FlashPlayer
« on: October 13, 2016, 01:26:41 AM »
Смысл вносить их в справку без более детальной справки по Post(Send)Message? Большинство пользователей в эту степь не полезут, а те кому надо найдут на форуме вместе с хорошим примером.
У автора тоже жизнь есть, а внести их в файл констант можно и самому. Как я вижу, здесь есть несколько активных пользователей которые вполне могли бы сделать такой списочек. Но опять таки, не вижу смысла включать его в базовую комплектацию.

8
Общие вопросы / Re: PostMessage на FlashPlayer
« on: October 12, 2016, 11:55:35 PM »
[spoiler="Константы тоже можно писать в 16-32"][/spoiler]

9
Общие вопросы / Re: PostMessage на FlashPlayer
« on: October 12, 2016, 11:42:23 PM »
а вы где нибудь, когда нибудь, встречали десятичные коды WinAPI функций?
их и шестнадцатиричные попробуй все найди!
В чём проблема перевести виндовским калькулятором? Режим программиста, HEX=16, DEC=10. В вин7 и вин10 точно есть, в хрюше уже не помню (вряд ли), но можно загуглить любой онлайн сервис перевода.
А если вы просто хотите полный список всех функций - штудируйте вот эти 3 раздела mdsn, конкретно - их подразделы Notifications.

10
Общие вопросы / Re: PostMessage на FlashPlayer
« on: October 12, 2016, 11:31:44 PM »
А разве есть разница в каком формате вводить число? Для машины нету разницы между числом в десятичном формате и числом в шестнадцатиричном. Просто потому что на mdsn функции написаны в 16 не значит, что нельзя их писать в 10.

11
Общие вопросы / Re: PostMessage на FlashPlayer
« on: October 12, 2016, 11:03:38 PM »
Попробовал текстовые поля - пишет. Попробовал разные хоткеи - не работают. Попробовал другую игру - работают. Защита там что ли какая то стоит... Даже месседж кликов не работает. Придется значит топорными KeyDown\LClick пользоваться.

12
Общие вопросы / Re: PostMessage на FlashPlayer
« on: October 12, 2016, 09:53:16 PM »
Я решил так с того, что используя hwnd блокнота буквы спокойно пишутся при неактивном окне.

13
Общие вопросы / PostMessage на FlashPlayer
« on: October 12, 2016, 09:35:46 PM »
Возможно ли отправлять сообщения в игры на флеше? Если да, то какой hwnd нужно указывать?
hwnd окна с игрой не подходит, браузера тоже. С блокнотом всё нормально.
Firefox x32, Win10 x64
Code: (clickermann) [Select]
$h = HGet(600,330) //IniRead("cfg.ini","HWND")
logwrite($h)
PostMessage($h,0x0100,#C,0)
for($i=0,$i<999999)
 PostMessage($h,0x0100,#W,0)
 wait(1)
 PostMessage($h,0x0101,#W,0)
 wait(3)
end_cyc

14
При зажатии клавиш кликером в блокноте не будет AAAAAA, повторы инициирует сама клавиатура.
Какой тогда вообще смысл в KeyDown?

15
Чёрт. То есть я всё это время использовал баг и случайно репортнул его?

Pages: [1] 2