Fragen zu kOS - von einem Einsteiger

  • Moin Leute,


    ich habe mich heute das erste Mal mit kOS auseinandergesetzt - soweit meine kleinen Programmierkenntnisse das zulassen.
    Allerdings habe ich einen Haufen an Fragen - und mit der Dokumentation bzw. dem Wiki ist es ja leider an einigen Stellen nicht wirklich weit her... zusätzlich zu meinem nicht gerade guten Fach-Englisch...


    Fangen wir mal mit Frage 1 an:
    Ich möchte gerne, so wie ich das für Solarpanels schon hin bekomme, per Script auch meine Antenne bzw meine Schüssel aktivieren. Verstanden habe ich, dass ich dafür den entsprechenden Partnamen aus der *.cfg und die entsprechenden Aktion brauche - nur verstehe ich die Syntax die ich dann verwenden muss nicht... Hat da jemand einen Tipp für mich?

  • Das macht auf mich zwar den Eindruck der naheliegenden alternativen Lösung zu sein. Aber es ist natürlich aus Programmiersicht nicht die elegante Lösung, die möglich ist und wenn ich das in den Ansätzen richtig verstanden habe, soll das sogar relativ einfach sein... Nur verstehe ich den Weg nicht.

  • Ich antworte da jetzt mal darauf, obwohl die Frage schon länger her ist, ich hoffe ich verärgere niemanden damit O:)


    Das ist tatsächlich nicht so einfach sich da reinzufuchsen, wenn Nachfrage besteht, kann ich das auch noch mal erklären, für diejenigen, die aber erst einmal nur die Antennen steuern wollen poste ich jetzt nur die Lösung, die ich speziell für Remote Tech Antennen entwickelt habe und wie man sie verwendet ;)

    Code
    1. FUNCTION Antenna { PARAMETER title. PARAMETER index. PARAMETER target. LOCAL x IS SHIP:PARTSTITLED(title)[index]:GETMODULE("ModuleRTAntenna"). IF target = "off" { IF x:allevents:contains("(callable) deactivate, is KSPEvent") {x:doevent("deactivate").} } ELSE IF target = "on" { IF x:allevents:contains("(callable) activate, is KSPEvent") {x:doevent("activate").} } ELSE { IF x:allevents:contains("(callable) activate, is KSPEvent") {x:doevent("activate").} IF x:allfields:contains("(get-only) dish range, is String") {x:SETFIELD("target", target).} }}


    Die Funktion packt man dann zum Beispiel vor dem eigentlichen Code ins Skript, da sie einmalig geladen werden muss, bevor sie ausgeführt werden kann.
    Ausführen tut man sie dann zum Beispiel so:

    Code
    1. Antenna("Comms DTS-M1", 0, "GSO_CommSat1").

    Dabei bedeuten die drei Werte, die mit Komma getrennt werden:


    "Comms DTS-M1": Hier kommt der Name der Antenne rein, steht zum Beispiel im Flug oben, wenn man auf die Antenne rechtsklickt.


    0: das hier ist die Nummer der Antenne, wenn man zum Beispiel 3 Mal die gleiche Antenne hat, dann kann man diese mit den Werten 0, 1 und 2 unterscheiden, welche Antenne welche Nummer bekommt kann man ausprobieren. Wenn man nur eine Antenne von einem Typen hat, dann hat diese so wie hier den Wert 0


    "GSO_CommSat1": Das ist in diesem Fall der Name eines anderen Satelliten von mir, der von dieser Antenne anvisiert werden soll, man kann aber auch einen Planeten oder Mond anvisieren. Also z.B. "Mun". Omnidirektionale Antennen wie die Communotron 16, die nicht ausgerichtet werden können, werden stattdessen an dieser Stelle mit "on" aktiviert.


    Wenn man eine Antenne wieder ausschalten möchte, nutzt man "off" das sieht dann ungefähr so aus:


    Code
    1. Antenna("Comms DTS-M1", 0, "off").

    Damit lassen sich also alle Antennen relativ einfach steuern.

    3 Mal editiert, zuletzt von Haeretik () aus folgendem Grund: dummheit