- Сообщения
- 3,608
- Репутация
- 941
Nik сказал(а):Лично меня заколебало каждый раз вручную вводить пароль для Евы и я решил сбацать программульку, которая сделала-бы это за меня.
Хочу сказать сразу несколько вещей:
1. Не надо в этой теме писать, что Вы - умнее меня и решили этот вопрос раньше, красивее, удобнее и т.п. Я рад за Вас. Правда-правда! Но в этом случае Вам в этой теме делать просто нечего Если только поглумиться
2. Готового EXEшника я прикладывать не буду! Не хочу отбрыкиваться от параноиков и доказывать, что программа не ворует пароли/устанавливает вирусы/форматирует винт и т.д.
Итак. Если кто-то еще хочет продолжать, то Вам нужно установить программу Auto It 3 , открыть нижеприложенный скрипт и выбрать Tools - Buid. На выходе Вы получите готовый исполняемый файл.
Использование: EveLauncher.exe <имя_чара_без_пробелов>
Ограничение - для каждого аккаунта у Вас должен быть отдельноустановленный клиент. Если-же Вы запускаете разные аккаунты из одной папки Евы, то имя аккаунта у Вас каждый раз будет разное и пароль не будет совпадать (ну, если у Вас для всех акков пароль совпадает - тогда будет работать нормально).
При первом запуске программа "грязно выругается", что нет файла настроек и начнет задавать вопросы:
1. Пароль
2. Полный путь к файлу eve.exe. Программа проверяет - существует-ли указанный путь, поэтому в случае опечатки не даст ввести откровенную чушь
3. Период ожидания. После запуска Евы сперва некоторое время висит splash заставка, Ева грузится. Посылать в это время пароль бессмысленно, он не будет принят. В зависимости от мощности компьютера загрузка занимает разное время. Поэкспериментируйте со временем. Я рекомендую ставить секунд 10-15. В это поле программа не даст ввести что-либо, кроме чисел
4. Использовать или нет дополнительные ключи /off /LUAFF? Если Вы не знаете, что это такое - говорите НЕ использовать.
Все, настройка завершена. Все данные сохранились в файлике <имя_чара>.ini, который можно открыть Блокнотом и подправить, в случае чего. Там все просто и понятно. К сожалению, сделать полноценную "защиту от дурака" - довольно сложно. Поэтому, если Вы вручную в поле времени ожидания введете слово вместо числа - программа вылетит с ошибкой. Скрипт я написал за 20 минут. Писал под себя. реализовывать bullet-proof защиту не хочу, т.к. сам дурью маяться не намерен
Best practics:
Лучше всего сделать ярлык на лаунчер и подправить его, дописав имя чара в поле запуска программы.
После запуска программа заодно изменит заголовок окна Евы со стандартного "EVE" на "EVE - имя_чара". При игре в оконном режиме с несколькими одновременно запущенными клиентами будет удобнее ориентироваться.
Ну а теперь, собственно, сам скрипт:
Код
Код:
#include
Local $oldtitle = "EVE"; старый заголовок Евы
; Программа запущена с параметром или нет?
If $CmdLine[0]=0 Then
MsgBox(16, "Error", "Запустите программу с указанием имени чара!")
Exit
EndIf
; имя аккаунта = первому переданному параметру. Поэтому имя акка надо указывать БЕЗ пробелов
$char = $CmdLine[1]
$ppp = "xxx"
If FileExists($char&'.ini')=0 Then; файла настроек нет, начинаем их создавать
MsgBox(16, "Error", "Файл настроек для чара не найден! Нажмите ОК и программа произведет настройку")
$p = InputBox("Запрос", "Введите пароль для чара")
IniWrite($char&'.ini', "Settings", "Password",$p)
$pp = InputBox("Запрос", "Введите полный путь до файла eve.exe (Например: d:\\games\\eve\\eve.exe)")
While FileExists($pp)=0
MsgBox(16, "Error", "Введенный путь неверен! Введите еще раз")
$pp = InputBox("Запрос", "Введите полный путь до файла eve.exe (Например: d:\\games\\eve\\eve.exe)")
WEnd
IniWrite($char&'.ini', "Settings", "FilePath",$pp)
$ppp = InputBox("Запрос", "Введите время ожидания в секундах до запуска клиента Евы. Программа будет выжидать этот период, прежде, чем попробует послать пароль")
While StringIsDigit($ppp)=0
MsgBox(16, "Error", "Нужно вводить ТОЛЬКО цифры!")
$ppp = InputBox("Запрос", "Введите время ожидания в секундах до запуска клиента Евы. Программа будет выжидать этот период, прежде, чем попробует послать пароль")
WEnd
IniWrite($char&'.ini', "Settings", "TimeWait",$ppp)
$pppp = SelectLua()
IniWrite($char&'.ini', "Settings", "Lua",$pppp)
MsgBox(48, "Info", "Файл настроек для чара создан! Запустите программу еще раз")
Exit
EndIf
;======================
$title="EVE - " & $char ; новый заголовок Евы
;======================
; начинаем читать файл настроек
$pass = IniRead($char&'.ini',"Settings","Password","###")
If $pass="###" Then
MsgBox(16, "Error", "Не могу открыть INI файл или прочитать значение пароля!")
Exit
EndIf
$path = IniRead($char&'.ini',"Settings","FilePath","###")
If $path="###" Then
MsgBox(16, "Error", "Не могу открыть INI файл или прочитать путь до файла Евы!")
Exit
EndIf
$time = IniRead($char&'.ini',"Settings","TimeWait","999999")
If $time=999999 Then
MsgBox(16, "Error", "Не могу открыть INI файл или прочитать время ожидания! Будет использовано время ожидания по умолчанию - 10 секунд")
$time=10
EndIf
$lua = IniRead($char&'.ini',"Settings","Lua","999999")
If $lua=999999 Then
MsgBox(16, "Error", "Не могу открыть INI файл или прочитать - использовать LUA или нет? Параметр LUA будет использован по-умолчанию")
$lua=1
EndIf
Select
Case $lua = 1
$EVE = $path & " /end /LUA:OFF"
Case $lua = 0
$EVE = $path
EndSelect
Run($EVE); запускаем Еву
sleep($time); ждем положенное время
WinSetTitle($oldtitle,"",$title); меняем заголовок
WinWaitActive($title); активируем окно
Send($pass&"{ENTER}"); посылаем пароль и программно жмем Энтер
;============================================
;============================================
Func SelectLua()
Local $radio1, $radio2, $msg, $Button_1, $res
GUICreate("My GUI radio", 230, 170); will create a dialog box that when displayed is centered
GUICtrlCreateLabel("Выберите режим запуска клиента", 10, 25)
$radio1 = GUICtrlCreateRadio("С ключем LUA", 10, 50)
$radio2 = GUICtrlCreateRadio("Без ключа LUA", 10, 75)
$Button_1 = GUICtrlCreateButton("OK", 10, 115, 90)
GUICtrlSetState($radio1, $GUI_CHECKED)
GUICtrlSetState($Button_1, $GUI_DEFBUTTON)
$res=1
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Return $res
ExitLoop
Case $msg = $Button_1
ExitLoop
Case $msg = $radio1 And BitAND(GUICtrlRead($radio1), $GUI_CHECKED) = $GUI_CHECKED
$res=1;с LUA
Case $msg = $radio2 And BitAND(GUICtrlRead($radio2), $GUI_CHECKED) = $GUI_CHECKED
$res=0;без LUA
EndSelect
WEnd
Return $res
EndFunc