Lua Script Fragen "Class"

Eure Foren für alle Diskussionen rund ums Thema Modding.
Dimer24
Posts: 75
Joined: Fri Nov 29, 2013 5:40 pm

Lua Script Fragen "Class"

Post by Dimer24 »

Hallo

Mein Script:
-- BaleDestroyerTrigger2 class
--
-- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved.
--
-- Geaender von: Dimer24
-- 03.01.2017
print ("")
print (" [ 09] -> ***** BaleDestroyerTrigger2 *****")
print (" [ 10] -> Script wird gestarte")
print ("")


BaleDestroyerTrigger2 = {};
print ("")
print (" [ 14] -> BaleDestroyerTrigger2 Tabelle wurde erstellt")
print (" [ 15] ---> Ausgabe der Tabelle -- BaleDestroyerTrigger2")
DebugUtil.printTableRecursively(BaleDestroyerTrigger2," --",0,5)
print ("")

print ("")
print (" [ 20] -> Ausgabe der Tabelle -- BaleDestroyerTrigger2_mt")
BaleDestroyerTrigger2_mt = Class(BaleDestroyerTrigger2);
print (" [ 22] -> BaleDestroyerTrigger2_mt Tabelle wurde erstellt")
print (" [ 23] ---> Ausgabe der Tabelle -- BaleDestroyerTrigger2")
DebugUtil.printTableRecursively(BaleDestroyerTrigger2," --",0,5)
print ("")

print (" [ 26] ---> Ausgabe der Tabelle -- BaleDestroyerTrigger2_mt")
DebugUtil.printTableRecursively(BaleDestroyerTrigger2_mt," --",0,5)
print ("")

InitObjectClass(BaleDestroyerTrigger2, "BaleDestroyerTrigger2");

function BaleDestroyerTrigger2.onCreate(id)
g_currentMission:addNonUpdateable(BaleDestroyerTrigger2:new(id));

end;

function BaleDestroyerTrigger2:new(id)
print (" -->>> new (id): ".. id)
DebugUtil.printTableRecursively(g_currentMission, "." , 0, 2);
local self = {};
setmetatable(self, BaleDestroyerTrigger2_mt);
self.triggerId = id;
addTrigger(self.triggerId, "TriggerCallback", self);
self.isBaleDestroyerTrigger2 = true;
self.isEnabled = true;
self.appearsOnPDA = Utils.getNoNil(getUserAttribute(id, "appearsOnPDA"), true)
if self.appearsOnPDA then
local mapPosition = id
local mapPositionIndex = getUserAttribute(id, "mapPositionIndex")
if mapPositionIndex ~= nil then
mapPosition = Utils.indexToObject(id, mapPositionIndex)
if mapPosition == nil then
mapPosition = id
end
end
local x, _, z = getWorldTranslation(mapPosition)
self.mapHotspot = g_currentMission.ingameMap:createMapHotspot("baleSellTrigger", "", nil, getNormalizedUVs({8, 520, 240, 240}), {1,1,1,1}, x, z, nil, nil, false, false, false, 0, nil, MapHotspot.CATEGORY_TRIGGER)
end
return self;
end;

function BaleDestroyerTrigger2:delete()
removeTrigger(self.triggerId);
if self.mapHotspot ~= nil then
g_currentMission.ingameMap:deleteMapHotspot(self.mapHotspot)
end
end;

function BaleDestroyerTrigger2:deleteMap()
end;
-- da wir das Script mit Mapstart gestartet haben, löschen wir das Script auch beim Beenden der Map

function BaleDestroyerTrigger2:keyEvent()
end;
-- diese Funktion registriert Tastatureingaben, wir benötigen sie zwar nicht, müssen sie aber hier mit einfügen, Erklärung folgt ***

function BaleDestroyerTrigger2:mouseEvent()
end;
-- diese Funktion registriert Mausbewegungen und -eingaben. Hier gilt das gleiche wie mit der oberen Funktion ***

function BaleDestroyerTrigger2:update()
end;

function BaleDestroyerTrigger2:draw()
-- string = "Ein Text zum Probeausgeben";
-- die Variable "string" enthält den Text, den wir auf dem Bildschirm ausgeben möchten

-- renderText(0,0.05,0.02,string);
end;

