我一直在嘗試使用this module來嘗試使用回調函數返回一個值。Lua - 如何從mysql回調函數中返回一個值?
我覆蓋了默認的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
這是一個遊戲叫蓋瑞模組。我需要跟蹤我的服務器上的xp。
所以你現在要做些什麼? – hjpotter92
該代碼返回一個零值,我正在嘗試修復它。它應該從我的mysql數據庫檢索數據,或者默認值是什麼。 – user3654333
你的意思是對'GetPData'的調用應該返回這個值? – hjpotter92