Missile Defence System (brauche hilfe)

Hier ist der ideale Ort um über Scripts und Mods für X²: Die Bedrohung zu diskutieren.

Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum

Astrell2k
Posts: 116
Joined: Fri, 13. Feb 04, 19:40
x2

Missile Defence System (brauche hilfe)

Post by Astrell2k »

Ich habe mich vor einigen Tagen mal mit den Editot von X2 beschäftigt und ich muss sagen, er sagt mir zu! Da ich noch den guten alten C64 kenne, aus meinen Jüngeren Tagen ( ich bin 16 ... das war vor gut 6 jahren ... ), sprach mich die Befehlsformatierung sofort zu :D
Es gibts nichts besseres als solch eine Art eine Programm/Script zu erstellen! Und da ich nicht gerade neu bin in diesen Sachen ( habe erfahrung in Java/C64/Visual Basic) hab ich mich gleich hinter die Röhre gehockt und gebüffelt. Tutorials gibts hier ja zum Glück zu genüge und die Befehlsliste/doku finde ich hervorragend.

Nun Plane ich ein Missile Defence System zum einüben.
Meine Idee ist folgende ( wenn es fertig ist sollte es so aussehen: ):

Du käufst dir das Missile Defence System ( MDS ) als Ware(Size M). Dann musst du dir noch die Software dazu kaufen ( MDS Basic ). Die Ware dient aber im Endeffect nur als platzhalter im Laderaum :roll:

Alsoooo ... du installierst dann das Script bzw Startest es zum ersten mal.
Dabei fängt das Script sofort an die Umgebung nach Feindlichen Raketen abzusuchen die auf dich zufliegen. Wird eine Gefunden wird sofort eine Liste(array) erstellt und sucht nach weiteren Raketen. Die Maximale Aufnahmezahl der Liste sollte sich auf 6 Feindliche Raketen beziehen( also Array 0-5)
Sind alle Raketen in der liste eingetragen die auf dich zufliegen wird das MDS Im Laderaum gelöscht und stattdessen eine Moskitorakete erstellt.
Dann feuert die Rakete auf das NÄCHSTGELEGENE Ziel und wartet 1sec ab und erstellt wieder eine rakete und feuert sie auf das nächste Ziel ab ( nicht das gleiche!!)
Sobald alle Ziele in der Liste vernichtet worden sind ( pro Ziel soll nur eine Rakete abgeschossen werden ) wartet das Script 5 Sec, dann sucht es wieder nach Zielen und wenn es nichts mehr gefunden hat erstellt es wieder die MDS Ware im Laderaum die Quasi als "Kontrollpunkt" gilt. Ist keine Ware im Laderaum funktioniert das Script nicht. Weil: wenn der laderaum voll ist kann auch keine Rakete mehr erstellt werden.

1. Jetzt kommt das Problem her da ich keinen Befehl finde der die Entfernung zu einen Objekt von deinem Schiff erkennt und diese in eine Variable stecken kann ( fals doch bitte sagt sie mir :oops: )

2. Dazu kommt auch noch das Problem da ich keinen Weg sehe das der Befehl "find nearest missile aiming to me" immer wieder die Selbe Rakete erkennt und sie mehrmals in die Liste einträgt. Also wollte ich das mit dem ersten Problem verbinden.

Lösungsweg:
Wenn ich das erste Problem lösen kann, könnte ich evtl eine MINDESTdistanz erstellen wo er nach Raketen sucht ... aber vielleicht sind meine Gedanken zu Komplex und ,da man nur aus einer Gewissen Datenbank von Befehlen zugreifen kann, dies noch Unmöglich ist.

Wenn mir jemand Helfen kann bitteschön ^^


Eins noch:
Fals jetzt der Ruf kommt:
"Moment mal, das ist unfair der KI gegenüber da mich nun keine Rakete mehr trifft" möchte ich sagen das ich eine Lösung dafür gefunden habe:

