Salu,
sorry für die dumme Frage, aber wie kann ich locale Variablen wirklich los werden ? bislang ging ich davon aus das ein setzen auf null die dinger auch wirklich loescht, nur leider musste ich feststellen das bei einem aufruf von get all local vari's starting with die ganzen Dinger ( mit wert null ) wieder auftauchen.
Hat jemand eine Ahnung wie ich die wriklich loswerde ?
hat jemand vielleicht etwas aehnliches auch bei globalen vari's beobachtet ?
Gruesse
Linus
Wie kann man locale Variablen löschen
Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
Ich würde sagen endgültig löschen kann man die mit den momentanen Scriptbefehlen nicht... der rückgabewert ist allerdigs mit dem simplen auf null setzen derselbe als wäre die Variable nicht existent.. was hast du eigentlich genau vor, dass dich das stört? wenns um ne auflistung von GVs/LVs geht -> einfach die mit dem Wert null ausklammern 

if not stated otherwise everything i post is licensed under WTFPL
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter
I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help

-
- Posts: 149
- Joined: Tue, 22. Aug 06, 01:24
Salu,
was ich vorhabe ist eigentlich nur ein sauberes install/uninstall zu schreiben und ebenfalls ein wenig auf die zwischenversionen aufzupassen..
d.h. ich erweitere bei den einzelenen versionen die funktionalitaet und es kommen oder aendern sich locale/globale variablen und eigentlich moechte ich halt keinen muell hinterlassen nur weil mal jemand ein script testet
Script ist das Sectortakeover 2.5 das gerade bei mir als todo ansteht.
nebenbei ist es nach mir auch einperformance problem, wenn diese dinge nicht geloescht werden, aber das nur am rande. denn es ist nach mir ein unterschied ob ich null oder 0 einem object zuweise, aber vielleicht bin ich da einfach ein wenig traditionell
Gruss
Linus
was ich vorhabe ist eigentlich nur ein sauberes install/uninstall zu schreiben und ebenfalls ein wenig auf die zwischenversionen aufzupassen..
d.h. ich erweitere bei den einzelenen versionen die funktionalitaet und es kommen oder aendern sich locale/globale variablen und eigentlich moechte ich halt keinen muell hinterlassen nur weil mal jemand ein script testet

Script ist das Sectortakeover 2.5 das gerade bei mir als todo ansteht.
nebenbei ist es nach mir auch einperformance problem, wenn diese dinge nicht geloescht werden, aber das nur am rande. denn es ist nach mir ein unterschied ob ich null oder 0 einem object zuweise, aber vielleicht bin ich da einfach ein wenig traditionell

