Последние сообщения

Страницы: [1] 2 3 ... 10
1
Код: Clickermann
  1. $imk = FROMCLIP()
  2.  
  3. $file = "words.txt"
  4.  
  5. $word = STRCONCAT($imk, "*")
  6. $len_file = TFCOUNT($file)
  7. FOR($i=1, $i <= $len_file)
  8.    $str = TFREAD($file, $i)
  9.    $pos = STRPOS($str, $word)
  10.    IF($pos > 0)
  11.        // слово уже есть
  12.        $count = STRCUT($str, STRPOS($str, "*") + 1, 10)
  13.        INC($count)
  14.        TFDELETE($file, $i)
  15.        TFWRITE($file, STRCONCAT($word, $count))
  16.        $i = 500000
  17.    END_IF
  18.    WAITMS(5)
  19. END_CYC
  20.  
  21. // слова ещё нет
  22. IF($i < 500000)
  23.    TFWRITE($file, STRCONCAT($word, 1))
  24. END_IF
  25.  
  26. IF($count <= 10)
  27.    // сценарий А
  28. ELSE
  29.    // сценарий Б
  30. END_IF

Если слов много, считывать лучше в массив

Массив это же много переменных, а переменные хранятся только во время текущего запуска скрипта, или я что-то не знаю?
Слов порядка двух тысяч
Спасибо, возможность проверить будет в понедельник
2
скопировано менее 10 раз, то скрипт продолжается по сценарию А, а если более 10 раз...
А если ровно 10 раз?  ;D
То тоже вариант Б 🤣
3
Общие вопросы / Re: Помош со скриптом
« Последний ответ от Иван_Васильевич Сегодня в 06:46:28 am »
Сдается  у нас очередная рулетка :D
Вижу у автора с языком плоховато, поэтому от просившихся сюда подпрограмм пришол :o к более простому варианту Помоши. ???
Код: Clickermann
  1. #name "скрипт - Ждун"
  2. //вместо 100,100 вписать координаты проверяемых пикселей!
  3. GETSCREEN
  4. IF($var1=0)
  5.   IF(PXL(1185,580)=13297609)  // ждем зеленый
  6.      LOGWRITE ("зеленый 1")      
  7.      $var1=1
  8.      // Мой сценарий
  9.   END_IF
  10. ELSE
  11.   IF(PXL(1185,580)=1700990) // ждем красный
  12.      LOGWRITE ("красный 1")
  13.      $var1=0
  14.      // Мой сценарий
  15.   END_IF
  16. END_IF
  17.  
  18. IF($var2=0)
  19.   IF(PXL(100,100)=13297609)  // ждем зеленый
  20.      LOGWRITE ("зеленый 2")      
  21.      $var2=1
  22.      // Мой сценарий
  23.   END_IF
  24. ELSE
  25.   IF(PXL(100,100)=1700990) // ждем красный
  26.      LOGWRITE ("красный 2")
  27.      $var2=0
  28.      // Мой сценарий
  29.   END_IF
  30. END_IF
  31.  
  32. IF($var3=0)
  33.   IF(PXL(100,100)=13297609)  // ждем зеленый
  34.      LOGWRITE ("зеленый 3")      
  35.      $var3=1
  36.      // Мой сценарий
  37.   END_IF
  38. ELSE
  39.   IF(PXL(100,100)=1700990) // ждем красный
  40.      LOGWRITE ("красный 3")
  41.      $var3=0
  42.      // Мой сценарий
  43.   END_IF
  44. END_IF
  45.  
  46. IF($var4=0)
  47.   IF(PXL(100,100)=13297609)  // ждем зеленый
  48.      LOGWRITE ("зеленый 4")      
  49.      $var4=1
  50.      // Мой сценарий
  51.   END_IF
  52. ELSE
  53.   IF(PXL(100,100)=1700990) // ждем красный
  54.      LOGWRITE ("красный 4")
  55.      $var4=0
  56.      // Мой сценарий
  57.   END_IF
  58. END_IF
  59. WAITMS(100)
  60.  
