Umwandeln von userdata values

  • Guten Tag,

    und zwar geht es darum, dass ich mittels eines Methodenloaders unterschiedliche Methoden für ein automatisiertes Register/Login laden will:

    Lua
    local callback = loadstring("return Server:__Get('Lib'):__Get('R_Method'):get"..methodname.."('"..tostring(arg).."')")()


    arg entspricht hierbei dem Argument, welches bei einem Methodenaufruf mitgeliefert wird und das ist in der Regel (ausgenommen Passwort) ein Element.

    Hierbei besteht aber das Problem, dass ich kein Element mit einen String zusammentun kann und deshalb forme ich das Element (die userdata: value) in einen String um, und will ihn später via. getMetaTable wieder in eine MetaTable umformen:

    Lua
    function R_Method:getUsername ( element )
    	outputDebugString(tostring(element))
    	element = getmetatable(element)
    	outputDebugString(tostring(element))
    	if ( not isElement(element) ) then outputDebugString("Nein") return false end
    	return element:__Get("Username")
    end


    Aber in diesem Fall wird "Nein" ausgegeben, da das Element von getmetatable() die userdata: value nicht in die ursprüngliche Tabelle (Element) umformt.

    Kennt ihr eventuelle Alternativen oder die Lösungen für dieses Problem, damit die R_Method Methoden wiederum einwandfrei funktionieren auf diese Art und Weise mit dem loadstring, da ich das ungerne mittels weiteren Tables und Zusatzdefinitionen machen möchte.

    Diese Alternativen funktionieren auch nicht:

    Lua
    local callback = loadstring("return Server:__Get('Lib'):__Get('R_Method'):get"..methodname.."(arg)")()
    
    
    local callback = loadstring("return Server:__Get('Lib'):__Get('R_Method'):get"..methodname.."('arg')")()


    Mit freundlichen Grüßen
    Ainen

    Einmal editiert, zuletzt von Ainen (23. Mai 2016 um 22:11)

  • Dieses Thema enthält 2 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!