[Skript][X3TC v.2.1] Sprungmenü v1.0 vom 22.09.2009

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

User avatar
Quonox
Posts: 132
Joined: Wed, 16. Apr 08, 19:11
x4

[Skript][X3TC v.2.1] Sprungmenü v1.0 vom 22.09.2009

Post by Quonox » Sun, 13. Sep 09, 21:32


Dieses Script wird nicht länger als Download angeboten.



******************
Deinstallation

******************


Deinstallieren:
- ein deinstallieren bringt nicht das "modified" weg, das Geschenk bleibt dem Spielstand erhalten
- im freien All shift und c drücken, sofern die Steuerung nicht verändert wurde (shift ist die Hochstelltaste mit der man Großbuchstaben tippen kann solange diese gedrückt ist)
- s drücken um in den Scripteditor zu gelangen
- die Zeile "Script Editor" sollte markiert sein, wenn ja, dann einfach Enter drücken oder mit der Maus draufklicken
- nun zeigen sich viele Skripte alphabetisch geordnet
- nach unten navigieren bis "uninstall.chan.sprungmenu" erreicht wird
- nicht draufklicken und schon gar nicht drinn rummfummeln
- einfach nur die Zeile markiert lassen (hellgrauer hintergrind der Zeile)
- dann r drücken es öffnet sich ein Fenster und dann 2 mal enter drücken
- ist dies getan ist man wieder im Editormenü und uninstall.chan.sprungmenu ist immernoch hellgrau unterlegt
- nun die Taste Entf drücken und das löschen dieses Skripts bestätigen
- einwenig nach oben navigieren bis "setup.chan.hotkey.sprungmenue"
hellgrau unterlegt ist
- diesmal nur Entf drücken und bestätigen
- weiter nach oben bis "chan.sprungmenue" und "chan.sprung.start" mit Entf löschen
- im TC-Verzeichnis zu dem Ordner "t" navigieren und die 7050-L044.xml sowie die 7050-L049.xml löschen.
Last edited by Quonox on Thu, 26. Aug 10, 12:05, edited 20 times in total.

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

Post by ScRaT_GER » Sun, 13. Sep 09, 22:27

1. Der Sound/Anzeige, dass Batterien fehlen, der Sprung wird halt einfach nicht ausgeführt.
Das musst du wohl oder übel manuell machen, d.h. erstmal mit dem Befehl
"<RetVar/IF> <RefObj> -> needed jump drive energy for jump to sector <Var/String>"
die Anzahl der EZ herausfinden und dann überprüfen ob genug im Frachtraum sind. Wenn ja, springen, wenn nein, Sound abspielen und beenden.
2. Der Countdown läuft hier durch Sinza nicht schneller (keine Ahnung ob ich das hinbekomme).
Das ist normal.
3. Nach dem Sprung hat man ein paar Sekunden nicht die Höchstgeschwindigkeit. (das liegt aber an dem Sprungbefehl selber nicht am Kode des Scripts, muss ich schaun/fragen ob man das anders lösen kann)
Ist glaube ich auch normal.

5. Ich muss noch lernen, wie ich meine globalen Variablen lösche falls ein Nutzer das Script nicht mehr will. Also vorsicht noch keine Deinstallation möglich.
Einfach die globale Variable auf "null" setzen, dann ist sie weg.
6. Das Flottenschiff kann man momentan nur über die Galaxiekarte auswählen, ich würde es gern über die Besitztümerliste hinzufügen.
Das geht nicht. Du kannst dir höchstens eine eigene erstellen.

Zum Code:
Dort sind keine groben Fehler drin. Du könntest bei den Schleifen noch waits einbauen - ist kein Muss, aber es macht Sinn das einfach bei jeder Schleife zur Sicherheit zu machen (wenn dein Skript nicht zeitintensiv ist).
Ansonsten kann man es durchaus so machen, wie du es gemacht hast.

Das Setupskript ist einwandfrei, das Uninstallskript sollte da eigentlich kein Problem sein. Einfach alle verwendeten globalen Variablen auf "null" setzen und den Hotkey löschen.

MfG,
ScRaT

User avatar
Quonox
Posts: 132
Joined: Wed, 16. Apr 08, 19:11
x4

Post by Quonox » Mon, 14. Sep 09, 19:46

Hallo ScRaT_GER,

vielen Dank für deine Hilfe.

Hallo auch an alle anderen :P

