Beiträge von Bluebaby210

    Auch mit Testskript funktioniert es leider nicht. Aber ich habe das Problem gefunden, es liegt an der identifizierung des Objektes.


    Habe mein onCreate jetzt einfach in einen Table eingefügt im onCreate:


    [lua]function Testskript.onCreate(id)
    local ts = Testskript:new(g_server ~= nil, g_client ~= nil);
    local index = g_currentMission:addOnCreateLoadedObject(ts);
    ts:load(id)
    ts:register(true)
    table.insert(Testskript.triggers, ts);
    end;[/lua]


    Wenn ich dann im updateTrailerTipping() anstatt nur Testskript:setFillLevel(fillDelta), dazu meinen Testskript.triggers[1] übergebe:
    [lua]Testskript:setFillLevel(Testskript.triggers[1], fillDelta);[/lua]
    und dann so rangehe:


    [lua]function Testskript:setFillLevel(id, fillDelta)
    id.fillLevel = id.fillLevel - fillDelta
    print(id.fillLevel);
    end;[/lua]
    Dann schreibt er mir das fill level auch in die log und erhöht es auch so wie es sein sollte.


    Also, kann ich mit der bisherigen Variante mein Objekt nicht eindeutig identifizieren, obwohl es nur einmal in der Map verbaut ist. Wobei es wohl auch nicht ganz vorteilhaft ist, es so zu lassen wie ich es jetzt zum Testen getan habe. Da muss ich mir also einen anderen Weg einfallen lassen.

    Hi,
    Ich bin derzeit dabei einen kleinen Mod zu erstellen, der über einen onCreate aufruf in die Map eingebaut werden soll.
    Mit meinem onCreate aufruf klappt auch alles wunderbar, die Indexe werden wie gewollt ausgelesen und auch alles ausgeführt.
    Mein Problem ist jetzt das ich einen TipTrigger dazu brauche, da ich aber nicht die ganze StandartTrigger.lua kopieren und in ein Skript packen wollte habe ich nun einen TipTrigger angelegt der über einen eigenen onCreate aufruf erstellt wird, bzw in dem Skript wird nur der benötigte updateTrailerTipping() Teil etwas umgeschrieben damit ich es so nutzen kann wie ich es brauche. Und da tritt dann mein Problem auch auf.


    Ich möchte das fillDelta des updateTrailerTipping() in mein anderes Skript übertragen. Somit habe ich in meinem ersten Skript eine function angelegt, die fillDelta erhält. Das klappt auch, aber wenn ich in der function mein eigenes fillLevel um fillDelta erhöhen will, kriege ich LOG Fehler, das "fillLevel" 'a nil value' ist.


    Kann mir da jemand einen Tip geben warum das so ist und wie ich das umgehen kann???


    Beide Skripte sind in einer lua, haben einen eigenen onCreate aufruf und funktionieren allein gesehen auch ohne Probleme.


    [lua]function Testskript:getTestFillLevel()
    return self.fillLevel;
    end;


    function Testskript:setFillLevel()
    local a = self:getTestFillLevel()
    print(fillDelta); --fillDelta schreibt er mir in die log, aber bei "a" steht eine leere Zeile in der Log
    print(a);
    end;
    --Versuche ich in der Fuction gleich zu rechnen mit self.fillLevel = self.fillLevel - fillDelta, schreibt er mir fillLevel "a nil value"







    function TestTipTrigger:updateTrailerTipping(trailer, fillDelta, fillType)
    if fillDelta < 0 then
    if self.isFarmTrigger then
    local siloFillType = fillType
    if fillType == Fillable.FILLTYPE_DRYGRASS then
    siloFillType = Fillable.FILLTYPE_GRASS
    end
    Testskript:setFillLevel(fillDelta); --hier rufe ich die Function auf
    else
    local desc = Fillable.fillTypeIndexToDesc[fillType]
    desc.totalAmount = desc.totalAmount - fillDelta
    local priceMultiplier = self.priceMultipliers[fillType]
    local difficultyMultiplier = math.max(2 * (3 - g_currentMission.missionStats.difficulty), 1)
    local greatDemandMultiplier = 1
    local money = Fillable.fillTypeIndexToDesc[fillType].pricePerLiter * priceMultiplier * difficultyMultiplier * greatDemandMultiplier * -fillDelta
    g_currentMission:addSharedMoney(money, "harvestIncome")
    end
    self:updateMoving(-fillDelta)
    end
    end
    -- <Attribute name="onCreate" type="scriptCallback" value="modOnCreate.TestTipTrigger"/>
    g_onCreateUtil.addOnCreateFunction("TestTipTrigger", TestTipTrigger.onCreate)[/lua]


    Dazu habe ich ein paar Bemerkungen geschrieben, Zeile 24 ruft meine Function des anderen onCreate skriptes auf, dort schreibt er mit das fillDelta auch in die LOG, aber self.fillLevel, was sich ja auf Testskript bezieht ist entweder eine nil Value oder eine leere Zeile in der LOG, wenn ich es mir über die Function getTestFillLevel hole.
    Wenn ich im update() mein self.fillLevel jeweils um dt erhöhe und in die Log schreiben lasse, dann funktioniert das ganze auch ohne Probleme.

    Also Bluebaby210 scheint da etwas falsch verstanden zu haben oder Manuel hat sich unglücklich ausgedrückt oder oder ...
    Egal, wir sind alle glücklich


    Wenn ich es vielleicht falsch verstanden haben, dann Sorry für die Fehlinfo hier. Und cool das du dich selber geäußert hast dazu. :whistling:


    Viel Glück in deinem neuen Job und viel spass in der Schweiz... :rolleyes::thumbup:

    woher stammt denn die Info dass fruktor nun bei Giants arbeitet?? also nicht dass ich es nicht glauben würde aber wer oder was ist denn die quelle auf der diese Diskussion beruht??


    Komme grad von der gamescom und Manuel hat es uns,die heute da waren auch gesagt,das fruktor bei Giants ist. Aber wenn ich das jetzt ganz richtig verstanden habe, nicht so wirklich fest angestellt, klang eher so wie "freier ptogrammierer", also schon für Giants arbeitend,aber wohl nicht in der schweiz.

    Vielen Dank das du da nochmal genau nachgesehen hast. :thumbup:


    Mir kam es nur irgendwie komisch vor, aber ich lag ja zumindest richtig was die k=0 schleife angeht. ^^


    Ich bin mir jetzt nur nicht ganz sicher was die Abfrage: if self.mySprays[i] then angeht, ob die ein true zurück gibt wenn dein self.mySprays ein table ist?!
    Aber das brauchst du nicht testen, das kann ich beim nächsten mal wenn ich an einem Skript bin auch selber mal testen.


    Das man es auch anders lösen kann wie mit dem modulo ist richtig. Ich glaube mir wäre das auch als letztes eingefallen... ^^


    Falls du es bei dir anders lösen willst: http://planet-ls.de/board/inde…&postID=236723#post236723

    Ich verstehe bei deinem Durschalten nur nicht so ganz was da passiert...


    [lua] for i,sprayType in ipairs(self.mySprays) do
    if sprayType ~= nil and sprayType == currentSprayFillType then
    for k=0,table.getn(self.mySprays) do
    i = (i % table.getn(self.mySprays))+1
    if self.mySprays[i] then
    action = self.mySprays[i];
    break;
    end;
    end;
    break;
    end;
    end;
    [/lua]
    Den Start also in pairs() verstehe ich ja noch, die abfrage mit sprayType ~= nil auch, soweit klar.


    Warum du dann aber mit k=0, die schleife anlegst, verstehe ich nicht, da die Tabelle doch eh mit 1 beginnt (aber gut du greifst ja eh nicht direkt drauf zu, also nicht mit self.mySprays[k] ). Denn im Grunde würde deine Schleife jetzt ja immer einmal mehr durchlaufen wie dein Table groß ist.


    Aber das mit dem modulo (%) verstehe ich jetzt mal ganz und gar nicht.


    i, ist ja der Platz in deinem Table. Und hat den (jetzt) den Wert des Durchlaufes, z.B 1. Dann veränderst du doch aber den Wert von i, oder sehe ich das jetzt falsch?


    i = (i / 3) +1,


    Wenn es im ersten Durchlauf der in pairs Schleife passiert das du die for schleife anfängst, dann heißt das doch:
    i = (1/3) +1 --1/3 ergibt durch modulo ja den Rest, also 1, da 1 nicht durch 3 teilbar ist, dann addierst du 1 dazu, somit ist i = 2.



    Das verstehe ich einfach nicht, oder habe grad nur ein Brett vor dem Kopf, was du damit erreichst?!
    Kannst du mir das mal erklären?

    Hm... komisch ist das für mich auch.
    Aber ich habe deinen Code grad schnell mal in einen einfachen Trailer eingebaut und die fillTypes damit ausgelesen, also ("vehicle.fillTypes#fruitTypes");


    Die Fruchtsorten in der XML sind folgende:

    XML
    <fillTypes fruitTypes="wheat rape maize barley chaff potato sugarBeet manure"/>


    Die Ausgabe in der LOG sah so aus:


    Dazu war die Ausgabe von table.getn(self.mySprays) = 6.000000
    Was aus sehr komisch ist, da ich ja 8 FruitTypes eingetragen habe.


    Wenn ich dann aber mit:
    [lua] for k,v in pairs(self.mySprays) do
    print(k)
    print(v)
    end;[/lua]
    nochmal ein paar Ausgaben in die LOG schreiben lassen, dann kommt was ganz komisches dabei heraus:


    Also ist der Table ja eigentlich auch 8, bis zur 6 passt ja die durchnummerierung auch, aber dann ist es 9 und 24.
    Sprich du fügst ja die jeweilige "Fruchtnummer" in den Table ein. Ich weiß aber nicht ob leere Stellen nicht zu einer "Störung" von table.getn führen.


    Es kommt mir zumindest in diesem Test jetzt so vor, das sobald eine Stelle leer ist, table.getn=0 zurück gibt, Was dann auch dein Ergebnis erklären würde.



    Zur Not musst du vorher einfach eine Schleife einbauen, so wie es in den Standartskripten z.B beim Sprayer ab Zeile 66 gemacht wird:
    [lua] self.sprayLitersPerSecond = {};
    local i=0;
    while true do
    local key = string.format("vehicle.sprayUsages.sprayUsage(%d)", i);
    if not hasXMLProperty(xmlFile, key) then
    break;
    end;
    local fillType = getXMLString(xmlFile, key.. "#fillType");
    local litersPerSecond = getXMLFloat(xmlFile, key.. "#litersPerSecond");
    if fillType ~= nil and litersPerSecond ~= nil then
    local fillTypeInt = Fillable.fillTypeNameToInt[fillType];
    if fillTypeInt ~= nil then
    self.sprayLitersPerSecond[fillTypeInt] = litersPerSecond;
    if self.defaultSprayLitersPerSecond == nil then
    self.defaultSprayLitersPerSecond = litersPerSecond;
    end;
    else
    print("Warning: Invalid spray usage fill type '"..fillType.."' in '" .. self.configFileName.. "'");
    end;
    end;
    i = i+1;
    end;
    [/lua]
    Aber ob dir das hilft weiß ich nicht, kommt ja auch darauf an, was du genau damit vor hast. Aber hoffe ich konnte dir wenigstens etwas helfen.

    Jemand der Version ohnen "r" schreibt (vesion ), den kann man nicht ernst nehmen und dann kann man mit Sicherheit davon ausgehen, dass er die Beschreibung nicht gelesen hat.


    Und kann man jemanden der ohne mit "n" am Ende schreibt ernst nehmen... :D:D:D


    Edit: Oder sollte das in der Antwort "Versionen" (VersionOhnen) heißen??? ;):P


    Ich denke aufgrund der Schreibweise in den Kommentaren kann man keine Rückschlüsse ziehen. Sind wir uns doch einig, es liegt einfach am Alter und an der Beschreibung. Ist sie lang, reduziert man schonmal die Anzahl derer die sie lesen sehr stark. Handelt es sich dann noch um eine bestimmte Altersgruppe sind die Chance das die Beschreibung gelesen wird fast gegen 0%.



    Dennoch muss man sich bei manchen Kommentaren wirklich fragen ob überhaupt was gelesen wurde, oder mal auf die Dateigröße geguckt worden ist, ich meine kann man bei 211KB wirklich denken das man Fahrzeuge bekommt?
    Zudem wenn in der Überschrift schon DLC steht, ich glaube dann hat man es schon schwer den Mod überhaupt bei MH zum DL zu stellen (mal angenommen es würden Fahrzeuge sein).


    Man kann da glaube ich auch echt nix machen, ausser mal drüber schmunzeln und eine passende Antwort schreiben. Selbst wenn man diese "lustigen" Kommentare oben anheften würde, so würden trotzdem weiter genau solche kommentare kommen.
    Ist doch jetzt auch wieder einer mehr dabei... "das ist VERBOTEN"...

    Dann den pfad anpassen wenn dei bei der Waage, Watermod und GMM_Reg drin ist:


    XML
    <sourceFile filename="scripts/fruits.lua" />


    so steht es bei dir, ändern in:


    XML
    <sourceFile filename="map/scripts/fruits.lua" />

    Deine LOG stimmt aber nicht, also entweder hast du da Zeilen gelöscht oder die unveränderte Map im ordner gehabt, oder die Einträge in der Moddesc noch nicht gehabt, oder, oder, oder... denn die Moddesc kann der LS nie im Leben lesen ohne eine Fehlermeldung zu schreiben:


    XML
    <text name="choppedRape">
    <en>Chopped rape</en>
    <de>Gehäckselter Raps</de>
    </text>
    </l10n>
    </l10n>


    lösch den 2. </l10n> eintrag und dann ist da noch ein </text> zuviel.


    XML
    <text name="kalkSolid"> <en>lime</en> <de>Kalk</de> </text>
    </text>
    <text name="choppedStraw">
    <en>Chopped Straw</en>
    <de>Gehäckseltes Stroh</de>
    </text>


    Da auch unter dem kalk eintrag das </text> löschen. Dann sollte er zumindest schonmal die moddesc wieder laden können.
    Vorher gleich nochmal checken wo du die fruits.lua hast. Der WaterMod, Waage und GMM_Reg liegen alle in map/scripts, deine fruit.lua llerdings nur in "scripts"? Wenn du da einen extra scripts Ordner gemacht hast ist es ja ok. Ansonsten den Pfad in der moddesc gleich anpassen.

    Ich musste gestern schon herzhaft lachen, als ich die Frage in den Kommentaren bei MH zum MoreRealisticDLCs gelesen habe. Aber zusammen mit der Antwort von JakobT nicht mehr zu toppen:



    Dann solltest du mal schnell in die Kommentare sehen, dann wirst du heute zu dem nächsten sagen können: You made my day... :D



    Wobei ich mich über so eine Antwort von JakobT viel mehr freuen würde, besonders über seine Schlussworte:
    Küsschen + Umarmung... :love:
    :D

    Weil der Drescher nicht die: ChopperSwitcher, chopperSwitcher oder strawSpec verbaut hat, sondern es bei dem Drescher wohl die: strawChopper ist.


    Mach dir ne Sicherheitskopie vom Drescher und dann testest du es einmal so wie es webalizer ein paar seiten vorher schonmal beschrieben hatte:


    [Released] ChoppedStraw / gehäckseltes Stroh


    in deinem Fall natürlich dann strawChopper,


    XML
    <specialization name="chopperSwitcher" className="strawChopper" filename="pfadzu/strawChopper.lua" />


    XML
    <specialization name="chopperSwitcher" />


    Sprich du änderst bei deinem Drescher die Spezi strawChopper in chopperSwitcher um, das ganze 2x und dann speichern.



    Testen und dann Rückmeldung geben. Sonst kommen die Fragen noch 10x warum es in dem Drescher nicht geht.


    EDIT: webalizer hat es selber getestet, Antwort auch dazu geschrieben...

    Zum einen kann es an der Einstellung legen, die Texturen richten sich erst ab medium (?) korrekt aus.


    Wenn das nicht der Fall ist, hast du deine eigene SampleModMap.lua genommen oder nach wievor die aus der Holzhausen in deiner Map? Wenn du eine eigene, standart SampleModMap.lua genommen hast, dann ist das dein Problem.
    In der SampleModMap.lua muss man Zeilen hinzufügen wenn man die Winkeleinstellungen ändert, was in der Holzhausen meine ich auch ist. Also nicht nur 0, 45,90 Grad.


    Einfach die lua aus der Holzhausen Map öffnen und dort findest diese Zeile:


    [lua] self.terrainDetailAngleNumChannels = 8;
    self.terrainDetailAngleMaxValue = bitShiftLeft(1, self.terrainDetailAngleNumChannels) - 1;
    [/lua]


    befinden sich im function Holzhausen:loadHolzhausenFinished(node, arguments) Teil, Zeile 75. Einfach in deine lua kopieren und es sollte wieder gehen.

    So, den Einbau bei mir auch vollzogen.
    Einfach nur per Copy&Paste wie es in der Anleitung bzw der beigelegten XML steht, funktioniert auf Anhieb, wenn man die IDs die webalizer beschreibt raussucht und korrekt einsetzt.
    In Game ist auch alles da und sichtbar.


    Das einzige was mir beim Mais auffällt, das gehäckselte liegt dann schon direkt am Schneidwerk. Was bei den hier zu sehenden Bildern immer erst hinter dem Drescher liegt.
    Das Bild vom Selbstversuch mit dem Lexion:




    Danke webalizer für deine tolle Arbeit.

    Hat das ganze schonmal jemand im MP getestet und kann was dazu sagen??


    webalizer: Kannst du (dann) vielleicht auch einen externen DL Link, zumindest für die zzz_ChoppedStraw zur Verfügung stellen?
    Damit man diesen dann verlinken kann, wenn man das ganze in eine Map einbaut und diese zum DL stellt. Sonst müssen die User ja zwingend hier registriert sein um an die zzz_ChoppedStraw zu kommen.

    Wenn der GE die einträge brim speichern rausschmeißt,dann werden sie nicht gebraucht. Heißt die IDs von file und materal werden nicht weiter verwendet. Da muss also im foliage_layer einbau der fehler liegen. Normal solltet ihr beim öffnen im GE auch gehäckseltrs stroh "sähen" können,wenn das nicht zur auswahl steht,dann gar nicht erst speichern und die einträge nochmals überprüfen.

    Moin
    bei mir stürtzt das spiel beim laden ab. ich hab alles nochmal überprüft und eigentlich keine fehler gefunden.
    Bei mir in der log steht aber dies
    [
    Ich hab in den hier geposteten log´s nachgeschaut ob dies bei ihnen auch so ist.
    Und das dann nochmal runtergeladen und die dateien sind immer noch leer.


    Da hast du irgendwas mit dem shader angestellt bzw passt die fileID nicht zu einem shader. Vermutlich stimmt entweder ein pfad gar nicht, oder du hast bei einer customshaderID die fileId einer png eingetragen. Daher die beiden warnungen, da es eine png datei ist, ist sie nicht in utf-8 (xml), da es kein shader st, ist es auch nichz die shader version 2.
    Am besten einfach die map nochmal umbauen. Schritt für schritt.


    webalizer: Ist echt nr super coole funktion. Bombe... :thumbsup:

    Dafür musst du mal einen Baum pflanzen, fällen und entasten. Dann speichern und dir die Vehicles.XML ansehen, dann siehst du wie das ganze funktioniert. Zum einem ist der Baum als Item gespeichert, jeder einzelne Teil des Baumes, dieser hat zudem eine saveHelpId, diese ist dann bei den onCreateLoadedObject mit den joints wieder eingetragen.


    Dort hast du dann je nach Baum 3-5 Joint Einträge. Mit den einträgen werden dann diese Stämme verbunden, wobei hier jeweils die saveHelpID auch wieder zum tragen kommt.


    Aber mit ein paar Test auf einem leeren Spielstand findet man das schnell raus. Du kannst dann beim Eintragen in deine Map (defaultVehicles.xml) die saveHelpID auch neu vergeben. Ich habe da z.b einen Stamm fertig gemacht, in einer leeren Vorlage in Notepad++, wo ich die saveHelpID neu vergeben habe, dann bei den Joints ebenso, somit war der Baum hinterher wieder so wie er sein soll. Dann kannst du deinen einen Stamm nehmen, ihn in die defaultVehicles kopieren und dann einfach in der Vorlage die HelpID wieder ändern, dann einfach neu kopieren. Dazu musst du natürlcih auch die Position und Rotation in der defaultVehicles.xml mit angeben.


    Mit etwas zeit kann das ganze dann so aussehen, die Bäume wurden alle per copy&paste da hingelegt, keiner wurde in Game oder dem GE platziert:


    Für Kurzzeitkennzeichen brauchst du keine Papiere, da wird nur die Fahrgestellnummer eingetragen. Die Kennzeichen sind nur in der Versicherung im Verhältnis sehr teuer, hier solltest du vorher mit deinem Versicherungsmann sprechen, das sie die Kosten auf das später angemeldete Fahrzeug anrechnen. Oft geht es, ich hatte das auch, die 5Tage sollten irgendwas um die 80€ kosten, die hat er dann unter den Tisch fallen lassen weil ich das Auto auch bei ihm angemeldet habe.


    Vollabnahme gibt es in dem Sinn wie es früher war heute auch nicht mehr.


    Eventuell kannst du auch mit der Fahrgestellnummer mal zur Polizei das die es prüfen, ob eventuell das Fahrzeug als gestohlen eingetragen ist.