1. Гость, если сервер для Вас недоступен - попробуйте добавить папку с клиентом игры в исключения антивируса и выполните проверку в Лаунчере. Ознакомьтесь с F.A.Q на форуме и нашим Telegram каналом: @mmoclassic

[AutoIT] Скрипт для запуска нескольких персонажей (автологин)

Тема в разделе "Гайды и F.A.Q.", создана пользователем Джолли, 8 май 2021.

  1. Джолли

    Джолли Форумный аналитик Пользователь

    Сообщения:
    2.263
    Симпатии:
    886
    Баллы:
    83
    У нас тут на форуме грандиозно прошел Релиз Автологина для pwclassic. Пользователем ВолкWR была написана хитрая программа в виде исполняемого файла, с каким-то там интерфейсом, плюс с требованиями установить фреймворк .Net и библиотеки MS Visual C++.

    Я не сторонник забивать гвозди микроскопом и считаю, что весь этот процесс можно в любом кликере написать (uopilot, AutoIT или даже в макросах на мышке типа X7 или клаве типа G15 и тд) за строчек 20.

    Кроме того, я, как безопасник по специальности, крайне не рекомендую юзать вообще чужие исполняемые файлы, тем более передавать им свои логины и пароли. Даже если антивирусники не ругаются (а с чего вы взяли, что обращение с POST-запросом на чужой сайт, в котором будут ваши логин и пасс, должен сильно взбудоражить антивири?), даже если админ ПВКлассик дал добро на софт (не он его писал, имеет ли он достаточную квалификацию для анализа вредоносности - не думаю, при всем моем уважении), плюс проверить могли одну версию, а реально файл был изменен из-за "фиксов ошибки" или вообще исходники автор (дело не в конкретном ВолкWR, мы, безусловно, верим что он молодец и несет добро в массы) для проверки послал одни, а компилировал уже другие. Либо же на его компе вирусняк, который дописываете себя ко всем .exe файлам и он передаст вам его. Зачем все эти риски? Вы же не облизываете дужку унитаза, если уборщица заверила вас, что она все помыла тщательно? Двери в квартиру закрываете на ключ, хотя участковый говорит что у вас самый спокойный район во Вселенной.

    Я понимаю, что мы все любим левые интерфейсы игры, с отдельными экзешниками, которые лезут в память elementclient.exe и прочий "полезный софт", но когда ВНЕЗАПНО оказывается, что вашего чара раздели (а ведь сделать это могут не сразу же, а с задержкой, чтобы не вызвать подозрений), то вы бежите к Админу и плачетесь что жизнь к вам несправедлива (хотя есть и более хардкорные парни, что у Седуктива покупают чаров, но нефиг RMT-шить и ставить левый софт).


    Так вот, я рекомендую либо ничего не юзать лишнего, особенно это касается исполняемых файлов (правки ресурсов PW, где у вас просто там чатик переделывается и тд - ерунда, если нет исполняемых файлов), либо же самому писать нужные утилитки, благо я тут немало примеров на том же AutoIT накидал в данном разделе.


    И сегодня я покажу как написать свою утилитку для запуска окон с последующим вводом логинов и паролей. Она не будет 100% автоматической, потому что задача другая - сделать удобный и быстрый вход. То, что вместо 1 клика вы будете два раза одни и те же комбинации клавиш просто нажимать - на скорость запуска особо не повлияет.

    PHP:
    ;   ___________________________________________
    ; / \                                          \
    ;|   |  
    Скрипт для автологина в Perfect World  |
    ; \
    |                                         |
    ;    |                                         |
    ;    | 
    by Джолька jolly.insane.su джолли.рф  |
    ;    |                                         |
    ;    |             
    Copyright C 2021            |
    ;    |   
    ______________________________________|___
    ;    |  /                                         /
    ;    \
    _/_________________________________________/


    #include <File.au3>  ; подгружаем библиотеку AutoIT для работы с файлами


    Просто настройки компиляции
    #pragma compile(Out, JollyPWLogin.exe)
    #pragma compile(ProductName, Jolly AutoLogin PW)
    #pragma compile(Icon, JollyPWLogin.ico) ; Иконка
    #pragma compile(FileDescription, Автологин для PW от Джолли) ; Описание файла
    #pragma compile(ProductVersion, 1.0.0)
    #pragma compile(FileVersion, 1.0.0)
    #pragma compile(CompanyName, www.insane.su)
    #pragma compile(LegalCopyright, www.insane.su)

    TraySetIcon(@ScriptDir "\JollyPWLogin.exe",1) ; задаем икнонку в трееберем ее из ресурсов скомпилированного файлаесли убрать строчкуто иконка будет стандартной от AutoITчтобы поставить свою нужно найти файл формата ICOположить его под именем JollyPWLogin.ico и скомпилировать проект самостоятельно через Ctrl+F7

    HotKeySet
    ("+{ESC}""Terminate") ;!!! ВАЖНО !!! Выключаем исполнение скрипта по Shift+ESCAPE


    Задаем переменные
    Global $key[16], $path[16],$login[16],$password[16] ; переменные из строчки конфига, [комбинация клавиши для запуска окна], [путь к игре], [логин],[пасс]
    Global 
    $strsettings массив для разбития строчки на подстрочки через разделитель ПРОБЕЛ
    Global $settingsarray массивсозданный из строк файла настроек
    global $i переменная номера аккаунта (номер строки для запуска окна)
    global 
    $inc=Техническая переменнаяОтвечает за точто если мы запустили окно нажатием клавиши (комбинации клавиш), то повторное нажатие запустить автоввод логина и пароля.

    Загружаем настройки из файла config.txt
            
    If Not _FileReadToArray(@ScriptDir "\config.txt"$settingsarrayThen в директории с исполняемым файлом должен быть файл config.txtмы читаем в массив все строчки из файла
                MsgBox
    (4096"Ошибка"" Ошибка чтения файла в массив     Ошибка = " & @error)
                Exit
            EndIf


            for 
    $i=1 to $settingsarray[0]
            
    $strsettings=StringSplit($settingsarray[$i]," "); разделить строчку из файла на элементы массива с разделителем в виде ПРОБЕЛА
            $key
    [$i]=$strsettings[1] ; первый элемент массива из строчки конфига комбинация клавиши для вызова функции запуска клиента ПВ
            $path
    [$i]=$strsettings[2] ; второй путь к папке с файлом elementclient.exe
            $login
    [$i]=$strsettings[3] ; третий ваш логин
            $password
    [$i]=$strsettings[4] ; четвертый ваш пароль

            HotKeySet
    ($key[$i], "runpw"&$i) ; Создаем хоткеи для каждой из строчки запуска из конфигак сожалению сделать адекватную передачу переменной в единую фукнкцию слишком гимортак что я в скрипте просто сделал 6 функций RunPW1-RunPW6если мало просто скопипастите функцию и не забудьте поменять в названии RunPW7 и $i=7 и тд.

            
    Next


    ; =============================
        while 
    постоянный пустой циклчтобы программа не завершалась и ждала хоткеев
          sleep
    (1000) ; задержка в 1 секунду
        WEnd
    ; =============================


    Func Terminate() ; Завершаем программу по Shift+Escape
    Exit
    EndFunc   ;==>Terminate



    func RunPW1
    ()
    $i=какое окно по номеру из файла конфига запускаем
    if $inc=0 Then Запускаем клиент
    Run
    ($path[$i] & "elementclient.exe",$path[$i])
    EndIf
    $inc=$inc+переменнаякоторая содержит значение нажимали ли мы уже данное окночтобы по повторному нажатию начать вводить пароль

        
    if $inc>1 Then если повторное нажатие комбинации клавишто в открытом окне вводим логин и пароль
            Send
    ("{ENTER}") ; на окне с правилами сервера тупо нажимаем Enter
            sleep
    (1000) ; ждем 1 секунду
            Send
    ($login[$i]) ; вводим логин для данного окна
            send
    ("{TAB}") ; табаем в поле ввода пароля
            sleep
    (100) ; ждем 0.1 секунду
            Send
    ($password[$i]) ; вводим пароль
            sleep
    (100); ждем 0.1 секунду
            Send
    ("{ENTER}") ; нажимаем вход
            $inc
    =Обнуляем переменнуючтобы она не мешала запускать другие окна
        
    EndIf

    EndFunc


    func RunPW2
    ()
    $i=2
    if $inc=0 Then Запускаем клиент
    Run
    ($path[$i] & "elementclient.exe",$path[$i])
    EndIf
    $inc=$inc+переменнаякоторая содержит значение нажимали ли мы уже данное окночтобы по повторному нажатию начать вводить пароль

        
    if $inc>1 Then если повторное нажатие комбинации клавишто в открытом окне вводим логин и пароль
            Send
    ("{ENTER}")
            
    sleep(1000)
            
    Send($login[$i])
            
    send("{TAB}")
            
    sleep(100)
            
    Send($password[$i])
            
    sleep(100)
            
    Send("{ENTER}")
            
    $inc=Обнуляем переменнуючтобы она не мешала запускать другие окна
        
    EndIf

    EndFunc


    func RunPW3
    ()
    $i=3
    if $inc=0 Then Запускаем клиент
    Run
    ($path[$i] & "elementclient.exe",$path[$i])
    EndIf
    $inc=$inc+переменнаякоторая содержит значение нажимали ли мы уже данное окночтобы по повторному нажатию начать вводить пароль

        
    if $inc>1 Then если повторное нажатие комбинации клавишто в открытом окне вводим логин и пароль
            Send
    ("{ENTER}")
            
    sleep(1000)
            
    Send($login[$i])
            
    send("{TAB}")
            
    sleep(100)
            
    Send($password[$i])
            
    sleep(100)
            
    Send("{ENTER}")
            
    $inc=Обнуляем переменнуючтобы она не мешала запускать другие окна
        
    EndIf

    EndFunc


    func RunPW4
    ()
    $i=4
    if $inc=0 Then Запускаем клиент
    Run
    ($path[$i] & "elementclient.exe",$path[$i])
    EndIf
    $inc=$inc+переменнаякоторая содержит значение нажимали ли мы уже данное окночтобы по повторному нажатию начать вводить пароль

        
    if $inc>1 Then если повторное нажатие комбинации клавишто в открытом окне вводим логин и пароль
            Send
    ("{ENTER}")
            
    sleep(1000)
            
    Send($login[$i])
            
    send("{TAB}")
            
    sleep(100)
            
    Send($password[$i])
            
    sleep(100)
            
    Send("{ENTER}")
            
    $inc=Обнуляем переменнуючтобы она не мешала запускать другие окна
        
    EndIf

    EndFunc


    func RunPW5
    ()
    $i=5
    if $inc=0 Then Запускаем клиент
    Run
    ($path[$i] & "elementclient.exe",$path[$i])
    EndIf
    $inc=$inc+переменнаякоторая содержит значение нажимали ли мы уже данное окночтобы по повторному нажатию начать вводить пароль

        
    if $inc>1 Then если повторное нажатие комбинации клавишто в открытом окне вводим логин и пароль
            Send
    ("{ENTER}")
            
    sleep(1000)
            
    Send($login[$i])
            
    send("{TAB}")
            
    sleep(100)
            
    Send($password[$i])
            
    sleep(100)
            
    Send("{ENTER}")
            
    $inc=Обнуляем переменнуючтобы она не мешала запускать другие окна
        
    EndIf

    EndFunc

    func RunPW6
    ()
    $i=6
    if $inc=0 Then Запускаем клиент
    Run
    ($path[$i] & "elementclient.exe",$path[$i])
    EndIf
    $inc=$inc+переменнаякоторая содержит значение нажимали ли мы уже данное окночтобы по повторному нажатию начать вводить пароль

        
    if $inc>1 Then если повторное нажатие комбинации клавишто в открытом окне вводим логин и пароль
            Send
    ("{ENTER}")
            
    sleep(1000)
            
    Send($login[$i])
            
    send("{TAB}")
            
    sleep(100)
            
    Send($password[$i])
            
    sleep(100)
            
    Send("{ENTER}")
            
    $inc=Обнуляем переменнуючтобы она не мешала запускать другие окна
        
    EndIf

    EndFunc


    Суть всего процесса:
    1. Берем и ставим AutoIT: https://www.autoitscript.com/site/autoit/downloads/ (тут придется довериться разработчикам, но они с 1999 года пишут данный софт)

    2. Скачиваем pwlogin.zip из приложенного архива (в нем есть исполняемый файл JollyPWLogin.exe, но я крайне рекомендую его удалить, открыть файл pwlogin.au3 через ПКМ - Edit Script и через комбинацию Ctrl+F7 делаете свою личную сборку).

    3. В архиве файл config.txt содержит строчки (в скрипте используется до 6 окон и до 16 максимум, но вы можете поправить это под себя) с параметрами запуска игры. Распаковываем архив в удобное место и открываем получившуюся папку pwlogin, после чего правим файл config.txt, формат такой:
    Код:
    ^+{F1} D:\pwclassic[RU]\element\ login password
    ^+{F2} D:\pwclassic[RU]\element\ login2 password
    ^+{F3} D:\pwclassic[RU]\element\ login3 password
    ^+{F4} D:\pwclassic[RU]\element\ login4 password
    ^+{F5} D:\pwclassic[RU]\element\ login5 password
    ^+{F6} D:\pwclassic[RU]\element\ login6 password
    Это переменные, разделяемые пробелом.
    ^+{F1} - это Ctrl+Shift+F1, то есть ^ = Ctrl, + = Shift, а {F1} - кнопка F1. Если что ! = Alt, если хотите через Shift+Alt+1 запускать, то комбинация будет +!1
    D:\pwclassic[RU]\element\
    - меняете на свой путь к игре, конкретно к папке, где лежит elementclient.exe. Путь не должен содержать ПРОБЕЛЫ (лень просто поддержку пробелов в пути пилить). У меня в свое время каждый акк был со своей папкой игры (удобно сохранять настройки под каждое окно свои, плюс они не группируются в панели задач)
    login - ваш логин
    password - ваш пароль

    Мы можете оставить в файле config.txt столько строк под ваши окна, сколько хотите. Но сейчас скрипт поддерживает 6 окон, плюс размерность массивов 16 стоит, так что для 7 и более окон просто поправьте и перекомпилируйте pwlogin.au3. Не оставляйте в файле конфига пустых строчек, я не делал защиту от дурака, так что будет вылетать с ошибкой.

    4. Открываем файл pwlogin.au3 на редактирование в SciTE (редактор скриптов AutoIT) и смотрим текст. Я его прокомментировал достаточно подробно.

    Если никаких непонятных вещей нет (там все прозаично довольно, ну или курите мануалы по AutoIT) - через Ctrl+F7 компилируем скрипт. В итоге в папке со скриптом заменится файл JollyPWLogin.exe (вообще имя файла, описание и тд можно в секциях #pragma compile поменять).

    5. У программы есть важная комбинация Shift+ESC для завершения программы. Не забывайте ее.

    Когда вы запустили ее, то в трее (область справа внизу экркна со значками запущенных программ рядом с часиками) появится иконка. Если используете мою иконку, то такая: [​IMG] , возможно она будет автоматом скрываться за кнопкой в трее [​IMG] , просто откройте тогда по данной кнопке полный список "скрытых" иконок и перетащите нужную для удобства правее иконки [​IMG]. Но это так, для личного удобства. Запущена программа = горит икнока [​IMG] в трее.

    6. Как логиниться.

    Если вы запустили программу (пункт 5) и она горит в трее, плюс вы настроили предварительно под себя config.txt, то дальше нажимаем заданную комбинацию, например Ctrl+Shift+F1 и должно запуститься окно с ПВ.

    Когда оно запустилось и появился экран с Правилами сервера, нажимаем ту же комбинацию еще раз.
    [​IMG]

    Программа передаст тупо нажатие в данном окне кнопки Enter (это значит, что вам не стоит переключаться между окнами если вы запустили программу, либо придется вернуться в окно до повторного нажатия нужной вам комбинации) и дальше вводит ваш логин и пароль и также жмет Enter. Хотите чтобы Тупое нажатие последовательности клавиш.

    Важно: если у вас в логине или пароле есть символы {,},!, ^ или +, то в config.txt задавайте их как {{}. {}}. {!}, {^} и {+} соответственно. Подробнее тут: https://autoit-script.ru/docs/functions/send.htm

    7. Хотите чтобы сразу же после входа в аккаунт грузило последнего выбранного чара на акке - добавьте в функцию func RunPW1 (1 - номер функции для первого акка, если хотите во все добавить - значит по всем функция пробежитесь) перед строкой $inc=0 строчки
    PHP:
    sleep(1000) ; ждем 1 секунду
    Send
    ("{ENTER}")
    8. Если хотите чтобы у вас было больше 6 окон, значит берете функцию копируете код от начала func RunPW6() до конца EndFunc, затем вставляете его ниже EndFunc и правите по тексту RunPW6() на RunPW7() и $i=6 на $i=7.

    9. Если вам прям очень сильно захотелось больше 16 окон так запускать, то поменяйте размерность массивов в строчке с 16 на нужное кол-во:
    PHP:
    Global $key[16], $path[16],$login[16],$password[16] ; переменные из строчки конфига, [комбинация клавиши для запуска окна], [путь к игре], [логин],[пасс]


    Код получился конечно больше 20 строчек, но это для того, чтобы было все разжевано максимально и красиво оформлено. По сути хватило бы банального:
    PHP:
    HotKeySet("+{ESC}""Terminate") ;!!! ВАЖНО !!! Выключаем исполнение скрипта по Shift+ESCAPE
    HotKeySet
    ("^+{F1}""runpw")
    global 
    $inc=;
        while 
    постоянный пустой циклчтобы программа не завершалась и ждала хоткеев
        WEnd
    Func Terminate
    () ; Завершаем программу по Shift+Escape
    Exit
    EndFunc   ;==>Terminate
    func RunPW
    ()
    if 
    $inc=0 Then
    Run
    ("D:\pwclassic[RU]\element\elementclient.exe","D:\pwclassic[RU]\element")
    EndIf
    $inc=$inc+;
        if 
    $inc>1 Then ;
            
    Send("{ENTER}")
            
    sleep(1000)
            
    Send("login")
            
    send("{TAB}")
            
    sleep(100)
            
    Send("password")
            
    sleep(100)
            
    Send("{ENTER}")
            
    $inc=0
        
    EndIf
    EndFunc
    Только пути, комбинация для вызова и логин-пасс нужно было бы зашивать в сам скрипт. 25 строчек(можно еще ужать, но нет смысла). Без .Net фреймворков и тд. И ты знаешь что делает программа и как.
     

    Вложения:

    • pwlogin.zip
      Размер файла:
      450,3 КБ
      Просмотров:
      74
    CHe, pwtwin1, BLeIk и 2 другим нравится это.
  2. kozheurov

    kozheurov Местный Пользователь

    Сообщения:
    150
    Симпатии:
    43
    Баллы:
    28
    Слушай. Ты красава
     
  3. УННВ

    УННВ Местный Пользователь

    Сообщения:
    166
    Симпатии:
    56
    Баллы:
    28
    В итоге гвозди забил пинцетом.
     
    RealMymadness нравится это.
  4. RealMymadness

    RealMymadness Местный Read Only

    Сообщения:
    212
    Симпатии:
    95
    Баллы:
    28
    Хаахх, хотел примерно то же самое написать
     
  5. ВолкWR

    ВолкWR Активный участник Пользователь

    Сообщения:
    51
    Симпатии:
    17
    Баллы:
    8
    Если хочешь посмотреть отправляется ли что-то, то любой сниффер в помощь.

    Человек, который занимается разработкой сервера, разве не умеет программировать? Или тем более прочитать чужой код и понять, что он не является вредоносным? Ну глупость же.

    Зачем все данные оставлять в открытом виде? Ты же сам безопасник, и наверняка знаешь к каким проблемам это может привести, не говоря о том, что можно просто целенаправленно открыть файл и увидеть все твои данные от всех аккаунтов.

    Гениальный подход, который никогда не вымрет. Об этом я и писал у себя в теме, что скрипты на AutoIt это игрушка. Ты в очередной раз это подтвердил, спасибо
    При этом если альтабнуться на любое другое окно, все эти комбинации клавиш уйдут именно другому окну. Кому нужно такое? Надо чтобы все сработало автоматически, даже если ты в альтабе. В ином случае игра не стоит свеч.

    Ну это полный финиш.. Разве нельзя сделать один единый метод, в который будет передаваться связка логин - пароль? Едем дальше

    Зачем каждый раз указывать путь до клиента? Не совсем понимаю по какой причине вообще так сделано.
    Можно было просто сделать одну глобальную переменную да и все

    Куда еще больше биндов, зачем. Их и так уже достаточное количество.

    Подведу итог всего что было выше. Вся эта задумка с AutoIt, чуть более чем сырая. Как в плане кода, так в плане и самой реализации логина на аккаунт, не говоря уже о куче биндов, которые нужно еще и запомнить.
    Как уже говорил, AutoIt вообще не то, на чем можно писать нормальные программы. Спасибо хоть не статья с uopilot

    Правда, задумка явно сырая и не доведена до ума. Я понимаю что 90% тут вообще не сталкивались с нормальным программированием и редактировать скрипты в их планы явно не входило. Для нормальной реализации такой вещи лучше использовать внутриигровые функции самого клиента, а не отправлять имитацию клавиш. Для этого нужно хорошо прокачать свои знания в реверсе игр и всяких приложений.
    Даже использования того же самого SendMessage или PostMessage окну клиента игры не дает гарантии, что все пройдет так как планировалось и нам удастся зайти на аккаунт. Именно поэтому при написании своей программы я не использовал никаких WinApi для обращения к окну игры, а руководствовался лишь знаниями в реверсе, и чтобы получить достаточное количество для написания подобной программы как у меня, нужно провести огромное количество времени изучая эту тему.

    Если тебе интересно что-то узнать про реверс, как он вообще работает и сколько нужно для этого знаний, то отпиши мне в лс, я тебе могу подробно разжевать

    И еще, даже если ты захочешь посмотреть исходный код, я тебе могу лично его предоставить, мне нечего скрывать.
     
    DIO и RealMymadness нравится это.
  6. DIO

    DIO Житель форума Пользователь

    Сообщения:
    359
    Симпатии:
    453
    Баллы:
    43
    Как-будто на StackOverflow зашла, внатуре.
     
    rossanmol и Рак нравится это.
  7. Джолли

    Джолли Форумный аналитик Пользователь

    Сообщения:
    2.263
    Симпатии:
    886
    Баллы:
    83
    1. Да, WireShark ставить какой-нить, чтобы проверить лезет ли твоя софтина в инет сливать данные или нет - это уже на полноценную лабораторию по изучению вредоносов тянет. Ждем предложений сделать песочницу и тестить все там, ну и дизассемблер забывать не стоит.

    Лучшим вариантом будет поставить какой-нить фаервол типа TinyWall и смотреть че куда как. Либо просто заблочить в явном виде доступ в сеть определенному исполняемому файлу.

    2. PWClassic не занимается разработкой сервера, если что. Плюс сисадмин != программист. Иначе и эникейщика, что принтер подключает также можно назвать программистом. Если ты не заметил, PWClassic отправляет людей за фиксами в саппорт на почту, потому что он админит сервак, занимается ее концепцией и общей работой. По сути это CEO если брать в терминологии управленцев. Техническая же часть на саппорте у других людей, видимо тех, кто эти сборки серверов штампует. Ну и программирование и анализ запутанного кода - разные вещи. Твой код мы не видели, так что молчал бы.

    3. Хоспаде, никто не мешает зашить логин-пасс в сам исполняемый файл. Я очкую запускать твой экзешник, так что хз где ты там и в каком виде хранишь логин-пасс, я сделал PoC ( https://ru.wikipedia.org/wiki/Проверка_концепции ), а не "Релиз Автологина для pwclassic". В 25 строчек кода можно запихнуть автологин с зашитым в сам исполняемый файл кодом. Но даже хранение открытого логина и пароля в файле на компе юзера не сильно уходит от реального положения дел, где эти пароли один фиг лежат в соседнем текстовом файле. А запуск левого софта с форума - это однозначный риск. Если кому-то интересна редакция с каким-нить XOR шифрованием логина и пароля в текстовом файле - дайте знать, допилю. А то вдруг вы поставили софт от левых людей с форума и уверены, что он будет воровать ваш файл config.txt

    4. На AutoIT можно ловить хэндлы запущенных окон, двигать их куда нужно, определять координаты окошек и тд, но зачем все это, если человек просто запускает по нужной ему комбинации игру, дожидается окна с Правилами и жмет еще раз ту же комбинацию и все. Конечно я могу это сделать как ты отдельной кнопкой, с добавлением акков через интерфейс и тд, но зачем это, если конечная цель у юзера просто быстро вводить логин-пасс от акков, если их у него больше, чем 1?

    5. AutoIT кривой в плане вызова функций через HotKeySet, в этой процедуре нельзя передавать переменные к привязываемой на кнопку функции. Sad but true. Это можно избежать через ручное отслеживание нажимаемых кнопок, но для простого смертного проще и понятнее просто копипастнуть функцию. Но хз, я не программист и не гуру AutoIT, моя задача в данной теме прежде всего людям показать, что легко можно сделать простые вещи, которые помогут им в жизни. Все доступно и на базовом уровне.

    6. Про путь клиента я расписал. Мне было удобнее держать разные папки под разных чаров. Когда в 6 окон играешь, то удобно что они запоминают размер и положение, плюс личные настройки (мейн-чару важна дистанция и тд, а для твинков в ХХ хватит и минималок). Потом с AutoIT я уже научился запускать клиентов так, чтобы они сами расставляли каждый из экземпляров в нужном месте одного из трех мониторов и хватала одного экземпляра игры, но это уже другая задача, там и авто-фоллоу за основой по кнопке был и тд. Но на Классике это я не юзал, мб запрещено, хз.

    7. Чем бинд хуже отдельного GUI окошка с необходимостью нажимать кнопки мышкой - я хз. В лучшем случае - на любителя.

    8. Я за час расчехлил AutoIT, взял какие-то части кода из старых разработок, заново погуглил мануал по AutoIT и написал работающее решение, плюс разжевал все в прилагаемом исходном коде. Но релизом автологина это не назвал, разве что. Конечно это сырой продукт, но он 100% рабочий и то, что делает твой "релиз" для юзера - он умеет. Раз AutoIT тебе не подходит, я, вполне вероятно, смогу написать то же самое в макросах на Excel через VBA скрипт. Прям будешь вводить логин-пасс в экселе и он будет запускать клиент и логиниться в игру. Но причем тут среда разработки и функционал я хз. Типа MS Visual Studio для пацантрэ, а AutoIT - для лимиты?

    9. Зачем мне знания по реверсиженерингу игр? Я что собрался ломать клиент игры? Я-то как раз показываю что все можно сделать честным способом через автокликер и/или макросы. Потому что это не лезет в память клиента игры. А тех, кто лезет в память игры для узнавания какая из свечей в кубе пустая или для автологина - я бы банил. Но тут нет руткита типа геймгварда и тд, чтобы обращения к процессу игры отлавливать и делать ата-та.
     
  8. Glumka

    Glumka Житель форума Пользователь

    Сообщения:
    488
    Симпатии:
    146
    Баллы:
    43
    хватит разговаривать на эльфийском
     
    Эфемера, butthurt, Рак и ещё 1-му нравится это.
  9. Рак

    Рак Житель форума Пользователь

    Сообщения:
    1.224
    Симпатии:
    369
    Баллы:
    63
    Вроде буквы русские и даже есть что то понятное но в общем и целом ничего не понятно но очень интересно.
     
  10. Лукоид

    Лукоид Форумный аналитик Пользователь

    Сообщения:
    2.352
    Симпатии:
    622
    Баллы:
    83
    короче в очередной раз куколд просто так наехал на чела. отказано закрыто.

    P.S иди ещё гайдик на танка напиши
     
    DIO нравится это.
  11. Toxic Yuumi

    Toxic Yuumi Новичок Пользователь

    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    1
    Итак, те же яйца, только в профиль.

    Зачем скачивать автокликер, когда в винду уже встроен компилятор vusial basic script?
    Создаём в папке с element текстовый файл, вставляем в него код (практически как у автора поста), меняем расширение на vbs и всё, скрипт готов.
    Без .net фреймворков и автокликеров.
    Единственное, на момент запуска скрипта язык должен стоять английский.

    Код:
    Option Explicit
    Dim WshShell, my_arr(4), index
    
    Set WshShell = WScript.CreateObject("WScript.Shell")
    
    my_arr(0) = "{ENTER}"
    'login поменять на Ваш логин
    my_arr(1) = "login"
    my_arr(2) = "{TAB}"
    'password поменять на Ваш пароль
    my_arr(3) = "password"
    my_arr(4) = "{ENTER}"
    
    'Запуск клиента без консоли
    WshShell.Run "elementclient.exe", 1
    
    'Запуск клиента с консолью
    'WshShell.Run "elementclient.exe startbypatcher game:cpw console:1", 1
    
    'Здесь можно указать сколько секунд скрипт будет ждать пока клиент запустится. 15000 = 15 секунд
    WScript.Sleep 15000
    
    For each index in my_arr
        WshShell.SendKeys(index)
        WScript.Sleep 500
    Next
     
    Последнее редактирование: 23 май 2021
    Джолли нравится это.
  12. anxieuse

    anxieuse Житель форума Пользователь

    Сообщения:
    1.269
    Симпатии:
    218
    Баллы:
    63
    чел найди бабу
     
    butthurt нравится это.
  13. Джолли

    Джолли Форумный аналитик Пользователь

    Сообщения:
    2.263
    Симпатии:
    886
    Баллы:
    83
    Боюсь жена и дети не поймут такого хода конем
     
  14. Джолли

    Джолли Форумный аналитик Пользователь

    Сообщения:
    2.263
    Симпатии:
    886
    Баллы:
    83
    Угу, 14 строчек даже вышло. Мне нравится твой вариант.

    Я писал как пример на AutoIT для того, чтобы люди могли приобщиться к какому-никакому "программированию" на уровне личных нужд. Это достаточно просто (скриптовые языки), но может пригодиться в жизни. Как-то передавая дела новому коллеге я одну процедуру (открыть определенные окна, понажимать нужные кнопки в нужной последовательности, сохранить и тд) за несколько часов с часового ручного процесса заменил на 2-минутный запуск кликера на AutoIT, который делал то, что нужно, не ошибался и позволил существенно сократить время. При этом сам я несколько лет этот процесс делал ручками, за счет опыта укладывался минут в 15. Но где-то для игры я зачем-то решил заменить uopilot на AutoIT, а когда передавал функционал - вспомнил об AutoIT и это помогает уже года 3 в работе людям. При этом никаких особых знаний по программированию не нужно. Посмотреть нужный цвет в нужной координате, кликнуть в нужную точку Х раз, передать набор нажатий и запустить скриптом программу - все это разжевано в моих топиках по AutoIT тут. Но на нем, на самом деле, можно делать куда более жесткие вещи, но это уже не для меня. Хз, может я один такой дурак, который пока играл в игры научился писать тексты, редактировать видео, что-то "программировать" и тд.

    А вот скачать левый закрытый код, который еще и собирает твои пароли и пусть даже лежит где-то на гитхабе (так как Джолька поднял бучу) - куда хуже, чем скачать AutoIT и разобраться в нескольких десятках строчек "кода". Реально пригодится в жизни мб. Но нет, люди качают "улучшатели интернета", "автологины" и "чит для контры", а потом к ним "оптимизатор виндовз" и "нужный вам файл .dll", заражая по итогу всяким говном комп и теряя акки.
     
  15. Джолли

    Джолли Форумный аналитик Пользователь

    Сообщения:
    2.263
    Симпатии:
    886
    Баллы:
    83
    Пацан сказал, пацан сделал:
    https://pwclassic.net/forum/index.p...огина-для-pwclassic-на-excel.4433/#post-70202
     

Поделиться этой страницей