- zuwenig Energiezellen werden nun sprachlich erwähnt
- die fehlende Sprungsoftware wird leider nicht ausgeben, da ich die ID nicht finden kann, nur über <RetVar/IF> get text id: ware=<Var/Ware> aber da hat man ja nur den Namen nicht dass das Teil fehlt...
- uninstall ist fertig alle Variablen und der Hotkey sind nach dem Start des Skripts weg und kommen auch nicht wieder ^^
- ich hab auch, wie empfohlen, waits eingebaut nur wusst ich nicht genau wohin und wie lange die warten lassen sollen, also in der While wäre ja ähhh doof, da sich das pro i+ summiert

User avatar
Ponder
Posts: 1585
Joined: Wed, 19. Nov 08, 15:58
x3tc

Post by Ponder » Mon, 14. Sep 09, 19:51

Die waits müssen glaub ich in die Schleife und 1ms sollte glaube ich auch reichen. (Ich machs zumindest immer so xD)
Too geek for real life.

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

Post by ScRaT_GER » Mon, 14. Sep 09, 20:03

- die fehlende Sprungsoftware wird leider nicht ausgeben, da ich die ID nicht finden kann, nur über <RetVar/IF> get text id: ware=<Var/Ware> aber da hat man ja nur den Namen nicht dass das Teil fehlt...
Meinst du mit Sprungsoftware den Sprungantrieb?
Wenn ja, dann brauchst du nur die ID des Sprungantriebes und die ID eines Textes (z.B. "nicht installiert"). Beide IDs findest du, wenn du dir den X3 Editor 2 von doubleshodow installierst und dort unter Plugins den "Text Ressource Editor" öffnest.
eg und kommen auch nicht wieder ^^
- ich hab auch, wie empfohlen, waits eingebaut nur wusst ich nicht genau wohin und wie lange die warten lassen sollen, also in der While wäre ja ähhh doof, da sich das pro i+ summiert
Wie Schaf123 richtig gesagt hat, gehören die waits in die Schleifen. Dabei reicht auch 1 ms, da es nur darum geht, dass Unterbrechungspunkte (interrupts) vorhanden sind (alle Befehle mit "@" Zeichen).
Bei solchen kleinen Arrays bemerkt man die 1 ms gar nicht und eigentlich sollte es auch kein Problem darstellen sie vollkommen weg zu lassen.

Ach, übrigens: "$i = $i + 1" funktioniert zwar wunderbar, aber als fauler Skripter wird dir "inc $i=" wahrscheinlich besser gefallen (und es ist besser lesbar).

MfG,
ScRaT

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

Post by Gazz » Mon, 14. Sep 09, 20:05

Radio Eriwan sagt: Im Prinzip ja.

Bei Menüs oder anderem Hotkeykram der sowieso nur direkt vom Spieler ausgeführt wird ist es völlig wurscht ob das Menüscript wegen ein paar Schleifen 1 Frame Extrazeit braucht.
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
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike » Mon, 14. Sep 09, 21:10

Gazz wrote:Bei Menüs oder anderem Hotkeykram der sowieso nur direkt vom Spieler ausgeführt wird ist es völlig wurscht ob das Menüscript wegen ein paar Schleifen 1 Frame Extrazeit braucht.
Genau. In Menüs baue ich überhaupt keine "Waits" ein. Ich wüsste auch nicht wozu, wenn die Schleifen noch recht klein sind.

Ansondten ist der Arbeitsablauf schon mal gut durchdacht, sowie die Möglichkeiten.

Gruß
Lucike
Last edited by Lucike on Mon, 14. Sep 09, 21:12, edited 1 time in total.
Image

User avatar
Quonox
Posts: 132
Joined: Wed, 16. Apr 08, 19:11
x4

Post by Quonox » Mon, 14. Sep 09, 21:11

Danke für die Tips Leute....

ich werd das noch ändern um bald die Beta abzuschließen aber da fehlt ja noch so einiges. Ohne t Script wird das z.B. immer eine Beta bleiben hab ich beschlossen.
Das nächste Skript wird auf jedenfall gleich mit dem Textfile erstellt, sonst muss ich ja alles dreimal tippen, aber so lassen kann man das auf keinen Fall.

Ach und ich hoffe, dass das jemand nutzt und vielleicht Verbesserungen oder Änderungen vorschlägt. Oder wenigstens ein Feedback, ob das gut nutzbar ist oder sinnlos.

