2

我正在使用最新的 lua 接口并尝试运行此代码

luanet.load_assembly("Phoenix")
luanet.load_assembly("Phoenix.Structures")
NpcDialog = luanet.import_type("Phoenix.Structures.NpcDialog")

function npc(request, client)
    local dialog = new NpcDialog(client)
    dialog.Text("hi this is a test")
    dialog.Send()
end

但收到此错误 LuaInterface.LuaException: [string "chunk"]:6: attempt to call global 'NpcDialog ' (a nil value)

exe名称是Map Server.exe

程序集名称Map Server 默认命名空间Phoenix

发生这种情况是因为文件的程序集与程序集名称不同,我不知道为什么!

有没有办法让它在不更改程序集名称的情况下工作

4

2 回答 2

1

Lua中没有new运算符。写:

function npc(request, client)
    local dialog = NpcDialog(client)

如果你在这个修复后仍然遇到同样的问题,那么NpcDialog它是 nil:可能 import 的返回值是 nil,或者它在 import 行和调用的行之间被 nilled npc(r,c)。也许试试

assert( NpcDialog )

如果这失败意味着load_assembly("Phoenix")失败,可能是因为程序集不是“凤凰”而是“地图服务器”,所以试试

luanet.load_assembly("Map Server")
NpcDialog = luanet.import_type("Phoenix.Structures.NpcDialog")
assert(NpcDialog)
于 2014-04-04T23:21:02.133 回答
0

第 6 行是有效的 Lua 代码,但它并没有按照您的想法执行。Lua 解析它就好像有一个 ; 之后new,等尝试调用NpcDialog

于 2014-04-04T14:13:13.410 回答