manualIgnition für alle Fahrzeuge inkl. Standardfahrzeuge

  • [lua]if SpecializationUtil.hasSpecialization(ClaasAxion850v5.OperatingHours, v.specializations) then
    print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!");
    print(type(ClaasAxion850v5.OperatingHours));
    end;[/lua]


    und in der Log steht dann:

    Zitat


    ClaasAxion850v5.ClaasAxion850: Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!
    table


    ...ClaasAxion850v5.OperatingHours ist also ein table.

  • Wie ich vermutet habe.


    Als alternative Methode könntest du folgendes probieren:
    [lua]if rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name)) ~= nil then[/lua]


    Ist zwar nicht unbedingt die schönste Methode, sollte aber funktionieren. Selbst getestet hab ichs aber nicht.

  • Damit sind wir der Lösung wieder ein großes Stück näher gerückt. Das Problem ist nur, dass es anscheinend nur beim ersten Mod, der die Spezi hat, funktioniert...


    [lua]
    if rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name)) ~= nil then
    print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    end;[/lua]


    In der Log steht jetzt nur beim ersten Mod (NH_CR9090_EVO) das die Spezi vorhanden ist, beim ClaasAxion850v5 steht es nicht:


  • [lua]SpecializationUtil.registerSpecialization("manualMotorIgnition", "ManualMotorIgnition", g_modsDirectory.."/zzz_ManualMotorIgnition/ManualMotorIgnition.lua")



    print("--- ManualMotorIgnition - specialization for manual motor ignition ---");


    for k,v in pairs(VehicleTypeUtil.vehicleTypes) do
    if v~=nil then
    for a=1, table.maxn(v.specializations) do
    local s = v.specializations[a];
    if s ~= nil then
    if s == SpecializationUtil.getSpecialization("motorized") then
    print(tostring(v.name)..": Specialization motorized is present");
    print("adding manualIgnition to:"..tostring(v.name));
    table.insert(v.specializations, SpecializationUtil.getSpecialization("manualMotorIgnition"));

    local v_name_string = v.name
    print(v_name_string)
    local point_location = string.find(v_name_string, ".", nil, true)
    print(tostring(point_location))
    if point_location ~= nil then
    local _name = string.sub(v_name_string, 1, point_location-1);
    print(_name)
    if rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name)) ~= nil then
    print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    end;
    end;
    end;
    end;
    end;
    end;
    end;[/lua]


    Habs vorsichtshalber eben nochmal ohne die vielen ausgeklammerten Tests probiert... gleiches Ergebnis: nur beim NewHolland wird der Satz angezeigt.


  • Hmmm... Dann nochmal eine weitere Alternative:
    [lua]local tempKey = string.format("%s.OperatingHours", _name); if SpecializationUtil.specializations[tempKey] ~= nil then
    print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    end;[/lua]

  • leider das gleiche in grün.


    Hab vorhin mal noch einen kleinen Test eingebaut, um zu sehen, was die Funktion rawget ausgibt und welchen Typ es hat.


    [lua]SpecializationUtil.registerSpecialization("manualMotorIgnition", "ManualMotorIgnition", g_modsDirectory.."/zzz_ManualMotorIgnition/ManualMotorIgnition.lua")



    print("--- ManualMotorIgnition - specialization for manual motor ignition ---");


    for k,v in pairs(VehicleTypeUtil.vehicleTypes) do
    if v~=nil then
    for a=1, table.maxn(v.specializations) do
    local s = v.specializations[a];
    if s ~= nil then
    if s == SpecializationUtil.getSpecialization("motorized") then
    print(tostring(v.name)..": Specialization motorized is present");
    print("adding manualIgnition to:"..tostring(v.name));
    table.insert(v.specializations, SpecializationUtil.getSpecialization("manualMotorIgnition"));

    local v_name_string = v.name
    print(v_name_string)
    local point_location = string.find(v_name_string, ".", nil, true)
    print(tostring(point_location))
    if point_location ~= nil then
    local _name = string.sub(v_name_string, 1, point_location-1);
    print(_name)

    local test = rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name))
    print ("test: "..tostring(test));
    print("type: "..type(test));

    -- if rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name)) ~= nil then
    -- print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    -- end;
    local tempKey = string.format("%s.OperatingHours", _name);
    if SpecializationUtil.specializations[tempKey] ~= nil then
    print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    end;
    end;
    end;
    end;
    end;
    end;
    end;[/lua]


    Beim NewHolland ist der Test ein table und beim ClaasAxion850v5 sind test und type nil:


  • Hier einmal komplett ohne Tests:


    [lua]SpecializationUtil.registerSpecialization("manualMotorIgnition", "ManualMotorIgnition", g_modsDirectory.."/zzz_ManualMotorIgnition/ManualMotorIgnition.lua")



    print("--- ManualMotorIgnition - specialization for manual motor ignition ---");


    for k,v in pairs(VehicleTypeUtil.vehicleTypes) do
    if v~=nil then
    for a=1, table.maxn(v.specializations) do
    local s = v.specializations[a];
    if s ~= nil then
    if s == SpecializationUtil.getSpecialization("motorized") then
    print(tostring(v.name)..": Specialization motorized is present");
    print("adding manualIgnition to:"..tostring(v.name));
    table.insert(v.specializations, SpecializationUtil.getSpecialization("manualMotorIgnition"));

    local v_name_string = v.name
    print(v_name_string)
    local point_location = string.find(v_name_string, ".", nil, true)
    print(tostring(point_location))
    if point_location ~= nil then
    local _name = string.sub(v_name_string, 1, point_location-1);
    print(_name)

    -- local test = rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name))
    -- print ("test: "..tostring(test));
    -- print("typetest: "..type(test));

    -- if rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name)) ~= nil then
    -- print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    -- end;


    local tempKey = string.format("%s.OperatingHours", _name);
    -- print("tempKey: "..tempKey)
    -- print("typetempKey: "..type(tempKey));
    -- local test2 = SpecializationUtil.specializations[tempKey]
    -- print ("test2: "..tostring(test2));
    -- print("typetest2: "..type(test2));

    if SpecializationUtil.specializations[tempKey] ~= nil then
    print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    end;
    end;
    end;
    end;
    end;
    end;
    end;[/lua]


    Ergebnis:

  • Und nochmal mit den Tests zu der tempKey-Version:


    [lua]SpecializationUtil.registerSpecialization("manualMotorIgnition", "ManualMotorIgnition", g_modsDirectory.."/zzz_ManualMotorIgnition/ManualMotorIgnition.lua")



    print("--- ManualMotorIgnition - specialization for manual motor ignition ---");


    for k,v in pairs(VehicleTypeUtil.vehicleTypes) do
    if v~=nil then
    for a=1, table.maxn(v.specializations) do
    local s = v.specializations[a];
    if s ~= nil then
    if s == SpecializationUtil.getSpecialization("motorized") then
    print(tostring(v.name)..": Specialization motorized is present");
    print("adding manualIgnition to:"..tostring(v.name));
    table.insert(v.specializations, SpecializationUtil.getSpecialization("manualMotorIgnition"));

    local v_name_string = v.name
    print(v_name_string)
    local point_location = string.find(v_name_string, ".", nil, true)
    print(tostring(point_location))
    if point_location ~= nil then
    local _name = string.sub(v_name_string, 1, point_location-1);
    print(_name)

    -- local test = rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name))
    -- print ("test: "..tostring(test));
    -- print("typetest: "..type(test));

    -- if rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name)) ~= nil then
    -- print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    -- end;
    local tempKey = string.format("%s.OperatingHours", _name);
    print("tempKey: "..tempKey)
    print("typetempKey: "..type(tempKey));
    local test2 = SpecializationUtil.specializations[tempKey]
    print ("test2: "..tostring(test2));
    print("typetest2: "..type(test2));

    if SpecializationUtil.specializations[tempKey] ~= nil then
    print(tostring(v.name)..": Specialization OperatingHours is present !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    end;
    end;
    end;
    end;
    end;
    end;
    end;[/lua]


    Ergebnis:




    Irgendwie deprimierend die Geschichte... Ich bedanke mich bei euch auf jeden Fall schonmal für eure Mühen! Auch wenn es vielleicht nicht zu einer Lösung kommt, habe ich und vielleicht auch ein paar Mitleser ne Menge gelernt heut. ;)

  • Äußerst merkwürdig. So rein nach meiner Logik gesehen müsste das ja korrekt für alle funktionieren.


    Nimm testweise mal den NHCR9090_v3LP raus. Nur um auf Nummer sicher zu gehen, dass es nicht an dem liegt. Auch wenn dann vermutlich die Spezi nur beim Lexion erkannt wird.


    Wenn das Problem dann immer noch auftaucht kannst du dir mal vor test2 die Größe der Spezi-Tabelle ausgeben lassen. Vorher den NH wieder rein, wenn dann wieder das gleiche Ergebnis ist müsste so rein theoretisch die Spezi-Tabelle eine andere Größe haben. Ansonsten sollte der ja eigentlich keine Probleme haben die Spezi auch bei den anderen Mods zu erkennen, weil die dann auf jeden Fall vorhanden ist.
    [lua]print(table.getn(SpecializationUtil.specializations));[/lua]

  • Hallo bassaddict,


    du brauchst nicht weiter an deiner Logik zweifeln, es funktioniert für alle einwandfrei!


    Das Problem war einfach nur, dass die Spezi beim NewHolland den Namen "OperatingHours" und bei allen anderen die Spezi den Namen "operatingHours" hat... das kommt eben davon, wenn die Leute nicht auf das einheitliche Verwenden von Groß- und Kleinschreibung achten.



    Nochmals vielen Dank für deine Tips ;)




    Gruessla TOM

  • Passt zwar jetzt nicht unbedingt hier rein, aber ich muss es mal sagen.


    Ich find es ganz gut, das du dir das zur Hand nimmst, das dieser Mod selbstständig "installiert" wird und nicht per Hand eingefügt werden muss. Auch muss ich sagen, das du die gefixte Version nimmst und nicht die, die im MP ordentlich für errors sorgt. ;) Selbst die vom New Holland ist nicht ganz Bugfrei. Von meiner Seite aus gibt es keine Einwände. :D


    Ein kleinen Punkt hab ich aber, der mich interessieren würde. In meiner gefixten Version gibt es einen kleinen neuen Punkt. Der wäre "motorSoundLeave". Das ist der Sound der zu hören ist, wenn man aussteigt und ums Fahrzeug läuft. Ich wüsste jetzt auch keine Möglichkeit, das zu lösen ohne die xml des Mods zu bearbeiten. motorSoundLeave is ja nix anderes als ne Kopie vom Idle-Sound. Vielleicht hilft dir das etwas weiter. ;)


    Gutes gelingen. :thumbsup:


    MfG

  • Mercí... anscheinend habe ich allerdings nicht die aktuellste Version des Skripts, denn ich kann darin kein "motorSoundLeave" finden?
    Macht es eigentlich Sinn, einen extra Sound einzubauen, denn im Prinzip hat ja jedes Fahrzeug schon einen solchen Sound... und außerdem ist er doch bei vielen Fahrzeugen unterschiedlich.


    Mir ist noch aufgefallen, dass das Starten über die Beschleunigungstasten nicht funktioniert hat (mit der Tastatur jedenfalls nicht, Lenkrad und Gamepad kann ich nicht testen).
    Hast du "InputBinding.AXIS_MOVE_FORWARD_VEHICLE" durch "InputBinding.AXIS_FORWARD" ersetzt? Und wenn ja, warum?



    Gruessla TOM

  • Das mit den Tasten läuft auf dem Standard. Da ist nichts neues. Hast du auch die Version aus dem MB Trac 1600 Turbo V2 genommen? Denn nur in der ist das alles so angepasst. In der Contest-Version waren noch eine Bugs vorhanden die erst mit der V2 gefixt wurden unter anderem auch das mit den Tasten. Selbiges trifft auch für das motorSoundLeave zu. Das ist schon im load-Bereich des Scripts zu finden.
    Das mit dem neuen Sounds musste sein, da es mir sonst nicht anders gelungen ist umzusetzen. Vielleicht gelingt es dir ja. ;)


    MfG

  • Guud, hab jetzt die V3 des Skripts vom MBTrac1600TurboV2.


    Den Sinn des "motorSoundLeave" hab ich allerdings noch nicht ganz geschnackelt... es ist eine Kopie der Datei "MBTrac1600idle.wav", also dem "motorSound".
    Bei allen Fahrzeugen, die ich gerade im mods-Ordner habe, ist dieser "motorSound" natürlich vorhanden und auch beim Verlassen des Fahrzeugs in einem gewissen Radius um das Fahrzeug zu hören. So zumindest bei der vorletzten Version der manualIgnition, die ich derzeit benutze.


    Hat das beim MBTrac nicht funktioniert? Oder wolltest du die Werte für "radius" und "innerRadius" ändern?

  • Och Mensch Mofa-Killer, jetz läßt mich aber ganz schön hängen :(
    Hätte ja schon gern gewußt, ob das ganze mit dem Sound benötigt wird, bevor ich darin Zeit investiere, um das ganze für die Modifikation ready zu machen.


    Es muß doch einen guten Grund gegeben haben, warum du dir damals dir Arbeit gemacht hast, diesen motorSoundLeave einzubauen.

  • Naja, halb so schlimm... hab das Skript jetz eh lieber nochmal überarbeitet, also noch a wengla an LS11 angepaßt (Stichwort "function updateTick"), und irgendwie wollte der Helfer nicht stehen bleiben, wenn man den Motor ausgeschalten hat.
    Habs jetz so gelöst, dass der Helfer automatisch den Motor einschaltet und dass man den Motor manuell nicht auschalten kann, wenn der Helfer aktiv ist.



    Weiß jemand von euch, ob die Variablen "fuelConsumption" , "distanceDriven", "fuelUsed" und "runningTime" irgend einen Sinn haben... bzw. von irgendeinem Skript genutzt werden?
    Außer dass Sie in der xml abgespeichert bzw. beim Spielstart daraus geladen werden, sehe ich keine Verwendung dafür... die Variablen für die Spielstatistik haben ja andere Namen (z.B. "fuelUsage", "traveledDistance").

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!