Jump to content
Korean Random
ntaklive

Выход из аккаунта

Recommended Posts

Доброго времени суток знающим людям!) Пытаюсь реализовать функционал выхода из аккаунта в своем скрипте, но получаю только краш игры.
Пробовал следующее:
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 - краш
Если кто-то подскажет решение, буду премного благодарен!. На форуме искал что-то подобное — не нашёл.
 

Share this post


Link to post

Short link
Share on other sites
time.sleep(1)

А ты хорош это вызывать из под игры. Куда медаль слать тебе?

Если посмотреть просто как игра сама вызывает disconnect от сервера, quit с игры, можно это можно сделать как сложить дважды два.
UPD: К тому же, ты почти у цели
 

Edited by Kurzdor

Share this post


Link to post

Short link
Share on other sites
12 hours ago, Kurzdor said:

time.sleep(1)

А ты хорош это вызывать из под игры. Куда медаль слать тебе?

Если посмотреть просто как игра сама вызывает disconnect от сервера, quit с игры, можно это можно сделать как сложить дважды два.
UPD: К тому же, ты почти у цели
 


time.sleep нужен был для того, чтобы ждать, пока появится вьюшка. Из-под WOT-Transmission основной поток игры не блочится :\
Мб не хватает опыта в python, но, после 1.5 дня копания в исходниках игры, выйти модом из акка так и не смог.
В итоге через скрипт открываю вьюшку подтверждения (как в п.2) и через user32 делаю клик на submit. :wacko:

Share this post


Link to post

Short link
Share on other sites
On 12/30/2022 at 7:48 PM, ntaklive said:


time.sleep нужен был для того, чтобы ждать, пока появится вьюшка. Из-под WOT-Transmission основной поток игры не блочится :\
Мб не хватает опыта в python, но, после 1.5 дня копания в исходниках игры, выйти модом из акка так и не смог.
В итоге через скрипт открываю вьюшку подтверждения (как в п.2) и через user32 делаю клик на submit. :wacko:


Разобрался. Оказалось, что это WOT-Transmission вызывал краш, нужно было просто скомпилировать мод и вызвать метод в отдельном потоке следующим образом...

import threading
from gui.shared.personality import ServicesLocator

thread = threading.Thread(target=ServicesLocator.gameplay.goToLoginByDisconnectRQ)
thread.start()

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...