Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mudlet Lag nach langen Kämpfen #68

Closed
Kebap opened this issue Aug 28, 2023 · 1 comment · Fixed by #69
Closed

Mudlet Lag nach langen Kämpfen #68

Kebap opened this issue Aug 28, 2023 · 1 comment · Fixed by #69

Comments

@Kebap
Copy link
Contributor

Kebap commented Aug 28, 2023

Nach einer Weile fällt auf, dass Mudlet nicht mehr reagiert.
Es scheint damit zusammen zu hängen, dass per GMCP neue Infos reinkommen.

Bspw. wenn man im Kampf zaubert oder gehauen wird, und sich KP/LP verändern.
Dann anschließend, wenn die KP/LP langsam wieder hochticken, passiert es erneut.
Da das Lag teilweise einige Sekunden dauert, kommt schon der nächste Tick, und das Problem multipliziert sich.

Das Lag bedeutet auch nicht nur, dass Text aus dem Spiel verzögert angezeigt wird.
Statt dessen reagiert Mudlet komplett gar nicht mehr auf Eingaben.
Man kann keine Buttons klicken, nicht ein anderes Profil öffnen, usw.
Windows zeigt Mudlet weiß verfärbt an und titelt "(keine Rückmeldung)"
Der Task Manager zeigt deutlich erhöhte CPU-Auslastung in dieser Zeit.

Nachdem das Lag verschwunden ist, erscheint im Mudlet Debug mehrfach folgender Text:

[C] new line arrived:[C] Es hat das Kaempfen in einem Struv erlernt und ist ein wahrer Zalkh'Batar. 

[C] Trigger name=Zeilenlänge(^(.*)$) matched.
[C] capture group #1 = [C] <Es hat das Kaempfen in einem Struv erlernt und ist ein wahrer 
Zalkh'Batar. >
[C] capture group #2 = [C] <Es hat das Kaempfen in einem Struv erlernt und ist ein wahrer 
Zalkh'Batar. >
[C] LUA OK: script Zeilenlänge (Trigger80) ran without errors
[C] new line arrived:[C] > 

[C] Trigger name=Zeilenlänge(^(.*)$) matched.
[C] capture group #1 = [C] <> >
[C] capture group #2 = [C] <> >
[C] LUA OK: script Zeilenlänge (Trigger80) ran without errors

[C] Lua: createLabel: label 'GUI.Char.FrameadjLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameexitLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameminimizeLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenu' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuminLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenusaveLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuloadLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt1' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt2' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt3' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt4' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenucustomItemsLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelstandard' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelborder' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelfull' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabellight' already exists
[C] Lua: createLabel: label 'NameLabel' already exists
[C] Lua: createLabel: label 'GaugeLP_back' already exists
[C] Lua: createLabel: label 'GaugeLP_front' already exists
[C] Lua: createLabel: label 'GaugeLP_text' already exists
[C] Lua: createLabel: label 'GaugeKP_back' already exists
[C] Lua: createLabel: label 'GaugeKP_front' already exists
[C] Lua: createLabel: label 'GaugeKP_text' already exists
[C] Lua: createLabel: label 'GaugeLPVorsichtOben' already exists
[C] Lua: createLabel: label 'GaugeLPVorsichtUnten' already exists
[C] Lua: createLabel: label 'FluchtLabel' already exists
[C] Lua: createLabel: label 'AvatarLabel' already exists
[C] Lua: createLabel: label 'StufeLabel' already exists

[C] LUA OK anonymous Lua function ran without errors

