Trailer Configuration

Eure Foren für alle Diskussionen rund ums Thema Modding.
User avatar
TRIDENTE
Posts: 22
Joined: Mon Jan 23, 2023 12:37 pm

Re: Trailer Configuration

Post by TRIDENTE »

Wow - ja das wäre ein Kompromiss (die IMPLEMENT´s kannt ich so noch garnicht) 😮
  • Leider ist das Wort "Abkippseite" oder halt "Plane" hier mein Steckenpferd

Scripts hatte ich nur eins getestet: Das alt bekannte "toogleAnimation"
  • leider war es im MP nicht brauchbar
  • im MP hat nur der die animation gesehen , der sie ausgeführt hat (mit 4 Leuten getestet)
  • ist in den Bugs auch vermerkt
ℹ️ Ich modde tatsächlich erst seit einem halben Jahr - dies wird mein erstes "speziall" Fahrzeug (nach ein paar privaten Gebäuden)

Funktioniert hier beispielsweise durch kleine Anpassung von "onRegisterActionEvent" ohne Probleme
Könntest du darauf bitte genauer eingehen? Ich lerne sehr gerne dazu 👍
User avatar
LS-Lara
Posts: 396
Joined: Sun Aug 04, 2019 4:57 pm

Re: Trailer Configuration

Post by LS-Lara »

Probier mal aus - bei mir funktioniert es:

Code: Select all

--[[

https://forum.giants-software.com/viewtopic.php?t=204994

Source of the original code: Trailer.lua by Giants Software

]]

print("------------------------------------------------------------> START LOADING SCRIPT tipSideCountReloaded.lua")
TipSideCountReloaded = {}
function TipSideCountReloaded:onRegisterActionEvents(isActiveForInput, isActiveForInputIgnoreSelection)
    if self.isClient then
        local spec = self.spec_trailer
        -- START ORIGNAL:
        -- if spec.tipSideCount < 2 then
        --  return
        -- end
        -- END ORIGINAL
        --
        -- START ADAPTED:
        -- allow processing of further code also if tipSideCount == 1
        if spec.tipSideCount < 1 then
            return
        end
        -- END ADAPTED

        self:clearActionEventsTable(spec.actionEvents)

        if isActiveForInputIgnoreSelection then,
            -- START ORIGNAL:
            -- local _, actionEventId = self:addActionEvent(spec.actionEvents, InputAction.TOGGLE_TIPSIDE, self, Trailer.actionEventToggleTipSide, false, true, false, true, nil),
            -- END ORIGINAL
            --
            -- START ADAPTED:
            -- add the option to toggle tip side only if more than 1 tip side is available
            if spec.tipSideCount > 1 then
                local _, actionEventId = self:addActionEvent(spec.actionEvents, InputAction.TOGGLE_TIPSIDE, self, Trailer.actionEventToggleTipSide, false, true, false, true, nil)
            else
                local _, actionEventId = nil
            end
            -- END ADAPTED

            g_inputBinding:setActionEventTextPriority(actionEventId, GS_PRIO_NORMAL)

            local tipSide = spec.tipSides[spec.preferedTipSideIndex]

            if tipSide ~= nil then
                if tipSide.manualTipToggle then
                    _, actionEventId = self:addPoweredActionEvent(spec.actionEvents, tipSide.manualTipToggleAction, self, Trailer.actionEventManualToggleTip, false, true, false, true, nil)

                    g_inputBinding:setActionEventTextPriority(actionEventId, GS_PRIO_NORMAL)
                end

                if tipSide.manualDoorToggle then
                    _, actionEventId = self:addPoweredActionEvent(spec.actionEvents, tipSide.manualDoorToggleAction, self, Trailer.actionEventManualToggleDoor, false, true, false, true, nil)

                    g_inputBinding:setActionEventTextPriority(actionEventId, GS_PRIO_NORMAL)
                end
            end
        end
    end
end
Trailer.onRegisterActionEvents = Utils.overwrittenFunction(Trailer.onRegisterActionEvents, TipSideCountReloaded.onRegisterActionEvents)
print("------------------------------------------------------------> overwrite done: TipSideCountReloaded:onRegisterActionEvents")
Der Sinn des Lebens ist:
29.61%

Mein Traktor:
Base:
HP Pavilion 690-03xx
Core i7-8700 @ 3.2GHz
NVIDIA GeForce GTX 1060 6GB
2x Benq GL2450H
Windows 10 Home 64bit
Custom:
2 x 16GB Corsair Vengeance LPX DDR4 C16 XMP 2.0
Samsung NVMe M.2 970 EVO Plus 500GB
Samsung SSD 860 EVO 1TB
Logitech G203 Prodigy
Logitech Wireless F710
User avatar
da-hoffi
Posts: 519
Joined: Fri Aug 15, 2014 8:47 am
Contact:

