问题标签 [lua-5.2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
37 浏览

lua - Lua 中的有趣行为“...”

这不是一个问题。只是 Lua 是惊人的。

什么?

0 投票
4 回答
490 浏览

types - Lua 如何区分 1 和 1.0

我有一个配置脚本,用户可以在其中输入绝对值或百分比值的值。

绝对值写为 0.0 到 1.0 之间的值,而百分比值写为 0 到 100。

如何区分 1 和 1.0?如果我要使用字符串,那么这肯定不是问题......我想保持这个配置简单并且不必依赖字符串。

这可能吗?

回顾:

如何判断它ab.

编辑 配置文件看起来像这样:

在我的处理脚本中,我读取了这样的配置:

0 投票
1 回答
1811 浏览

c++ - 存储和返回 Lua 用户数据

我在 C++ 中有以下类

以及部分lua绑定代码:

我想将这些作为用户数据包装在 Lua 中,这样我就可以执行以下操作:

当我打印的地址时bb2我得到两个唯一的地址,这是有道理的,因为我已经调用了lua_newuserdata. 但理想情况下,我希望它返回相同的用户数据,因为它们指向相同的内存块。如何做到这一点?

我希望 Lua 负责内存,因此它会在垃圾收集时被正确删除。所以我不知道轻用户数据是否可能。

0 投票
1 回答
103 浏览

c - 创建后Lua c API更改库

我正在尝试使用 C API 在 Lua 中包装 ncurses。我正在使用stdscr指针:在initscr调用之前这是 NULL,并且initscr是通过我的绑定设计从 Lua 调用的。所以在驱动程序函数中我这样做:

这按预期工作。当我需要修改stdscr. initscr像这样绑定:

我需要修改stdscr库中的不再为空。Lua 端的示例代码:

但是,lncurses.stdscr是 NULL,所以它本质上是在运行 c 等价于keypad(NULL, true);

我的问题是,创建库后如何在 Lua 中修改库值?

0 投票
1 回答
251 浏览

lua - 通过_ENV模拟c ++'使用命名空间'

如果我有一个文件foo.lua

bar.lua我大量使用代码时,foo.lua我一直被打字所困扰,宁愿foo.add()只写我可以添加这个:add()bar.lua

但是当您从许多文件中包含许多值的别名时,这开始变得很痛苦。在 c++ 中有一种解决方法:

在 lua 中,我认为您可以像这样模拟此功能:

据我所知,它尊重范围,所以像下面的代码这样的东西很好玩:

实际上下面的代码不起作用。我正在通过 lua repl 运行代码。当我在 lua 文件中编写下面的代码片段时,它没有给出预期的结果。

我有什么理由后悔这样做吗?(除了同样适用的原因using namespace

0 投票
1 回答
218 浏览

c# - 如何在 lua cpp 模块中调用托管 c++ dll 函数

说明

我所有的函数都在 C# dll 项目中定义。然后我将 c# 函数包装在一个 cpp 库项目中,现在我想使用 c++ 编写一个 lua 模块并调用包装函数。

问题:

如何在 lua cpp 模块中调用包装函数?请给我一些建议,谢谢!

代码:

  1. libutilscore 项目(C# DLL)

    /li>
  2. ManagedDll 项目(C++ DLL)

    • 托管DLL.h

      /li>
    • 托管DLL.cpp

      1. libutils 项目(Lua CPP 模块)
    • libutils.h

      /li>
    • libutils.cpp

      /li>
0 投票
1 回答
67 浏览

lua - Lua 用户数据不可用

我有一些相对简单的 Lua 代码,它链接到一些 C 和一些 Lua。

这正如我所期望的那样工作。当我按空格键时,屏幕上的消息会发生变化,直到它运行到数组的末尾。这些zenith.方法都是用 C 实现的,使用 Userdata 来存储颜色(我有多种构造颜色的方法(rgba、hsl、命名,所以传递它而不使用数字参数是有意义的)

然后我尝试改变结构,如下所示:

唯一的变化是我已将颜色(即用户数据)提取到最外层范围。我希望这能够继续工作,但没有不断分配/收集颜色。相反,我只是得到一个黑屏。有小费吗?我的颜色是否过早地被垃圾收集,因为它们仅在关闭时可用?我还错过了什么其他魔法吗?颜色和颜色之间的唯一区别messages是它们是用户数据。

0 投票
1 回答
134 浏览

lua - LUA 5.2: Load/Require/etc - 将其限制为可以加载的特定目录

我正在尝试在我的游戏中保护 LUA(玩家可以在 LUA 中创建脚本)。我已经删除了许多函数来创建各种沙箱(os.execute例如,AKA 删除函数。)但是,我的游戏确实使用从其他位置加载脚本来减少编码冗余。又名:

require("Scripts/Additional/Crafting")在文件的顶部。

对我来说,这很好,但我不知道将 require/load/file.read() 保留为没有限制的影响,或者如果可能覆盖它,以便他们无法从外部加载或读取文件服务器。

现在我正在使用 NLUA (C#) 和 LUA5.2。我在创建 LUA 状态时删除了这些功能。

我想做的是保留 LOAD/REQUIRE/etc,但事先通过初始检查覆盖它,以确保它们位于 SCRIPT 目录中。新函数本身不可编辑(因为我将使用 NLUA 在 C# 中对其进行硬编码,或者在他们无法访问的文件夹之外创建一个单独的文件)。

或者,我可以通过 C# 对这些函数的脚本进行快速检查,并使用 REGEX 验证它们使用的目录,但我想知道 LUA 是否可以自己处理它。

抱歉,如果没有正确解释。

0 投票
1 回答
199 浏览

lua - 有没有办法在lua中捕获输出?

我正在尝试捕获例如的输出: print('Hello') 并将其存储在变量/表中。

请让我知道这是否可能。如果不是感谢您的回答。

0 投票
2 回答
293 浏览

lua - 如何创建具有唯一 ID 的表条目并使用该 ID 访问它们..?

嗨,我需要在 lua 中创建一个表,每个条目(记录)都可以用唯一的 id 表示

像这样我想插入和访问请帮助我解决这个谜语