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

Pages: [1] 2 3 ... 10
1
Можно отключаться от удаленного компа, не завершая сеанса пользователя. При этом, все запущенные программы продолжат работать.
Когда-то настраивал так халявный Windows сервер на Amazon, под Clickermann.
Давно это было и сейчас вникать в тему нет времени. Вот тут мои заметки по этой теме - https://disk.yandex.ru/d/d3-aqnhuCVA_ZQ
Там в архиве - текстовый файл, с корявым переводом, похоже это и есть итог моих изысканий. В общем, настроить удаленный комп можно и это точно и, насколько я помню, несложно. Всё дело в настройке "Ограничения времени сеанса".

UPD: Забыл сказать насчет работы кликера с графикой. Сейчас уже и не вспомню, какие скрипты у меня тогда на том сервере работали. Проверять надо, будет ли кликер видеть экран.

2
Общие вопросы / Re: Помогите разобраться
« on: January 21, 2023, 11:44:05 AM »
Всем привет! :)
Игру Trove я не видел, но когда-то мне приходилось делать подобный скрипт для рыбалки в WoW, там те же проблемы с поиском пикселей. Помогло то, что при поклевке появляется всплеск на воде. Если подобрать настройки графики в игре и значение COLORMODE, то появляется чисто белый пиксель на разноцветной глади воды. Но в зоне поиска такие белые пиксели могут появляться например и от бликов на воде. Поэтому потребовалось еще делать дополнительную проверку перед кликом в поплавок, так как если кликнуть раньше поклевки, то процесс ловли прерывается и всё приходится начинать сначала. Пришлось определять код курсора (постоянного кода там нет, он все время меняется). Но есть закономерность - коды курсора над водой и над поплавком всегда разные между собой.
Алгоритм получился такой: забрасываем удочку...
    1. парковка курсора (вне зоны где может оказаться поплавок)
    2. ожидание белого пикселя в небольшой части экрана около поплавка
    3. при появлении пикселя - запоминаем код курсора на парковке; перемещаем курсор на найденный пиксель; получаем код курсора на этом пикселе
    4. сравниваем коды курсора; если коды курсора на парковке и над найденным пикселем не равны, то делаем правый клик по поплавку
Задержки нужно выставить индивидуально, например перед получением кода курсора над поплавком и прочие.
Вот такой вот пример. Возможно поможет подобрать решение и для Trove. :)

3
Открытые ссылки, на внешние мусорные ресурсы, можно закрыть от поисковых роботов, например в файле "\Sources\Subs.php".
Нужно к ссылкам с атрибутом target="_blank" добавить атрибут rel="nofollow noopener noreferrer".
Это такой простой ламерский подход, без знаний PHP - тупо прописать что нужно прямо в верстку. ;D

Закрытые от роботов ссылки, для рекламных флудеров/ботов бесполезны (на таких ссылках не заработать). Они пасутся только там, где можно оставлять открытые ссылки.


4
Общие вопросы / Re: Поиск картинок
« on: November 25, 2020, 11:15:20 AM »
Проверил сейчас свой скрипт на CM v4.14.000b x32 (19.03.2019) - нормально всё работает.
Других версий у себя не нашел. Но все равно они из будущего. :)

