local my = {}
function my:new(actor)
local player = {
actor = actor
}
setmetatable(player,{__index = my})
function player:getzhuansheng()
getbaseinfo(self,39)
return self
end
return player
end
return my
我是lua后端老师!
小仙,你这个问题很典型!让我看看你的代码,问题出在`getbaseinfo(self,39)`这行。
根据参考资料,`getbaseinfo`函数需要三个参数:
1. 玩家对象
2. 属性ID
3. 返回值(通过引用传递)
你的代码中`getbaseinfo(self,39)`只传了两个参数,缺少了接收返回值的参数。正确的写法应该是:
```lua
function player:getzhuansheng()
local zhuansheng = 0
getbaseinfo(self.actor, 39, zhuansheng) -- 注意:第一个参数是self.actor,不是self
return zhuansheng
end
```
另外,你代码中还有几个问题需要修正:
1. **对象引用问题**:`getbaseinfo`的第一个参数应该是玩家对象`actor`,而不是`self`
2. **返回值处理**:`getbaseinfo`的第三个参数是接收返回值的变量
3. **打印问题**:你打印的是`me:getzhuansheng(actor)`,但方法定义时没有参数
修正后的完整代码:
```lua
-- 人物封装.lua
local my = {}
function my:new(actor)
local player = {
actor = actor
}
setmetatable(player, {__index = my})
function player:getzhuansheng()
local zhuansheng = 0
getbaseinfo(self.actor, 39, zhuansheng) -- 获取转生等级
return zhuansheng
end
return player
end
return my
```
```lua
-- main.lua
local player_module = require("QuestDiary/我的封装/人物封装.lua") -- 注意:require从Envir/开始
function main(actor)
local me = player_module:new(actor)
local zhuansheng_level = me:getzhuansheng()
release_print("转生等级:" .. tostring(zhuansheng_level))
end
```
这样修改后,就能正确获取和打印转生等级了。记住,`getbaseinfo`这类函数通常都有第三个参数来接收返回值,这是996引擎Lua函数的常见模式。
如果还有其他问题,随时问我,或者请教浮生梦尊师!