Open Kebap opened 4 years ago
Workaround für Punkt 2: Beim ersten Empfang nur Max in GUI einblenden. Erst ab zweiten Empfang auf Aktuelle Punkte und Maximale Punkte ausweiten.
So könnte der Workaround aussehen..
function zeigeVitaldaten()
-- GMCP Vitaldaten merken
ME.lp = gmcp.MG.char.vitals.hp
ME.lp_max = gmcp.MG.char.maxvitals.max_hp
ME.kp = gmcp.MG.char.vitals.sp
ME.kp_max = gmcp.MG.char.maxvitals.max_sp
-- Werte der Konzentration aktualisieren
-- Haben wir ueberhaupt Report fuer Konzentration?
if ME.kp_report then
-- OK, dann kann man den aktuellen Wert anzeigen
GUI.kp_anzeige:setValue(ME.kp, ME.kp_max,
"<b> " .. ME.kp .. "/" .. ME.kp_max .. "</b> ")
elseif ME.kp_alt then
-- Immerhin kennen wir einen alten Wert
if ME.kp_alt ~= ME.kp then
-- Der neue Wert hat sich verändert, also haben wir Report
ME.kp_report = true
GUI.kp_anzeige:setValue(ME.kp, ME.kp_max,
"<b> " .. ME.kp .. "/" .. ME.kp_max .. "</b> ")
else
-- Kein Report und kein neuer Wert, also keine Anzeige möglich
GUI.kp_anzeige:setValue(ME.kp_max, ME.kp_max,
"<b> " .. ME.kp_max .. " max.</b> ")
end
else
-- Beim ersten Mal gibt es nicht mal einen alten Wert
ME.kp_alt = ME.kp
GUI.kp_anzeige:setValue(ME.kp_max, ME.kp_max,
"<b> " .. ME.kp_max .. " max.</b> ")
end
-- Werte des Lebensbalken aktualisieren
@zesstra hatte vorgeschlagen, Report aus MG anders auszugestalten, damit eindeutig klar wird, wann Report fehlt. Unklar, ob/wann dieser Fix eingespielt wird, und o.g. Workaround überflüssig machen würde.
Wenn ich mich richtig erinnere, war der Plan, den Maximalwert auch nur zu senden, wenn die Questvoraussetzungen existieren. Das muss ich mir noch anschauen, da war noch was nicht richtig an dem Patch.
OK, das hatte ich bisher anders erinnert. Da ging es immer nur um den aktuellen Wert. MPA Archiv seit 2019 erfolglos durchsucht mit Stichworten GMCP, Report, Konzentration...
Aber ok, dann wird die Lösung tatsächlich noch leichter: Einfach gar keinen Konzentrationsbalken anzeigen, solange der Report fehlt. Nur Lebenspunkte.
Hier finden sich einige Details: https://mg.mud.de/gerrit/c/mudlib-public/+/856
Ergebnis: Es soll gar kein MG.char.vitals.sp
(und MG.char.vitals.max_sp
) gesendet werden, solange Quests fehlen
An sich ist es konsequent, keines von beiden zu senden, aber wenns die Sache spürbar erleichern sollte, können wir MG.char.vitals.max_sp auch senden.
die Sache spürbar erleichern
Wäre es möglich, einfach ein MG.char.reports zu füllen mit hp, sp, wimpy, poison, etc. je nachdem, was der Charakter schon freigeschaltet hat?
Wenn man Konzentration verbraucht, wird das nicht aktualisiert! Das ist auch so erwartet, denn man braucht dazu einige Quests.
Das bewirkt aber die falsche Anzeige von immer voller Konzentration! Diesen falschen Eindruck wollen wir doch lieber verhindern!
Siehe auch:
Folgende Reports werden derzeit eingeschränkt:
Problematisch scheinen 3 und 5 nicht, da sie in der GUI leer bleiben können und nicht erwartet werden. Gleiches gilt für 4, wobei dies zusätzlich durch das Spielerkommando ausgewertet werden könnte. Kann aber auch vom Spiel verändert werden, dann wäre die GUI falsch. Bleibt Punkt 2, der Report der aktuellen Konzentration, der quasi durchgehend falsche Werte anzeigt, außer man braucht ihn nicht.
GMCP liefert derzeit auch für neue Spieler folgende Daten:
Eine mögliche Lösung wäre, vom Spiel Konzentration als -1 zu senden. Das bedeutet: Der aktuelle Wert ist unbekannt, bitte erst die Quest lösen. Könnte dann in GUI entsprechend angezeigt oder ausgeblendet werden. Bestenfalls mit Hinweis auf die zu lösenden Quests.
Hinweis: Die Übertragung der maximalen Konzentrationspunkte per GMCP erfolgt derzeit auch vor Abschluss der richtigen Quest. Das bewirkt, dass nach Erhöhung des Maximums dieses aktualisiert wird. Dadurch fällt nun plötzlich die Anzeige unter 100% (und aktualisiert sich weiterhin nicht), nämlich auf "Aktuell: alter Wert" von "Maximum: neuer Wert"... Ob das so geplant war?