5
Общие вопросы / Re: Поиск картинок
« on: November 25, 2020, 09:10:39 AM »
Code: (clickermann) [Select]
FOR($a = 1, $a <= 7) // ищем 7 картинок
   
   GETSCREEN
   SCANPICTURE($arr, 667,416, 1249,718, STRCONCAT("bmp\", $a, ".bmp"), -1, 100) // указать свои координаты области поиска
   
   FOR($b = 0, $b < ARRSIZE($arr), 2)
      $x = STRCONCAT("000", $arr[$b])
      $y = STRCONCAT("000", $arr[$b+1])
      ARRPUSH($arr2, STRCONCAT(STRCUT($y, STRLEN($y)-3, 4), STRCUT($x, STRLEN($x)-3, 4)))
   END_CYC
   UNDEFINE($arr)
   WAITMS(30) // пауза после поиска каждой картинки
   
END_CYC

ARRSORT($arr2) // сортировка с учетом X и Y (в приоритете Y)

WHILE(ARRSIZE($arr2))
   $str = ARRPOP($arr2)
   LCLICK(STRCUT($str, 5, 8), STRCUT($str, 1, 4))
   WAITMS(300) // пауза между кликами
END_CYC

HALT


6
Если Clickermann не позволяет искать картинки, которые находятся вне папки проекта (например, на другом жестком диске, или в сетевой папке), то его можно обмануть.
Для этого нужно создать в Windows символическую ссылку (симлинк) на искомую картинку, или папку с картинками. Любая программа в системе может обращаться к такой ссылке по её адресу, как к реальной папке (или файлу), которые на самом деле находятся совсем в другом месте и даже имеют другие имена.

Сделать симлинк можно в Командной строке. Для вызова справки по команде MKLINK, в Командной строке пишем:
Code: (text) [Select]
mklink /?
Синтаксис MKLINK очень простой, так что расписывать тут особо нечего, да и в интернете информации по этому вопросу много.

Для примера, создадим симлинк на папку с картинками:
- Папка проекта - "C:\Проект" (в ней лежит наш скрипт).
- Папка с картинками на другом диске - "D:\Pictures".
- Нам нужно создать симлинк в папке проекта, с новым именем "Картинки", так, чтобы Clickermann мог находить картинки по адресу "C:\Проект\Картинки".

Папку "C:\Проект\Картинки" создавать не нужно, вместо неё будет ссылка.

В Командной строке пишем:
Code: (text) [Select]
mklink /D "C:\Проект\Картинки" "D:\Pictures"
Нажимаем Enter.
Если видим сообщение - "символическая ссылка создана для C:\Проект\Картинки <<===>> D:\Pictures", значит всё получилось. :)

Теперь, например функция SCANPICTURE, сможет находить изображения в папке своего проекта, в несуществующей папке "Картинки", которые на самом деле лежат в папке "Pictures" на другом физическом диске. :)

Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "\Картинки\picture.bmp", -1, 100)


7
Такая "ошибка" может быть если значение параметра delay_between_lines больше единицы.
Но для Win10 точно не скажу, у меня Win7.

8
Всем привет! :)

Вот, я тут набросал прототип сценария с потоком и приоритетом действий персонажа в бою.
У каждого действия персональная подпрограмма, в которой проверяется возможность выполнения этого действия. А вызов подпрограмм - по приоритету действий. Здоровье персонажа в приоритете, поэтому сначала подпрограмма лечения. Атакующие действия, например - по силе удара. После каждого успешного действия, сценарий начинается сначала.

Вместо классического GOTO, я использовал прерывание потока SETTHREAD(name, 2). Так, при следующем запуске этого потока, сценарий начнется с начала, то есть с проверки здоровья персонажа и далее, по приоритету.

Когда действия выполняются по приоритету, важно после каждого действия мгновенно возвращаться в начало сценария и проверять готовность этих действий. Кстати, в своих ботах для World of Warcraft, я "прыгаю" по GOTO на метку из подпрограмм тройной вложенности (причем много лет) и горя не знаю.  ::)  Не делайте так. ;D  Я буду избавляться от этих GOTO.

Ну раз GOTO под запретом, пусть будет SUB(GOTO_start). Для перехода в начало сценария можно так же использовать SWITCH, но по моему это более запутанный способ.

Такой вариант замены GOTO лично я никогда не использовал (попробую позже), а в остальном это рабочая "схема". Как иллюстрацию, отдаю своих злых ДД ботов-ассистентов для WoW 5.4.x "Mists of Pandaria". Естественно безвозмездно. Никогда не думал, что докачусь до этого (по крайней мере, пока сам играю). :)

В плане оптимизации скорости бота:
- желательно заменить IF_PICTURE_IN на IF(PXL($x,$y)),
- паузы вида WAIT(1), заменить на ожидание событий в цикле.

Code: (clickermann) [Select]
WAITMS(30)

IF($start = 2)
   SETTHREAD (name, 1)
   UNDEFINE($start)
END_IF

//--------------------------------

