Beiträge von Bluebaby210

    Ich weiß ja nicht wie die strassenpfosten genau aufgebaut sind. Aber vielleicht kannst du dir das ja um GE nochmal genau ansehen und dann auf deinem Firmenlappi einfach die Map.i3d mit Texteditor bearbeiten, auch wenn das mühseeliger ist, aber so würdest du das unter der Woche vielleicht erledigt kriegen, besser wie gar nix, so kannst du die 2std am WE besser nutzen.


    Eventuell eingach nochmal einen Pfosten im GE bearbeiten,so das der Joint weg ist. Wenn fet Joint nen shape ist dann einfach dutch ne TG ersetzen damit die Translation/Rotation werte weiter passen. Musst du einfach mal testen.

    Hi,
    Also alos erstes musst du mal eine Funkticon anlegen, damit das ganze funktioniert, hier dazu mal etwas von modelleicher: http://planet-ls.de/board/inde…&postID=204622#post204622


    Wie du die Function nennst, ist vollkommen egal, ich nehme jetzt einfach mal balloonState. Als erstes musst du diese neue function auch registrieren, das machst du im load() Teil.
    [lua]self.balloonState = SpecializationUtil.callSpecializationsFunction("balloonState");[/lua]


    Diese function kannst du dann in deinem Skript aufrufen mit self:balloonState().


    Deinen Update() Teil muss man dann auch umschreiben, was auch eh sinnvoll ist, da du bei jedem updateDurchlauf deine Reifen scalierst und versetzt, was aber nur ein einziges mal notwendig ist. Hier hatte man das ganze auch in den Teil packen können wo du den Tastendruck und das ändern deiner Variablen durchführst. Dann würden deine Reifen nur einmal scaliert und versetzt und nicht bei jedem Durchlauf.
    Der Tastendruck ist soweit korrekt, nach dem umschalten der Variablen rufen wir die fuction auf wo wir die Räder scalieren und versetzen:
    [lua]function balloonWheels:update(dt)
    if self:getIsActiveForInput() then
    if InputBinding.hasEvent(InputBinding.BALLOONWHEELS) then
    self.balloonWheelsState = not self.balloonWheelsState;
    self:ballonState(self.balloonWheelsState);
    end;
    end;
    end;
    [/lua]
    mehr braucht es in deinem Skript im Update Teil auch gar nicht. Du siehst, wenn man die Taste drückt, wird der Status der Räder(true/false) geändert. Entweder false oder true, diesen boolean hat ja deine Variable self.balloonWheelsState, somit übergeben wir den boolean auch an die fuction, diese muss ja wissen ob der Status true oder false ist.
    Wenn du erst die fuction aufrufst und danach die Statusvariable änderst, dann wärst du immer in der falschen Reihenfolge. Ich rufe also mit
    self:ballonState(self.balloonWheelsState); die function auf, der wert wird in den klammern mit übergeben. Unsere fuction sieht dann im leeren Zustand erstmal so aus:
    [lua]function balloonWheels:ballonState(state, noEventSend)
    end;[/lua]
    state ist die Variable die wir in der function nutzen, diese ist entweder true oder false, je nachdem wie der self.ballonWheelsState ist. noEventSend brauchen wir um das Event zu senden.
    In der function scalieren und versetzen wir nun die Räder:


    [lua]function balloonWheels:ballonState(state, noEventSend)
    if not noEventSend then
    BalloonWheelsEvent.sendEvent(self, state, noEventSend) --// das Eventscript aufrufen um alle Mitspieler zu informieren //
    end;


    if state then
    setScale(self.wheelToBalloonRearLeft, (self.bwRLX / 100) + self.balloonWheelsWidth, self.bwRLY ,self.bwRLZ);
    setScale(self.wheelToBalloonRearRight, (self.bwRRX / 100) + self.balloonWheelsWidth, self.bwRRY ,self.bwRRZ);
    setScale(self.wheelToBalloonFrontLeft, (self.bwFLX / 100) + self.balloonWheelsWidth, self.bwFLY ,self.bwFLZ);
    setScale(self.wheelToBalloonFrontRight, (self.bwFRX / 100) + self.balloonWheelsWidth, self.bwFRY ,self.bwFRZ);

    setTranslation(self.wheelToBalloonRearLeft, self.bwTRLX + self.balloonWheelsAxleDiv, self.bwTRLY, self.bwTRLZ);
    setTranslation(self.wheelToBalloonRearRight, self.bwTRRX - self.balloonWheelsAxleDiv, self.bwTRRY, self.bwTRRZ);
    setTranslation(self.wheelToBalloonFrontLeft, self.bwTFLX + self.balloonWheelsAxleDiv, self.bwTFLY, self.bwTFLZ);
    setTranslation(self.wheelToBalloonFrontRight, self.bwTFRX - self.balloonWheelsAxleDiv, self.bwTFRY, self.bwTFRZ);

    elseif not state then
    setScale(self.wheelToBalloonRearLeft, self.bwRLX, self.bwRLY ,self.bwRLZ);
    setScale(self.wheelToBalloonRearRight, self.bwRRX, self.bwRRY ,self.bwRRZ);
    setScale(self.wheelToBalloonFrontLeft, self.bwFLX, self.bwFLY ,self.bwFLZ);
    setScale(self.wheelToBalloonFrontRight, self.bwFRX, self.bwFRY ,self.bwFRZ);

    setTranslation(self.wheelToBalloonRearLeft, self.bwTRLX, self.bwTRLY, self.bwTRLZ);
    setTranslation(self.wheelToBalloonRearRight, self.bwTRRX, self.bwTRRY, self.bwTRRZ);
    setTranslation(self.wheelToBalloonFrontLeft, self.bwTFLX, self.bwTFLY, self.bwTFLZ);
    setTranslation(self.wheelToBalloonFrontRight, self.bwTFRX, self.bwTFRY, self.bwTFRZ);
    end;
    end;[/lua]


    Als erstes prüfen wir ob ein Event gesendet werden muss/soll. Da wir nur den state übergeben ist noEventSend also false. Wenn du kein Event senden willst, müsstest du hier also beim aufrufen der function nicht nur den State übergeben, sondern zudem noch ein true dahinter, also so: self:ballonState(self.balloonWheelsState, true), denn würde in den function die abfrage wegen noEventSend also nicht durchlaufen. Aber wir wollen ja ein Event senden.


    Da wir ein true/false für den Status übergeben haben, prüft das Skript nun ob ein true oder false. Dann werden dementsprechend die Räder scaliert und versetzt.


    Das Eventskript sieht dann so aus:


    [lua]BalloonWheelsEvent = {};
    BalloonWheelsEvent_mt = Class(BalloonWheelsEvent, Event);


    InitEventClass(BalloonWheelsEvent, "BalloonWheelsEvent");
    --// diese Funktion wird von new() aufgerufen und erstellt ein leeres Event-Objekt //--
    function BalloonWheelsEvent:emptyNew()
    local self = Event:new(BalloonWheelsEvent_mt);
    self.className = "BalloonWheelsEvent";
    return self;
    end;


    --// die Funktion :new() wird von sendEvent() aufgerufen und liefert das befüllte Objekt zurück //--
    function BalloonWheelsEvent:new(object, state)
    local self = BalloonWheelsEvent:emptyNew(); --// das leere Objekt wird erstellt //--
    self.object = object; --// object ist in dem Falle dein Fahrzeug //--
    self.balloonWheelsState = state;
    return self;
    end;


    --// writeStream sendet die neuen Informationen raus und wurde von broadcastEvent ausgelöst //--
    function BalloonWheelsEvent:writeStream(streamId, connection)
    --// zuerst die ID vom Fahrzeug übergeben damit "der andere" weiss um welches Fahrzeug es geht //--
    streamWriteInt32(streamId, networkGetObjectId(self.object));
    --// dann die Daten übergeben.
    streamWriteBool(streamId, self.balloonWheelsState);
    end;


    --// readStream liest die neuen Infos wieder ein. //--
    function BalloonWheelsEvent:readStream(streamId, connection)
    --// auch hier erstmal die ID einlesen //--
    self.object = networkGetObject(streamReadInt32(streamId));
    --// dann die Daten. Wichtig ist, das hier die selbe Reihenfolge wie bei writeStream eingehalten wird!! //--
    self.balloonWheelsState = streamReadBool(streamId);
    --// im Anschluss muss natürlich mit den Daten nochwas angefangen werden //--
    self:run(connection);
    end;


    --// die funktion run() wird von readStream aufgerufen wenn neue Daten vorliegen //--
    function BalloonWheelsEvent:run(connection)
    --// als erstes werden die erhaltenen Daten an dein eigentliches Script übergeben //--
    --// dazu wird wieder die funktion ballonState ausgeführt so wie beim Tastendruck - nur eben beim Mitspieler //--
    self.object:ballonState(self.balloonWheelsState, true);


    --// wenn du die Daten nicht vom Server bekommen hast , dann wurde die funktion lokal aufgerufen //--
    --// in dem Falle wird das Statusupdate nochmal an den Server geschickt damit der es verteilt //--
    if not connection:getIsServer() then
    g_server:broadcastEvent(BalloonWheelsEvent:new(self.object, self.balloonWheelsState), nil, connection, self.object);
    end;
    end;


    --// die Funktion :sendEvent() rufst du von deiner Spezi auf. Sie wird die Funktion :new() auslösen --//
    function BalloonWheelsEvent.sendEvent(object, state, noEventSend)
    if noEventSend == nil or noEventSend == false then
    if g_server ~= nil then --// wenn du der Server bist, //--
    g_server:broadcastEvent(BalloonWheelsEvent:new(object, state), nil, nil, object); --// schickst du das ergebnis von :new() an alle //--
    else --// wenn du client bist, //--
    g_client:getServerConnection():sendEvent(BalloonWheelsEvent:new(object, state)); --// schickst du das ergebnis von :new() an den server //--
    end;
    end;
    end;
    [/lua]
    die Erklärungen in grün stammen von Sven777b.


    Das Eventskript kannst du nun entweder unter dein Skript drunterkopieren, oder du speicherst es als extra lua ab und lädst sie dann in der moddesc über extraSourceFiles!


    Das ganze funktioniert dann zumindest in einer laufenden MP runde. Wenn nun aber ein neuer Spieler die Runde betritt, dann hat er immer den Status der Reifen, wie er sie durch das Skript/Savegame lädt. Sprich es kann dann sein das der neue Spieler immer den falschen Status sieht. Das kriegt man weg wenn man in deinem Skript noch ein readStream und writeStream einbaut, das wird immer beim joinen eines neuen Spielers aufgerufen.


    [lua]function balloonWheels:readStream(streamId, connection)
    self.balloonWheelsState = streamReadBool(streamId);
    self:ballonState(self.balloonWheelsState, true);
    end;


    function balloonWheels:writeStream(streamId, connection)
    streamWriteBool(streamId, self.balloonWheelsState);
    end;
    [/lua]
    im readStream liest der neue Spieler den Status, dann ruft er die function auf und übergibt der function auch den Status um den aktuellen Stand auf seine Räder zu übertragen, das true bedeutet nur das wir ein Event nicht senden brauchen, da die anderen Spieler den Status ja bereits haben.


    Da ich jetzt eh die hälfte kopiert habe, habe ich gleich mal alles zusammen kopiert zu einer lua. Brauchst hier in der moddesc keinen extraSourceFiles eintragen.
    Am besten kann man das ganze an Standart Skripten erkennen, als einfachstes Beispiel dient dazu mal die Honk.lua und die HonkEvent.lua
    http://www.ls-mods.de/scriptDo…cles/specializations/Honk
    http://www.ls-mods.de/scriptDo…specializations/HonkEvent



    Ich bin aber nun auch kein Profi, falls ich hier also etwas total falsches geschrieben habe, dann korregiert mich bitte.

    Dateien

    Ja das ist doch soweit bei dir alles richtig... er macht ja dann das was er soll... ;) !


    Nee, also Spass beiseite, in deiner XML hast du gar keine PatricleSysteme eingetragen, somit kannst du auch keine sehen beim abkippen. Sieh dir mal die Standartanhänger an, da findest du z.B folgenden Eintrag in der XML:


    Je nach tipAnimation, werden die PS dann sichtbar. Diese musst du auch bei dir in der XML anlegen. Zudem natürlich in der i3d auch einen Index anlegen wo das PS dann erscheinen soll.

    Hi
    Ich vernute auch das was Deere6800 schon sagte, das hier die nummern nicht zueinander passen.


    Ich hatte da am Anfang das Problem das der Icon nicht verschwinden wollte wenn man ein Objekt gekauft hatte, daher habe ich auf die Variante mit 2 einzelnen Skripten zurückgegriffen, da klappte es dann. Hinterher habe ich dann auch nicht weiter geguckt woher das Problem kam.


    Im buyableObjects, bei den UserAttributes da hast du den Object_Ident_Icon und in der TG des Icons ist das Attribute Icon_Ident_Object, diese 2 Nummern müssen gleich sein, damit beim Kauf des Objektes der dazugehörige Icon auch verschwindet.


    Sollte es daran nicht liegen, kannst du dein Objekt auch gerne kurz ausbauen und mir schicken.

    Erstmal solltest du die Spezis für einen Tractor alle eintragen:

    XML
    <type name="tractor" className="Vehicle" filename="$dataS/scripts/vehicles/Vehicle.lua">
    <specialization name="motorized" />
    <specialization name="steerable" />
    <specialization name="hirable" />
    <specialization name="aiTractor" />
    <specialization name="bunkerSiloCompacter" />
    <specialization name="honk" />
    </type>


    Quelle: http://forum.giants-software.com/viewtopic.php?f=761&t=45783
    Und ebend auch in der Reihenfolge.


    Dann zu deinem IC Problem, wie bassaddict schon sagte, geht es hierbei darum das eine bestimmte Spezi eine andere vorraussetzt. In deinem Fall setzt die InteractiveWindow.Lua die Spezi animatedVehicles voraus.


    Dein Fehler ist hier das die Spezi immernoch nicht gegeben ist wenn die interactiveWindow geladen wird. Mit anderen Worten, die animatedVehicle muss vor der InteractiveWindow Spezi geladen werden. Heißt du musst sie auch ion deinen Spezis vorher eintragen.



    "tractor" dann noch durch deinen VehicleType ersetzen.

    Frohes Neues Jahr.


    Schick sieht es echt aus, viele Details, gefällt mir. Auch wenn ich erst den gleichen Gedanken wie Fiat80-90DT hatte.


    Bei den Tüchern an den Seitenteilen, da weiß ich auch nicht wirklich was besser aussieht, ob man sie so starr lässt, wie auch im EasyCut28P oder ob man sie so baut wie beim NovaAlpin 266T am schönsten wäre es sicher wenn die Tücher sich wie richtige Tücher/Lappen verhalten, aber das wird wohl leider nicht gehen.

    <offtopic>

    Lieber fruktor, ich wünsche mir von Dir neue Scheiben für den Winkelschleifer


    Lieber rafftnix, wenn du den Winkelschleifer baust, dann kriegst du von mir auch passende Scheiben dazu


    Scheinbar ist hier das große wünschen ausgebrochen, und es wird auch noch angenommen...!
    Da will ich mích auch nicht mehr zurückhalten...und mache es ganz vorbildlich wie der andere "Wünscher" auch... ;) !


    Lieber fruktor, ich wünsche mir, das man die Bäume auf 1Meter Stücke sägen kann. Diese 1Meter Stücke sollte man dann mit dem,eigens für den Forstmod gebauten Holzspalter klein machen können. Das man diese kleineren Stücke stapeln kann um sie später, nach einer Trocknungszeit von ein paar Ingame Tagen, mit der (für den Forstmod) neu gebauten Bandsäge in ca 33cm Stücke zu sägen. Diese handlichen Stücke sollte man dann auf seinem Hof in den Ofen verbrennen können. Hierzu müsste dann noch ein begehbares Wohnhaus gebaut werden, wo ein schöner kaminofen drin steht. Legt man nun kein Holz mehr nach, wäre es super wenn der Bildschirm wie einfrieren würde, also schöne Eisblumen, die man dann erst freikratzen muss um das Feuer wieder anzuheizen. :D:D


    Wobei, jetzt fällt mir ein, wenn etwas zufriert, dann ist es ja Winter...da kann man ja kein Getreide ernten, also sollte hier eine Möglichkeit geschaffen werden die Wachstumszeiten des Getreide zu stoppen und auch schnee fallen zu lassen... :D !



    Da ich selber noch an den Weihnachtsmann glaube, hoffe ich ganz stark das ich am Heiligabend hier eine positive Antwort auf meinen Wunsch lesen werde (gern auch vorher)...ansonsten, wäre wohl mein letzter glaube an den Weihnachtsmann auch zerstört...!
    </offtopic>



    Es ist echt toll was ihr hier auf die Beine gestellt habt und sicher noch auf die Beine stellen werdet. Euer Tagebuch über den Forstmod ist eine tolle Idee, wo man das wissenswerte einfach lesen kann ohne sich durch 15 Seiten Thread zu klicken.


    Macht einfach weiter so. Ich freue mich, wie die meisten wohl auch, auf den Mod. Lasst euch alle Zeit die ihr braucht. Und nehmt euch über Weihnachten eine paar Tage frei...habt alle ein schönes und besinnliches Weihnachtsfest im Kreise eurer liebsten. Die LS Com denkt in den langweiligen Tagen an euch... ;)

    Echt schöne Map die du da baust, sieht bisher wirklich sehr schick aus. So wie man es von dir kennt.


    Da ich ja ewig nix gemacht hab in Sachen Maps....bin für Vorschläge dankbar...was noch alles rein muss in die Karte.....so in Sachen scripten etc quasi das technische....


    Wie ich dir schonmal geschrieben habe, vielleicht hast du es auf der Vogelsberg Map, http://www.farming-simulator.com/mod.php?lang=de&mod_id=306 ja selber schonmal getestet und lässt dich davon überzeugen das die MapBuyableObject sicher gut in deine Map passen würden. Die Windräder z.B kann man damit auch kaufbar machen und sogar für den Spieler ein Einkommen angeben wenn er sie gekauft hat.

    Ich finde es super das du, fruktor, rafftnix beim Skripten nun unterstützt, ich denke das es jetzt mit 2 Scriptern viel schneller voran geht wie nur mit einem.


    Und ich glaube,wenn ich mich nicht irre wurde es nirgends bisher erwähnt, wie man die Kettensäge transportieren wird. Aber auf deinem Bildern ist es glaube ich zum ersten mal sehen kann, wie die Kettensäge transportiert wird... :D

    Hi,


    Also die BGA komplett so zu kaufen wie sie in der Standartmap ist, das ist kein Problem. Habe ich dir jetzt mal zusammengebaut, brauchst du nur zu importieren und dann platzieren, Indexe sind alle angegeben. Buyable Trigger mit Icon ist auch drin. Nur noch den Pfad zu deiner XML anpassen und halt die Nummer des Objektes und beim Icon anpassen. Textname in der XML ist jetzt schlicht und einfach "BGA".



    Hier im ersten Bild kannst du sehen das ich z.B die SilagePlane und auch die Moving Planes nicht mit aufnehme. Braucht man ja auch nicht wenn man den TipTrigger des Silos und den Interaction Trigger und auch den Compacting Trigger angibt, somit kommen keine Meldungen. Dann die BGA gekauft und einen Abkippversuch gemacht.


    Hier kannst du dir die StandartBGA zum Einbau einfach runterladen, Texturen sind mit drin und sind die gleichen wie in der SampleModMap, mit Pfaden wie in der SampleModMap: http://www.file-upload.net/download-8321690/BGA.zip.html


    Ich habe bei der BGA auch gleich einen kleinen "Fehler" in meinem Skript entdeckt, leider...Nunja, jetzt ist es zu Spät. "Fehler" ist folgender, gibt man als Index ein Shape an, also ein kleines Object direkt. So wird dies nicht erkannt. Im Skript erfasse ich den Index und lese dann alle Unterobjekte aus, aber den Index selber nehme ich nicht auf. Da im Beispiel, die Objekte in eine TG kommen, brauchte ich das nicht, wozu eine TG aufnehmen, wenn ich eh alle Unterobjekte brauche...naja, jetzt weiß ich das ich den Index selber doch aufnehmen sollte. Aber können wir trotzdem alles einbauen, wenn man das Shape einfach in eine TG packt und den Index zur TG angibt. Etwas umständlich aber ich kann es jetzt leider nicht mehr rückgänig machen... :( !
    Einbau erfolgt bei der BGA wie folgt.


    Einfach die BGA mit dem onCreate in den BuyableTrigger einfügen, da kann man alle anderen TGs des MBO löschen, ausser halt die TG mit dem Icon.
    Somit funzt die BGA schonmal, da die Indexe in der BGA ja angegeben sind. So, dann bin ich alle Punkte der BGA durchgegangen. Den Bunker TipTrigger da fungt man den Index des Triggers einfach als Kauftrigger ein, den Haken bei Buy_Triggers_Auto rausnehmen. Somit werden einzelne Indexe gefordert, keine TG mehr mit zig triggern.


    objectDeleteTrigger: Auch den Index direkt kopieren.
    pushers und rolls: Da beide Indexe kopieren und in Buy_Objects einfügen
    silagePlaneSmall, silageCatcher und vehiclesBlocker: Da habe ich eine DummyTG erstellt, die Translation kopiert und die 3 Objekte wieder in der Dummy TG kopiert, dann den Index zu den TGs im Buy_Objects kopiert. Beim SilageCatcher muss man dann nur den Index in der BGA_Facility ändern, statt 0>0|5 ist es nun 0>0|5|0.


    ManureTank. Dieser ist etwas umfangreicher einzubauen. Hier brauchen wir 2 DummyTgs, einmal die DummyTG mit den Werten die für den Tank gebraucht werden, die 2.TG dann um einen Index zum Tank anzugeben.
    Der Sound wird als Translate Object erstellt, also hier beim Sound die Attribute einfügen den Index kopieren und sound ab unter die erde.


    bga, also die Gebäude, einfach Index kopieren und in Buy_Objects kopieren.
    Bei den Silos, da habe ich auch einfach den TipTrigger Index kopiert und ins Attribute Buy_Triggers kopiert, gleiches habe ich mit dem interactionTrigger und compactingTrigger gemacht.
    Die SiloWände dann auch als einfaches Objekt, den Index kopieren und in Buy_Objects kopiert.


    Man könnte wohl auch die DummyTgs zum Teil weglassen, wenn man die BGA komplett umbaut, also alles was Buy_Object ist in eine TG und dann die Indexe in der BGA.onCreate komplett neu anpassen. Das wollte ich jetzt aber nicht machen, damit du nicht alles komplett umbauen musst, denn ich denke du hast dich bei deiner Bga am Aufbau der StandartBga orientiert, somit sollte das ganze jetzt ziemlich schnell gehen beim Einbau.

    Danke für das Feedback.
    Die fehlende Erklärung zu der TG Translate Obejcts wurde hinzugefügt, sowie auch das erstellen einer Animation mit den MapBuyableObject, siehe Windräder in der Vogelsberg: http://www.mod-portal.com/foru…&postID=107713#post107713


    Richtig, die BGA in eine TG zu kopieren ist nicht der Sinn der Sache, weil normale Objekte (Hallen, Häuser usw) nur unsichtbar werden und die Colli wird rausgenommen, bei Triggern geht das nicht, stellst du einen Trigger unsichtbar so kannst du noch immer darin abkippen. Trigger werden im Skript unter die Erde gesetzt.
    Ich werde mir die BGA die Tage mal ansehen und dir an einem Beispiel fertig machen wie du die Ingame einbauen kannst um sie dann zu kaufen.


    Hier könnte man wohl auch eine doppelte Funktion erstellen, also z.B kannst du als erstes nur die Silos kaufen und vielleicht einige Gebäude, wenn du die hast, dann erst kannst du den Bunker dazu kaufen.
    Ich werde mal sehen ob ich da beide Beispiele zur Umsetzung fertig bekomme.

    Danke für deinen Selbstversuch. Und ein Schönes Beispiel hast du da zusammengebaut, genau soetwas habe ich mir immer vorgestellt, was man damit umsetzen kann.


    Meine Frage dazu ist nun, wie hast du es eingebaut?
    Hast du es dir an einem Beispiel aus der Vogelsberg Map exportiert und bei dir eingebaut und selber getestet, oder hast du es mit meinem TUT bzw der Docu innerhalb der zip eingebaut?
    Wenn mit TUT oder Docu, dann da die Frage ob du es leicht verstanden hast, oder ob man ggf. einige Punkte besser erklären muss?

    Danke.


    Ohne jetzt zu wissen wie die Mischstation ausfgebaut ist, würde ich prinzipiell sagen ja. Im Skript werden nur Trigger etwas anders behandelt wie z.B Gebäude (static). Da ich aber zum Identifizieren den Index brauche, kommt es auf den Aufbau des Objektes an. Wenn du z.b bei einem Gebäude (Kartoffel ladeband) die Indexe auch angeben musst (Triggerindex lyingPS usw) ist es kein Problem. Das Objekt einfach auseinandernehmen und in die passende TG im MBO einfügen, indexe im MBO eintragen und fertig bist du.


    Bei Ställen ist es gar kein Problem, hier kannst du auch einen Stufenweise ausbau einbauen. Zum Start hast du nur einen kleinen Stall(vielleicht sogar im Trigger ohne Mischfutter), dann kannst du einen größeren Kaufen, wenn du den hast dann einen ganz großen, bei dem auch Mischfutter im Trigger abzuladen geht. Vorher kannst du vielleicht noch das Silo kaufen.


    Ich freue mich jedenfalls auf das was man in zukunft (hoffentlich) an Ideen der Umsetzung zu sehen bekommt.

    Hi,
    erstmal Danke euch beiden für euer kleines Feedback und Lob.


    webalizer:


    Die XML sieht jetzt so aus: http://www.mod-portal.com/foru…&postID=105858#post105858 gegenüber dem ersten Post hier wurde die Nummerierung der Zeilen weggelassen und man fügt nur noch die Zeilen untereinander ein, egal wieviele. Dazu wurde mir wegen der Fehleranfälligkeit geraten, siehe hier: http://planet-ls.de/board/inde…age=Thread&threadID=18024


    Und ganz ehrlich, ich habe keine Ahnung wie das mit einem CDATA funktionieren würde, also das ausslesen aus der XML, ob das ganz normal geht wie ein String oder ob ich die CDATA anders auslesen muss. Zwischendurch hatte ich auch mal vor den Text innerhalb der LUA an das "Layout" anzupassen, also was die Position und eventuell die Größe der Schrift angeht. Das das ganze scheinbar ziemlich leicht mit dem setTextWrapWidth gehen würde, habe ich erst vor ein paar Wochen hier erfahren: http://planet-ls.de/board/inde…&postID=250079#post250079
    Da war es für mich schon zu spät.
    Ich kann auch nicht sagen ob man nun mit dem CDATA die gleichen Möglichkeiten hat, was die Schriftgröße angeht oder auch Leerzeilen, dafür habe ich mich damit auch nie genug beschäftigt.


    Ich danke die für deinen Hinweis und werde mal versuchen ob ich da eventuell noch etwas umbauen kann, bzw die Position innerhalb des Layouts auch mit setTextWrapWidth hinbekomme. Das ganze muss ich dann natürlich so umsetzen das die aktuelle Version trotzdem weiter ausgelesen werden kann.


    Gruß
    Bluebaby210