Moin..
Die Trigger und ich.. Stehen eindeutig auf Kriegsfuß.
Brauche mal wieder eure Unterstützung...
Im Grunde hab ich ne kleine LUA, die einem Trigger auf der Map zugeordnet ist. Letztlich soll diese, sobald ein Ballen in den Trigger geschoben wird, diesen löschen und mir dafür den Silofüllstand für Chaff erhöhen.
Als Grundlage hab ich mir den BarnMoverTrigger geschnappt, und den Teil der die Ballen löscht geklaut.. Weiter nicht schwer.. ? Doch...
[lua]
baleToChaff = {};
local baleToChaff_mt = Class(baleToChaff);
function baleToChaff.onCreate(id)
g_currentMission:addUpdateable(baleToChaff:new(id));
print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA baleToChaff: baleToChaff onCreate aufgerufen")
end;
function baleToChaff:new(id, customMt)
local instance = {};
if customMt ~= nil then
setmetatable(instance, customMt);
else
setmetatable(instance, baleToChaff_mt);
end;
instance.baleDeleteTrigger = id;
addTrigger(instance.baleDeleteTrigger, "baleDeleteTrigger", instance);
print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA baleToChaff: new block aufgerufen")
self.isFull = false;
return instance;
end;
function baleToChaff:delete()
removeTrigger(self.baleDeleteTrigger);
end;
function baleToChaff:update(dt)
end;
function baleToChaff:updateTick(dt)
end;
function baleToChaff:draw()
end;
function baleToChaff:baleDeleteTrigger(triggerId, otherId, onEnter, onLeave, onStay)
if onEnter then
print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA baleToChaff: onEnter aktiv")
-- this happens, if a compound child of a deleted compound is entering
if otherId ~= 0 then
print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA baleToChaff: otherId ~= 0 ")
local object = g_currentMission:getNodeObject(otherId);
if object ~= nil then
local isStrawbale = getUserAttribute(otherId, "isStrawbale");
local isHaybale = getUserAttribute(otherId, "isHaybale");
local isRoundbae = getUserAttribute(otherId, "isRoundbale");
if isStrawbale == true or isHaybale == true or isRoundbale == true then
if g_currentMission:getIsServer() then
print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA baleToChaff: getIsServer ist true")
local fillamount = 200
g_currentMission:setSiloAmount(Fillable.FILLTYPE_CHAFF, fillamount)
object:delete();
end;
elseif not object:isa(Vehicle) then -- do not delete vehicles, but everything else
if g_currentMission:getIsServer() then
object:delete();
end;
else
if g_currentMission.nodeToVehicle[otherId] == nil then
-- there is nothing that could end up here, since physics objects are an object, thus this could only introduce bugs
--delete(otherId);
end;
end;
end;
end;
end;
end;
g_onCreateUtil.addOnCreateFunction("baleToChaffOnCreate", baleToChaff.onCreate);[/lua]
So sieht mein Code derzeit aus, etwas schlampig, soll aber ja auch erstmal nur funktionieren.
Allerdings komme ich nichtmal bis zum onEnter in Zeile 42 bzw. darüber hinaus. Aufgerufen wird onCreate, auch baleToChaff:new wird aufgerufen.
Aber wenn ich ne Balle reinschiebe in den Trigger passiert einfach garnix.. Kein Error in der Log, aber auch kein Print dass onEnter aufgerufen wurde. Nix.. Die Balle bleibt auch wo sie ist.
Der Trigger ist auf jeden Fall ein Trigger, in der i3d ist der Haken drin. Collision hat er auch, collisionMask ist "1001000" wie beim Ballentrigger im Förderband.
Hab das ganze nun schon zig mal probiert, gefühle tausende male durchgelesen und auf Fehler überprüft, aber mit jedem mal mehr sieht man nur noch weniger.. Drum könnt ihr mir hoffentlich nen Tipp geben, oder seht grade gleich den Fehler..
Danke schonmal...
LG