THREAD(name, 1)
   
   SUB(GOTO_start) // Вместо обычной директивы GOTO(label)
      $start = 2
      SETTHREAD (name, 2) // 0 - Пауза, 1 - Старт, 2 - Стоп
   END_SUB
   //--------------------------------
   SUB(Отхил)
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file_1.bmp", -1, 100) // проверка здоровья персонажа
         // здесь действие для отхила персонажа
         GOTO_start()
      END_IF
   END_SUB
   //--------------------------------
   SUB(Атака_1)
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ataka_1.bmp", -1, 100)
         // здесь действие для 1 атаки моба
         GOTO_start()
      END_IF
   END_SUB
   //--------------------------------
   SUB(Атака_2)
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ataka_2.bmp", -1, 100)
         // здесь действие для 2 атаки моба
         // GOTO_start() // Не обязательно (в последнем действии сценария).
      END_IF
   END_SUB
   
   //--------------------------------
   // После выполнения подпрограммы "GOTO_start", скрипт продолжится с этого места
   
   GETSCREEN // Один снимок экрана для проверки всех состояний персонажа и цели
   COLORMODE(3)
   
   // Далее перечисляются действия персонажа (по приоритету) - вызываются подпрограммы.
   // Одна подпрограмма - одно действие.
   // Возможность выполнения действий проверяется внутри подпрограмм.
   
   Отхил() // Эта подпрограмма хильнёт, если возможно, и начнет скрипт сначала. Если хилка не готова, то перейдет дальше - к атакам.
   Атака_1() // Если Атака 1 готова, то ударит и начнет скрипт сначала - с проверки здоровья персонажа. Если не готова, то перейдет к Атаке 2.
   Атака_2() // Ударит, если возможно.
   
   WAITMS(30)
   
END_THREAD


9
Прошел год...
Re: Копировать название и описание организации из 2gis
В том примере текст копируется именно столбиком и без лишнего рукоблудства с поиском картинок.


10
У меня получилось нечто похожее :) - 1 функция, 1 оператор, скорость примерно в полтора раза выше и от количества разрядов как бы не зависит.
Разрядов можно накидать сколько угодно. В моем примере их 25. Но с таким функционалом получается только один вариант скрипта (больше не искал, да вроде и не нужно).
От своего первого кода так-же не отказываюсь, он мне нравится. :)
https://yadi.sk/d/HjDCt7UFEkq6Sw


11
... В твоем коде формула или какой-то математический прикол? ...

Нет там никаких заумных формул. Всё для нормальных людей. В Clickermann'е всё что надо уже есть. Две функции в строке. В справке они есть. Их надо только вставить в скрипт и заполнить цифрами.
Из 3 функций получается 2 варианта этой конструкции. Одна из функций обязательна в обоих вариантах, и две другие на выбор.
Всё до смешного просто. Вот увидишь. :)


12
Всем привет! :)

Я с интересом наблюдал за развитием этой темы и сочинил такую же конструкцию-строку с нулями. Но Виталий меня опередил. И раз уж совершенству (как и маразму) ;D нет предела, то мне оставалось только "тряхнуть стариной" и придумать что-то другое...

Придумал я вот это - https://yadi.sk/d/771Yn1Y99rNmnw
Не берусь утверждать, что раньше так никто не делал. В конечном итоге, мы в своих скриптах всего лишь меняем местами одни и те же неизменные команды, которые однажды дал нам СОЗДАТЕЛЬ. :)
Скачайте и сохраните архив у себя. А пароль к архиву я выложу как будет найдено такое же решение кем то еще. Тогда сможем сравнить результаты.
Заметьте, не я это придумал. Я лишь поддерживаю идею дать людям возможность находить решения самостоятельно и получать от этого удовольствие. :)

Сохраняя интригу, могу только сказать, что в архиве тоже конструкция в 1 строку (в двух вариантах). Она намного короче в написании (предложенной выше конструкции-строки) и работает быстрее последней в 1,4 раза. А так же, не содержит функций STRLEN и STRCONCAT. И еще, она быстрей, чем громоздкая, но быстрая конструкция со свитчем. В этой задаче, конструкция со свитчем быстрее конструкции с циклом.

Но есть в моей конструкции минусы и ограничения. Пока выявлены только вот эти.
1. Максимальная разрядность на выходе, не более 12 - для первого варианта, и не более 11 - для второго.
2. Второй вариант выдаст не верные данные, если количество разрядов на входе больше, чем ожидается на выходе.

В остальном конструкция вроде работает нормально. От количества добавляемых разрядов, скорость её выполнения не зависит, как например в случаях с циклом и свитчем.


13
Биржа труда / Re: bot wow
« on: June 03, 2019, 11:52:18 PM »
Пишет кто ботов сейчас для игры world of warcraft?
Да, ботов на Clickermann для WoW пишут и они не распознаются античитами.

14
Привет! :)

