Direkter Aufruf einer Funktion mittels Element (Automatische Übergabe, freier SourceCode)

  • Nützlich? 17

    1. Ja (14) 82%
    2. Nein (3) 18%

    Hey.
    Das ist zwar kein Tutorial, aber keine Ahnung wo das sonst am besten passen würde.
    Wie dem auch sei.. ich stelle euch meine "Klasse" (eher Skript) vor, welches den direkten Aufruf von Funktionen ermöglicht.
    Viel Spaß damit:

    Skript:

    Lua
    local elementTypes = {	"player",	"ped",	"water",	"sound",	"vehicle",	"object",	"pickup",	"marker",	"colshape",	"blip",	"radararea",	"team",	"spawnpoint",	"remoteclient",	"console",	"projectile"}addEventHandler("onClientResourceStart", resourceRoot, function()	updateElements()	setTimer(updateElements, 100, 0)end)function updateElements()	for i, type in pairs(elementTypes) do		for i, element in pairs(getElementsByType(type)) do 			debug.setmetatable(element, { 				__index = function(_element, _key)					return _G[_key]				end			})		end	endend

    Aufruf erfolgt so:

    Lua
    local health = localPlayer:getElementHealth()
    Lua
    local vehName = localPlayer:getPedOccupiedVehicle():getVehicleName()

    Tipps:
    Wendet das am Besten server- und clientseitig an.
    Dieser Skript sollte am Besten in der meta.xml ganz oben stehen.
    Bei Fragen stehe ich gerne zur Verfügung.

    Änderungen?
    Der Skript wird irgendwann optimiert.. das ist eher eine Übergangslösung, welche trz. sehr gut funktioniert.

    Wichtiges!
    Wenn ich das Event "onClientElementCreated" und "onElementCreated" in MTA implementiert habe, werde ich wahrscheinlich dieses Skript updaten..

    Edit:
    Dickes Dankeschön an @MrX:, der mich darüber informiert hat, aufgrund seiner schon geleisteten Praxis mit metatables, das eine metatable für alle Elemente steht.
    Von daher:

    Lua
    debug.setmetatable(root,	{		__index = _G	})
  • Dieses Thema enthält 10 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

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