Всем доброго дня, Уважаемые Гуру AutoIt!!!
Стояла такая задача: Некая игра не даёт возможности отката по сохранениям и сама перезаписывает прогресс через каждые пару минут. Необходимо было создать прогу, которая бы перехватывала текущий файл сохранения и копировала в отдельную папку с периодичностью 5 минут.
С помощью местных мастеров и нескольких примеров из разных тем удалось создать такое:
Что получилось: прога запускает игру, проверяет наличие отдельной папки для будущих сохранений и, если папки нет, то создаёт её, о чем сообщает уведомлением. Далее прога каждые 5 минут мониторит указанный файл сохранения на время его перезаписи, и если он обновился, то копирует его в отдельную папку, название при этом состоит из даты и времени копирования. Таким образом, получается упорядоченный список с файлами сохранений. При этом прога постоянно мониторит запущенный процесс игры и если игру завершить, то через 10 секунд и сама прога выключается.
Теперь о минусах. Как видно из кода - папка с сохранениями имеет рандомное имя из ряда цифр и отличается у разных пользователей. И не факт, что у версий игры из разных источников - одинаковый путь до папки с сохранениями.
Нарисовалась задача - можно ли прогу научить искать файл сохранений просто по названию, чтоб прога могла работать у любого пользователя?
Друзья! Очень прошу помощи!
Стояла такая задача: Некая игра не даёт возможности отката по сохранениям и сама перезаписывает прогресс через каждые пару минут. Необходимо было создать прогу, которая бы перехватывала текущий файл сохранения и копировала в отдельную папку с периодичностью 5 минут.
С помощью местных мастеров и нескольких примеров из разных тем удалось создать такое:
Код:
#Include "NotifyBox.au3"
AdlibRegister("ExitGame", 10000)
$Path = @UserProfileDir & "\Saved Games\metro exodus\292733975847239680\"
$Name = "m3_auto_save"
$Ext = ""
$Msec = 300000
Global $CurTime, $OldTime, $FullName = $Path & $Name & $Ext
Run(@ScriptDir & "\MetroExodus.exe")
If Not FileExists($Path & "Saves\") Then
DirCreate($Path & "Saves\")
_NotifyBox(0,"", "Папка сохранений создана.", 3)
EndIf
While Sleep($Msec)
If Not FileExists($FullName) Then ContinueLoop
$CurTime = FileGetTime($FullName, 0, 1)
If $OldTime <> $CurTime Then
FileCopy($FullName, $Path & "Saves\" & @YEAR & "." & @MON & "." & @MDAY & "_" & @HOUR & "." & @MIN & $Ext)
$OldTime = $CurTime
EndIf
WEnd
Func ExitGame()
If Not ProcessExists("MetroExodus.exe") Then Exit
EndFunc
Что получилось: прога запускает игру, проверяет наличие отдельной папки для будущих сохранений и, если папки нет, то создаёт её, о чем сообщает уведомлением. Далее прога каждые 5 минут мониторит указанный файл сохранения на время его перезаписи, и если он обновился, то копирует его в отдельную папку, название при этом состоит из даты и времени копирования. Таким образом, получается упорядоченный список с файлами сохранений. При этом прога постоянно мониторит запущенный процесс игры и если игру завершить, то через 10 секунд и сама прога выключается.
Теперь о минусах. Как видно из кода - папка с сохранениями имеет рандомное имя из ряда цифр и отличается у разных пользователей. И не факт, что у версий игры из разных источников - одинаковый путь до папки с сохранениями.
Нарисовалась задача - можно ли прогу научить искать файл сохранений просто по названию, чтоб прога могла работать у любого пользователя?
Друзья! Очень прошу помощи!