g_onCreateUtil.addOnCreateFunction("BaleDestroyerTrigger2", BaleDestroyerTrigger2.onCreate);

function BaleDestroyerTrigger2:TriggerCallback(triggerId, otherActorId, onEnter, onLeave, onStay, otherShapeId)
if self.isEnabled then
if onEnter then
-- this happens if a compound child of a deleted compound is entering
if otherActorId ~= 0 then
local object = g_currentMission:getNodeObject(otherActorId);
if object ~= nil then
if object:isa(Bale) and object:getCanBeSold() then
playSample(g_currentMission.cashRegistrySound, 1, 1, 0);
-- TODO: display a particle effect

if g_currentMission:getIsServer() then
local difficultyMultiplier = g_currentMission.missionInfo.sellPriceMultiplier;
local baseValue = object:getValue();
g_currentMission:addSharedMoney(baseValue * difficultyMultiplier * 1.8, "soldBales");
g_currentMission:addMoneyChange(baseValue * difficultyMultiplier * 1.8, FSBaseMission.MONEY_TYPE_SINGLE, true, g_i18n:getText("finance_soldBales"));
object:delete();
end;

end;
else
if g_currentMission.nodeToVehicle[otherActorId] == nil then
-- there is nothing that could end up here, since physics objects are an object, thus this could only introduce bugs
-- delete(otherActorId);
end;
end;
end;
end;
end
end;
Fragen Block 1:

Wenn diese Zeile ausgeführt wird die Tabelle BaleDestroyerTrigger2 erstellt.
BaleDestroyerTrigger2 = {};

Wo wird diese Tabelle eingetragen?
Ist es möglich dass mit DebugUtil.printTableRecursively(g_currentMission.XXX, "." , 0, 2); angezeigt werden kann wo die Tabelle eingetragen wurde?

Mir ist bewusst dass ich die Tabelle mit DebugUtil.printTableRecursively(BaleDestroyerTrigger2," --",0,1) anzeigen kann.
Ich möchte nicht wissen welche Einträge die Tabelle hat, sondern ich möchte wissen wo die Tabelle angehängt wurde.


Fragen Block 2:

BaleDestroyerTrigger2_mt = Class(BaleDestroyerTrigger2);
Ist es richtig, dass bei diesem Aufruf die Funktion Class ausgeführt wird:
Registriert diese Funktion mein Script als function?


Fragen Block 3:

function BaleDestroyerTrigger2:new(id)
Wird diese function für jeden Trigger, dem ich unter User Attributes den Eintrag on Create eingefügt habe ausgeführt.

Ist es richtig dass durch diese Zeile jeder Trigger eine eigene ID erhält?

Hat jemand Lust und die Nerven mir das zu beantworten? :hmm: :hi:

Liebe Grüsse

Dimer24
mx11
Posts: 702
Joined: Wed Mar 28, 2012 9:10 pm
Location: BW

Re: Lua Script Fragen "Class"

Post by mx11 »

HI Dimer,

Block 1:
BaleDestroyerTrigger2 = {};
Instanziert (erstellt) ein Objekt der Klasse.

Diese Klassen werden in der Regel "global" erzeugt, d.h. auf der gleichen Ebene wie g_currentMission

Die Table müsste somit unter _G.BaleDestroyerTrigger2 zugreifbar sein.

Block 2:
Dient zur Registierung der Klasse im der MetaTable (http://lua-users.org/wiki/ObjectOrientationTutorial)

Block 3:
Ja das ist die ID des Triggers
self.triggerId = id;
addTrigger(id, "triggerCallback", self);
https://gdn.giants-software.com/documen ... class=3378

Grüße
MX11
LS 22 Mods:
Bank Management Modhub
Gebrauchte Hebebühnen Modhub
New Giants Island Modhub
LS 19 Mods:
Money Tool Modhub
LS 17 Mods:
Bank of Hagenstedt (https://farming-simulator.com/mod.php?l ... tle=fs2017)
LS 15 Mods:
Bank of Hagenstedt (mod_id=10838)
Dimer24
Posts: 75
Joined: Fri Nov 29, 2013 5:40 pm

Re: Lua Script Fragen "Class"

Post by Dimer24 »

Hallo mx11

Vielen Dank für die Infos.

Werde mir dass alles anschaue.

Gruss

Dimer24
Post Reply