Skip to content

Instantly share code, notes, and snippets.

@GendelfLugansk
Last active June 27, 2021 01:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GendelfLugansk/ac7ef82feea29bff2e703bdbb2d42fc8 to your computer and use it in GitHub Desktop.
Save GendelfLugansk/ac7ef82feea29bff2e703bdbb2d42fc8 to your computer and use it in GitHub Desktop.
Origin 1.3.6 Launcher

Што это

Программа на AutoIt для входа на нескольких персонажей сразу (автовход) с переименованием окон. Работает с сервером Origin 1.3.6. Для автовхода используются параметры запуска программы-клиента (как в батниках). Преимущество перед батником в том, что программа переименовывает окна после запуска, и запускает только те, которые еще не открыты (удобно если одно из окон вылетело)

А зачем это вообще

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

Как этим пользоваться

Сначала нужно скачать AutoIt (https://www.autoitscript.com/site/autoit/downloads/, https://www.autoitscript.com/site/autoit-script-editor/downloads/), скомпилировать launcher.au3 в исполняемую программу (launcher.exe). Положить рядом с готовой программой launcher.conf, прописав в нем путь к клиенту (2й столбец), заголовок окна (первый столбец) и строку запуска (3й столбец) для каждого перса.

Примычания

Задержка между входами 30сек (можно поменять в строке 50 программы, но тут уж на свой страх и риск - могут забанить айпи за слишком частую отправку пакетов)

Имя conf-файла такое же, как имя exe-файла. То есть можно создать несколько копий лаунчера с разными именами и разной конфигурацией

Программа пропускает строчку в конфигурации, если окно с таким именем существует. Это позволяет использовать лаунчер для перезапуска вылетевшего окна. Это также значит что каждый перс должен иметь уникальное имя окна в launcher.conf

Кодировка launcher.conf - UTF-8

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=0
#AutoIt3Wrapper_Res_HiDpi=Y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <File.au3>
;Function for getting HWND from PID
Func _GetHwndFromPID($PID, $title)
$hwnd = 0
$winlist = WinList($title)
If $winlist[0][0] Then
For $i = 1 To $winlist[0][0]
If $winlist[$i][0] <> "" Then
$iPID2 = WinGetProcess($winlist[$i][1])
If $iPID2 = $PID Then
$hwnd = $winlist[$i][1]
ExitLoop
EndIf
EndIf
Next
EndIf
Return $hwnd
EndFunc ;==>_GetHwndFromPID
Local $sDrive = "", $sDir = "", $sFileName = "", $sExtension = ""
Local $aPathSplit = _PathSplit(@ScriptFullPath, $sDrive, $sDir, $sFileName, $sExtension)
Global $conf, $logFile = FileOpen(@ScriptDir & "\" & $sFileName & ".log", 2)
If _FileReadToArray(@ScriptDir & "\" & $sFileName & ".conf", $conf, $FRTA_INTARRAYS, ";") Then
For $item In $conf
If UBound($item) = 3 Then
If (Not WinExists($item[0])) Then
_FileWriteLog($logFile, "Starting " & $item[0] & @CRLF)
Local $PID = Run($item[1] & $item[2], $item[1])
If $PID Then
_FileWriteLog($logFile, "PID " & $PID & @CRLF)
Sleep(5000)
Local $hwnd = _GetHwndFromPID($PID, "[REGEXPTITLE:^\s*Origin\s*1\.3\.6]")
If ($hwnd And WinExists($hwnd)) Then
_FileWriteLog($logFile, "Renaming window " & WinGetTitle($hwnd) & @CRLF)
WinSetTitle($hwnd, "", $item[0])
Else
_FileWriteLog($logFile, "HWND not found or invalid" & @CRLF)
EndIf
Else
_FileWriteLog($logFile, "Run error " & @error & "(" & @extended & ")" & @CRLF)
EndIf
Sleep(30000)
Else
_FileWriteLog($logFile, "Window with title " & $item[0] & " already exists, skip" & @CRLF)
EndIf
Else
_FileWriteLog($logFile, "Each element of config array must have 3 items" & @CRLF)
EndIf
Next
Else
_FileWriteLog($logFile, @error & @CRLF)
EndIf
FileClose($logFile)
EP;d:\Games\OriginClient\OriginClient\element\;elementclient.exe console:1 user:login1 pwd:password1 role:ГенЖрица
EA;d:\Games\OriginClient\OriginClient\element\;elementclient.exe console:1 user:login2 pwd:password2 role:Xinxin
VM;d:\Games\OriginClient\OriginClient\element\;elementclient.exe console:1 user:login3 pwd:password3 role:UsagiMimi
BB;d:\Games\OriginClient\OriginClient\element\;elementclient.exe console:1 user:login4 pwd:password4 role:ЯДурак
BM;d:\Games\OriginClient\OriginClient\element\;elementclient.exe console:1 user:login5 pwd:password5 role:Хуэйчжун
WZ;d:\Games\OriginClient\OriginClient\element\;elementclient.exe console:1 user:login6 pwd:password6 role:Химичка
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment