Beiträge von Bluebaby210

    Ich glaube da wärst du selber auch noch drauf gekommen.


    Im grunde hast du ja jetzt 2 Bedingungen geprüft, wenn der Motor aus ist, dann mach das... und wenn die Drehzahl so ist, mach das. Da im Skript vorher ja schon immer das Problem auftauchte, wäre dir der einfall sicher auch noch gekommen.


    Aber vielleicht reicht es auch aus, einfach nur zu fragen ob der Morot gestartet ist, und wenn er gestartet ist, erst dann zeige dein HUD, würde sicher auch gehen.


    Ich denke, die 2 abfragen ob der Motor gestartet ist, kannst du auch anders schreiben, also mit "else" glaube ich (da bin ich mir noch nicht soi ganz sicher), also quasi, ist der Motor aus, mach das... ansonsten tue immer das andere, in deinem Fall die Drahzahl schreiben.


    Aber ich bin da jetzt auch nicht der Fachmann, ich teste auch selber immer noch viel rum um alles zu verstehen...
    if right==true then
    render text (Ohne Log Fehler)
    else
    render text (Du dussel)
    end;
    :D

    Also, ich verstehe das jetzt so, du kriegst es zwar hin abzufragen ob der Motor an oder aus ist... Dein Problem liegt jetzt nur darin, wenn der Motor aus ist, liegen die Anzeigen das er aus ist und die drehzahl 100 übereinander...!


    Bau das mit den Drehzahlen doch in eine weitere abfrage:


    [lua]


    function showRPM:update(dt)
    if self.isEntered then
    if self.isMotorStarted == false then
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(1, 0, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, "OFF");
    end;
    if self.isMotorStarted == true then
    if self.motor.lastMotorRpm > 1900 then
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(1, 0, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, tostring(math.floor(self.motor.lastMotorRpm)));
    else
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(0, 1, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, tostring(math.floor(self.motor.lastMotorRpm)));
    end;
    end;
    end;
    end;[/lua]


    Nur wenn er an ist, soll er den Text der Drehzahl ausgeben...!


    Und die erste if abfrage solltest du auf:
    [lua]


    self:getIsActiveForInput() [/lua]
    schreiben, so hat es mir modelleicher mal erklärt:


    Zitat

    solltest du if self:getIsActive() then durch if self:getIsActiveForInput() then ersetzen.
    Der Grund ist, dass self:getIsActive immer "true" ist wenn irgend jemand im Fahrzeug sitzt. (Helfer, Mitspieler, man selbst.) self:getIsActiveForInput() gibt nur true zurück wenn man selbst im Fahrzeug sitzt.
    Aber im Allgemeinen sollte man vor Tastenabfragen immer erst mal überprüfen ob man auch selbst im Fahrzeug sitzt, sonst kommt es irgendwann zwangsläufig so, dass man ein anderes Fahrzeug ausversehen mit steuert..

    Eventuell geht das mit setCollisionMask, das weiß ich aber nicht genau, ob es da einen Code gibt der die CollisionMask so setzt das sie keine Collision mehr hat.


    Wirst du wohl die Colli als 2. bauteil im GE setzen müssen um sie dann als NoRigidBody zu setzen und dann wieder auf dynamic!

    Hi...


    Ich würde, wenn es geht, also wenn die Collis einzelne Teile sind, diese über die StandartSkripte bewegen, entweder die "foldable" oder die "animatedVehicles", hat den Vorteil, das diese bei Paches mit geupdatet werden, was bei deinem Skript nicht so wäre.


    Bei der foldable, musst du die animation in der i3d schreiben, also mit Notepad z.b öffnen und dort die Animation mir den Zeiten festlegen, hat den Vorteil das du zeiten besser einstellen kannst, also z.b im ersten teil der animation die bewegung langsamer und in der zweiten hälfte die animation schneller laufen lassen. Nur darauf achten das die abstände der Zeiten immer gleich bleiben, also z.b 0, 500, 1000, 1500, 2000 usw.


    Bei der animatedVehicles, musst du die animation in der XML angeben.



    Wenn dir das aber nicht hilft, weil die Collis nicht einzeln sind, dann kannst du in deinem Skript auch die Colli ein und ausschalten. Das Bauteil einfach mit Index in der XML landen als, z.b self.ColliIndex und dann in deinem Skript per:
    setRigidBodyType ändern
    [lua]
    setRigidBodyType(integer transformId, string type)


    setRigidBodyType(self.ColliIndex, "NoRigidBody")


    --bzw. danach wieder


    setRigidBodyType(self.ColliIndex, "Dynamic")
    [/lua]


    Nachzulesen ist das ganze hier:
    http://gdn.giants-software.com…ion_reference_destruction und da einfach etwas hochscrollen.

    Danke!!! Jetzt geht es, der fehler (true/false) hat sich wohl bei meinen Versuchen eingeschlichen,da hab ich das wohl mal gewchselt. Da heißt es wohl lernen, lernen ,lernen...


    Werd das mit der zusätzlichen Funktion, im wheelScale aber trotzdem mal versuchen.


    Danke für die Hilfe...

    Hab das schnell mal geändert... geht aber auch nicht. Über IC scaliert er die Reifen nicht, setzt den Status also immer noch nicht um...!
    Text wird richtig angezeigt, und wenn ich per InputBinding ändere, wechselt auch der Text... nur die Reifen bleiben wie sie sind...werden nicht scaliert!

    Hi...
    Ich habe in einen Mod die Ic Components eingebaut, zum einen die zusätzlichen Cameras und auch die "normalen" IC Buttons. Es handelt sich dabei um die StandartSelbstfahrspritze, als Mod. Zudem hat sie modelleichers "wheelScale.LUA" eingebaut bekommen.


    Die wheelScale funktioniert auch ohne Probleme, wird im Mod auch vor den IC Einträgen geladen.
    Die ICs funktionieren,bis auf einer, auch ohne Problem, folgende Dinge werden per IC (zusätzlich) bedient:


    -Licht an/aus
    -Fernlicht an/aus
    -Arbeitslichter (es sind 3 verbaut, einzeln zu schalten um keine LOG fehler zu bekommen, klappt auch)
    -Spritze aufklappen/zuklappen
    -Rundumleuchten an/aus
    -Spritze an/ausschalten


    diese IC bedienungen funktionieren alle, mit Texten usw.


    Nur der IC für die wheelScale geht nicht.
    Vielleicht kann mir da jemand weiterhelfen, damit ich auch verstehe warum es nicht geht. Die IC skripte stammen aus dem Lexion 770, die IC Button.LUA muss ja angepasst werden an die unterschiedlichen Buttons. Dort gebe ich jetzt mal die Zeilen für die Lichter/RUL und das anschalten der Spritze


    [lua]
    function Button:update(dt)
    if self.vehicle ~= nil then
    if self.event == "toggleHighbeam" then --Fernlicht
    self.isOpen = self.vehicle.B3["highbeam"][1].a;
    elseif self.event == "toggleBeaconLights" then --Rundumleuchten
    self.isOpen = self.vehicle.beaconLightsActive;
    elseif self.event == "toggleLight" then --normales Licht
    self.isOpen = self.vehicle.lightsActive;
    elseif self.event == "toggleSprayerActivate" then --Sprayer anschalten
    self.isOpen = self.vehicle.isTurnedOn;
    end;
    end;


    function Button:doAction(noEventSend, forceAction)
    if self.vehicle ~= nil then
    if self.event == "toggleHighbeam" then --Fernlicht
    if forceAction == nil then
    local lt = self.vehicle.B3["highbeam"];
    self.vehicle:setState("highbeam", not lt[1].a, true); --hier wird dann je nach zustand umgeschaltet zwischen
    else
    self.vehicle:setState("highbeam", forceAction, true); --State true or not true, also an/aus
    end;
    elseif self.event == "toggleBeaconLights" then --Rundumleuchten
    if self.vehicle ~= nil then
    if self.vehicle.beaconLightsActive then
    self.vehicle:setBeaconLightsVisibility(false); --hier wie in StandartSpezi set Visibility false/true
    else
    self.vehicle:setBeaconLightsVisibility(true);
    end;
    end;
    elseif self.event == "toggleLight" then --normales Licht
    if self.vehicle ~= nil then
    if self.vehicle.lightsActive then
    self.vehicle:setLightsVisibility(false); --hier wie in StandartSpezi set Visibility false/true
    else
    self.vehicle:setLightsVisibility(true);
    end;
    end;
    elseif self.event == "toggleSprayerActivate" then --Spritze anschalten
    if self.vehicle ~= nil then
    if self.vehicle.isTurnedOn then
    self.vehicle:setIsTurnedOn(false); --wie in Standartspezi "isTurnedON) true/false
    else
    self.vehicle:setIsTurnedOn(true);
    end;



    [/lua]


    das klappt auch alles, die Texte werden auch richtig angezeigt, mit anschalten oder ausschalten.


    Nun das Problem mit der "wheelScale", da ist der Status beim laden "false", der Button zeigt mit auch den Text für "aufziehen" korrekt an, beim klicken passiert aber nix, wenn ich über den definierten InputBinding die wheelScale setze, also Reifen scaliere und dann auf den IC Button gehe, dann zeigt er mir auch den Text an, für "abziehen" der Räder, also das IC Skript erkennt den Status, setzt ihn dann aber halt nicht von false auf true bzw umgekehrt.
    Und das müsste mir mal jemand erklären, bitte... ich habe es im IC Skript zur zeit so stehen:


    [lua]update(dt)
    elseif self.event == "toggleCareTyreIC" then --unter die oben reinkopierten events,
    self.isOpen = self.vehicle.wheelScaleState;
    end;



    doAction(noEventSend, forceAction)


    elseif self.event == "toggleCareTyreIC" then
    if self.vehicle ~= nil then
    if self.vehicle.wheelScaleState then
    self.vehicle:setWheelScaleState(true);
    else
    self.vehicle:setWheelScaleState(false);
    end;
    end;



    [/lua]
    So sieht es zur zeit aus... habe es auch schon nur mit
    [lua]
    self.wheelScaleState(true);
    [/lua]
    versucht, ging aber auch nicht. Oder funktioniert das so einfach nicht wie ich das Versuche???
    Die Variable sollte er ja kenne, da die "wheelScale.LUA" vor den Ic Skripten geladen wird, und somit sollte sie doch wie bei den Standart Spezis auch bekannt sein, oder?


    Wenn mir da jemand helfen kann, bin ich dankbar, es wäre auch nett wenn ich dann nicht einfach nen Code bekommen, sondern es mir auch erklärt wird, damit auch ich es verstehe.


    Achso, die LOG ist sauber, keine Einträge das Fehler vorhanden sind.

    Hi...


    Wenn meine LUA in Grund auf einer StandartLUA aufbaut, kann ich das ja erzeugen in dem ich folgendes angebe,


    [lua]
    function neueLUA.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Steerable, specializations);
    end;
    [/lua]


    das heißt doch auch wenn ich werte aus der bereits geladenen "Steerable" LUA benötige, das ich diese im Load teil nicht mehr angeben brauche, oder doch?
    Zumindest wenn ich die gleichen variablen nutze wie in der steerable LUA. Oder sehe ich das falsch?

    Man sagt ja immer Probieren geht über studieren... ;) ! Das schöne ist sogar, wenn ein Fehler im Skript ist, sieht du das gleich, zum einen das dein HUD fehlt und zum anderen an einträgen in der LOG!


    Aber so wie dein Skript jetzt ist, wird es gehen...nur es passiert nicht das was du willst:
    Es wird also ein HUD zeigen das leer ist.


    Webby hat ein Skript rausgebracht, was die aktuelle Motordrehzahl in einem HUD anzeigt, da ist z.b die bei dir fehlende Zeile drin. Du musst deinem Mod ja jetzt beibringen, wenn der Tankinhalt kleiner ist wie beim letzten Durchlauf, das er dir das auch "zeigt"...also solltest du noch folgendes in zeile 36 einfügen, also vor dem end;



    [lua]


    self.actualFuelUsagePerHour = (used / curtime) * 3600; -- der Spritverbrauch umgerechnet auf 1h ist also das seit dem letz. Durchlauf verbrauchte / die vergangene Zeit * 3600 (weil self.time in Sekunden ist, sekunden * 3600 = Stunden)



    renderText(self.ShowHudxPos + 0.085, self.ShowHudyPos + 0.013, 0.021, tostring(math.floor(self.actualFuelUsagePerHour ))); --die Zahlen musst du noch anpassen, stammt jetzt aus dem oben erwähnten skript





    end;
    [/lua]


    Die zahlen hinter self.ShowHudxPos und self.ShowHudyPos bestimmen in dem Fall wo deine Zahl angezeigt wird, also von HUD position ausgehen +0.085 bzw 0.013


    zusätzlich kannst du dann natürlich noch bestimmen wie der Text aussieht, also fett geschrieben, farben usw.


    Aber so solltest du dein Skript erstmal einbauen und testen.


    Eventuell auch noch ein "print" einbauen, um in der LOG zu sehen ob dein Skript überhaupt den Teil durchläuft der zur Berechnung notwendig ist.


    Hoffe ich hab jetzt nicht zu viel dummes zeug in meine Antwort eingebaut...

    Kann man die Kapazität auch noch ändern wenn das Fahrzeug zu einem Teil gefüllt ist?
    Denke da grad an Drescher, wenn er voll ist, aber mein Abfahrer grad mal wieder eine seiner vielen Kaffepausen macht... :D !


    Oder wird die Bedienung "gesperrt" sobald sich etwas im Fahrzeug befindet?

    Das orginale Schneidwerk hat nur die spezis "attachable" und "cutter" eingetragen, nicht noch "cylindered"!


    Dann musst du in der XML beim "threshingParticleSystem" noch ein $ vor data setzen:


    XML
    <threshingParticleSystem position="0 0 -1" rotation="0 0 0" file="$data/vehicles/particleSystems/threshingCutterMiddleParticleSystem.i3d" />


    Wenn du es dann im shop kaufen kannst, dann kannst du anfangen zusätzliche Spezis einzubauen.

    Da kann ich dir den Tip geben, wenn du irgendwelche Fehler hast. Mit Notepad kann man die einzelnen "worte" immer schon markieren und es werden dann alle gleichen "worte" mit markiert...hat modelleicher im TUT ja auch bei einem Fehler gezeigt...das erspart eine Menge arbeit beim suchen!

    Ich bin ja echt nicht der Experte was diese Dinge angeht, also die Pfade in skripts, aber ich habe da ein Beispiel:


    [lua]
    ESLimiter= {}; --weiß nicht ob es so da steht, hab den ESLimiter nicht
    ESLimiter.modDir = g_currentModDirectory;


    function ESLimiter:load(xmlFile)
    self.ESLimiterHud = Overlay:new("ESLimiterOverlay", (ESLimiter.modDir.."ESLimiter.png"), 0.925, 0.55, 0.080, 0.085); --anstatt ESLimiter.png da deinen Pfad hinschreiben, also Texturen/ESLImiterHUD oder was auch immer


    --oder halt so:
    Utils.getFilename(ESLimiter.modDir.."ESLimiter.png");


    [/lua]


    So habe ich es in einer LUa die sich auch in alle installiert!

    :thumbsup: Dankle für deine Mühe das du so ein tolles Video TUT gemacht hast, finde ich echt spitzen mäßig!


    Was mir nur etwas Probleme macht ist die Lautstärke, ich habe selber keine zusätzlichen lautsprecher am PC angeschlossen, wenn ich nun den monitor auf volle lautstärke stelle und bei youTube auch voll aufziehe habe ich noch immer echt problem dich zu verstehen.


    Wenn du das bei (hoffentlich) weiteren teilen ändern könntest, also das die lautstärke beim aufnehmen größer ist,wäre das echt toll. Leiser stellen ist ja hinterher kein problem.


    Danke nochmal!!!

    Naja,eigentlich doch, sven777b hat hier in einem thema genau das geschrieben,da ging es auch um einblendungen, wo jemand das toggleAnimParts verbaut hat um zinken von groß zu klein scaliert hat, bzw zeitgleich andere von klein zu groß. Da hat sven das beleuchtungsskript empfohlen,da es ja auch nur visibility true oder false setzt


    Aber es gibt doch das einblendungsskript, da weiß ich aber nicht genau ob man dort die ausgangsstellung festlegen kann. Das skript hab ich in mehreren Fendts und john deere schon gesehen. Ich werd die tage mal suchen ob ich es finde.


    Aber definitiv geht das toggleAnimParts, soll zwar dinge bewegen,aber man kann ja auch skalieren,in kurzer zeit von groß nach klein und umgekehrt. Und da kannst du die ausgangsposition auf jeden fall vorgeben.

    Hast du jetzt nur den Trigger eingebaut oder den kompletten Silostar?
    Wenn du nur den Trigger genommen hast, dann versuch mal den kompletten Silostar einzubauen, also den Bunker und die Gülle grube?


    Da der Trigger ja über User Attribute verfügt, mit moving index und ManurePlane Index, würde ich ihn mal komplett einbauen und sehen was dann passiert!

    der selbe fehler ist mir auch bekannt. allerdings hab ich noch nicht nachgeforscht an was es liegt.


    Das dir der selbe Fehler auch bekannt ist, das beruhigt mich ja, insofern das ich nicht zu dumm war es richtig in die XMLs einzutragen!


    Es hat scheinbar echt nur was mit dem TamLeguan zu tun, denn solange wie ich den "posDirectionText" so lasse wie im TamLegaun, so zeigt LS den Text im Hilfefenster so an wie im TamLeguan, sobald dieser aber aus dem Mods Ordner raus ist, zeigt er wieder das Missing an. Oder halt irgendeiner anderen LUA die im Lexion Pack mit drin ist.
    Also muss ich wohl erstmal damit leben, bzw auf die Standarttexte zurück greifen. Auch wenn das mit Text "aufklappen" nicht so schön ist!

    Ich habe nicht mit Bindestrich gearbeitet, war ein kleiner Tipfehler oben :whistling: !


    Habe jetzt die Texte und den Input Befehl nochmal neu geschreiben und auf andere Taste (LOWER_IMPLEMENT) gelegt, aber immernoch das gleiche Problem.
    Den "foldInputButton" text nimmt er an, vorher hatte ich auf taste B (IMPLEMENT_EXTRA), jetzt auf Taste V, das gibt er im Hilfefenster auch aus, nur den Text halt nicht!


    Hier mal die entschrechenden Zeilen aus der XML und der Moddesc:


    [expander]



    Vehicles XML

    XML
    <foldingParts startMoveDirection="0" posDirectionText="UNFOLD_RAMP" negDirectionText="FOLD_RAMP" foldInputButton="LOWER_IMPLEMENT">
    <foldingPart componentJointIndex="0" anchorActor="0" animationName="backPartFold" speedScale="0.9" />
    </foldingParts>



    Moddesc:




    [/expander]


    Aber die Zeile in der foldable.LUA die sagt doch aus, das wenn kein posDirectionText/negDirectionText in der XML steht, dann nimmt LS den TypeDesc namen aus der XML.
    Ist aber dieser Eintrag vorhanden dann wählt er entsprechende l10n Texte aus der Moddesc aus, oder?


    Kann ich denn in der foldable.LUA diese zeile irgendwie abändern das er auf jeden fall auf die Hilfstexte in der Moddesc zurückgreift?


    Ich habe ja, wie gesagt die LUA aus der Skript Docu eingebaut, habe da ganz am ende einfach mal diesen eintrag gemacht:
    print("Foldable for Allrounder was loaded");
    um zu sehen, das die LUA auch geladen wird, in der LOG taucht die Zeile auch auf. Also verwendet der Anhänger doch auch die foldable LUA die in der Zip liegt oder?