4
Общие вопросы / Помош со скриптом
« Последний ответ от Bukasch Сегодня в 03:31:00 am »
Всем привет, не могу понять как написать скрипт. В кратце о скрипте:
Есть 4 точки каждая из которых меняет цвет с зеленого на красный. Когда к примеру на точке 1 пиксель становится зеленым запускается мой сценарии после ждем красный и тоже запускаем сценарий и так по кругу. Токо для 4 точек
Я пришол к этому, это для одной точки.

WAIT(3)
GETSCREEN
WHILE(PXL (1185, 580) ! 13297609) // ждем зеленый
   WAITMS (100)
   GETSCREEN
END_CYC

// Мой сценарий

GETSCREEN
WHILE(PXL (1185, 580) ! 1700990) // ждем красный
   WAITMS (100)
   GETSCREEN
END_CYC

// Мой сценарий

Не знаю как сделать для 4 и чтобы они работали независемо друг от друга.
5
А если в ini записывать слово в качестае параметра и увеличивать значение пока не больше десяти? Было бы намного проще и быстрее, и пофиг на количество слов. Или в ини кирилица не прокатит? Нет возможности проверить...
6
Код: Clickermann
  1. $imk = FROMCLIP()
  2.  
  3. $file = "words.txt"
  4.  
  5. $word = STRCONCAT($imk, "*")
  6. $len_file = TFCOUNT($file)
  7. FOR($i=1, $i <= $len_file)
  8.    $str = TFREAD($file, $i)
  9.    $pos = STRPOS($str, $word)
  10.    IF($pos > 0)
  11.        // слово уже есть
  12.        $count = STRCUT($str, STRPOS($str, "*") + 1, 10)
  13.        INC($count)
  14.        TFDELETE($file, $i)
  15.        TFWRITE($file, STRCONCAT($word, $count))
  16.        $i = 500000
  17.    END_IF
  18.    WAITMS(5)
  19. END_CYC
  20.  
  21. // слова ещё нет
  22. IF($i < 500000)
  23.    TFWRITE($file, STRCONCAT($word, 1))
  24. END_IF
  25.  
  26. IF($count <= 10)
  27.    // сценарий А
  28. ELSE
  29.    // сценарий Б
  30. END_IF

Если слов много, считывать лучше в массив
7
скопировано менее 10 раз, то скрипт продолжается по сценарию А, а если более 10 раз...
А если ровно 10 раз?  ;D
8
Всем хорошего настроения:)

Подскажите, как лучше сделать?

Запуская скрипт идёт копирование слова. Затем второй раз копирование другого слова и т.д. Слова разные, но иногда повторяются.

Суть в том, что если одно слово скопировано менее 10 раз, причем не важно за какой период, за последний час или в течение нескольких лет, то скрипт продолжается по сценарию А, а если более 10 раз, то по сценарию Б.

То есть данные должны храниться где-то на компе. Например, в текстовом файле, чтобы если закрыть кликерманн, а завтра открыть его снова, то данные сохранялись.

У кого какие идеи, как это можно сделать? Есть соображения скопированное слово помещать в текстовый файл, а затем фиксировать там кол-во скопированных одинаковых слов. Сначала думал просто все скопированные слова кидать в столбик, а потом как-то считать кол-во одинаковых строк в файле и если их больше 10, то вариант Б, но это быстро засорит файл и кликер будет работать медленно.

Есть идея формировать файл по типу:
Молоко*12
Сметана*4
Сахар*8
Соответствено если скопировалось слово "сахар", то Сахар*8 меняется на Сахар*9, но как это реализовать я не знаю. Если затем копируется слово Лимонад к примеру, а такого слова нет в файле, то создается новая строка Лимонад*1

Может как-то ещё можно сделать? У кого какие идеи?

Прикрепляю скриптик