[C] Lua: createLabel: label 'GUI.Char.FrameadjLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameexitLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameminimizeLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenu' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuminLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenusaveLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuloadLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt1' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt2' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt3' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt4' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenucustomItemsLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelstandard' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelborder' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelfull' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabellight' already exists
[C] Lua: createLabel: label 'NameLabel' already exists
[C] Lua: createLabel: label 'GaugeLP_back' already exists
[C] Lua: createLabel: label 'GaugeLP_front' already exists
[C] Lua: createLabel: label 'GaugeLP_text' already exists
[C] Lua: createLabel: label 'GaugeKP_back' already exists
[C] Lua: createLabel: label 'GaugeKP_front' already exists
[C] Lua: createLabel: label 'GaugeKP_text' already exists
[C] Lua: createLabel: label 'GaugeLPVorsichtOben' already exists
[C] Lua: createLabel: label 'GaugeLPVorsichtUnten' already exists
[C] Lua: createLabel: label 'FluchtLabel' already exists
[C] Lua: createLabel: label 'AvatarLabel' already exists
[C] Lua: createLabel: label 'StufeLabel' already exists
[C] LUA OK anonymous Lua function ran without errors
[C] LUA OK anonymous Lua function ran without errors
[C] LUA OK anonymous Lua function ran without errors
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameexitLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameminimizeLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenu' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuminLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenusaveLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuloadLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt1' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt2' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt3' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt4' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenucustomItemsLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelstandard' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelborder' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelfull' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabellight' already exists
[C] Lua: createLabel: label 'NameLabel' already exists
[C] Lua: createLabel: label 'GaugeLP_back' already exists
[C] Lua: createLabel: label 'GaugeLP_front' already exists
[C] Lua: createLabel: label 'GaugeLP_text' already exists
[C] Lua: createLabel: label 'GaugeKP_back' already exists
[C] Lua: createLabel: label 'GaugeKP_front' already exists
[C] Lua: createLabel: label 'GaugeKP_text' already exists
[C] Lua: createLabel: label 'GaugeLPVorsichtOben' already exists
[C] Lua: createLabel: label 'GaugeLPVorsichtUnten' already exists
[C] Lua: createLabel: label 'FluchtLabel' already exists
[C] Lua: createLabel: label 'AvatarLabel' already exists
[C] Lua: createLabel: label 'StufeLabel' already exists
[C] LUA OK anonymous Lua function ran without errors
[C] LUA OK anonymous Lua function ran without errors
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameexitLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameminimizeLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenu' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuminLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenusaveLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuloadLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt1' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt2' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt3' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenuattLabelatt4' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenucustomItemsLabel' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelstandard' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelborder' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabelfull' already exists
[C] Lua: createLabel: label 'GUI.Char.FrameadjLabelrightClickMenulockStylesLabellight' already exists
[C] Lua: createLabel: label 'NameLabel' already exists
[C] Lua: createLabel: label 'GaugeLP_back' already exists
[C] Lua: createLabel: label 'GaugeLP_front' already exists
[C] Lua: createLabel: label 'GaugeLP_text' already exists
[C] Lua: createLabel: label 'GaugeKP_back' already exists
[C] Lua: createLabel: label 'GaugeKP_front' already exists
[C] Lua: createLabel: label 'GaugeKP_text' already exists
[C] Lua: createLabel: label 'GaugeLPVorsichtOben' already exists
[C] Lua: createLabel: label 'GaugeLPVorsichtUnten' already exists
[C] Lua: createLabel: label 'FluchtLabel' already exists
[C] Lua: createLabel: label 'AvatarLabel' already exists
[C] Lua: createLabel: label 'StufeLabel' already exists
[C] LUA OK anonymous Lua function ran without errors
[C] LUA OK anonymous Lua function ran without errors

Da wiederholt sich "createLabel" ziemlich oft, nämlich ebenfalls alle paar Sekunden, und schlägt fehl.
Seltsam daran ist, dass nirgendwo im ganzen Code von mg-mudlet die Funktion createLabel gerufen wird.
Augenscheinlich liegt es an Adjustable.Container:new(), der dann intern weitere Funktionen ruft.
Diese internen Funktionen passen zu den ersten Fehlermeldungen, die sich hier wiederholen, bspw.

  • Adjustable.Container:createContainers()
  • Adjustable.Container:createLabels()
  • Adjustable.Container:createRightClickMenu() ??
@Kebap
Copy link
Contributor Author

Kebap commented Aug 28, 2023

Die Ursache liegt wohl in initCharGUI() und darin dem registerAnonymousEventHandler auf gmcp.MG.char:

function initCharGUI()
  GUI = GUI or {}
  GUI.Char = GUI.Char or {}

  getGMCPdata()
  initCharFrame()
  if not table.is_field(gmcp, "MG.char") then
      -- anscheinend noch nicht eingeloggt, dann können wir noch nix anzeigen!
      registerAnonymousEventHandler("gmcp.MG.char", function()
          tempTimer(1, function() 
            display("-- initCharFrame Timer activated.")
            killAnonymousEventHandler(GUI.Char.initCharFrameHandler)
            initCharGUI()
          end)
          display("-- initCharFrame Timer scheduled.")
      end)
      return
  end

  initName()
  initGauges()
  initFlucht()
  initAvatar()
  initStufe()
end

Im Kampf zeigt sich hier dank display(), dass der Timer bei jedem Tick eingeplant und aktiviert wird.
Das ganze Konstrukt ist sowieso arg wackelig und nur ein Workaround, um GMCP bei Login zu handhaben.
Nach dem Login sollte es nie zu Tragen kommen oder gar Probleme wie hier bspw. im Kampf machen.

Es zeigt sich hier sogar bei Login, dass der Timer über 5x aufgerufen wird.
Vermutlich für jedes Feld innerhalb gmcp.MG.char einmal, und das sind 7 Stück...

Die (schnelle, dreckige) Lösung könnte darin liegen, diesen Timer nur genau 1x zu rufen, dann nie wieder.
Bzw. im besten Fall genau erst wieder beim nächsten Login, um da sofort die Anzeige zu aktualisieren.
Falls das nicht so einfach geht, ist es aber auch kein allzu großer Schmerz im Vergleich zum o.g. Lag!

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

Successfully merging a pull request may close this issue.

1 participant