Re: Trailer Configuration

Post by da-hoffi »

TRIDENTE wrote: Mon Feb 19, 2024 6:26 pm
  • Leider ist das Wort "Abkippseite" oder halt "Plane" hier mein Steckenpferd
Dann versuch mal hier ne Änderung

<trailer infoText="action_toggleTipSide">

steht nämlich bei <trailer> nix von infoText, wird der default genutz, was bei dir halt immer das "Abkippseite: xyz" erzeugt.
Test da einfach mal bspw. infoText=" " oder irgendwas was dir besser passt.

Ansonsten der generelle Tipp: guck mal in deinem LS Installationsverzeichnis -> /shared/xml/documentation/vehicle.html
Öffnen und mal nach <trailer suchen
Dann hast du alle möglichen Attribute und was man da eintragen kann.....vielleicht hilft dir das ja schon weiter die Möglichkeiten zu verstehen.



PS: leider bin ich quasi nicht mehr aktiv und arbeite deshalb auch an dem toggleAnimations nicht mehr weiter. Die MP-Probleme sind mir aber bekannt.
User avatar
TRIDENTE
Posts: 22
Joined: Mon Jan 23, 2023 12:37 pm

Re: Trailer Configuration

Post by TRIDENTE »

LS-Lara wrote: Mon Feb 19, 2024 6:43 pm Probier mal aus - bei mir funktioniert es:

Code: Select all

--[[

https://forum.giants-software.com/viewtopic.php?t=204994

Source of the original code: Trailer.lua by Giants Software

]]

print("------------------------------------------------------------> START LOADING SCRIPT tipSideCountReloaded.lua")
TipSideCountReloaded = {}
function TipSideCountReloaded:onRegisterActionEvents(isActiveForInput, isActiveForInputIgnoreSelection)
    if self.isClient then
        local spec = self.spec_trailer
        -- START ORIGNAL:
        -- if spec.tipSideCount < 2 then
        --  return
        -- end
        -- END ORIGINAL
        --
        -- START ADAPTED:
        -- allow processing of further code also if tipSideCount == 1
        if spec.tipSideCount < 1 then
            return
        end
        -- END ADAPTED

        self:clearActionEventsTable(spec.actionEvents)

        if isActiveForInputIgnoreSelection then,
            -- START ORIGNAL:
            -- local _, actionEventId = self:addActionEvent(spec.actionEvents, InputAction.TOGGLE_TIPSIDE, self, Trailer.actionEventToggleTipSide, false, true, false, true, nil),
            -- END ORIGINAL
            --
            -- START ADAPTED:
            -- add the option to toggle tip side only if more than 1 tip side is available
            if spec.tipSideCount > 1 then
                local _, actionEventId = self:addActionEvent(spec.actionEvents, InputAction.TOGGLE_TIPSIDE, self, Trailer.actionEventToggleTipSide, false, true, false, true, nil)
            else
                local _, actionEventId = nil
            end
            -- END ADAPTED

            g_inputBinding:setActionEventTextPriority(actionEventId, GS_PRIO_NORMAL)

            local tipSide = spec.tipSides[spec.preferedTipSideIndex]

            if tipSide ~= nil then
                if tipSide.manualTipToggle then
                    _, actionEventId = self:addPoweredActionEvent(spec.actionEvents, tipSide.manualTipToggleAction, self, Trailer.actionEventManualToggleTip, false, true, false, true, nil)

                    g_inputBinding:setActionEventTextPriority(actionEventId, GS_PRIO_NORMAL)
                end

                if tipSide.manualDoorToggle then
                    _, actionEventId = self:addPoweredActionEvent(spec.actionEvents, tipSide.manualDoorToggleAction, self, Trailer.actionEventManualToggleDoor, false, true, false, true, nil)

                    g_inputBinding:setActionEventTextPriority(actionEventId, GS_PRIO_NORMAL)
                end
            end
        end
    end
end
Trailer.onRegisterActionEvents = Utils.overwrittenFunction(Trailer.onRegisterActionEvents, TipSideCountReloaded.onRegisterActionEvents)
print("------------------------------------------------------------> overwrite done: TipSideCountReloaded:onRegisterActionEvents")
📎 Dafür fehlt mir leider noch die Kenntniss es einzubauen. In der xml hat dieses script ja nichts zu suchen.
Meines erachtens muss ich daraus eine .lua machen und dies in der .moddesc und .xml zuweisen?