User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike » Mon, 14. Sep 09, 21:19

Ich würde das Menü vielleicht anders aufbauen. Vielleicht gefällt dir's ja.

Sprung zu einem Schiff
- Schiff hinzufügen oder entfernen -
Argon Colossus
Argon Merkur

Sprung zu einem Tor
- Tor hinzufügen oder entfernen -
Nord Tor Argon Prime
Süd Tor Wolken der Atreus

Sprung zu Koordinaten
- Koordinaten hinzufügen oder entfernen -
Linie der Energie (X 12 km, Y 5 km, Z -10 km)

Gruß
Lucike
Image

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

Post by ScRaT_GER » Mon, 14. Sep 09, 21:39

Also ich fänd es so wie es Lucike vorgeschlagen hat ganz schön. Dann bräuchte man auch keine Beschränkung auf 10 Tore, o.ä.

Wobei mir da sowieso noch einfällt, dass du das mit den Toren deutlich einfacher lösen kannst, indem du einfach im folgenden Code $tmpText direkt durch das Tor-Objekt ersetzt:

Code: Select all

"add custom menu item to array $jmpMenu: text=$text returnvalue=$tmpText"
Für so ein kleines Menü ist das Label "end" auch nicht wirklich von Nöten, da dieses ja einfach nur "return null" ausführt. Das kannst du auch gleich hinschreiben, da sparst du eine Zeile. ;)


MfG,
ScRaT

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

Post by Gazz » Mon, 14. Sep 09, 21:47

Ich käme nie auf die Idee, auf "exit" zu navigieren und zu klicken wenn ESC doch so viel direkter ist.

Und Menüs, die sich nicht mit ESC schließen lassen, werden schnell lästig.
Wenn ich gerade beschossen werde und erstmal suchen muß wie ich aus dem depperten Menü wieder rauskomme... Brrrrr.
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, 14. Sep 09, 22:23

Wenn ich gerade beschossen werde und erstmal suchen muß wie ich aus dem depperten Menü wieder rauskomme... Brrrrr.
Ja, stimmt.

Ich würde in Untermenüs (und in allen anderen auch) immer für den Zurück-Knopf den Rückgabewert -1 nehmen um so wieder zum Hauptmenü zurückkehren. Denn wenn man ein Menu mit ESC verlässt ist bei

Code: Select all

$ret = open custom menu...
$ret immer -1.

Ein "Beenden Knopf" (aber dann wenigstens in der richtigen Sprache! ;) ) finde ich trotzdem gut, denn vielleicht spielt nicht jeder nur mit der Tastatur.

MfG,
ScRaT

User avatar
Quonox
Posts: 132
Joined: Wed, 16. Apr 08, 19:11
x4

Post by Quonox » Mon, 14. Sep 09, 23:09

Hallo,

also ich hab mir gedacht, es gibt Maus und Keyboardnutzer und wenn ich das Exit da reinstopf, dann kann sich jeder aussuchen, wie er es handhabt.
Die einen nehmen Esc die anderen klicken auf das X und es gibt welche die die immer ganz unten einen Ausgang suchen.
Ansonsten wird das Menü nach dem Klick für einen Sprung eh automatisch geschlossen.
Das ja alles funktioniert, lass ich es auch drinn ^^

Ok, das im Skript das return null geht wusst ich nicht, aber ich steck ja noch am Anfang.

Zu Lucikes Vorschlag,
Also die Idee gefällt mir schon. Mein Menü war so gedacht. Der Nutzer öffnet das Menü klickt auf den gewünschten Link und schwupps der Ladevorgang ausgeführt. Dem Tastaturnutzer bietet sich die feste Reihenfolge an. Also Hotkey 6x Pfeil nach unten und der 5. Savepunkt wird genutzt.
Natürlich bin ich Mausbenutzer und kenn die Gewohnheiten der Tastaturnutzer nicht, aber ich wollt für später mal sehen. ob ich da irgendwie Zahlenkürzel vor die Links setzen kann, so wie in der Kommandokonsole. Auch wollte ich das Menü dynamisch bauen. Also ner Nutzer stellt im Setup ein wieviel Savepunkte er möchte und demnach ändert sich die Anzahl der Links automatisch.

Nun mit deinem Vorschlag, denke ich, dass ich vielleicht beides mache und den Nutzer das "Design" wählen lasse.


