Benutzer:Schnobs/Skripte: Unterschied zwischen den Versionen

Aus X-Lexikon
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
Jawoll, ich will's versuchen. Mal sehen, was dabei rauskommt. Als erstes Projekt habe ich mir ein Skript vorgenommen, daß automatisch Satelliten aufstellt (und zerstörte Satelliten ersetzt).
Jawoll, ich will's versuchen. Mal sehen, was dabei rauskommt. Als erstes Projekt habe ich mir ein Skript vorgenommen, daß automatisch Satelliten aufstellt (und zerstörte Satelliten ersetzt).


Zeile 21: Zeile 20:
* welches Muster. Ich persönlich werde meine Satelliten immer über der "Mitte" des Sektors, deutlich oberhalb der Ekliptik, errichten. Andere haben vielleicht andere Vorlieben, das Skript sollte jedenfalls leicht erweiterbar sein.
* welches Muster. Ich persönlich werde meine Satelliten immer über der "Mitte" des Sektors, deutlich oberhalb der Ekliptik, errichten. Andere haben vielleicht andere Vorlieben, das Skript sollte jedenfalls leicht erweiterbar sein.
* Sprungweite (Eingabe 0-n)
* Sprungweite (Eingabe 0-n)
Ist:
Arguments
    * 1: Camp , Var/Station , 'Select Base Camp'
    * 2: ware , Var/Station and Ware , 'Select Satellite'
    * 3: Range , Var/Number , 'max. Jump Range'
Soweit war's einfach. Auf ein Muster habe ich dann doch verzichtet.
001  $PageID = get global variable: name=$pageID.satdrop
002 
003  * Created by Schnobs, July 2007
004  * Automatic Satellite Deployment, startup script
005 
006  $SatType = $ware[0]
Kein Ahnung, wie ich einfach nur die Page ID (Zeiger auf die Textdatei) festlege. Jetzt schreibt das Initscript eben in eine globale Variable; immerhin ist das eine Lösung, die spätere Änderungen vereinfacht.
007 
008  * can we dock at Camp
009  if [THIS] -> is $Camp a enemy
Und nun? Falls das Schiff an der gewählten Station keine Landeerlaubnis besitzt, sollte das Skript sich Ordnungsgemäß verabschieden. Aber wie mache ich das?
010
011 * Is SatType actually a Satellite
Selbes Problem. Prüfen kann ich, aber was dann? Evtl könnte ich das umgehen, indem als Eingabe ohnehin nur '''N'''avigations. oder '''E'''rweiterte Satelliten zur Wahl stehen.




Zeile 29: Zeile 65:
Speichern im Array hätte den Vorteil, daß man mit einem Interface wie bei den Patroullienkommandos einzelne Sektoren hinzufügen und löschen könnte. Ich werde das wohl nicht schreiben, es wäre aber eine nette Erweiterung.
Speichern im Array hätte den Vorteil, daß man mit einem Interface wie bei den Patroullienkommandos einzelne Sektoren hinzufügen und löschen könnte. Ich werde das wohl nicht schreiben, es wäre aber eine nette Erweiterung.


==Satelliten einkaufen==
===Satelliten einkaufen===
Dazu würde ich gerne auf die "Manuellen Handelsbefehle" (Skript im Bonuspack) zurückgreifen. Die Sprungweite würde dann von der Einstellung des Einsatzbereiches übernommen. Ein potentielles Problem besteht darin, daß für ein vernünftiges Einkaufsverhalten bereits einige Satelliten verteilt sein sollten...
Dazu würde ich gerne auf die "Manuellen Handelsbefehle" (Skript im Bonuspack) zurückgreifen. Die Sprungweite würde dann von der Einstellung des Einsatzbereiches übernommen. Ein potentielles Problem besteht darin, daß für ein vernünftiges Einkaufsverhalten bereits einige Satelliten verteilt sein sollten...


==Sektoren überprüfen==
===Sektoren überprüfen===


Hier wirds haarig. Es gibt zwar Anschauungsmaterial, aber die Routinen sehen alle miteinander recht langwierig aus. Das Skript soll aber zeitnah reagieren, d.h., die Sektoren in kurzen Abständen überprüfen...  
Hier wirds haarig. Es gibt zwar Anschauungsmaterial, aber die Routinen sehen alle miteinander recht langwierig aus. Das Skript soll aber zeitnah reagieren, d.h., die Sektoren in kurzen Abständen überprüfen...  
Zeile 38: Zeile 74:
Hmm. Nochmal geguckt, ein Großteil der Komplexität liegt darin, daß die existierenden Skripte jedesmal auch wieder ihren Zuständigkeitsbereich neu berechnen. Die Überprüfung, ob sich in einem Sektor ein Satellit befindet, ist hingegen recht kurz und schmerzlos. Damit ist die obige Frage auch beantwortet: lieber etwas Arbeitsspeicher belegen als jede Minute eine komplexe Berechnung anzustoßen.
Hmm. Nochmal geguckt, ein Großteil der Komplexität liegt darin, daß die existierenden Skripte jedesmal auch wieder ihren Zuständigkeitsbereich neu berechnen. Die Überprüfung, ob sich in einem Sektor ein Satellit befindet, ist hingegen recht kurz und schmerzlos. Damit ist die obige Frage auch beantwortet: lieber etwas Arbeitsspeicher belegen als jede Minute eine komplexe Berechnung anzustoßen.


