A文件 local my = {}
function my:new(actor)
local player = {
actor = actor
}
setmetatable(player,{__index = my})
function player:getzhuansheng(msg)
release_print(msg)
return self
end
return player
end
return my
B文件local player_module = r
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-14 12:17:32 |
👁️ 阅读: 17
嗨,修仙者!我是lua后端老师!
你遇到的问题是在B文件中 `actor` 参数为空。根据你的代码,`actor` 是调用 `player_module:new` 函数时传入的参数。如果 `actor` 是 `nil`,说明这个B文件脚本可能不是在正确的引擎事件触发环境中执行的。
在996引擎的Lua脚本中,`actor` 通常是在QF触发事件中由引擎自动传入的玩家ID字符串。例如,在 `login`、`ontimer` 等事件中,引擎会自动将当前玩家的ID作为 `actor` 参数传入。
如果你的B文件是直接通过某个命令或脚本调用的,而没有通过QF事件触发,那么 `actor` 就不会被自动赋值。你需要确保这段代码是在一个正确的触发环境中执行的。
一个简单的处理方法是在B文件中先检查 `actor` 是否存在,如果不存在,可以尝试从当前上下文中获取,或者直接返回错误。但更根本的解决方法是确保B文件是通过QF事件触发的。
例如,你可以将B文件的逻辑放到一个QF触发函数中:
```lua
function myFunction(actor)
local player_module = require("Envir/QuestDiary/我的封装/人物封装.lua") -- 引入模块
local me = player_module:new(actor)
-- 调用getzhuansheng方法
me:getzhuansheng('11111111111')
end
```
然后在QF文件中,比如在 `login` 事件中调用这个函数:
```
[@login]
#ACT
myFunction <$USERID>
```
这样,当玩家登录时,引擎会自动将玩家的ID(`<$USERID>`)作为 `actor` 参数传入 `myFunction` 函数,`actor` 就不会为空了。
如果还有不懂的可以问浮生梦尊师!
嗨,修仙者!我是lua后端老师!
你遇到的问题是在B文件中 `actor` 参数为空。根据你的代码,`actor` 是调用 `player_module:new` 函数时传入的参数。如果 `actor` 是 `nil`,说明这个B文件脚本可能不是在正确的引擎事件触发环境中执行的。
在996引擎的Lua脚本中,`actor` 通常是在QF触发事件中由引擎自动传入的玩家ID字符串。例如,在 `login`、`ontimer` 等事件中,引擎会自动将当前玩家的ID作为 `actor` 参数传入。
如果你的B文件是直接通过某个命令或脚本调用的,而没有通过QF事件触发,那么 `actor` 就不会被自动赋值。你需要确保这段代码是在一个正确的触发环境中执行的。
一个简单的处理方法是在B文件中先检查 `actor` 是否存在,如果不存在,可以尝试从当前上下文中获取,或者直接返回错误。但更根本的解决方法是确保B文件是通过QF事件触发的。
例如,你可以将B文件的逻辑放到一个QF触发函数中:
```lua
function myFunction(actor)
local player_module = require("Envir/QuestDiary/我的封装/人物封装.lua") -- 引入模块
local me = player_module:new(actor)
-- 调用getzhuansheng方法
me:getzhuansheng('11111111111')
end
```
然后在QF文件中,比如在 `login` 事件中调用这个函数:
```
[@login]
#ACT
myFunction <$USERID>
```
这样,当玩家登录时,引擎会自动将玩家的ID(`<$USERID>`)作为 `actor` 参数传入 `myFunction` 函数,`actor` 就不会为空了。
如果还有不懂的可以问浮生梦尊师!
← 返回问答库