Stars, Gates & Realities

 
Jede Realität birgt neue Gefahren
Morning greetings, Guest
Monday, 29 Apr 2024
1
1
Wenn das Wörtchen wenn nicht wär...
Hi,


ich mal wieder mit nem neuen Befehl: "Wenn..."

Wenn Befehl x ok, dann weiter (zum nachfolgenden Befehl).
Wenn Befehl x Fehler, dann sprung zu Befehl y.

(Befehl x ist immer der vorhergehende Befehl)


Das sollte die Idee dahinter genügend erklären.
Geht so was???


Sinn würde es machen um (andernorts erwähnt) zB Patroullienflüge machen zu lassen.

1 Hyperflug zu Planet
2 Warten auf Feind (1 Runde)
3 Wenn... (2 ok dann weiter; 2 nicht ok dann zu 5)
4 Besiege (Ziel von Warten auf Feind)
5 Hyperflug zu nächsten Planeten
usw....

mfg


Edited on 12 May 2011, 13:54:34 CEST

Kekse über alles!
Rebus, Thalia, SalSokar, SG-Fan, Gate-User, Syborg und Lord Anubis haben sie gespendet...
2
-
Deine beschrieben Folge ist auch jetzt schon über Umwege möglich.

Befehl 2 nur eine bestimmte Anzahl an Runden ausführen lassen, Befehl 4 bei Fehlschlag überspringen.
3
-
Richtig, nur dann gibts die Fehlermeldung

siehe hier
http://sg-realities.de/forumsource/entries.php?forumID=5&topicID=809&order=DESC


Außerdem ist es nur ein Beispiel. Mann könnte auch sagen

(...im Kampfgetümmel)
3 Warten auf Feind (1 Runde)
4 Besiege (Ziel von Warten auf Feind, 5 Runde)
5 Hyperflug zu Punkt y
6 Wenn... (5 ok dann weiter; 5 nicht ok dann zu 12)
7 Selbstreperatur
8 Sprung zu obersten Befehl
xxx
12 Sublichtflug zu Punkt x
13 Selbstreperatur
14 Hyperflug zu Punkt y
15 Sprung zu obersten Befehl

(Also wenn der Hyperantrieb ausgefallen ist, wird aus der Gefahrensituation mit Sublicht geflogen und Repariert. Wenn fertig dann zum Treffpunkt)
Das geht jetzt ja nicht so...


mfg

Kekse über alles!
Rebus, Thalia, SalSokar, SG-Fan, Gate-User, Syborg und Lord Anubis haben sie gespendet...
4
-
Doch es geht doch so:

(...im Kampfgetümmel)
3 Warten auf Feind (1 Runde)
4 Besiege (Ziel von Warten auf Feind, 5 Runde)
5 Hyperflug zu Punkt y (Wenn fehlschlägt Befehl überspringen)
6 Sublichtflug zu punkt x ( mit zum beispiel max 20 Runden)
7 Selbstreperatur
8 Hyperflug zu Punkt y
9 Sprung zu obersten Befehl


Es wäre sogar weniger Befehle nötig.

Das einzigst, was anders wäre, das hyperraumfähige Schiffe auch ein bischen mit Sublicht rumfliegen, aber es würde ja nichts verändern.
5
-
Ich kann mich hierbei der Meinung von halo und Repli nur anschließen es sind mit außnahme der Mudulbefehle genug Befehle um "inteligentes" agieren der Schiffe im Offlinemodus zu ermöglichen!!
6
-
Das waren 2 Beispiele


Beim 2. habt ihr Recht. Es geht über Umwege.


Aber das 1. schafft man nicht.


Aber gerne noch mal genauer:
Projekt Patroullie

jetzt würde es so aussehen:

1 Hyperflug zu x
2 Warten auf Feind (1 Runde)
3 Besiege (Ziel von Warten auf Feind)
4 Hyperflug zu y
usw...

Problem, wenn da mehr Feinde sind als ich in einer Runde besiegen kann, bleibt unnötig eine angeschlagene Flotte im zu Schützenden Gebiet übrig.

wenn ich:
1 Hyperflug zu x
2 Warten auf Feind (1 Runde)
3 Besiege (Ziel von Warten auf Feind)
4 Sprung zu 2 (5 Runden)
5 Hyperflug zu y
usw...

Bleibt das Problem, das wenn mehr Feinde kommen, als ich in diesen 5 Runden schaffe, siehe oben.
Ansonsten bekomme ich von jedem Schiff in dieser Flotte 5 Runden lang die Meldung "Befehl fehlgeschlagen".
Davon das die Flotte für eine Runde des Patroullienfluges mehrfach so lange braucht als sie eigentlich brauchen sollte, rede ich noch gar nicht...

Mit dem Befehl Wenn... aber:
1 Hyperflug zu x
2 Warten auf Feind (1 Runde)
3 Wenn... (2 ok dann weiter; 2 nicht ok dann zu 6)
4 Besiege (Ziel von Warten auf Feind)
5 Sprung zu 2
6 Hyperflug zu nächsten Planeten
usw....

Fliegt meine Patroullie genau so lange wie sie eben braucht, ohne warten, und wenn Feinde auftauchen kämpft sie so lange bis entweder meine Flotte oder die des Feindes aufgerieben ist.
Zusätzlich gibt es KEINE Fehlermeldungen die mir das Postfach vollmüllen.


und das ist nur mal 1 Beispiel, es wird sicher noch mehr mögliche Anwendungen geben...



Das einzige, was gegen diesen Befehl spricht ist die Umsetzungsmöglichkeit. Denn ehrlichgesagt sehe ich das größte Problem darin, dem Wenn...-Befehl mitzuteilen ob der Befehl davor schiefgelaufen ist oder nicht...


