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

Pages: 1 [2] 3 4 ... 76
16
Вариант для примеров посложнее, но только плюс и минус.
Code: (clickermann) [Select]
$str = "7-67+345+876+86+7-67-56787+7898+6787+56789"

$len = 1
arrpush($sign, 0)
WHILE($len > 0)
   $len = STRPOS ($str, "+", $len)
   IF($len > 0)
      arrpush($sign, $len)
      $len = $len+1
   END_IF
END_CYC

$len = 1
WHILE($len > 0)
   $len = STRPOS ($str, "-", $len)
   IF($len > 0)
      arrpush($sign, $len+0.00004)
      $len = int($len+1)
   END_IF
END_CYC
arrpush($sign, STRLEN ($str)+1)

ARRSORT ($sign)

$num = STRCUT2($str, int($sign[$a])+1, int($sign[$a+1])-1)
FOR($a=1,$a<arrsize($sign)-1)
   IF(int($sign[$a])<$sign[$a])
      $num = $num - STRCUT2($str, int($sign[$a])+1, int($sign[$a+1])-1)
   else
      $num = $num + STRCUT2($str, int($sign[$a])+1, int($sign[$a+1])-1)
   END_IF
END_CYC

print("ответ:   ", $num)

halt

18
А вот и с разделением на строки. Массив $all_str, в каждой ячейку по строке.
Code: (clickermann) [Select]
FREADDATA ("Chat-game.log", $arr)
FOR($a=0,$a<ARRSIZE($arr))
   if($arr[$a]>191)  //в win-1251 все буквы и цифры занимают по одному байту. поэтому вся таблица это 256 символов, и все, больше не влезет. в юникоде же используют два байта на символ, а это ооочень дофига 65535 вариантов вместо 256. я глянул для интереса таблицу, долго листал, а там она как оказалось еще не полная, то есть можно еще добавлять всякие символы там всякие языки новые.
   //так вот, в вин-1251 русские символы начинаются с 192 символа, а в юникоде с 1040
      $arr[$a] = $arr[$a]+848
   end_if
   IF($arr[$a] = 13) //смотрим когда у нас символ переноса строки
      $a = $a + 1   //прыгаем еще через один символ там есть такой
      ARRPUSH ($all_str, $str) //добавляем созданную ранее строку в массив
      undefine($str)  //и избавляемся, на время
   ELSE
      $str = STRCONCAT($str,CHAR($arr[$a]))  //тут без перерыва строчим в  $str
   END_IF   
END_CYC

FOR($a=0,$a<ARRSIZE($all_str)) //смотрим результат
print($all_str[$a])
END_CYC


HALT

19
Ну как бы вот. Сорри что только сейчас пишу, никак не было времени и пк.
Только по итогу выходит одна большая строка со всем текстом из файла. Если нужно разделить, можно и разделить. И потом в обратном порядке можно опять в файл записать.
Code: (clickermann) [Select]
FREADDATA ("Chat-game.log", $arr)
FOR($a=0,$a<ARRSIZE($arr))
   if($arr[$a]>191)
      $arr[$a] = $arr[$a]+848
   end_if
   
   $str = STRCONCAT($str,CHAR($arr[$a]))
   
END_CYC
LOGWRITE ($str)
HALT

20
Вообще, идея есть. Только пк под рукой нету чтоб глянуть как это будет, и что там за кодировка.
В 4.14 есть функция чтения файлов побайтово, типа readdata или типа того. Смотрим по таблице кодировки какие там буквы цифры, сколько байт на символ. Дальше математика, и char(code). Работать должно шустро. Завтра гляну если скинешь файл лога.

21
В версии 4.14 массивы копируются очень просто - ARRCONCAT ($arr_in, $arr1, $arr2, ... )

Code: (clickermann) [Select]

sub(locator, $param)
   print(arrsize($name)) // возвращает 1
   print(arrsize($color)) // возвращает 1
   for($i = 0, $i < arrsize($color), $param) // $param = кол-во цветов для одного элемента (1 или 2)
      getscreen()
      contrast(4)
      print("Checking: " , $_xmouse-20, "," , $_ymouse-20 , "," , $_xmouse+20 , "," , $_ymouse+20 , "," , $color[$i])
      if_pixel_in($_xmouse - 20, $_ymouse - 20, $_xmouse + 20, $_ymouse + 20, $color[$i])
         print("Checking: " , $_xmouse-20, "," , $_ymouse-20 , "," , $_xmouse+20 , "," , $_ymouse+20 , "," , $color[$i+$param-1] )
         if_pixel_in($_xmouse - 20, $_ymouse - 20, $_xmouse + 20, $_ymouse + 20, $color[$i+$param-1])
            print("Вижу: ", $name[int($i/$param)])
         end_if
      end_if
      waitms(rnd(200,500))
      print()
      print("----------------------")
      print()
   end_cyc
   
end_sub

print(arrsize($menuN)) // возвращает 5
print(arrsize($menuC)) // возвращает 10

ARRCONCAT ($name, $menuN)   //копируем массивы
ARRCONCAT ($color, $menuC)
locator(2)
undefine($name) //удаляем массивы
undefine($color)
//либо, если в подпрограмме эти массивы будут изменены, то обновляем имеющиеся ранее


22
Общие вопросы / Re: Как узнать код символа
« on: February 21, 2022, 05:55:49 PM »
Ах, да, вот как это выглядит.
Code: (clickermann) [Select]
$kod=34
$str=char($kod)
print($str)

if (code($str)==$kod)
  print("Ok")
else
  print("Ups") 
end_if
halt

