Update 28.08.2020: Die hier beschriebene Code-Zeile ist veraltet, es gibt jetzt einen Nachfolger namens BetterContacts.
Seit der Einführung von Lua in EEP lassen sich über Kontaktpunkte Lua-Funktionen aufrufen. Dabei kann man aber nur einen Funktionsnamen angeben, und keine zusätzlichen Parameter. Mit folgendem Trick, man könnte es fast schon „Hack“ nennen, lässt sich diese Einschränkung umgehen. Es lassen sich dann nicht nur Funktionsaufrufe mit Parametern tätigen, man kann sogar jede gültige Lua-Anweisung direkt in einen Kontaktpunkt schreiben.
Für ganz eilige: Einfach die folgende Code-Zeile irgendwo an den Anfang eures Anlagenskripts kopieren, das Skript neu laden, einmal die 3D-Ansicht aufrufen (damit das Skript einmal ausgeführt wird), und ihr könnt Funktionsaufrufe mit Parametern in Kontaktpunkten verwenden.
setmetatable(_ENV,{__index=function(s,k) local n=k:gsub("%.",","); local p=load(n);if p then _ENV[k]=p;_ENV[n]=p;return p end;return nil end})
Einzige Einschränkung: Da EEP leider automatisch alle Kommas in Punkte umwandelt, kann zwischen Punkt und Komma nicht mehr unterschieden werden. Mit der obigen Zeile werden zwar alle Punkte wieder in Kommas zurückverwandelt (um Funktionsaufrufe mit mehreren Parametern zu ermöglichen), allerdings sind dann auch gewollte Punkte verschwunden.
Update: In Beitrag 26 gibt es eine neue Version der Codezeile.
Für die, die es auch verstehen wollen, habe ich anlässlich des 50.000sten Besuchers auf meiner Homepage den obigen Code-Schnipsel nochmal recht ausführlich erklärt. Aber nicht verzweifeln, wenn ihr es auch mit Erklärung nicht versteht: Das dahinterstehende Thema der "metatables" ist sehr komplex. Wichtig ist eigentlich nur, dass ihr den Code-Schnipsel oben kopieren müsst, und dass er dann das tut, was er soll.
Viele Grüße
Benny