Skip to content
This repository has been archived by the owner on Nov 22, 2021. It is now read-only.

Each Update breaks the quest list #21

Closed
KnightM1 opened this issue Mar 29, 2021 · 6 comments
Closed

Each Update breaks the quest list #21

KnightM1 opened this issue Mar 29, 2021 · 6 comments

Comments

@KnightM1
Copy link

KnightM1 commented Mar 29, 2021

2021-03-29 19:50:34,918 - updater - INFO - Loaded version: mff_auto=0.7.12, game=6.9.0, updater=1.1.0
2021-03-29 19:50:35,355 - updater - INFO - Current version 0.7.12 is up to date for MFF 6.9.0.
2021-03-29 19:50:36,041 - root - DEBUG - Creating 4 Tesseract API(s) with 'eng' language.
2021-03-29 19:50:36,344 - root - DEBUG - Creating 2 Tesseract API(s) with 'mff+eng' language.
2021-03-29 19:50:37,001 - root - DEBUG - NoxPlayer1 7.0.0.9: found Close App shortcut at position 8
2021-03-29 19:50:37,031 - main - INFO - Team number for TimeLine battles : 1
2021-03-29 19:50:37,032 - main - INFO - Team number for missions : 1
2021-03-29 19:50:37,032 - main - INFO - Acquire Heroic Quest rewards: True
2021-03-29 19:50:37,036 - root - ERROR - Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
File "app_gui.py", line 32, in
main()
File "app_gui.py", line 12, in main
window = MainWindow(file_logger=file_logger)
File "C:\Users\xxx\Desktop\mff_auto-0.7.12-build\lib\gui\widgets\main.py", line 64, in init
self.queue_button_3, self.queue_button_4])
File "C:\Users\xxx\Desktop\mff_auto-0.7.12-build\lib\gui\queue_manager.py", line 59, in init
self.load_queue_from_file()
File "C:\Users\xxx\Desktop\mff_auto-0.7.12-build\lib\gui\queue_manager.py", line 137, in load_queue_from_file
queues_list = load_queue_list()
File "C:\Users\xxx\Desktop\mff_auto-0.7.12-build\lib\gui\queue_manager.py", line 19, in load_queue_list
return json.load(json_data)
File "C:\Users\xxx\Desktop\mff_auto-0.7.12-build\python\App\Python\lib\json_init_.py", line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\xxx\Desktop\mff_auto-0.7.12-build\python\App\Python\lib\json_init_.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\xxx\Desktop\mff_auto-0.7.12-build\python\App\Python\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\xxx\Desktop\mff_auto-0.7.12-build\python\App\Python\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

What is the problem? Why do I need to re-configure the task list every time for the program to work?
If I delete the old task list everything works correctly.
Do you understand Russian?

@tmarenko
Copy link
Owner

Do you have the corrupted queue_list.json file after update? If so please attach it.

Why do I need to re-configure the task list every time for the program to work?

Usually you don't need to. Updater doesn't download or change anything in settings/gui folder. So previous task list should work fine as before.

Do you understand Russian?

Yes.

@KnightM1
Copy link
Author

Do you have the corrupted queue_list.json file after update? If so please attach it.

Why do I need to re-configure the task list every time for the program to work?

Usually you don't need to. Updater doesn't download or change anything in settings/gui folder. So previous task list should work fine as before.

Do you understand Russian?

Yes.

Вот, и даже если я его закидываю в свежий мфф авто, тоже самое происходит. И это уже не первый раз, уже раз 5 приходится все заново делать что бы работало. В чем может быть причина? Может быть связанно с обновой винды?
queue_list.zip

@tmarenko
Copy link
Owner

Может быть связанно с обновой винды?

Возможно. Мне сложно сказать, баг ли это где-то внутри mff_auto или нет, т.к. game.json сохраняется по тому же принципу, но я так понимаю, что он не портится, верно?
Сохранение и загрузка происходит через встроенный функционал из Python:

with open(path, mode='w', encoding='utf-8') as file:
json.dump(json_data, file)