Aber erstmal hat sich ein anderes Problem aufgetan....
Ich nutze Var/Warpgate...das führt dazu dass man auch die Terratore anwählen kann.
Problem (1) Wenn man den Jump nutzt ist die Geschwindigkeit nach dem Jump für ein parr Sekunden eingefroren. Springe ich in die Terra Sektoren, bleibt das so bis zum nächsten Sprung oder andocken.

Problem (2) tritt auf, wenn ich Var/Jumpdrive Gate nutze. Da kann man nicht im Setup die Tore einstellen, wenn man nicht genügend EZ an Bord hat. Hier ist der Sprungantrieb aber unrelevant, komisch. Auch hier ist die Geschwindigkeit ein paar Sekunden nicht änderbar.

Problem (3) wäre Var/Sektor das Springt man automatisch in jeden Sektor zu 0,0,0 Aber hier kann man sofort jede gewünschte Geschwindigkeit einstellen. Wehe dem es gibt irgendwo Objekte auf 0,0,0 (Erde=tot zu 100%)
Nur mit dieser Einstellung kommt man nach Aldrin!!!

Ich finde leider keine weiteren Möglichkeiten.

Meine Ideen
zu 1. Terrasektoren sperren
zu 2. Irgendwie Ezs vorgaukeln, also z.b. beim Setup einen Transporter voller EZs + Sprungantrieb als Ausgangsschiff nehmen
zu 3. Versuchen die Koord für das nächste Tor zu bekommen (Terra offen lassen?)

Also ich kann mich glaube nur für Lösung 3 begeistern, wegen der Geschwindigkeit & Aldrin. Frag mich nur, weil es ja Original nicht geht ob ich die Terrasektoren verbieten soll. Aber dazu muss ich erstmal schaun ob ich das nächtgelegenste Tor damit erreichen kann.

Oder anders, ich lasse mir die Koords des Tores geben, welches mit Var/Warpgate ausgesucht wurde. Berechne mühsam x und z, je nach Himmelrichtung des Tores um das Schiff ein paar Meter vorm Tor auftauchen zu lassen. Also praktisch ein Sprung zu bestimmten Koordinaten bei dem man dann gleich die volle Geschwindigkeit einsetzen kann und der Eindruck entsteht man sei direkt aus diesem Tor gekommen.
Lohnt sich die ganze Mühe? Wenn ich das überhaupt hinbekomme...
Naja, immer auf 0 zu springen ist schlecht siehe Erde. Eine vom Spieler gewählte Position zu speichern ist ebenfalls schlecht, heute macht er das Setup und morgen steht dort eine Fabrik oder da fliegt grad ein Schiff...wie peinlich...

Edit:
Ha, ich hab ne Lösung bei der eventuell sogar Sinza den Countdown beschleunigt.....
Ähhh....ich muss mal kurz ins Spiel ^^.....

ScRaT_GER wrote:
....
Ein "Beenden Knopf" (aber dann wenigstens in der richtigen Sprache! ;) ) finde ich trotzdem gut, denn vielleicht spielt nicht jeder nur mit der Tastatur.

MfG,
ScRaT
Jo Sprache kommt alles mit dem Textfile....aber erst muss es funktionieren, wie ich es mag.

Ja ich lasse die Maus eigentlich nie los nur fürs Numpad (FCC nutzung etc.) aber die Maus hat ja auch 6 Tasten von der ich nut 5 nutze. In der anderen Hand habe ich ein Gamepad mit für meine Belange eingestellten Tasten. Der Daumen benutzt alleine schon 6 Tasten und könnte eigentlich 10 Nutzen aber da bin ich zu grobmotorisch. Die andern Finger haben auch ihre speziellen Tasten.
Allerdings hab ich auch 2 halbtaube Finger d.h. wo kein richtiges Gefühl drinn ist kann man nicht richtig damit Arbeiten. Also fällt die Tastatur schon aus für das Game.

User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike » Tue, 15. Sep 09, 17:23

Chandera wrote:Nun mit deinem Vorschlag, denke ich, dass ich vielleicht beides mache und den Nutzer das "Design" wählen lasse.
Beeile dich, sonst bin ich schneller. Ein Gundgerüst dafür habe ich schon. ;)

http://forum.egosoft.com/viewtopic.php?t=217646

Gruß
Lucike
Image

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

Post by Gazz » Tue, 15. Sep 09, 17:42