Что пришло в голову:
Попробовать через WebDav. Кстати яндекс когда то давал такую возможность.
Подключить Я.Диск как сетевой диск, действительно будет самым легким решением, в плане потребления ресурсов. Такая возможность сохранилась - https://yandex.ru/support/disk/webdav/

Добавлю еще один вариант, которым пользовался сам. Не буду расписывать подробно, просто скажу, что это IIS. Он штатно присутствует в Windows как компонент и по дефолту отключен. Включив IIS, мы превращаем свой комп в независимый сайт и ftp-сервер. Всё что мы напишем на страницах этого сайта, сразу будет видно всем в интернете. У этого варианта есть конечно свои минусы. Например - у сервера должен быть статический IP-адрес. Не стоит забывать про безопасность и настроить доступ к информации на сервере. По поводу потребления ресурсов системы IIS-сервером, сказать ничего не могу - на глаз не ощутимо.
Но есть в этом решении и один важный плюс. В моем случае, служебная информация, которую я выкладывал на сайт, предназначалась для моего бывшего босса, который не просто "чайник" в IT, а вообще валенок. И сам он находился в другом городе. Причем мне даже не было известно (и не интересно) на каком устройстве он эту информацию будет просматривать. По этому настроить на его устройстве подключение к облаку, небыло ни малейшего желания. Я ему просто кинул в аську url сайта и всё - он заткнулся. Вообще, такой вид отчетности о работе я и придумал для того, чтобы поменьше общаться с этим человеком по телефону, предоставив ему онлайн-отчеты.
Вариант конечно не самый лучший, но тоже вариант. Может кому пригодится. :)

15
В любом начинании вопросов больше чем ответов. Я предложил альтернативу компиляции, а там проблем не меньше. В наше время инет уже стал нормой, и если у человека нет инета, то ему КМ и не нужен, скорее всего он про него даже не слышал. :) Онлайн-сервис по определению для онлайн-пользователей.
"Кто будет поддерживать сервер с этими онлайн-кликерами?" - а кто поддерживает серверы Google или Facebook? Представляешь сколько стоит содержать их сервера? :D Всё просто - деньги их поддерживают. На первых порах поддерживали энтузиасты, а потом наемный персонал. А тот кто это всё организовал, теперь не знает куда бабло девать. Они не побоялись сделать первый шаг и теперь почивают на лаврах.
Кстати работа сервера не в том чтобы запустить тысячи скриптов, всё проще. Его задача управлять ключами - кодами запуска. PHP скрипт генерирует уникальные ключи для пользователей. Каждый такой ключ имеет срок действия и привязку к скрипту, который сдается в аренду. Как проездной билет привязан к маршруту автобуса и имеет срок действия один месяц. Работа скрипта в Кликермане происходит естественно у клиента, а не на сервере. Всё как обычно, только пользователь не может заглянуть в скрипт. Его онлайн-клиент просит пользователя ввести ключ и проверяет его валидность запросом на сервер. Если ключ действительный, то сервер сообщает об этом клиенту и клиент запускает скрипт. Просроченные ключи удаляются (попадают в историю) и скрипт связанный с этим ключом больше никто не сможет запустить, сервер не даст клиенту его скачать и использовать. Всё как в онлайн-играх - все текстуры, видосы и прочее - в свободном доступе и их можно скачать бесплатно. Но на запуск игры требуется разрешение сервера. Здесь же, картинки для работы скрипта будут видимые, а сам скрипт только в памяти кликера. Скрипт придется передавать клиенту каким-то защищенным способом. Прелесть в том, что даже если кто то украдет/позаимствует ключ, то не сможет его раздать другим людям и пользоваться вечно. Сервер позволит запустить только то количество копий скрипта, и только в течение того времени, за которые заплачено.
По поводу дележки бабла... :) Естественно, все платежи проходят через платежные системы управляемые этим онлайн-сервисом. Для владельца сервиса это беспроигрышный вариант, так как ему платят все. Авторы скриптов получают от владельца сервиса заслуженное вознаграждение (скажем так - за привлечение клиентов). Налог с авторов скриптов за предоставление удобной торговой площадки естественно должен быть получен. Можно сделать по примеру комиссионного магазина, выставил товар - оплачивай расходы связанные с его хранением. Или это может быть процент от совершенной сделки. Главное найти компромисс, чтобы всем было выгодно.

Pages: [1] 2 3 ... 10