Die Ware an sich wird vielleicht noch von einer GlobVar bekleitet die von 24 Runterzählt jedesmal wenn das MDS aus dem Laderaum entfernt wird.
Ist es bei 0 Angekommen wird das MDS aus dem Laderaum für immer gelöscht und nicht neu erstellt. Dann muss man sich das MDS neu Kaufen und die GlobVar wird wieder auf 24 Gesetzt.
Ergo: Du verschiesst 24 Raketen bzw. du bist vor 24 Raketen beschützt.
Der Preis der MDS Ware soll zusammengesetzt sein von den Preis von 24 Moskito ( Normalpreis + 10% ) und einer Pauschale ( ca. 10k und ein bissl Kleingeld ) Also wäre es im Endeffekt nur eine Erleichterung für dich da du dich nicht mehr darum kümmern musst ( naja, ein wenig noch ;) )


Ich hoffe ich finde Anklang auf mein "Einsteigerprojekt" zum "Aufwärmen" ^^ Meine höchste Priorität ist dies Lösung meines Problems (1.) und eher meine zweite Verbesserungsvorschläge und ähnliches.

Sobald ich damit fertig bin stehe ich für weitere Projekte gerne zur verfügung ^^
ArcaJeth
Posts: 2245
Joined: Mon, 10. Nov 03, 18:22
x3tc

Post by ArcaJeth »

Also für 1. hab ich eine Lösung, bei 2. siehts allerdings schlecht aus :(
6.050 <RetVar> = <RefObj> get position as array
6.044 <RetVar> = <RefObj> get distance to: position array=<Var/Array>
->
$missile.pos = $missile -> get position as array
$distance = THIS -> get distance to: $missile.pos
Astrell2k
Posts: 116
Joined: Fri, 13. Feb 04, 19:40
x2

Post by Astrell2k »

ArcaJeth[D6a] wrote:Also für 1. hab ich eine Lösung, bei 2. siehts allerdings schlecht aus :(
6.050 <RetVar> = <RefObj> get position as array
6.044 <RetVar> = <RefObj> get distance to: position array=<Var/Array>
->
$missile.pos = $missile -> get position as array
$distance = THIS -> get distance to: $missile.pos
Urgs :oops: Das heist ja dann wohl das ich was übersehen hab
"Kopf" vs. "Tischplatte"


Danke für den Hinweis :wink:
Astrell2k
Posts: 116
Joined: Fri, 13. Feb 04, 19:40
x2

Post by Astrell2k »

Hm ... nun stehe ich an dem Punkt da ich lange nicht mehr programmiert habe und schon einiges vergessen habe ...

Variablen kann man ja im eigentlich Programmcode Deklarieren, aber wozu sind die Arguments?
Objekte? GlobVar geht ja ned ...

Bin ich blöde? :lol:
ArcaJeth
Posts: 2245
Joined: Mon, 10. Nov 03, 18:22
x3tc

Post by ArcaJeth »

... da kann ich dir jetzt mal die gepinnten Threads empfehlen, speziell im Scripteditor - Anleitung&Beispiele - United Script Tutorial gibts auch viele Beispiele die dir sicher wieder auf die Sprünge helfen ;) ... ansonsten einfach ausprobieren, viel kaputt machen kannst du nicht :D ... und wenn du nach dem Lesen der Threads und bisschen Stöbern im Forum noch Fragen hast dann gibts hier genug die gern helfen ;)
MaXXL
Posts: 14
Joined: Thu, 27. Nov 03, 17:12
x3

Post by MaXXL »

Zu 2. :Damit er die Rakete nicht noch einmal findet, musst du immer warten bis die Rakete zerstört ist befor du wieder einen Suchdurchlauf beginnst. Das müsste gehen indem du einen Label erstellst (General Commands->Flow Control->Define Label) ihn zum beispiel Rok nennst und ihn vor dem Suchdurchlauf platzierst. Dann eine While abfrage (General Commands-><RetVar/IF> <Expression>) wobei du dann bei <RetVar/IF> while einstellen musst (rot markieren und dann Enter) und dann ürgendwie eine Abfrage ob es die Rakete noch gibt (ich bin nämlich eigentlich kein Script-Profi, aber das was ich bis jetzt geschrieben hab-auser der Gibt es die Rakete noch Abfrage-weis ich zufällig). Die nächsten Zeilen nach der while Abfrage fangen dann ein bisschen weiter hinten an. Das sind die Zeilen die in Kraft treten wenn while korrekt ist. Diese Zeilen werden solange etwas weiter vorne anfangen bis durch ein End (General Commands->Flow Control->End Conditional) dem Script gesagt wird das es hier weitergehen soll wenn while nicht zutrifft. Dann musst du eine Zeile nach der while Abfrage die Zeile Goto Label Rok und danach ein End machen und schon springt das Script nur noch zurück wenn es die Rakete nicht mehr gibt. Jetzt musst du nur noch vor der while Abfrage einen Label definieren und nach der while Abfrage wieder Goto Label *irgentwas* und dann müsste es ungefähr funktionieren. Du musst es nicht genauso machen, aber ich würde es ungefähr so machen. Tschüss, MaXXL
User avatar
Mike.Galaxy
Posts: 896
Joined: Fri, 6. Feb 04, 19:28
x4