У прикрепленного файла хоть и есть данные, но там только куча \x00 (NUL). Конкретно почему повреждается файл трудно сказать, может быть особенность винды или жесткого диска (битые сектора).
Если попробовать неповрежденному queue_list.json выставить в свойствах "Только для чтения", он тоже потом ломается?

Для дебага можно конечно проверить, не ломаются ли данные внутри памяти, например заменить код в этом месте:

def save_queue_list(json_data, path="settings/gui/queue_list.json"):
"""Store queue list."""
with open(path, mode='w', encoding='utf-8') as file:
json.dump(json_data, file)

на этот:

def save_queue_list(json_data, path="settings/gui/queue_list.json"):
    """Store queue list."""
    logger.debug(f"JSON content:\n{json_data}")
    with open(path, mode='w', encoding='utf-8') as file:
        json.dump(json_data, file)

чтобы удостовериться, что именно нужные данные заливаются в файл.
Так же, можно еще в конец файла start.bat в новой строке дописать @pause, чтобы консольное окно сразу не закрывалось. Это позволит увидеть ошибку сохранения (если таковая случается вообще) при закрытии основного приложения, когда оно сохраняет файл очереди. Либо поискать в старых лог-файлах, может там что-то видно еще.

@KnightM1
Copy link
Author

KnightM1 commented Mar 30, 2021

Возможно. Мне сложно сказать, баг ли это где-то внутри mff_auto или нет, т.к. game.json сохраняется по тому же принципу, но я так понимаю, что он не портится, верно?

Верно, он не портится.

Если попробовать неповрежденному queue_list.json выставить в свойствах "Только для чтения", он тоже потом ломается?

Нет, работает исправно.

def save_queue_list(json_data, path="settings/gui/queue_list.json"):
"""Store queue list."""
logger.debug(f"JSON content:\n{json_data}")
with open(path, mode='w', encoding='utf-8') as file:
json.dump(json_data, file)

Заменил, никакого эффекта не дало.

cmd_knluYYETES

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

Еще хотел спросить по поводу функционала программы, возможно ли сделать старт/стоп программы по таймеру? Что бы не использовать кликер. Иногда программа на режиме Рейд Босса(Молд/Галактус) когда остаешься 1 в комнате программа ждет игроков, но при этом комната не делается общественной(значит зайти никто не может), и таким образом не перепрыгивает на следующую задачу. Кликер спасает что нажимает старт/стоп, но это своего рода костыль.

@tmarenko
Copy link
Owner

Заменил, никакого эффекта не дало.

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

2021-03-30 13:04:17,747 - queue_manager - DEBUG - Saving queue #1 list with 17 items.
2021-03-30 13:04:17,747 - queue_manager - DEBUG - Saving queue #2 list with 8 items.
2021-03-30 13:04:17,747 - queue_manager - DEBUG - Saving queue #3 list with 1 items.
2021-03-30 13:04:17,747 - queue_manager - DEBUG - Saving queue #4 list with 1 items.

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

Иногда программа на режиме Рейд Босса(Молд/Галактус) когда остаешься 1 в комнате программа ждет игроков, но при этом комната не делается общественной(значит зайти никто не может), и таким образом не перепрыгивает на следующую задачу.

GBR был добавлен в режиме беты, т.к. полностью все отладить и сценарии прописать не удалось сразу, а фармить токены/кубики очень хотелось. Конкретно данное зависание в лобби известно, но мне до сих пор не удается его словить на запись, чтобы потом добавить обход этой ситуации.
Возможно, как вариант, стоит попробовать будет поменять логику на создание своего лобби сразу, вместо поиска чужого.

Кликер спасает что нажимает старт/стоп, но это своего рода костыль.

Если проблема только с режимом GBR, то функционал "старт/стоп по таймеру" добавлять в планах нет.

@tmarenko
Copy link
Owner

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

В общем, действительно оказалось проще. GBR будет адекватно работать в 752cf68 , в ближайшем релизе.

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

Если появится какая-либо новая информация, то нужно будет переоткрыть issue.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants