ntaklive 0 Posted December 29, 2022 Доброго времени суток знающим людям!) Пытаюсь реализовать функционал выхода из аккаунта в своем скрипте, но получаю только краш игры. Пробовал следующее: 1. ServicesLocator.gameplay.goToLoginByEvent() — всё, кроме goToLoginByEvent() (вызывается в game.onDisconnected()), крашит игру, а этот метод выкидывает в меню логина с ошибкой, но при попытке опять войти в аккаунт пишет "Вы отключены от сервера" 2. app = self.app_loader.getApp() dialogsContainer = app.containerManager.getContainer(WindowLayer.TOP_WINDOW) if not dialogsContainer.getView(criteria={POP_UP_CRITERIA.VIEW_ALIAS: VIEW_ALIAS.LOBBY_MENU}): g_eventBus.handleEvent(events.LoadViewEvent(SFViewLoadParams(VIEW_ALIAS.LOBBY_MENU)), scope=EVENT_BUS_SCOPE.LOBBY) time.sleep(1) view = dialogsContainer.getView(criteria={POP_UP_CRITERIA.VIEW_ALIAS: VIEW_ALIAS.LOBBY_MENU}) view.logoffClick() time.sleep(1) view1 = dialogsContainer.getView(criteria={POP_UP_CRITERIA.VIEW_ALIAS: VIEW_ALIAS.SIMPLE_DIALOG}) view1._callHandler(DIALOG_BUTTON_ID.SUBMIT) — с помощью dialogs container получаю инстансы окон (Главное меню -> "Отключиться от сервера") и у них вызываю нужные методы. При клике в диалоговом окне "Отключиться от сервера" на "Да" крашится игра 3. BigWorld.player().onBecomeNonPlayer() — вызываю метод onBecomeNonPlayer у инстанса PlayerAccount - краш Если кто-то подскажет решение, буду премного благодарен!. На форуме искал что-то подобное — не нашёл. Quote Share this post Link to post Short link Share on other sites
Kurzdor 372 #531184 Posted December 30, 2022 (edited) time.sleep(1) А ты хорош это вызывать из под игры. Куда медаль слать тебе? Если посмотреть просто как игра сама вызывает disconnect от сервера, quit с игры, можно это можно сделать как сложить дважды два. UPD: К тому же, ты почти у цели Edited December 30, 2022 by Kurzdor Quote Share this post Link to post Short link Share on other sites
ntaklive 0 #531194 Posted December 30, 2022 12 hours ago, Kurzdor said: time.sleep(1) А ты хорош это вызывать из под игры. Куда медаль слать тебе? Если посмотреть просто как игра сама вызывает disconnect от сервера, quit с игры, можно это можно сделать как сложить дважды два. UPD: К тому же, ты почти у цели time.sleep нужен был для того, чтобы ждать, пока появится вьюшка. Из-под WOT-Transmission основной поток игры не блочится :\ Мб не хватает опыта в python, но, после 1.5 дня копания в исходниках игры, выйти модом из акка так и не смог. В итоге через скрипт открываю вьюшку подтверждения (как в п.2) и через user32 делаю клик на submit. Quote Share this post Link to post Short link Share on other sites
ntaklive 0 #531216 Posted January 2 On 12/30/2022 at 7:48 PM, ntaklive said: time.sleep нужен был для того, чтобы ждать, пока появится вьюшка. Из-под WOT-Transmission основной поток игры не блочится :\ Мб не хватает опыта в python, но, после 1.5 дня копания в исходниках игры, выйти модом из акка так и не смог. В итоге через скрипт открываю вьюшку подтверждения (как в п.2) и через user32 делаю клик на submit. Разобрался. Оказалось, что это WOT-Transmission вызывал краш, нужно было просто скомпилировать мод и вызвать метод в отдельном потоке следующим образом... import threading from gui.shared.personality import ServicesLocator thread = threading.Thread(target=ServicesLocator.gameplay.goToLoginByDisconnectRQ) thread.start() Quote Share this post Link to post Short link Share on other sites