Post by Mike.Galaxy »

also, ich bin zwar kein Scripter (noch nich)
aber ein paar allgemeine Hinweise zu der Idee eine Anti-Raketen-Systems hab ich schon:

Mir is klar, dass es hier PRIMÄR ums Auffrischen von Programmierfähigkeiten und weniger um Sinn oder Unsinn des Projekts an sich geht, aber meine bescheidene Meinung für ne PRAKTISCHE Anwendung:

Warum nich das bereits implementierte Raketenwarnsystem mit einbeziehen? Ihr wisst schon, dieses "Achtung! Eine Rakete befindest sich im Anflug".
Weil: Scannvorgang in einer Raumschlacht mit mehr als 3 Schiffen kann ziemlich aufwendig werden! Es gibt unter Umständen ne ganze Menge Raketen, die NICHT das Spielerschiff anvisieren, sondern andere Schiffe!

Das sollte von der Missle-Defense berücksichtigt werden, oder?
Und eine Missile-Defense die jedes mal erneurt werden muß?

Warum nich so:
Missile-Defense Software: teuer, kein Laderaumverbrauch
Spezielles Hardware-SchnellLadesystem für Raks des Typ Moskito:
ne Menge Kohle: bestimmte Menge an Laderaum fest verbaut, bietet Platz für 10 Moskitos

MDSystem ist für 10 Schuß voll einsatzfähig, danach kann aus dem regulären laderaum evtl Moskitos nachgeladen werden (mit Verzögerung, evtl reicht es schon, hierfür keine Schnelltaste zu programmieren, sondern man muß manuell in die Fracht- oder Waffenansicht wechseln und da dann umladen. Wenns hektisch im Kampf is, macht das keine Freude - war Anfangs bei XBTF gasnz schön nervig, als es noch keine Schnelltasten für die Waffenslots gab - oder ich net wusste, daß die existieren :D )

Denkbar wäre - angelehnt an die Subraumkompresssionstechnik beim Laderaum - an eine (preislich angepasste) Erweiterungsmöglichkeit det Kapazität des Schnellladesystems für das MDS ...

Nur so nen paar Überlegungen :roll:

BTW: ne realtiv einfache, aber wirksame (und bereits vorhandene) Rak-Abwehr hat man übrigens mit den Geschützkanzeln. Fighten inner Nova is so schon (fast) zu safe!
"Space is big, really BIG!"
"Jetzt zeige ich Ihnen wie ein Borone kämpft... hier ist mein Schiff."
"Der zweite Stern von rechts, bis zum Morgengrauen"*
* "Kirk am Ende von ST VI - Das unentdeckte Land"
Astrell2k
Posts: 116
Joined: Fri, 13. Feb 04, 19:40
x2

Post by Astrell2k »

-- Automatiken, die dem Spieler auch teilweise das Einstellen von Parametern abnehmen. Die werden schlicht und simpel teuer sein müssen -- Luxus kostet. -- Pro zu steuerndem Objekt mind. 400k - 500k.
bei --- (...)
Zitat von M.Kessel


Und naja was die raketen betrifft ... der befehl heist nicht ohne grund
"find nearest missile aiming to me"

Andere Raketen sind nicht betroffen.

Missile-Defense Software: teuer, kein Laderaumverbrauch
Spezielles Hardware-SchnellLadesystem für Raks des Typ Moskito:
ne Menge Kohle: bestimmte Menge an Laderaum fest verbaut, bietet Platz für 10 Moskitos
Mein System wird ÄHNLICH sein, es soll auch nicht ZU Einfach werden. Es ist Luxus, und sollte auch LUXUS Bleiben und nicht zum NORMALEN Übergehen ;)