23
Честно говоря, я тоже сильно удивлён, что форум не живёт. Может, где-то есть другой форум, где идёт нормальное обсуждение проблем и траблов кликермана, а мы этот другой форум просто не знаем?

Что-то мне подсказывает, что  нынче пропал интерес у людей что-то ломать, читить,... . И скорее всего это правильно. А кликерман был создан именно в то время, когда это было востребовано. Другое дело, это автоматизация работы на пк , но тут аудитории уже намного меньше.
Еще пару лет назад тут было куча интересных задач и реализаций этих задач на кликере. Сейчас же всем пофиг, максимум, как кликнуть и как остановить...  :-[ .
Я до сих пор иногда вспоминаю "поиск поти А*" которую реализовал Vint на кликермане http://crapware.aidf.org/forum/index.php?topic=1958.0 , даже вроде понял как это работает, пытался переписать мысли в код, но все шло наперекосяк... и все, дым.. Это то что вспомнил в первую очередь, таких тем уйма.

24
Общие вопросы / Re: Как узнать код символа
« on: February 21, 2022, 04:49:23 PM »
Подскажите, как можно узнать код символа, ну, например, первого символа строки?
Функция CHAR (code) есть, а вот обратной функции я не нашёл.

Она есть, но в бета версии вот тут http://crapware.aidf.org/forum/index.php?topic=356.msg33512#msg33512 , CODE (char)

А ошибка в сравнении строк это было и ранее, строки это оно такое... По  ошибкам в работе пиши в той же теме по ошибкам и тестированию.

25
Code: (clickermann) [Select]
FOR($a,$a<3) // повторяем 3 раза
   FOR($b,$b<70) // повторяем 70 раза
      // скрипт
     
     
     
     
     
   END_CYC   
END_CYC

halt //стоп

26
Общие вопросы / Re: IF_PICTURE_IN - Для новичков
« on: January 13, 2022, 10:32:29 PM »
Есть предположение, что из трех твоих вызовов подпрограмм находит только один цвет. Если это так, то нужно знать, что IF_PIXEL_IN может искать сразу множество цветов одновременно, и завершит поиск при первом совпадении в области:
Code: (clickermann) [Select]
GETSCREEN(2,807,345,1304)
COLORMODE(6,2,807,345,1304)
SCREENSHOTFIX(2,807,345,1304,"herb.bmp")

IF_PIXEL_IN(2,807,345,1304, 8355647, 4194175, 8388607)  //ищем сразу 3 цвета
   KEYDOWN(#ctrl)
   WAITMS(100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYUP(#ctrl)
   WAITMS(200)
END_IF

GETSCREEN(61,382,343,413)
IF_PIXEL_IN(61,382, 343,413, 269907)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

HALT

27
Да не, все верно  ::), скрипт рабочий и должен выполнять  то что спрашивал автор темы.

28
Общие вопросы / Re: IF_PICTURE_IN - Для новичков
« on: January 12, 2022, 09:21:58 PM »
Если это весь скрипт, то пусть себе и работает. Единственное что можно оптимизировать, для ускорения работы, это оставить гетскрин и колормод вверху кода, остальные убрать, и добавить области снимка и коррекции.
Code: (clickermann) [Select]
GETSCREEN(26,597,367,1090)
COLORMODE(6, 26,597,367,1090)
SCREENSHOTFIX(26,597, 367,1090, "herb.bmp")
IF_PIXEL_IN(26,597, 367,1090, 8355647)   
   KEYDOWN(#ctrl)
   WAITMS(100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYUP(#ctrl)
   WAITMS(200)   
END_IF

SCREENSHOTFIX(26,597, 367,1090, "herb1.bmp")
IF_PIXEL_IN(26,597, 367,1090, 8355839)
   KEYDOWN(#ctrl)
   WAITMS(100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYUP(#ctrl)
   WAITMS(200) 
END_IF

SCREENSHOTFIX(26,597, 367,1090, "herb2.bmp")
IF_PIXEL_IN(26,597, 367,1090, 8388607)
   KEYDOWN(#ctrl)
   WAITMS(100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYUP(#ctrl)
   WAITMS(200)   
END_IF

GETSCREEN(61,382,343,413)
IF_PIXEL_IN(61,382, 343,413, 269907)
   LCLICK($_return1, $_return2)
   WAITMS(500)
END_IF


HALT

Если хочется сократить код, то можно добавить подпрограммы, справка - язык сценариев - основные конструкции - sub ... end_sub

29
Code: (clickermann) [Select]
FOR($n=1, $n < TFCOUNT("file.txt")+1) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      print("Нашли в строке ", $n)    //если есть
      $n = TFCOUNT("file.txt")+1 //стоп цикл
   END_IF   
END_CYC

IF($n < TFCOUNT("file.txt")+2) //если ее нет
  print("не нашли")
END_IF

halt

30
Шаблоны - ISKEYDOWN
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
   
   IF(ISKEYDOWN(#ALT)=1) //если нажата кнопка
      $check = 1
      WHILE(ISKEYDOWN(#ALT)=1)  //ждем пока ее не отпустим, можно и без этого
         waitms(50)
      END_CYC     
   END_IF   
END_CYC

//далее переход куда надо

Кстати, есть достаточно денег на балансе телефона. Как их перевести разработчикам как донат за такую классную программу?)
На офсайте http://crapware.aidf.org/page/clickermann есть реквизиты - QIWI 9831586490, Я.Money 41001436007777, МТС +7 983 158 6490. Насчет мтс не уверен, так как в справке (clickermann - прочие сведения - реквизиты для перевода) указан только яндекс и киви, хз почему.


Pages: 1 [2] 3 4 ... 76