Ich habe leider keine spontane Lösung für dein Problem. Am ehesten könnte ich mir vorstellen, dass das GUI an anderer Stelle wieder eingeschaltet wird.
Aber noch ein kleiner Hinweis am Rande:
mouse.UseModeGraphic(eModePC);
mouse.ChangeModeHotspot(eModeWalkto, 0, 0);
gMain.Visible = false;
gAction.Visible = false;
Diesen Codeblock hast du in deinem Post bereits 2 mal. Solch duplizierter Code ist immer blöd, weil er schwer zu warten ist.
Will man eine kleine Anpassung daran machen, muss man alle anderen Stellen im gesamten Code heraussuchen und ebenfalls anpassen.
(Und da der Teufel ein Eichhörnchen ist, vergisst man mit Sicherheit eine Stelle
).
In den alten Episoden und Starterpacks findet man solche Stellen zu hauf, was die Entwicklung aus meiner Sicht stark erschwert.
Deshalb fände ich es wichtig, bei einem neuen Starterpack direkt auf solchen Codestyle zu achten.
Am Besten lagerst du solche Blöcke in eigene Funktionen aus (entweder im GlobalScript - oder noch besser in eigenständige Scriptmodule), die du dann an benötigter Stelle einfach aufrufst.
In meinen Episoden habe ich so verschiedenste Funktionen gescriptet, die ich gerne mal zukommen lassen kann.
Für die GUI habe ich z.B. auch schon ohne Mausmodus-Änderung folgende Funktion:
function SetGuiVisible(bool visible)
{
gMain.Visible= visible;
gAction.Visible=visible;
}
Die rufe ich im Script an geeigneter Stelle mit
SetGuiVisible(false); auf.
In diesem Fall ist es nicht so viel Ersparnis, aber mit der Erweiterung um den Mausmodus aus meiner Sicht absolut notwendig.