Ist mir zwar unangenehm zu schreiben: Hierfür bin ich noch in der lernphase und habe keine Ahnung was, wie, wohin.

da-hoffi wrote: Mon Feb 19, 2024 10:00 pm
TRIDENTE wrote: Mon Feb 19, 2024 6:26 pm
  • Leider ist das Wort "Abkippseite" oder halt "Plane" hier mein Steckenpferd
Dann versuch mal hier ne Änderung

<trailer infoText="action_toggleTipSide">

steht nämlich bei <trailer> nix von infoText, wird der default genutz, was bei dir halt immer das "Abkippseite: xyz" erzeugt.
Test da einfach mal bspw. infoText=" " oder irgendwas was dir besser passt.

Ansonsten der generelle Tipp: guck mal in deinem LS Installationsverzeichnis -> /shared/xml/documentation/vehicle.html
Öffnen und mal nach <trailer suchen
Dann hast du alle möglichen Attribute und was man da eintragen kann.....vielleicht hilft dir das ja schon weiter die Möglichkeiten zu verstehen.
📎 Dieser Tip ist Gold wert 👍 - damit kann ich wenigstens die Taste "U" komplett umbennen. Ist zwar immernoch im F1 Menü zu sehen - aber als Notlösung akzeptabel. Rein theoretisch kann man <trailer infoText=""> leer lassen und es wird im F1 Menü, bei "U" gar nichts mehr angezeigt 🙂

Image

📎 wenn man wenigstens bei Taste "U" einfach nur einen Sound abspielen könnte, wäre sie nicht ganz nutzlos - aber das ist wahrscheinlich wunschdenken. Taste "U" schaltet ja leider nur tipside hin und her
User avatar
LS-Lara
Posts: 396
Joined: Sun Aug 04, 2019 4:57 pm

Re: Trailer Configuration

Post by LS-Lara »

Script-Einbindung ist ganz einfach - im Prinzip, wie Du schon beschrieben hast:

1. Erstelle eine .lua-Datei mit dem Inhalt des Scripts, beispielsweise "tipSideCountReloaded.lua".
2. In der modDesc.xml folgende Zeilen ergänzen:

Code: Select all

<extraSourceFiles>
  <sourceFile filename="tipSideCountReloaded.lua">
</extraSourceFiles>
In der Mod-xml muss in diesem Fall nichts geändert werden.
Wenn das Script geladen wird, erscheinen die zwei laaaaaangen print-Zeilen in der Log.

da-hoffi wrote: Mon Feb 19, 2024 10:00 pm Dann versuch mal hier ne Änderung
<trailer infoText="action_toggleTipSide">
Oh, verdammt ! Daran hab ich gestern ewig rumgebastelt - irgendwie hatte ich das im Quelltext fehlinterpretiert und war die ganze Zeit in "trailerConfiguration" unterwegs. In "trailer" geht es aber. Damit läßt sich für die scriptfreie Variante noch eine ganz schöne Alternative realisieren: per "U" die Funktionen separat benennen und umschalten. Ändere mein Beispiel mit den zwei tipSides mal z.B. so ab:

Code: Select all

<trailer>
        <trailerConfigurations>
            <trailerConfiguration>
                <trailer infoText="Manuelle Funktionen umschalten: %s">
                    <tipSide name="Dachfenster" usw. .......

Das "%s" ist, wie im Original, der Platzhalter für den Namen der jeweiligen tipSide.
Der Sinn des Lebens ist:
29.61%

Mein Traktor:
Base:
HP Pavilion 690-03xx
Core i7-8700 @ 3.2GHz
NVIDIA GeForce GTX 1060 6GB
2x Benq GL2450H
Windows 10 Home 64bit
Custom:
2 x 16GB Corsair Vengeance LPX DDR4 C16 XMP 2.0
Samsung NVMe M.2 970 EVO Plus 500GB
Samsung SSD 860 EVO 1TB
Logitech G203 Prodigy
Logitech Wireless F710
User avatar
TRIDENTE
Posts: 22
Joined: Mon Jan 23, 2023 12:37 pm

Re: Trailer Configuration

Post by TRIDENTE »

<trailer>
<trailerConfigurations>
<trailerConfiguration>
<trailer infoText="Manuelle Funktionen umschalten: %s">
<tipSide name="Dachfenster" usw. .......
Das hatte ich tatsächlich schon vorab probiert - hier nun wieder war das problem das immer nur eine animation laufen kann.
  • Bei meinem Beispiel muss erst die Rundumleuchte wieder einfahren , bevor ich die zweite Animation überhaupt starten kann