mfg


Addendum (12 May 2011, 15:50:36 CEST):
PS: Übrigends, dieses letzte Beispiel funktioniert auch bei Angriffen auf Planeten mit Basis und evtl. Flotten im Orbit.

Ohne Wenn... würde die Flotte mitten im Kampf abhauen oder so lange im Orbit bleiben bis entweder du oder dein Feind online kommen...

Mit Wenn... bleibt sie so lange wie nötig um "Sieg oder stirb" auszuführen und nachher (wenn möglich) nach Hause zum Reparieren zu fliegen...



Addendum (12 May 2011, 16:07:51 CEST):
PPS:
@Halo

Der Nachteil hierbei ist, das deine GESAMTE Flotte 20 Ticks "verschenkt" hat, durch den Sublichtflug. Diese Ticks würden schon einiges Reparieren.
Mit Wenn... könnte ich zumindest einen Teil der Flotte wieder in den Einsatz schicken. Denn die mit kaputten hyperantrieb können mittels wenn... weiter reparieren und die mit ganzem/bzw. repariertem Hyperrantrieb fliegen wieder in den Einsatz.
Mal ganz von den unnötigen Fehlmeldungen wie:

Hyperflug (Fehlermeldung)
Angriff (evtl. mehrfache Fehlermeldungen)
Hyperflug (Fehlermeldung)
Selbstreperatur

jedes einzelnen hyperunfähigen Schiffes abgesehen (die verlorenen Runden nicht zu vergessen) würde das jetzt nicht gehn...

Kekse über alles!
Rebus, Thalia, SalSokar, SG-Fan, Gate-User, Syborg und Lord Anubis haben sie gespendet...
7
-
Interessante Idee...
Da nähert sich ein Flugplan ja immer mehr der Turing-Vollständigkeit^^

Was du vorschlägst ist im Prinzip ein bedingter Sprung, wobei die Bedingung immer die gleiche ist.
Da ein Befehl nur ein Ziel haben kann, müsste man etwas tricksen, was die anderen Parameter betrifft.

Möglichkeit wäre:
Es wird immer der vorausgegangene Befehl im Flugplan auf Erfolg getestet.
Wenn dieser erfüllt ist, wird nicht gesprungen; wenn er aber nicht erfüllt ist (ob durch Fehler oder etwas anderes), wird gesprungen. Eine umgekehrte Variante (Sprung bei Erfolg) wäre auch denkbar.
Das Ziel des Befehls ist immer der Befehl, welcher angesprungen werden soll.

Das Problem ist:
Ein solcher Befehl nimmt wie der normale Sprung-Befehl eine Sonderstellung ein. Denn im Tick muss er unmittelbar nach einem Befehl ausgeführt werden - der Flugplan kann aus technischen Gründen nicht an einem solchen Befehl stehen bleiben. Ebenso darf der Befehl nicht als Ziel eines anderen Befehls gewählt werden usw.
Das ist für einen normalen Sprung-Befehl bereits alles umgesetzt, doch ist das System eben nur auf diesen einen Sonderbefehl ausgelegt.
Ich müsste da einiges erweitern.

Die Implementierung des eigentlichen Befehls wäre also einfach, nur das drum herum, um ihn auszuführen, macht viel Arbeit.

Was nicht passt, wird passend gemacht,
Wo ein Bug ist, werden Fallen aufgestellt,
Und was nicht geht, bekommt Beine...
8
-
Genauso meinte ich es, ansonsten nimmts überhand.

Nur der Vorhergehende Befehl wird geprüft. Gesprungen wird nur auf einen angegebenen Befehl wenn der vorhergehende fehlschlägt...


...ich seh schon, fast jeder meiner Ergüsse macht dir jede Menge arbeit. Dann lass ich das mal für die nächste Zeit, ok? ^^
;)



mfg

Kekse über alles!
Rebus, Thalia, SalSokar, SG-Fan, Gate-User, Syborg und Lord Anubis haben sie gespendet...
9
-
Vermutlich ist es zumindest vorläufig nicht realisierbar, aber...

Wäre eine Parameterabfrage in dem Wenn-Befehl möglich?
Also beispielsweise, "Wenn Zustand Modul2-Hyperantrieb<80% springe zu Befehl 14" Befehl 14 wäre dann ein Hyperraumsprung, um das Kampfgebiet Richtung Werft zu verlassen.
Oder auch eine Unterscheidung?: Befehl9:"Wenn Lagerraum 'belegt'>200 spinge zu Befehl 28; wenn Lagerraum 'belegt' <= 200 springe zu Befehl 8"
Befehl 8 wäre dann beispielsweise der Abbaubefehl für die geplanten Ressourcensammler.
Mit solchen Unterscheidungen ließen sich aber auch Transportrouten von den Mienenbasen programmieren, wobei das Schiff bei vollem Laderaum zum Werft-/Lagerplaneten abdreht, statt erst alle Mienen abzufliegen.
10
-
@Varden: Soweit werd ich keinesfalls gehen.
Es wäre allein schon Horror, die Eingabemasken für derartige Parameter zu programmieren...

Es wird für ähnliche Aufgaben wie das Einsammeln von Ressourcen noch ein blockierenden Transferbefehl geben. Dieser ist erst erfüllt, wenn die angeforderte Warenmenge im Frachtraum liegt.
Somit kann ein Schiff auf Ressourcen warten, wenn eine Basis sie zum Zeitpunkt seiner Ankunft noch nicht komplett abgebaut hat...

Was nicht passt, wird passend gemacht,
Wo ein Bug ist, werden Fallen aufgestellt,
Und was nicht geht, bekommt Beine...
1




"Stargate" and all related materials are the property of MGM Television Entertainment.
Please read the site's trademark declaration.