Altes Hotkey loswerden
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
Altes Hotkey loswerden
In den 1. Tagen bei X3TC habe ich noch gut rumexperementiert und einen Batzen Scripte installiert ...
... die man nun kaum noch loswird. Zumindest hinterlassen sie ihre Spuren im Spiel - und sei es nur in der Hotkey-Liste als schicke readtext-Einträge
Nun gibts im englischen Teil des Forums ja einen nicht sehr schicken - aber immerhin nützlichen - "Hotkey-Remover"-Script. Mit dem bin ich auch 50% meiner alten Einträge losgeworden.
siehe: http://forum.egosoft.com/viewtopic.php?t=225416
Die anderen werden einfach nicht angezeigt - also komme ich auch nicht an sie ran.
Nun Frage: wie zum Henker werde ich den Rest los? Einfaches Löschen des Scriptes bringt's ja nicht - davon ab weiß ich leider nicht mal genau welche Scripte mir da noch im Rachen hängen
Wie kann man da rangehen?
... die man nun kaum noch loswird. Zumindest hinterlassen sie ihre Spuren im Spiel - und sei es nur in der Hotkey-Liste als schicke readtext-Einträge
Nun gibts im englischen Teil des Forums ja einen nicht sehr schicken - aber immerhin nützlichen - "Hotkey-Remover"-Script. Mit dem bin ich auch 50% meiner alten Einträge losgeworden.
siehe: http://forum.egosoft.com/viewtopic.php?t=225416
Die anderen werden einfach nicht angezeigt - also komme ich auch nicht an sie ran.
Nun Frage: wie zum Henker werde ich den Rest los? Einfaches Löschen des Scriptes bringt's ja nicht - davon ab weiß ich leider nicht mal genau welche Scripte mir da noch im Rachen hängen
Wie kann man da rangehen?
Re: Altes Hotkey loswerden
Das zeigt aber nur solche an, bei denen 1 Hotkey eine ganz persönliche globale Variable hat.Reisser wrote:Nun gibts im englischen Teil des Forums ja einen nicht sehr schicken - aber immerhin nützlichen - "Hotkey-Remover"-Script. Mit dem bin ich auch 50% meiner alten Einträge losgeworden.
Viele Scripts benutzen aber ein globales Array, in dem der Hotkey-Eintrag nur einer von vielen Werten ist.
Welche davon nun Hotkeys sind erfährt man nur im betreffenden Setup-Script.
Ich persönlich hab mir angewöhnt, für Hotkeys grundsätzlich ein eigenes Array anzulegen. Das vereinfacht das Uninstall-Script ungemein.
Praktisch gar nicht.Reisser wrote:Nun Frage: wie zum Henker werde ich den Rest los? Einfaches Löschen des Scriptes bringt's ja nicht - davon ab weiß ich leider nicht mal genau welche Scripte mir da noch im Rachen hängen :o
Blindes Löschen vernichtet auch solche, die noch gebraucht werden. Nur empfehlenswert wenn du von der Sache echt viel Plan hast.
Und zwar soviel, daß du hier gar nicht erst gefragt hättest...
5-10 Stunden Rumprobieren und Vergleichen könnte zwar funktionieren aber wofür? Um ein paar Hotkeyeinträge zu löschen, die gar nichts tun?
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
Das, was Gazz schreibt, ist natürlich richtig.
Wenn du es trotzdem machen möchtest, könntest du es so machen:
1. Alle globalen Variablen löschen, die etwas mit Hotkeys zu tun haben, auch die, die noch funktionieren (Das ist der schwierigste Teil, allerdings kann man bei vielen Skripts die Hotkeys eindeutig zuordnen).
2. Alle Hotkeys löschen. Dazu einfach folgendes Skript schreiben:
1 $nummer = 0
2 while $nummer < 2000
3 unregister hotkey $nummer
4 inc. $nummer
5 end
Das sollte alle Hotkeys löschen (falls nicht, die Grenze für Nummer anheben).
3. Speichern, am besten einen leeren Spielstand, nur zur Sicherheit.
4. Neu laden - jetzt sollten alle Hotkeys wieder da sein, allerdings nur, wenn du die globale Variable richtig gelöscht hast. Wenn ein Hotkey fehlt, weil du z.B. eine CODEA Variable nicht gelöscht hast, musst du das Ganze nochmal von vorne machen, da so das Setup Skript nicht erkennt, dass du den Hotkey gelöscht hast.
Vielleicht gibts noch eine elegantere Methode als diese mit dem Brecheisen, diese sollte aber alles zuverlässig löschen..
Achja, Nutzung auf eigene Gefahr. =)
MfG,
ScRaT
Wenn du es trotzdem machen möchtest, könntest du es so machen:
1. Alle globalen Variablen löschen, die etwas mit Hotkeys zu tun haben, auch die, die noch funktionieren (Das ist der schwierigste Teil, allerdings kann man bei vielen Skripts die Hotkeys eindeutig zuordnen).
2. Alle Hotkeys löschen. Dazu einfach folgendes Skript schreiben:
1 $nummer = 0
2 while $nummer < 2000
3 unregister hotkey $nummer
4 inc. $nummer
5 end
Das sollte alle Hotkeys löschen (falls nicht, die Grenze für Nummer anheben).
3. Speichern, am besten einen leeren Spielstand, nur zur Sicherheit.
4. Neu laden - jetzt sollten alle Hotkeys wieder da sein, allerdings nur, wenn du die globale Variable richtig gelöscht hast. Wenn ein Hotkey fehlt, weil du z.B. eine CODEA Variable nicht gelöscht hast, musst du das Ganze nochmal von vorne machen, da so das Setup Skript nicht erkennt, dass du den Hotkey gelöscht hast.
Vielleicht gibts noch eine elegantere Methode als diese mit dem Brecheisen, diese sollte aber alles zuverlässig löschen..
Achja, Nutzung auf eigene Gefahr. =)
MfG,
ScRaT
Erstmal danke für die Tipps ...
Ich habe dann doch nach Stunden die "Schuldigen" gefunden - naja - schuldig oder nicht schuldig - das ist hier die Frage
Was nun noch hängt ist nur noch eine alte Version von "Player Rapid Rescue Force" - hier scheint die Deinstallationsroutine ein wenig zu zicken - naja - ich beiß mich durch. Oder ich ignoriers einfach *seufz* irgendwann will man ja auch mal spielen ... und X3TC (wie auch die Vorgänger) laden ja nicht gerade fix
Ich habe dann doch nach Stunden die "Schuldigen" gefunden - naja - schuldig oder nicht schuldig - das ist hier die Frage
Was nun noch hängt ist nur noch eine alte Version von "Player Rapid Rescue Force" - hier scheint die Deinstallationsroutine ein wenig zu zicken - naja - ich beiß mich durch. Oder ich ignoriers einfach *seufz* irgendwann will man ja auch mal spielen ... und X3TC (wie auch die Vorgänger) laden ja nicht gerade fix
Hey, nun gibt es zu den Hotkeys also doch noch ein eigenes Thema!
Also ich habe letztens auch aufgeräumt (muss leider zugeben, dass es letztendlich doch wegen der erw. Enzyklopädie war, 6 Einträge ).
Ich bin mit dem Removal-Script nicht klargekommen, hat bei mir immer nur einen Eintrag zum marine.trainer gefunden, obwohl ja mehrere vorhanden waren.
Habe dann erst mal alles uninstalliert, wo UninstallScripte vorhanden waren (hallo Gazz, bei Turret on/off habe ich eins vermisst ).
Dann das hier, brutal:
Steht irgendwo im Removal-Beitrag, allerdings fehlt dort Zeile 20. Übriggeblieben ist danach witzigerweise ein Eintrag zur erweiterten Ezyklopädie. Den habe ich aber mit einer normalen UnregisterRoutine weg bekommen.
Setup-Skripte neu ausgeführt, paarmal gestartet und gespeichert, weil das manche Scripte so wollen , und alles war wieder gut.
Seitdem sind alle Einträge so, wie sie sein sollten, und Probleme habe ich bislang nicht festgestellt. (Turret on/off funktioniert auch wie gehabt, die gV wird ja in einem Array durch das ganze Procedere nicht gelöscht, habe dann nur im Setup die Abfrage, ob eine gV vorhanden ist, temporär rausgenommen.) Hat insgesamt bloß 2 Nachmittage gedauert ...
Ob es wohl irgendwann mal möglich ist, die Hotkey-Einträge direkt im Steuerungsmenü zu löschen? Hallo Egosoft, wozu hat man eine eigentlich Entf.-Taste?
mfg
Väterchen Frost
Also ich habe letztens auch aufgeräumt (muss leider zugeben, dass es letztendlich doch wegen der erw. Enzyklopädie war, 6 Einträge ).
Ich bin mit dem Removal-Script nicht klargekommen, hat bei mir immer nur einen Eintrag zum marine.trainer gefunden, obwohl ja mehrere vorhanden waren.
Habe dann erst mal alles uninstalliert, wo UninstallScripte vorhanden waren (hallo Gazz, bei Turret on/off habe ich eins vermisst ).
Dann das hier, brutal:
Code: Select all
001 $global.arr = get global variables: regular expression='.*'
002
003 $id = 2000
004 while $id
005 |$found = [FALSE]
006 |$global.idx = size of array $global.arr
007 |
008 |while $global.idx
009 ||dec $global.idx =
010 ||$global = $global.arr[$global.idx]
011 ||$global.value = get global variable: name=$global
012 ||if $global.value == $id
013 |||$found = [TRUE]
014 |||break
015 ||end
016 |end
017 |
018 |if not $found
019 ||unregister hotkey $id
020 ||set global variable: name=$global value=null
021 |end
022 |dec $id =
023 end
024 return null
Setup-Skripte neu ausgeführt, paarmal gestartet und gespeichert, weil das manche Scripte so wollen , und alles war wieder gut.
Seitdem sind alle Einträge so, wie sie sein sollten, und Probleme habe ich bislang nicht festgestellt. (Turret on/off funktioniert auch wie gehabt, die gV wird ja in einem Array durch das ganze Procedere nicht gelöscht, habe dann nur im Setup die Abfrage, ob eine gV vorhanden ist, temporär rausgenommen.) Hat insgesamt bloß 2 Nachmittage gedauert ...
Ob es wohl irgendwann mal möglich ist, die Hotkey-Einträge direkt im Steuerungsmenü zu löschen? Hallo Egosoft, wozu hat man eine eigentlich Entf.-Taste?
mfg
Väterchen Frost
Ja, hatte ich ja im entsprechenden Thread geschrieben, dass mein Skript (in den ersten Versionen) mehrere Hotkeys erstellen kann (jetzt aber nicht mehr!).
Wenigstens hast du sie jetzt alle weg. =)
Dass man die Hotkey-Einträge nicht direkt löschen kann, ist wirklich blöd. Wäre ja eigentlich ganz einfach, da alle Hotkeys eine ID zugewiesen bekommen...
MfG,
ScRaT
Wenigstens hast du sie jetzt alle weg. =)
Dass man die Hotkey-Einträge nicht direkt löschen kann, ist wirklich blöd. Wäre ja eigentlich ganz einfach, da alle Hotkeys eine ID zugewiesen bekommen...
MfG,
ScRaT
Hab nach sehr langer Zeit mal wieder X³ begonnen und auch etwas gescriptet. Leider aber ebenfalls den Fehler gemacht selbst EINEN Hotkey zu registrieren und ihn NICHT an eine globale Variable zu hängen.
Jetzt wollte ich Ihn auch loswerden und habe es relativ schnell geschafft, OHNE die anderen Hotkeys zu beeinflussen. Es basiert auf dem ebenfalls von Ded_Moros oben schon genannten Script.
Ich habe es anschließend nur ganz leicht abgewandelt und das QuickSort-Verfahren aus der Informatik angewandt. Dabei habe ich die 2000 IDs immer wieder in zwei Hälften geteilt und durch Trial&Error nach dem Ausführen nachgesehen, ob mein gesuchter Key entfernt wurde. Falls ja, neu geladen und die entsprechende Hälfte erneut geteilt und weiter versucht, usw.
Ich bin innerhalb von ca. 10min auf meine ID 1552 gekommen und habe lediglich diese am Ende sauber unregistered.
Falls also jemand wie ich Angst vor einem unbeherrschbaren Chaos durch globales unregistern aller Keys hat, wäre das vielleicht ein Weg. Ist aber natürlich nur bei wenigen Keys sinnvoll.
Jetzt wollte ich Ihn auch loswerden und habe es relativ schnell geschafft, OHNE die anderen Hotkeys zu beeinflussen. Es basiert auf dem ebenfalls von Ded_Moros oben schon genannten Script.
Ich habe es anschließend nur ganz leicht abgewandelt und das QuickSort-Verfahren aus der Informatik angewandt. Dabei habe ich die 2000 IDs immer wieder in zwei Hälften geteilt und durch Trial&Error nach dem Ausführen nachgesehen, ob mein gesuchter Key entfernt wurde. Falls ja, neu geladen und die entsprechende Hälfte erneut geteilt und weiter versucht, usw.
Ich bin innerhalb von ca. 10min auf meine ID 1552 gekommen und habe lediglich diese am Ende sauber unregistered.
Falls also jemand wie ich Angst vor einem unbeherrschbaren Chaos durch globales unregistern aller Keys hat, wäre das vielleicht ein Weg. Ist aber natürlich nur bei wenigen Keys sinnvoll.