Ich teste mal dein script, bin mir aber nicht sicher ob ich es am Ende nutzen werde (Modhub / Crossplay inkompatibel) - das muss ich abstimmen lassen. Wir arbeiten zu dritt an diesem "sehr speziellen" Fahrzeug 😅
User avatar
LS-Lara
Posts: 396
Joined: Sun Aug 04, 2019 4:57 pm

Re: Trailer Configuration

Post by LS-Lara »

Ach ja, stimmt ! Ich vergesse bei der seltsamen Konstruktion immer, dass es sich ja formell weiter um einen "Kipper" handelt.

Aber ... in dem Fahrzeug gibt es doch vermutlich nichts, was eine Entladung triggern könnte (also: kein dischargeable), oder ? Dann könnte man ja die manuellen Animationen alle in die erste tipSide packen und die zweite tipSide auf "Automatik" mit einer dummy-Animation stehen lassen - weil die könnte dann ja nie ausgelöst werden. Der "U-Text" wäre dann z.B. so ganz sinnvoll benutzbar und man kann beide Animationen über Z und Y unabhängig voneinander steuern:

Code: Select all

    <trailer>
        <trailerConfigurations>
            <trailerConfiguration>
                <trailer infoText="Manuelle Funktionen: %s">
                    <tipSide name="AKTIV" dischargeNodeIndex="1" canTipIfEmpty="true">
                        <manualTipToggle enabled="true" stopOnDeactivate="false" inputAction="IMPLEMENT_EXTRA3" inputActionTextPos="FENSTER AUF" inputActionTextNeg="FENSTER ZU" />
                        <manualDoorToggle enabled="true" stopOnDeactivate="false" inputAction="IMPLEMENT_EXTRA4" inputActionTextPos="RKL RAUS" inputActionTextNeg="RKL REIN" />
                        <animation name="meineFensterAnimation" speedScale="1.0"/>
                        <doorAnimation name="meineRklAnimation" speedScale="1.0"/>
                    </tipSide>
                    <tipSide name="INAKTIV" dischargeNodeIndex="1" canTipIfEmpty="true">
                        <animation name="irgendeineAnimation" speedScale="1.0" />
                    </tipSide>
                </trailer>
            </trailerConfiguration>
        </trailerConfigurations>
    </trailer>
Der Sinn des Lebens ist:
29.61%

Mein Traktor:
Base:
HP Pavilion 690-03xx
Core i7-8700 @ 3.2GHz
NVIDIA GeForce GTX 1060 6GB
2x Benq GL2450H
Windows 10 Home 64bit
Custom:
2 x 16GB Corsair Vengeance LPX DDR4 C16 XMP 2.0
Samsung NVMe M.2 970 EVO Plus 500GB
Samsung SSD 860 EVO 1TB
Logitech G203 Prodigy
Logitech Wireless F710
User avatar
TRIDENTE
Posts: 22
Joined: Mon Jan 23, 2023 12:37 pm

Re: Trailer Configuration

Post by TRIDENTE »

Mit dem letzten Tipp von Lara bin ich absolut zufrieden 👍👍

Ein was hätte ich aber noch, will aber dafür kein extra Beitrag aufmachen.

Wieder Thema Rundumleuchte:
  • Wäre es möglich mit betätigen der Taste für die Rundumleuchte die animation auszuführen
  • Taste drücken -> Animation startet (RUL fährt aus) und beginnt sich zu drehen und leuchten

Code: Select all

<beaconLight xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../shared/xml/schema/beaconLight.xsd">
    <filename>.../...i3d</filename>
    <rootNode  node="0" />
    <rotator   node="0" speed="0.004" />
    <light     shaderNode="0|1" intensity="250"/>
    <realLight node="0|1|0" />
    <device    mode="ROTATE_L" rpm="200" numLEDScale="0.4" brightnessScale="1" />
</beaconLight>
In der Documentation gibt es keine Zuordnung in BeaconLights für eine Animtaion , also gehe ich davon aus das es nicht möglich ist

Oder kann man vielleicht wieder in der Animation "tricksen" das das Licht angeht und sie sich dreht - ohne zuordnung vom internen beacon script 😅
User avatar
TRIDENTE
Posts: 22
Joined: Mon Jan 23, 2023 12:37 pm

Re: Trailer Configuration

Post by TRIDENTE »

Nun kann ich endlich sagen/zeigen um was es genau ging. Danke für eure damalige Hilfe 👍
Für Konsolen ist er leider lizenztechnisch nicht möglich, also sind scripts kein Problem.

Wall E - Kompaktlader
Image

https://www.youtube.com/watch?v=Af4xaFvdEek
Post Reply