Derzeit habe ich probleme mit True/false Abfragen aber das habe ich mittlerweile auch hinbekommen. Nervige Sachen das Scripten, nix gegen die Formatierung des Syntaxes, aber himmelherrgott ... ich drück mir hier beim suchen des richtigen befehls die Finger wund! Wenn ich bedenke das ich mal alle Visual Basic Befehle auswendig kannte und nun nur auf eine Beschränkte Datenbank zugreifen kann dreht sich mir der Magen um...

1.4 Komm endlich! Ich will mehr Befehle! Wie soll man das etwas vernünftig Optimieren?

/edit
Ich überlege eh ob das System nur bei Zivilschiffen einsetzbar sein kann. Wobei mich die Vorstellung eines Großkampfschiffes mit Automatischer AntiRaketen Vorrichtung Reizt
*idee* Eine Raketen Abschuss Vorrichtung die auch Raketen abschiesst die auf andere "eigene" Schiffe zufliegen.

Wobei ... ich weis schon was ich als nächstes Mache. Aufgrund der Tatsache das man alleine Mit einen voll ausgerüsteten Zerstörer nur wenig Chancen hat gegen einen anderen Zerstörer, will ich ein "Playership" Script schreiben was die Waffeneffizienz um 50% Steigen lässt.
Überall wird immer gepriessen "Das haben wir niemals erwartet" "Das war hervoragende Arbeit" "Ein Wunder das du das geschafft hast"
Ergo: Der Pilot (Spieler) muss was drauf haben, Ergo ist er normalen Piloten Überlegen, Ergo muss sich das auch irgendwie äußern. Vielleicht kürze ich das auch nur auf 20-30% Runter, man wills ja nicht übertreiben.

Ich quelle über vor Ideen Oo

Frage: Jemand Interessiert an einem Bentusi Handelsschiff das aus der Homeworld Reihe stammt? Ich glaube den 3D Editor den man dafür braucht hat mein Vater in seiner Sammlung.
Yeah ... Kreuzung aus X2 und Homeworld.
X2 - Die Legende des Sajuuk-khars ^^

/edit2
Ich hab jetzt erst gepeilt was du sagen willst. Aber dein Post scheint leicht überflüssig da ich es ja genau SO machen wollte ...
Astrell2k
Posts: 116
Joined: Fri, 13. Feb 04, 19:40
x2

Post by Astrell2k »

Urgs, ich habe probleme wegen Schleifen!
Wie kann ich ein Script so zum Laufen Bringen das, wenn ich es mit R Aktiviere, es ewig durchläuft bzw geht das Überhaupt? Wenn es nicht geht wie dann?

Ich habe gerade mein Script so ähnlich gestaltet.
(erste zeilen aufgrund von Scriptinterner Planung gelöscht)

Code: Select all

003   Label.wdh:
004 Ist eine Rakete unterwegs zu mir? Stecke das Objekt in missile.SAD
005 (warte 1sec) Wenn nein, dann springe zu label.wdh
006 ansonsten
007 Lösche 1 Artefakt aus Laderaum (Vorrübergehend)
008 Mache 1 Moskito in Laderaum
010 Starte Moskito 
011 mache 1 Artefakt in Laderaum
012   rakete.exist (label)
013 Existiert missile.SAD noch? Wenn ja ...
014 Springe zu label rakete.exist
015 wenn nicht ...
016 warte 1 Sec
017 springe zu label.wdh.
018 end
019 end 
Anm. d. Red.: bitte Code immer in Codetags setzen liest sich besser :)
Soweit glaube ich richtig, wenn ein fehler in der Logic vorliegt bitte melden. Das ist ein TESTSCRIPT. Das Fertige sieht GANZ Anders aus.
Ich habe eigentlich überall eine Schleife Eingebaut, durch GOTO <LABEL>, aber trotzdem läuft das Script nicht ununterbrochen im Hintergrund! Warum?
Ich weis das ein fehler vorliegt und ich weis das er Simpel ist, aber Ich komm VERDAMMT ( Zensiert ) nicht darauf!!!! *hirnblockade*
User avatar
Mike.Galaxy
Posts: 896
Joined: Fri, 6. Feb 04, 19:28
x4