Gruss
Linus
-
- Posts: 2764
- Joined: Thu, 31. May 07, 18:07
wenn du kein local müll hinterlassen möchtest fällt mir nur die radikal Methode ein -> destruct show no explosion.
bei der global einfach set globl variable=(die wo du eingesetzt hast) value=0 oder so. sonst fällt mir dazu nichts mehr ein.
(um dir eventuell die ganzen global befehle zu sparren kannst du sie vorher in ein arry speichern und dann eins nach dem anderen ausschalten) also anstatt 20 set global var ein arry mit 20 gespeicherten globalstrings ka ob das so funktionieren kann ist nur ein gedanke
bei der global einfach set globl variable=(die wo du eingesetzt hast) value=0 oder so. sonst fällt mir dazu nichts mehr ein.
(um dir eventuell die ganzen global befehle zu sparren kannst du sie vorher in ein arry speichern und dann eins nach dem anderen ausschalten) also anstatt 20 set global var ein arry mit 20 gespeicherten globalstrings ka ob das so funktionieren kann ist nur ein gedanke
-
- Posts: 149
- Joined: Tue, 22. Aug 06, 01:24
Salu,
merci für die Ideen. ich werde da ich ein paar globale Arrays brauche versuchen möglichst viel auf objecte zu verlagern und diese dann beim deinstall zu killen, sollte damit recht wenig übrigbleiben.
mal schauen, ist aber eigenlich schade da sich durch ein derartiges verhalten immer mehr datenmuell im spiel ansammelt, mal nicht zu reden von mods oder groesseren scripten.
vielleicht binich einfach wirklich zu altbacken, aber irgendwie stoert mich sowas und wie gesagt null ist einfach nicht 0, ausser wir reden hier von c pointern, dann ist das resultat ziemlich das gleiche.
Gruss
Linus
merci für die Ideen. ich werde da ich ein paar globale Arrays brauche versuchen möglichst viel auf objecte zu verlagern und diese dann beim deinstall zu killen, sollte damit recht wenig übrigbleiben.
mal schauen, ist aber eigenlich schade da sich durch ein derartiges verhalten immer mehr datenmuell im spiel ansammelt, mal nicht zu reden von mods oder groesseren scripten.
vielleicht binich einfach wirklich zu altbacken, aber irgendwie stoert mich sowas und wie gesagt null ist einfach nicht 0, ausser wir reden hier von c pointern, dann ist das resultat ziemlich das gleiche.
Gruss
Linus
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
Das Killen von Objekten wird nichts bringen, da gekillte Objekt weiter existieren. Man kann Variablen weiterhin auslesen. Das sieht man gut am Killed-Signal. Aber ich denke auch gekillte Objekte werden irgendwann fallen gelassen.linus_org wrote:Salu,
merci für die Ideen. ich werde da ich ein paar globale Arrays brauche versuchen möglichst viel auf objecte zu verlagern und diese dann beim deinstall zu killen, sollte damit recht wenig übrigbleiben.
mal schauen, ist aber eigenlich schade da sich durch ein derartiges verhalten immer mehr datenmuell im spiel ansammelt, mal nicht zu reden von mods oder groesseren scripten.
vielleicht binich einfach wirklich zu altbacken, aber irgendwie stoert mich sowas und wie gesagt null ist einfach nicht 0, ausser wir reden hier von c pointern, dann ist das resultat ziemlich das gleiche.
Gruss
Linus
Die beste Möglichkeit ist immer noch das Schreiben von "null" in die Variablen und hoffen, dass der Speicher freigegeben wird.
Ich würde die Namen der Variablen in das T-File schreiben, wie hier beim Prospektor:
Code: Select all
<t id="5000">5028</t>
<t id="5001">prospector.mineral.to.work</t>
<t id="5002">prospector.asteroid.break.amount</t>
<t id="5003">prospector.asteroid.break.yield.max</t>
<t id="5004">prospector.work.position</t>
<t id="5005">prospector.work.sector</t>
<t id="5006">prospector.work.mineral</t>
<t id="5007">prospector.nav.beacon</t>
<t id="5008">prospector.collected.mineral.1500</t>
<t id="5009">prospector.collected.mineral.1501</t>
<t id="5010">prospector.collected.mineral.1502</t>
<t id="5011">prospector.collected.mineral.1503</t>
<t id="5012">prospector.broken.asteroid.1500</t>
<t id="5013">prospector.broken.asteroid.1501</t>
<t id="5014">prospector.broken.asteroid.1502</t>
<t id="5015">prospector.broken.asteroid.1503</t>
<t id="5016">prospector.promotion</t>
<t id="5017">prospector.mobile.drilling.system</t>
<t id="5018">prospector.jump.max</t>
<t id="5019">prospector.jump.energy</t>
<t id="5020">prospector.payment</t>
<t id="5021">prospector.auto.rename</t>
<t id="5022">prospector.auto.rename.name</t>
<t id="5023">prospector.auto.rename.number</t>
<t id="5024">prospector.log.file</t>
<t id="5025">prospector.message.modus</t>
<t id="5026">prospector.message.modus.acoustic</t>
<t id="5027">prospector.version.update</t>
<t id="5028">prospector.install.version</t>
0 $End = read text: page=$PageID id=5000
1 $End = string $End to integer
2 $Array.Variable = read text: page id=$PageID, from 5001 to $End to array, include empty=null
Natürlich wäre auch ...
2 $Array.Variable = read text: page id=$PageID, from 5001 to 5028 to array, include empty=null
... möglich, aber so muss man nur noch das T-File ändern.
Gruß
Lucike

-
- Posts: 149
- Joined: Tue, 22. Aug 06, 01:24
Merci für den Tipp lucike
Das mit den gekillten objekten war mir nicht bewusst. Variablen benennung habe ich zum teil schon drin, da ich sichergehen wollte das meine lokalen variablen alle das gleiche "vorzeichen" in diesem fall "Sektor.Takeover." haben. ich denke die weitere benennung mache ich nach deinem schema, wenn feststeht welche auch wirklich bleibt..
Bin halt neu im scripten und muss erstmal ein richtiges gefuehl dafuer bekommen.
Gruss
Linus
Das mit den gekillten objekten war mir nicht bewusst. Variablen benennung habe ich zum teil schon drin, da ich sichergehen wollte das meine lokalen variablen alle das gleiche "vorzeichen" in diesem fall "Sektor.Takeover." haben. ich denke die weitere benennung mache ich nach deinem schema, wenn feststeht welche auch wirklich bleibt..
Bin halt neu im scripten und muss erstmal ein richtiges gefuehl dafuer bekommen.
Gruss
Linus