Код: Clickermann
  1. FOR($a=0,$a<3)
  2.   LCLICK(637,149)  // Выделение слова
  3.   WAITMS(10)
  4. END_CYC
  5. KEYDOWN (#CTRL)
  6. WAITMS (50)
  7. KEYPRESS (#C)
  8. KEYUP (#CTRL)
  9. WAITMS (50)
  10. $imk = FROMCLIP() // Слово в переменной
  11.  
  12. // Например, $imk = Молоко
  13. // Если слово Молоко было скопировано более 10 раз за всю жизнь, то уведомление об этом, иначе уведомление о том, что лимит ещё есть.

Второй скрипт должен обнулять слово. Например, скопирован Лимонад и в том же файле Лимонад*0

Буду благодарен за ответы!
9
Общие вопросы / Re: Как определить направление?
« Последний ответ от Vint Май 27, 2022, 09:57:45 am »
Спасибо за ответ конешно, но не мог бы еще помочь прикрутить управление? что бы была возможность, выставить нужный угол, разворот осуществляется правой мышкой, нажать потянуть в сторону.
Это нужно делать имея доступ к игре. На пальцах не получится.
Чем поворот отличается от сделанного бега? Так же методом подбора - нашёл азимут, определил на какой угол нужно повернуть и куда и подбираешь значение для мыши. Скорее всего там MOVE не работает может нужно использовать MOVER.
10
Общие вопросы / Re: Два масива в один, или как сделать проще
« Последний ответ от Vint Май 27, 2022, 09:47:58 am »
Завернуть в подпрограмму не могу потому что этот кусок целиком является подпрограммой, и если его вызывать в подпрограмме то не работает.

Это как так? Да хоть десяток подпрограмм. Следить только за не пересечением переменных.

Код: Clickermann
  1. SUB(scan_number, $Sx_sn, $Sy_sn)
  2.    UNDEFINE($arr_sn)
  3.    $Stop = 0
  4.    WHILE($Stop = 0)
  5.        FOR($No_sn = 0, $No <= 10)
  6.            IF_PICTURE_IN($Sx_sn,$Sy_sn, $Sx_sn+7,$Sy_sn+11, STRCONCAT("Коры\",$No_sn,".bmp"))
  7.                IF($No_sn = 10)
  8.                    $Stop = 1
  9.                ELSE
  10.                    ARRPUSH($arr_n, $No_sn)
  11.                END_IF
  12.                $No_sn = 777
  13.            END_IF
  14.        END_CYC
  15.        INC($Sx_sn, 7)
  16.    END_CYC
  17.  
  18.    $number_result = ""
  19.    FOR($i=0, $i < ARRSIZE($arr_sn))
  20.        $number_result = STRCONCAT($number_result, $arr_sn[$i])
  21.    END_CYC
  22. END_SUB
  23. //==============================================================================
  24.  
  25.  
  26. $Start = 0
  27. WHILE($Start = 0)  // Получаю начало координат х и у
  28.    GETSCREEN(15,590, 145,615)
  29.    COLORMODE(8, 15,590, 145,615)
  30.    IF_PICTURE_IN(15,590, 145,615, "Коры\x.bmp")
  31.        $Sx = $_return1 + 15
  32.        $Sy = $_return2
  33.        IF_PICTURE_IN(15,590, 145,615, "Коры\y.bmp")
  34.            $Start = 1
  35.            $Sx2 = $_return1 + 15
  36.            $Sy2 = $_return2
  37.        END_IF
  38.    END_IF
  39.    WAITMS(10)
  40. END_CYC
  41.  
  42. // Сканирую цифры по х
  43. scan_number($Sx, $Sy)
  44. $x = $number_result
  45.  
  46. // Сканирую цифры по у
  47. scan_number($Sx2, $Sy2)
  48. $y = $number_result
  49.  
  50. LOGWRITE($x," - ", $y)
  51.  
  52. HALT

Теперь по теме, методом лога после какждых манипуляций поставил запись в лог, иногда случается проблема, второй масив тупо не заполняется, картинки находит но размер масива тупо не выводится, и уходит в бесконечность в цикле на 60 строке.
На 60 строке в приведённом скрипте он в бесконечный уйти не может, 60 это наверно в изменённом. А уходит как я писал, потому, что не находит символ окончания "запятая" может там Y не точно вырезан или возможно смещение меняется. В этом же скрипте всё по чётким размерам.

Не решить проблему, но избавиться от бесконечного цикла можно заменив цикл WHILE($Stop = 0) на FOR например по 20 итерациям (будет искать число не больше, чем в 10 знакомест), если вышли и переменная цикла последняя, то ничего не нашли и можно координате присваивать -10000 к примеру. Всё от задачи зависит.
Страницы: [1] 2 3 ... 10