Hi Allerseits,
wenn ich mir den Gebrauch von lokalen und globalen Variablen in Skripten so anschaue, wird mir schon ein wenig mulmig.
Die werden zwar in der Regel gepflegt (z.B. hält die BPH das HomeBase-Array immer schön sauber), aber Artefakte können (und werden) wohl häufig übrigbleiben. Deshalb die Frage, ob es auch angedacht ist, irgendwann einmal Uninstaller für Skripte zu schreiben, die dafür sorgen, dass nur von einem Skript verwendete externe Variablen wieder glöscht bzw. auf Null gesetzt werden ?
Oder widerspricht dass - langfristig gesehen - den Integrationsbestrebungen für Skripte, siehe BPH & Route Patrol ?
Ich frage jetzt nicht nach den Problemen der technischen Umsetzung (die müsste ja z.B. für NoModified-Games mindestens einen freien Command Slot haben), sondern nur danach, ob sowas überhaupt mal angedacht ist...
Oder gibt es vielleicht schon einen "Destruktor" für Skripte (evtl. über Signale), den ich bis jetzt noch nicht gefunden habe...
CU, MF
Uninstaller bei (signierten) Skripten ?
Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum
-
- Posts: 65
- Joined: Wed, 21. Jul 04, 14:17
Wenn du Scriptdateien aus deinem X2 Scripts verzeichnest entfernst werden diese beim nächsten Start nicht mehr ausgeführt (wie denn auch sind ja nicht mehr da) und folglich werden die Variablen (sowie alle anderen Funktionen des Scripts) nichtmehr genutzt und sind auch nicht mehr vorhanden.
Eine Fehlerursache kann sein wenn du Scriptdateien löscht aber Schiffe noch den Befehlen von den Scripten folgen oder es versuchen. Also einfach das Script nicht mehr benutzen und dann löschen dann wird es keine Probleme geben. Probleme können auftauchen wenn zwei Scripte gleiche Namen haben aber es ist davon auszugehen das bei signierten Scripts solche Fehlerquellen überprüft werden.
Eine Fehlerursache kann sein wenn du Scriptdateien löscht aber Schiffe noch den Befehlen von den Scripten folgen oder es versuchen. Also einfach das Script nicht mehr benutzen und dann löschen dann wird es keine Probleme geben. Probleme können auftauchen wenn zwei Scripte gleiche Namen haben aber es ist davon auszugehen das bei signierten Scripts solche Fehlerquellen überprüft werden.
-
- Posts: 346
- Joined: Tue, 17. Feb 04, 14:42
Hmm, klar die Lebensdauer der internen Variablen ist auf die Laufzeit des Skriptes beschränkt. Die liegen ja auch nur in dessen Namensraum.
ABER:
Die lokalen und globalen Variablen unterliegen da keiner Beschränkung (zumindest verstehe ich sie so) ausser der, das lokale Variablen am Objekt (eher Ding, wir sind bei den Skripten nicht in der OO-Welt) hängen. Wenn Ding kaputt, dann lokale Variable weg.
Und die möglichen Artefakte an lokalen bzw. globalen Variablen geben mir zu denken.
Wie man ein Skript sauber entfernt, weiss ich schon, habe ich gerade hinter mir. Momentan steht meine gesamte Wirtschaft still und hungert nach neuen Aufgaben.
CU, MF
ABER:
Die lokalen und globalen Variablen unterliegen da keiner Beschränkung (zumindest verstehe ich sie so) ausser der, das lokale Variablen am Objekt (eher Ding, wir sind bei den Skripten nicht in der OO-Welt) hängen. Wenn Ding kaputt, dann lokale Variable weg.
Und die möglichen Artefakte an lokalen bzw. globalen Variablen geben mir zu denken.
Wie man ein Skript sauber entfernt, weiss ich schon, habe ich gerade hinter mir. Momentan steht meine gesamte Wirtschaft still und hungert nach neuen Aufgaben.
CU, MF



-
- Posts: 4861
- Joined: Wed, 6. Nov 02, 20:31
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
Ganz einfach, jedes signierte Script muss die Fähigkeit bekommen sich selbst zu entfernen, also eine Pflicht.ticaki wrote:Ich denke mal darüber nach, wie man das lösen kann.(ohne das es für mich arbeit bedeutet
)
Was mich wirklich sehr stört, man kann Scripte unsauber beenden. Man kann bei Schiffen alle laufenden Scripte einfach mit dem Kommandobefehl [KEIN] abbrechen, ebenso bei den Slots der Stationen und der Schiffe. Das abgebrochene Script hat dann keine Möglichkeit mehr lokale und globale Variablen zu säubern bzw. zu löschen.
Schöne wäre es zur Abhilfe, wenn man laufende Scripte überprüfen könnte.
z.B.: <RetVar/IF> <RefObj> is script <Script Name>
Gruß
Lucike

-
- Posts: 4861
- Joined: Wed, 6. Nov 02, 20:31
Jup, nur dann müsste ich die Signierregeln überarbeiten (ist doch auch arbeitLucike FZ wrote:Ganz einfach, jedes signierte Script muss die Fähigkeit bekommen sich selbst zu entfernen, also eine Pflicht.ticaki wrote:Ich denke mal darüber nach, wie man das lösen kann.(ohne das es für mich arbeit bedeutet
)

Gruß ticaki
P.S. aber im Grunde hast du Recht. Ich bin mir nur noch nicht sicher in wieweit diese Scripte zu X² dazugehören...

Zur Zeit nicht aktiv
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
Hey, Du bist hier Mod. Auf die faule Haut legen is nich.ticaki wrote:(ist doch auch arbeit)

Einfach daraus eine Scripterpflicht machen. Jeder Scripter muss ein Uninstallscript mitgeben, welches natürlich auch signiert werden muss. Dieses Script wird im Fall des Entfernens in das Script-Verzeichnis kopiert.
Gruß
Lucike

-
- Posts: 346
- Joined: Tue, 17. Feb 04, 14:42
Jupp, vor allen Dingen können Skripte zu jedem Zeitpunkt beendet werden und so u.U. auch inkonsistente Daten zurücklassen. <doziermodus aus>Lucike FZ wrote:Was mich wirklich sehr stört, man kann Scripte unsauber beenden. Man kann bei Schiffen alle laufenden Scripte einfach mit dem Kommandobefehl [KEIN] abbrechen, ebenso bei den Slots der Stationen und der Schiffe. Das abgebrochene Script hat dann keine Möglichkeit mehr lokale und globale Variablen zu säubern bzw. zu löschen.
Oder ein Signal/Event, das an ein Skript gesendet wird, bevor es abgebrochen wird. Sowas ist im SE bzw. AL (scheint ja derselbe Interpreter zu sein) auch schon vorgesehen.Schöne wäre es zur Abhilfe, wenn man laufende Scripte überprüfen könnte.
z.B.: <RetVar/IF> <RefObj> is script <Script Name>
Allerdings sind das Wunschträume, die mit dem aktuellen SE nicht realisierbar sind, weiss ich auch.
Was aber wenig Arbeit machen würde, wäre eine Guideline, zu jedem setup. bzw. init. Skript auch ein remove. Skript zu schreiben, das die skriptspezifischen externen Variablen auch wieder löscht.
Ich meine, das die SupplySoft ST1 (?) sowas z.B. schon hat.
CU,MF
Edit: Mist, dass kommt davon, wenn man so langsam tippt, da wird man gleich von zwei Leuten überholt



