Jump to content
Asterios

проблемы с апдейтером


Extortioner

Recommended Posts

заметил особенность работы апдейтера при запуске клиента:

 

если запустить 1 копию апдейтера и сразу после проверки нажать кнопку запуска клиента, то клиент с вероятностью в 99.99% не запустится.

 

если запустить 2 копии апдейтера, то последняя запущенная копия запустит клиент нормально с шансом в 99.99%. первая ведет себя аналогично вышесказанному.

 

при этом, если 1й либо единственной копии апдейтера дать поработать некоторое время, то все отлично запускается.

такое ощущение, что апдейтер создает некий контейнер, необходимый для корректной работы клиента, но это не всегда получается быстро и с первого раза.

Link to comment
Share on other sites

  • 1 month later...

Выходит, что у меня это так чудит от того, что с ключом  /autoplay запускаю. С учетом того, что компьютер "скорострельный", войти в игру - это просто тест на психическую устойчивость просто.

Link to comment
Share on other sites

  • 1 month later...

Так что проблема с ключом  /autoplay решена?

Просто не понятно кто виноват или моё топовое железо или клиент или сервер.

P.S.Собирать специально слабенький комп мне не охота. ;)

Link to comment
Share on other sites

В 01.07.2016 at 11:06, Extortioner сказал:

заметил особенность работы апдейтера при запуске клиента:

 

если запустить 1 копию апдейтера и сразу после проверки нажать кнопку запуска клиента, то клиент с вероятностью в 99.99% не запустится.

 

если запустить 2 копии апдейтера, то последняя запущенная копия запустит клиент нормально с шансом в 99.99%. первая ведет себя аналогично вышесказанному.

 

при этом, если 1й либо единственной копии апдейтера дать поработать некоторое время, то все отлично запускается.

такое ощущение, что апдейтер создает некий контейнер, необходимый для корректной работы клиента, но это не всегда получается быстро и с первого раза.

Cогласен

Link to comment
Share on other sites

Вот оно че Михалыч... (с)  А я запускал проверку, после нее загружалось, а надо было просто подождать. Пойду проверю.

Link to comment
Share on other sites

  • 1 month later...
В 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

 

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

У меня он работает без сбоев на 2 окна, правда я использую ID окна и связываю его PID ему соответуещёму.

То что я написал будет работать со сбоями и только в пределах одного процесса, а вот автологин можно написать сразу на всех чаров, по потребуется раздельная компиляция.

Link to comment
Share on other sites

24 минуты назад, Indomito сказал:

У меня он работает без сбоев на 2 окна, правда я использую ID окна и связываю его PID ему соответуещёму.

То что я написал будет работать со сбоями и только в пределах одного процесса, а вот автологин можно написать сразу на всех чаров, по потребуется раздельная компиляция.

автологин методом ввода  логина + tab + пароля? :D

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

Link to comment
Share on other sites

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

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

20 часов назад, Extortioner сказал:

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

Не думаю, что будет реакция - я как погляжу тут каждый справляется своими методами.

Проблема не в том что надо сделать поддержку нескольких логинов, хотя бы не возникало висящих процессов.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...