Post by Mike.Galaxy »

Automatiken, die dem Spieler auch teilweise das Einstellen von Parametern abnehmen. Die werden schlicht und simpel teuer sein müssen -- Luxus kostet. -- Pro zu steuerndem Objekt mind. 400k - 500k.
bei --- (...) Zitat von M.Kessel
ganz meine Meinung :)
Und naja was die raketen betrifft ... der befehl heist nicht ohne grund
"find nearest missile aiming to me"

Uups, da passt ein weiteres Zitat vom Kesselchen:
"Wer lesen kann ist klar im Vorteil!"
hab ich echt überlesen *vor Scham im Boden versink* :oops:

Missile-Defense Software: teuer, kein Laderaumverbrauch
Spezielles Hardware-SchnellLadesystem für Raks des Typ Moskito:
ne Menge Kohle: bestimmte Menge an Laderaum fest verbaut, bietet Platz für 10 Moskitos

Mein System wird ÄHNLICH sein, es soll auch nicht ZU Einfach werden. Es ist Luxus, und sollte auch LUXUS Bleiben und nicht zum NORMALEN Übergehen ;)
Naja, wieso nich "normal" ? Solangs relativ Teuer is, überlegt man sichs eh 2x ob es sich lohnt, daß in JEDES Schiff einzubauen.
Aber so ein "Wegwerfsystem" find ich nich so gut (is halt meine Meinung, aber schließlich is es DEIN Script :wink: , da kannst Du machen, was Du willst :)
Ich hab jetzt erst gepeilt was du sagen willst. Aber dein Post scheint leicht überflüssig da ich es ja genau SO machen wollte
naja, FAST so :wink:
"Space is big, really BIG!"
"Jetzt zeige ich Ihnen wie ein Borone kämpft... hier ist mein Schiff."
"Der zweite Stern von rechts, bis zum Morgengrauen"*
* "Kirk am Ende von ST VI - Das unentdeckte Land"
Astrell2k
Posts: 116
Joined: Fri, 13. Feb 04, 19:40
x2

Post by Astrell2k »

Astrell2k wrote:Urgs, ich habe probleme wegen Schleifen!
Wie kann ich ein Script so zum Laufen Bringen das, wenn ich es mit R Aktiviere, es ewig durchläuft bzw geht das Überhaupt? Wenn es nicht geht wie dann?

Ich habe gerade mein Script so ähnlich gestaltet.
(erste zeilen aufgrund von Scriptinterner Planung gelöscht)

Code: Select all

003   Label.wdh:
004 Ist eine Rakete unterwegs zu mir? Stecke das Objekt in missile.SAD
005 (warte 1sec) Wenn nein, dann springe zu label.wdh
006 ansonsten
007 Lösche 1 Artefakt aus Laderaum (Vorrübergehend)
008 Mache 1 Moskito in Laderaum
010 Starte Moskito 
011 mache 1 Artefakt in Laderaum
012   rakete.exist (label)
013 Existiert missile.SAD noch? Wenn ja ...
014 Springe zu label rakete.exist
015 wenn nicht ...
016 warte 1 Sec
017 springe zu label.wdh.
018 end
019 end 
Anm. d. Red.: bitte Code immer in Codetags setzen liest sich besser :)
Soweit glaube ich richtig, wenn ein fehler in der Logic vorliegt bitte melden. Das ist ein TESTSCRIPT. Das Fertige sieht GANZ Anders aus.
Ich habe eigentlich überall eine Schleife Eingebaut, durch GOTO <LABEL>, aber trotzdem läuft das Script nicht ununterbrochen im Hintergrund! Warum?
Ich weis das ein fehler vorliegt und ich weis das er Simpel ist, aber Ich komm VERDAMMT ( Zensiert ) nicht darauf!!!! *hirnblockade*
Wollte es nochmal zeigen, da mein Doppelpost anscheinend überlesen wurde ^^° Fals der Syntax zu ungenau ist kann ich auch das Original reinposten, dauert aber ne weile da (noch) kein Originalscripte existiert ;)

Return to “X²: Die Bedrohung - Scripts und Modding”