Controller einer Lok hinzufügen


Abonniere unseren Kanal auf WhatsApp (klicke hier zum abonnieren).
  • Hallo Community,


    da ich mich zurzeit etwas mit dem Skripten beschäftige, wollte ich mal probieren, einen neuen Controller zu erstellen, und diesen auch im Inputmapper zu verlinken. Im Inputmapper habe ich folgendes hinzugefügt:



    Und in der Engine Bin habe ich hinzugefügt:



    Wenn ich im Skript abfrage, ob der Controller exisitert, spuckt er mir aus, dass er vorhanden ist. Wenn ich jetzt den Wert ausgebe, zeigt er mir 0, obwohl ich Shift+0 gedrückt habe.


    Muss ich noch irgendwo den Controller hinzufügen?


    Gruß


    engine2 *hi*

  • Da fehlt noch ein passendes InterfaceElement.

    @engine2 Soll heißen, du musst dem Controller noch irgendwie mitteilen, was er machen soll bzw. wie er sich verhalten soll. Schaltet er nur auf und ab (bzw. an und aus) oder hat er gar Stufen, in die er immer einrasten soll.


    <InterfaceElement>
    <cControlContainerBlueprint-cInteriorLever d:id="93285">
    <ElementName d:type="cDeltaString">Untitled</ElementName>
    <DifficultyType d:type="cDeltaString">StopGo</DifficultyType>
    <PickTransformName d:type="cDeltaString"></PickTransformName>
    <MovementType d:type="cDeltaString">MoveLeftRight</MovementType>
    <AnalogInputSensitivity d:type="sFloat32" d:alt_encoding="0000000000005940" d:precision="string">100</AnalogInputSensitivity>
    <DigitalInputSensitivity d:type="sFloat32" d:alt_encoding="0000000000005940" d:precision="string">100</DigitalInputSensitivity>
    <AnimationName d:type="cDeltaString"></AnimationName>
    <OutputInterface d:type="cDeltaString">eCab</OutputInterface>
    </cControlContainerBlueprint-cInteriorLever>
    </InterfaceElement>


    Füge das mal ein und schmeiß <InterfaceElement/> raus (hier heißt das "/", dass man </InterfaceElement> nicht mehr schreiben braucht - wenn danach nichts mehr kommt).


    Schaue dir am besten mal zur weiteren Vertiefung einige bereits vorhandene InterfaceElements an, bspw. die des TrainBrakeControlls. Da wird ja auch mit Stufen gearbeitet, in die das Control immer rutschen soll.

  • Also, ich habe jetzt im Inputmapper folgendes hinzugefügt:

    In der Engine.bin habe ich:


    Trotzdem ändert sich nix, wenn ich Shift 0 drücke. :(


    Habe ich da irgendwas vergessen?

  • NotchedLever ohne Notches. Kann nicht funktionieren. Du kannst da nicht einfach irgendwas einfügen. Du musst sich an die BP-Schema Regeln halten die der BPE vorgibt. Sowas in den Assets direkt zu machen ist einfach Unsinn. Benutze bitte dazu den BPE und arbeite mit Source Assets und Export.

  • Du hast da was vermischt, du hast NotchLever, dann aber keine Notches

    vielleicht liegt es daran, wer weiß?

  • Ok, das habe ich geändert, aber machen tut der immer noch nix.
    Der Eintrag sieht jetzt so aus:


    Irgendwas fehlt, ich kriegs net raus. :cursing:

  • Hmhm. Klassischer Fehler vielleicht? Hast du vergessen, die OnControlValueChange-Funktion einzufügen? Und wenn du die nicht vergessen hast, hast du daran gedacht, in diese Funktion dann Call("*:SetControlValue", name, index, value); zu schreiben? So oft wie ich darauf schon rein gefallen bin, spreche ich es lieber mal an :D



    function OnControlValueChange(name, index, value)
    Call("*:SetControlValue", name, index, value);
    end


    Die Funktion ist direkte Verbindung zwischen InputMapper und Skript. Wenn man das so sagen kann. Der Simulator sucht im Skript nach gewissen Funktionen. Bspw. beim Szenariostart nach Initialise() oder beim Betreten des Führerstands nach OnCameraEnter(...). Beim Ändern von ControlValues per Tastatur eben nach OnControlValueChange(..).