==Der Rest==
===Der Rest===
Ziel Anfliegen, Satellit erzeugen, ggf zurück zum Parkplatz. Nichts davon sollte ein Problem sein.
Ziel Anfliegen, Satellit erzeugen, ggf zurück zum Parkplatz. Nichts davon sollte ein Problem sein.

Version vom 18. Juni 2007, 18:58 Uhr

Jawoll, ich will's versuchen. Mal sehen, was dabei rauskommt. Als erstes Projekt habe ich mir ein Skript vorgenommen, daß automatisch Satelliten aufstellt (und zerstörte Satelliten ersetzt).

Hier der Plan. Kommentare sind herzlich willkommen.


Funktionsumfang (der Plan)

Eine Heimatbasis im eigentlichen Sinne (Spielerstation) ist nicht erforderlich. Aber das Schiff sollte ein Basislager (beliebige Station) haben, wohin es zurückkehrt, wenn sonst nichts anliegt.

Einstellung des Einsatzgebietes über Sprungweite und Freund/Feind Einstellungen. Das Schiff plaziert Satelliten in allen Sektoren des Einsatzgebietes, und ersetzt verloren gegangene.

Die erforderlichen Satelliten werden (ebenfalls innerhalb des Einsatzgebietes) günstigst eingekauft.

Ablauf (hier brauche ich Hilfe)

Start

Erforderliche Parameter:

  • Heimatbasis (Auswahl von Karte)
  • welche Art Satellit (ebenfalls Auswahl von Karte; evtl zusammen mit der Stationswahl, dann können halt nur Satellitenfabs und HS die Satelliten führen als Heimatbasis dienen)
  • welches Muster. Ich persönlich werde meine Satelliten immer über der "Mitte" des Sektors, deutlich oberhalb der Ekliptik, errichten. Andere haben vielleicht andere Vorlieben, das Skript sollte jedenfalls leicht erweiterbar sein.
  • Sprungweite (Eingabe 0-n)


Ist:

Arguments
   * 1: Camp , Var/Station , 'Select Base Camp'
   * 2: ware , Var/Station and Ware , 'Select Satellite'
   * 3: Range , Var/Number , 'max. Jump Range'

Soweit war's einfach. Auf ein Muster habe ich dann doch verzichtet.

001   $PageID = get global variable: name=$pageID.satdrop
002   
003   * Created by Schnobs, July 2007
004   * Automatic Satellite Deployment, startup script
005   
006   $SatType = $ware[0]

Kein Ahnung, wie ich einfach nur die Page ID (Zeiger auf die Textdatei) festlege. Jetzt schreibt das Initscript eben in eine globale Variable; immerhin ist das eine Lösung, die spätere Änderungen vereinfacht.

007   
008   * can we dock at Camp
009   if [THIS] -> is $Camp a enemy

Und nun? Falls das Schiff an der gewählten Station keine Landeerlaubnis besitzt, sollte das Skript sich Ordnungsgemäß verabschieden. Aber wie mache ich das?

010
011 * Is SatType actually a Satellite

Selbes Problem. Prüfen kann ich, aber was dann? Evtl könnte ich das umgehen, indem als Eingabe ohnehin nur Navigations. oder Erweiterte Satelliten zur Wahl stehen.





Aus Sprungweite und den Freund-Feind-Einstellungen wird dann das Einsatzgebiet berechnet.

Frage: ist es schlauer, die Liste der Sektoren nur einmal zu erstellen und in einem Array zu speichern? Oder lieber den Zuständigkeitsbereich jedesmal neu berechnen?

Speichern im Array hätte den Vorteil, daß man mit einem Interface wie bei den Patroullienkommandos einzelne Sektoren hinzufügen und löschen könnte. Ich werde das wohl nicht schreiben, es wäre aber eine nette Erweiterung.

Satelliten einkaufen

Dazu würde ich gerne auf die "Manuellen Handelsbefehle" (Skript im Bonuspack) zurückgreifen. Die Sprungweite würde dann von der Einstellung des Einsatzbereiches übernommen. Ein potentielles Problem besteht darin, daß für ein vernünftiges Einkaufsverhalten bereits einige Satelliten verteilt sein sollten...

Sektoren überprüfen

Hier wirds haarig. Es gibt zwar Anschauungsmaterial, aber die Routinen sehen alle miteinander recht langwierig aus. Das Skript soll aber zeitnah reagieren, d.h., die Sektoren in kurzen Abständen überprüfen...

Hmm. Nochmal geguckt, ein Großteil der Komplexität liegt darin, daß die existierenden Skripte jedesmal auch wieder ihren Zuständigkeitsbereich neu berechnen. Die Überprüfung, ob sich in einem Sektor ein Satellit befindet, ist hingegen recht kurz und schmerzlos. Damit ist die obige Frage auch beantwortet: lieber etwas Arbeitsspeicher belegen als jede Minute eine komplexe Berechnung anzustoßen.

Der Rest

Ziel Anfliegen, Satellit erzeugen, ggf zurück zum Parkplatz. Nichts davon sollte ein Problem sein.