Extortioner Posted July 1, 2016 Share Posted July 1, 2016 заметил особенность работы апдейтера при запуске клиента: если запустить 1 копию апдейтера и сразу после проверки нажать кнопку запуска клиента, то клиент с вероятностью в 99.99% не запустится. если запустить 2 копии апдейтера, то последняя запущенная копия запустит клиент нормально с шансом в 99.99%. первая ведет себя аналогично вышесказанному. при этом, если 1й либо единственной копии апдейтера дать поработать некоторое время, то все отлично запускается. такое ощущение, что апдейтер создает некий контейнер, необходимый для корректной работы клиента, но это не всегда получается быстро и с первого раза. Link to comment Share on other sites More sharing options...
LittleJoys Posted July 1, 2016 Share Posted July 1, 2016 Подтверждаю, есть такая особенность. Link to comment Share on other sites More sharing options...
HelloGoodbye Posted August 15, 2016 Share Posted August 15, 2016 тож самое, бывает напрягает Link to comment Share on other sites More sharing options...
Thorvardr Posted August 16, 2016 Share Posted August 16, 2016 Выходит, что у меня это так чудит от того, что с ключом /autoplay запускаю. С учетом того, что компьютер "скорострельный", войти в игру - это просто тест на психическую устойчивость просто. Link to comment Share on other sites More sharing options...
Indomito Posted September 21, 2016 Share Posted September 21, 2016 Так что проблема с ключом /autoplay решена? Просто не понятно кто виноват или моё топовое железо или клиент или сервер. P.S.Собирать специально слабенький комп мне не охота. Link to comment Share on other sites More sharing options...
GRANADA Posted September 21, 2016 Share Posted September 21, 2016 В 01.07.2016 at 11:06, Extortioner сказал: заметил особенность работы апдейтера при запуске клиента: если запустить 1 копию апдейтера и сразу после проверки нажать кнопку запуска клиента, то клиент с вероятностью в 99.99% не запустится. если запустить 2 копии апдейтера, то последняя запущенная копия запустит клиент нормально с шансом в 99.99%. первая ведет себя аналогично вышесказанному. при этом, если 1й либо единственной копии апдейтера дать поработать некоторое время, то все отлично запускается. такое ощущение, что апдейтер создает некий контейнер, необходимый для корректной работы клиента, но это не всегда получается быстро и с первого раза. Cогласен Link to comment Share on other sites More sharing options...
ОтецФедор Posted September 21, 2016 Share Posted September 21, 2016 Вот оно че Михалыч... (с) А я запускал проверку, после нее загружалось, а надо было просто подождать. Пойду проверю. Link to comment Share on other sites More sharing options...
Indomito Posted October 22, 2016 Share Posted October 22, 2016 В 21.09.2016 at 11:21, ОтецФедор сказал: Вот оно че Михалыч... (с) А я запускал проверку, после нее загружалось, а надо было просто подождать. Пойду проверю. Надо просто написать программу, которая ждёт старта процесса AsteriosGame.exe до получения PID Вот фрагмент кода. ;---------------------------Функция проверки существования процесса----------------------------------------------- ; Вход (имя процесса полное, время ожидания[не менее 3-х секунд]) ; Ответ True/False = процесс работает(существует)/не работает(не существует) fnCheckRestartWaitProc(vPIDName, vWaitProc) { Thread, NoTimers Process, Wait, %vPIDName% , %vWaitProc% ; Ждем процесса vPIDName, vWaitProc секунд if (ErrorLevel = 0) vRet := False ; Программа и/или скрипт не запущен Else vRet := True Thread, NoTimers, false Return vRet ; Выходим с ответом } ;----------------------------------------------------------------------------------------------------------------- ;---------------------------Функция проверки и закрытия процесса----------------------------------------------- ; Вход (имя процесса полное, время ожидания[не менее 3-х секунд]) ; Ответ True/False = процесс закрыт корректно/ошибка при закрытии или процесс не существует fnWaitClosProc(ByRef vPIDName, ByRef vWaitProc) { Thread, NoTimers Process, WaitClose, %vPIDName% , %vWaitProc% ; Ждем процесса vPIDName, vWaitProc секунд if (ErrorLevel = 0) vRet := True ; Завершили что просили Else vRet := False ; Проблема с завершение процесса Thread, NoTimers, false Return vRet ; Выходим с ответом } ;----------------------------------------------------------------------------------------------------------------- P.S. Можно проверять и по PID или по существованию окна. Link to comment Share on other sites More sharing options...
Extortioner Posted October 22, 2016 Author Share Posted October 22, 2016 11 час назад, Indomito сказал: Надо просто написать программу, которая ждёт старта процесса AsteriosGame.exe до получения PID Вот фрагмент кода. ;---------------------------Функция проверки существования процесса----------------------------------------------- ; Вход (имя процесса полное, время ожидания[не менее 3-х секунд]) ; Ответ True/False = процесс работает(существует)/не работает(не существует) fnCheckRestartWaitProc(vPIDName, vWaitProc) { Thread, NoTimers Process, Wait, %vPIDName% , %vWaitProc% ; Ждем процесса vPIDName, vWaitProc секунд if (ErrorLevel = 0) vRet := False ; Программа и/или скрипт не запущен Else vRet := True Thread, NoTimers, false Return vRet ; Выходим с ответом } ;----------------------------------------------------------------------------------------------------------------- ;---------------------------Функция проверки и закрытия процесса----------------------------------------------- ; Вход (имя процесса полное, время ожидания[не менее 3-х секунд]) ; Ответ True/False = процесс закрыт корректно/ошибка при закрытии или процесс не существует fnWaitClosProc(ByRef vPIDName, ByRef vWaitProc) { Thread, NoTimers Process, WaitClose, %vPIDName% , %vWaitProc% ; Ждем процесса vPIDName, vWaitProc секунд if (ErrorLevel = 0) vRet := True ; Завершили что просили Else vRet := False ; Проблема с завершение процесса Thread, NoTimers, false Return vRet ; Выходим с ответом } ;----------------------------------------------------------------------------------------------------------------- P.S. Можно проверять и по PID или по существованию окна. ahk врядле тут будет корректно работать Link to comment Share on other sites More sharing options...
Indomito Posted October 22, 2016 Share Posted October 22, 2016 У меня он работает без сбоев на 2 окна, правда я использую ID окна и связываю его PID ему соответуещёму. То что я написал будет работать со сбоями и только в пределах одного процесса, а вот автологин можно написать сразу на всех чаров, по потребуется раздельная компиляция. Link to comment Share on other sites More sharing options...
Extortioner Posted October 22, 2016 Author Share Posted October 22, 2016 24 минуты назад, Indomito сказал: У меня он работает без сбоев на 2 окна, правда я использую ID окна и связываю его PID ему соответуещёму. То что я написал будет работать со сбоями и только в пределах одного процесса, а вот автологин можно написать сразу на всех чаров, по потребуется раздельная компиляция. автологин методом ввода логина + tab + пароля? я эти свежезависшие процессы убиваю проще. накатал тулзу, которая мониторит процессы апдейтера и игры, которые в течении 10 секунд потребляют меньше 100 метров памяти и сама их убивает. Link to comment Share on other sites More sharing options...
Indomito Posted October 24, 2016 Share Posted October 24, 2016 Extortioner На АНК размер немного меньше, но у меня для каждого окна, в зависимости от профы сделан аналог макросов - тут дело привычки. Вот фрагмент кода - большее не стал приводить, что бы не нарушать правила форума. Скрытый текст ;-----BEGIN--Для LA2 to All SetTitleMatchMode, 2 #If WinActive(cLA2WinTitle) #UseHook, On Thread, NoTimers Critical AppsKey:: ;Sleep 100 If (!cLogin) Return Else cLogin := False SetKeyDelay , 100, 25 Send login Sleep 25 Send {TAB} Sleep 25 SetKeyDelay , 100, 25 Send Password Sleep 25 SetKeyDelay , 10, 10 Return PrintScreen:: Return ;----клавиши и макросы Critical , Off Thread, NoTimers, false #UseHook, Off #IfWinActive ;-----END--Для LA2 to All P.S. Код на сам деле сложнее и выглядит иначе, но правила есть правила. Link to comment Share on other sites More sharing options...
Extortioner Posted October 24, 2016 Author Share Posted October 24, 2016 15 часов назад, Indomito сказал: Extortioner На АНК размер немного меньше, но у меня для каждого окна, в зависимости от профы сделан аналог макросов - тут дело привычки. Вот фрагмент кода - большее не стал приводить, что бы не нарушать правила форума. Скрыть содержимое ;-----BEGIN--Для LA2 to All SetTitleMatchMode, 2 #If WinActive(cLA2WinTitle) #UseHook, On Thread, NoTimers Critical AppsKey:: ;Sleep 100 If (!cLogin) Return Else cLogin := False SetKeyDelay , 100, 25 Send login Sleep 25 Send {TAB} Sleep 25 SetKeyDelay , 100, 25 Send Password Sleep 25 SetKeyDelay , 10, 10 Return PrintScreen:: Return ;----клавиши и макросы Critical , Off Thread, NoTimers, false #UseHook, Off #IfWinActive ;-----END--Для LA2 to All P.S. Код на сам деле сложнее и выглядит иначе, но правила есть правила. на самом деле надо просто запилить предл админам, чтобы они в апдейтере сделали поддержку нескольких логинов. Link to comment Share on other sites More sharing options...
Indomito Posted October 25, 2016 Share Posted October 25, 2016 20 часов назад, Extortioner сказал: на самом деле надо просто запилить предл админам, чтобы они в апдейтере сделали поддержку нескольких логинов. Не думаю, что будет реакция - я как погляжу тут каждый справляется своими методами. Проблема не в том что надо сделать поддержку нескольких логинов, хотя бы не возникало висящих процессов. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.