ScRaT_GER wrote:Ein "Beenden Knopf" (aber dann wenigstens in der richtigen Sprache! ;) ) finde ich trotzdem gut, denn vielleicht spielt nicht jeder nur mit der Tastatur.
Ja, aber wenn man mit der Maus werkt, dann kann man genausogut den "Schliessen" Knopf benutzen, der auf so einem Menü standardmäßig vorhanden ist. Guckst du rechts oben. =)

Und wenn man den Knopf "exit" mit der Tastatur anwählt kann man auch gleich ESC benutzen.

Aber mir tut der Extrabutton auch nicht weh also *shrug*.
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 » Tue, 15. Sep 09, 17:59

Es könnte allerdings bei manchen Menüs schwierig werden, wenn man keinen "Beenden" Button zum Schließen des Menüs verwendet.
Dies ist der Fall bei Menüs die die neuen "Value Selections" verwenden.
Wenn man hier einen Button verwenden würde, bekäme man als Rückgabewert des Menüs ein Array, aus dem man dann die Auswahl auslesen kann.
Wenn man so ein Menü mit ESC schließt bekommt man nur ein -1 als Rückgabewert.
Von daher sollte man wissen wann man ihn weglassen kann und wann nicht.

MfG,
ScRaT

User avatar
Quonox
Posts: 132
Joined: Wed, 16. Apr 08, 19:11
x4

Post by Quonox » Tue, 15. Sep 09, 20:09

Lucike wrote:
Beeile dich, sonst bin ich schneller. Ein Gundgerüst dafür habe ich schon. ;)

http://forum.egosoft.com/viewtopic.php?t=217646

Gruß
Lucike
Ach nee, mach nur, ich komm mit dem Sprung nicht mehr weiter.

Wie beschrieben, ist das alles Mist, was ich gemacht hab. Wenn ich das Spielerschiff aus einem Tor rauskommen lasse, dann friert die Geschwindigkeit einbissl ein manchmal auch ewig oder bei Var/Sektor lande ich xyz = 0.
Ich hab dann noch put into environment bis zum abwinken getestet aber der kommt auch dort nur in 0,0,0 raus.
Dann kam ich auf folgende Idee, aber schützt auch nicht vor Kollision.

Code: Select all

$test = [SECTOR]->get user input: type={Var/Warpgate}, title='Wähle Position'
 
$tmp = $test->get position as array
$x = $tmp[0]
$y = $tmp[1]
$z = $tmp[2]
$sektor = $test->get sector
 
$sektAlt = [PLAYERSHIP]->get sector
[PLAYERSHIP]->put into environment $sektor
while $sektor != $sektAlt 
  $sektAlt = [PLAYERSHIP]->get sector
   
  = wait 1 ms
end
 
= wait 695 ms
 
[PLAYERSHIP]->set position: x=$x y=$y z=$z
 
return null
Jetzt fragt sich bestimmt jeder warum 695 Millisekunden warten. Weil bei mir, nach dem Sprung, der set positions Befehl erst nach Ablauf dieser Zeit funktioniert. Bei 690 ms wird kein set pos durchgeführt
[ external image ]

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Tue, 15. Sep 09, 20:39

Chandera wrote:Jetzt fragt sich bestimmt jeder warum 695 Millisekunden warten. Weil bei mir, nach dem Sprung, der set positions Befehl erst nach Ablauf dieser Zeit funktioniert. Bei 690 ms wird kein set pos durchgeführt
hast du es schon mit force position probiert?
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 ;)

User avatar
Quonox
Posts: 132
Joined: Wed, 16. Apr 08, 19:11
x4

Post by Quonox » Tue, 15. Sep 09, 21:04

UniTrader wrote:
hast du es schon mit force position probiert?
Ja, gleich nachdem ich auf der gewünschten Position bin werde ich nach 0,0,0 geportet.

Manchmal sieht man das gar nicht weil das Bild noch läd.

Ich will doch eigentlich genauso springen, wie mit J

[ external image ]

User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike » Tue, 15. Sep 09, 21:16

Probiere es mal damit:

Code: Select all

001   = [THIS] -> use jump drive: target=Nebel des Elysiums
002   
003   while [SECTOR] != Nebel des Elysiums
004 @ |= wait 100 ms
005   end
006   
007   [THIS] -> set position: x=20000 y=20000 z=20000
008   
009   return null
Direkter Start auf dem Schiff.

Gruß
Lucike
Image

Post Reply

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