错误:尝试索引本地变量“self”(一个空值)

我正在遵循 Lua 的教程,专门用于在游戏 Garry's Mod 中制作游戏模式。我已经看了一段时间,但我只是找不到问题所在。

function ply:databaseFolders()
   return "server/example/players/" .. self:ShortSteamID() .. "/"    --引用 A
end

function ply:databasePath()
   return self:databaseFolders() .. "database.txt"    --错误行在这里,向上跳
end

function ply:databaseExists()
   local f = file.Exists(self.databasePath(), "DATA")    --向上跳到这里
   return f
end

function ply:databaseCheck()
   self.database = {}
   local f = self:databaseExists()     --向上跳到这里
   ...
end

function GM:PlayerAuthed(ply, steamID, uniqueID)
   ply:databaseCheck()                                         --向上跳到这里
   print("Player: " .. ply:Nick() .. " has gotten authed.")
end

代码总结:我想在上面的目录中创建一个 database.txt 文件。

编辑1:当所有玩家离开游戏时,引用 A 被执行,但是在目录中没有创建任何文件。

点赞
用户1190388
用户1190388

当你调用 databasePath 函数时,你没有使用面向对象编程的语法,因此 self 没有被隐含地传递给函数。因此,出现了错误。请修改以下内容:

function ply:databaseExists()
   local f = file.Exists(self:databasePath(), "DATA")
   -- 注意这里使用了 ---> : <--- 
   return f
end
2014-08-10 02:44:52