修改 Lua 函数

我正在尝试修改一个 Lua 游戏(CtGW)。有一个函数 engine:GetSavegames,它返回一个字符串数组,但我无法访问。我需要修改返回的结果。我尝试了以下方法,但是收到了一个 “function arguments expected near 'engine'” 的错误。

getsaves = engine:GetSavegames
engine:GetSavegames = function()
 return getsaves()
end
点赞
用户1442917
用户1442917

engine:GetSavegames 只是方法调用的有效语法,而不是赋值语句。正如 @ChrisBeck 在 这条评论 中所写的那样,你需要使用 engine.GetSavegame,但还需要传递任何参数,这些参数将包括实际对象。

类似这样的代码可能有效:

local getsaves = engine.GetSavegames
engine.GetSavegames = function(...)
  return getsaves(...)
end

这个操作通常称为 monkeypatching

2015-11-12 06:43:33