Altes Hotkey loswerden

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

Post Reply
User avatar
Reisser
Posts: 745
Joined: Mon, 28. Feb 05, 15:39
x4

Altes Hotkey loswerden

Post by Reisser » Mon, 23. Feb 09, 19:45

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 :shock:

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 :o

Wie kann man da rangehen?

User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Re: Altes Hotkey loswerden

Post by Gazz » Mon, 23. Feb 09, 20:07

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.
Das zeigt aber nur solche an, bei denen 1 Hotkey eine ganz persönliche globale Variable hat.

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.

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
Praktisch gar nicht.
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.

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER » Mon, 23. Feb 09, 20:25

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

User avatar
Reisser
Posts: 745
Joined: Mon, 28. Feb 05, 15:39
x4

Post by Reisser » Mon, 23. Feb 09, 20:56

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 :D

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 :roll:

User avatar
Ded_Moros
Posts: 76
Joined: Mon, 6. Nov 06, 22:43
x3tc

Post by Ded_Moros » Tue, 24. Feb 09, 11:08

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 :wink: ).
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
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 :P , 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

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER » Tue, 24. Feb 09, 15:37

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

UTA2000
Posts: 8
Joined: Mon, 28. Nov 05, 12:38
x4

Post by UTA2000 » Wed, 2. Feb 11, 18:35

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.

Post Reply

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”