Servusla,
habe letztens ein kleines Projekt aufgegriffen, an welches sich schon vor einiger Zeit der User "Donner" gewagt (allerdings nicht ganz fehlerfrei abgeschlossen) hatte.
Es dreht sich um das manualIgnition-Skript von Templaer (multiplayer ready: Andreas Schneider, bugfixes: Mofa-Killer), welches automatisch in "alle" Fahrzeuge inklusive Standardfahrzeuge "installiert" werden soll.
Soweit klappt alles wunderbar, das Skript wird in alle Mods die die Spezi "motorized" verwenden eingefügt.
Allerdings möchte ich, dass das Skript nicht(!) in Fahrzeuge eingebunden wird, die das Skript manualIgnition o.ä. schon verbaut haben... bzw. die schon verbaute Spezi (eventl. ältere Version) aus dem Mod entfernen lassen. Denn wenn sie doppelt vorhanden ist, wird der Motor auf Knopfdruck ein- und gleichzeitig von der zweiten Spezi wieder ausgeschalten.
Wie bei Courseplay, nutze ich folgende Zeilen um das Skript einzubinden:
[lua]SpecializationUtil.registerSpecialization("manualIgnition", "manualIgnition", g_modsDirectory.."/zzz_manualMotorIgnition/manualIgnition.lua")
print("--- manualIgnition - 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("adding manualIgnition to:"..tostring(v.name));
table.insert(v.specializations, SpecializationUtil.getSpecialization("manualIgnition"));
end;
end;
end;
end;
end;[/lua]
Das Problem liegt nun darin, dass mit "SpecializationUtil.getSpecialization" an dieser Stelle anscheinend nur Standard-Spezies (hier "motorized") herausgepickt werden können. Dem Mod hinzugefügte Spezis wie z.B. "operatingHours" oder "manualIgnition" werden dadurch nicht erkannt... vielleicht werden sie nicht bzw. erst später in das table "v.specializations" eingefügt?
Ein kleiner Test mit folgenden Zeilen soll das Problem verdeutlichen:
[lua]SpecializationUtil.registerSpecialization("manualIgnition", "manualIgnition", g_modsDirectory.."/zzz_manualMotorIgnition/manualIgnition.lua")
print("--- manualIgnition - 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("manualIgnition"));
end;
if s == SpecializationUtil.getSpecialization("operatingHours") then
print(tostring(v.name)..": Specialization operatingHours is present !!!!!!!!!!");
end;
if s == SpecializationUtil.getSpecialization("manualIgnition") then
print(tostring(v.name)..": Specialization manualIgnition is present !!!!!!!!!!");
end;
if s == SpecializationUtil.getSpecialization("hirable") then
print(tostring(v.name)..": Specialization hirable is present !!!!!!!!!!");
end;
end;
end;
end;
end;[/lua]
Wenn die Spezies motorized, operatingHours, manualIgnition und hirable in dem Fahrzeug vorhanden sind, werden die entsprechenden Zeilen beim Laden des Spiels in die Log.txt geschrieben. Der Mod ClaasAxion850v5.zip hat alle diese Spezies und folgendes steht nach dem Spielstart in meiner Log.txt:
Zitat von Log.txt--- manualMotorIgnition - specialization for manual motor ignition ---
ClaasAxion850v5.ClaasAxion850: Specialization motorized is present !!!!!!!!!!
adding manualIgnition to:ClaasAxion850v5.ClaasAxion850
ClaasAxion850v5.ClaasAxion850: Specialization hirable is present !!!!!!!!!!
Da die beiden Sätze "ClaasAxion850v5.ClaasAxion850: Specialization operatingHours is present !!!!!!!!!!" und "ClaasAxion850v5.ClaasAxion850: Specialization manualIgnition is present !!!!!!!!!!" fehlen, kann ich mir das Problem nur so wie weiter oben genannt erklären.
Kann das jemand bestätigen bzw. hat jemand von euch irgendeine Idee dazu?