Lua - 如何从mysql回调函数中返回一个值?

我已经试了一个月来尝试一个从回调函数返回值的方法,使用this module

我正在覆盖默认的GetPData函数,它从本地sql数据库中检索数据,但我想从一个MySQL数据库服务器中检索它。

以下是原始函数:

--[[---------------------------------------------------------
GetPData
- Saves persist data for this player
-----------------------------------------------------------]]
function meta:GetPData( name, default )

    name = Format( "%s[%s]", self:UniqueID(), name )
    local val = sql.QueryValue( "SELECT value FROM playerpdata WHERE infoid = " .. SQLStr(name) .. " LIMIT 1" )
    if ( val == nil ) then return default end

    return val

end

这是我尝试的代码:

function Player:GetPData(key, default)

   testget(self,key,default,function(junk)
    //LocalPlayer():ChatPrint("You have $" .. junk .. ".");
    print(junk)
    return junk
   end)

end

function testget(self,key, default, callback)
    local retVal = default
    insertQ = PDataDB:query("SELECT `value` from `playerdata` WHERE `uniqueid`='" .. self:UniqueID() .. "' AND key` = '" .. key .. "';");
    insertQ.onError = DBError
    insertQ.onData = function(self, data)
        retVal = data.value or default
        print(retVal)
        print("--------------------------------------------------------------------------------------------------------------")
    insertQ.onSuccess = function(self)
        print(retVal)
        callback(retVal);
    end
    insertQ:start()
    end

end

这是一个名为Garrys Mod的游戏。我需要跟踪我所有服务器上的经验值。

点赞
用户1190388
用户1190388

将你的函数修改为类似以下形式的代码:

function Player:GetPData( key, default )
    local retVal = 0 -- 或者你想要的任何默认值
    testget(self, key, default, function(junk)
        //LocalPlayer():ChatPrint("你拥有 $" .. junk .. "。");
        print(junk)
        retVal = junk
        return junk
        end
    )
    return retVal
end
2014-05-20 05:34:22