问题标签 [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.
lua - Lua 中的有趣行为“...”
这不是一个问题。只是 Lua 是惊人的。
什么?
types - Lua 如何区分 1 和 1.0
我有一个配置脚本,用户可以在其中输入绝对值或百分比值的值。
绝对值写为 0.0 到 1.0 之间的值,而百分比值写为 0 到 100。
如何区分 1 和 1.0?如果我要使用字符串,那么这肯定不是问题......我想保持这个配置简单并且不必依赖字符串。
这可能吗?
回顾:
如何判断它a
与b
.
编辑 配置文件看起来像这样:
在我的处理脚本中,我读取了这样的配置:
c++ - 存储和返回 Lua 用户数据
我在 C++ 中有以下类
以及部分lua绑定代码:
我想将这些作为用户数据包装在 Lua 中,这样我就可以执行以下操作:
当我打印的地址时b
,b2
我得到两个唯一的地址,这是有道理的,因为我已经调用了lua_newuserdata
. 但理想情况下,我希望它返回相同的用户数据,因为它们指向相同的内存块。如何做到这一点?
我希望 Lua 负责内存,因此它会在垃圾收集时被正确删除。所以我不知道轻用户数据是否可能。
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 中修改库值?
lua - 通过_ENV模拟c ++'使用命名空间'
如果我有一个文件foo.lua
:
在bar.lua
我大量使用代码时,foo.lua
我一直被打字所困扰,宁愿foo.add()
只写我可以添加这个:add()
bar.lua
但是当您从许多文件中包含许多值的别名时,这开始变得很痛苦。在 c++ 中有一种解决方法:
在 lua 中,我认为您可以像这样模拟此功能:
据我所知,它尊重范围,所以像下面的代码这样的东西很好玩:
实际上下面的代码不起作用。我正在通过 lua repl 运行代码。当我在 lua 文件中编写下面的代码片段时,它没有给出预期的结果。
我有什么理由后悔这样做吗?(除了同样适用的原因using namespace
)
c# - 如何在 lua cpp 模块中调用托管 c++ dll 函数
说明:
我所有的函数都在 C# dll 项目中定义。然后我将 c# 函数包装在一个 cpp 库项目中,现在我想使用 c++ 编写一个 lua 模块并调用包装函数。
问题:
如何在 lua cpp 模块中调用包装函数?请给我一些建议,谢谢!
代码:
libutilscore 项目(C# DLL)
/li>ManagedDll 项目(C++ DLL)
托管DLL.h
/li>托管DLL.cpp
- libutils 项目(Lua CPP 模块)
libutils.h
/li>libutils.cpp
/li>
lua - Lua 用户数据不可用
我有一些相对简单的 Lua 代码,它链接到一些 C 和一些 Lua。
这正如我所期望的那样工作。当我按空格键时,屏幕上的消息会发生变化,直到它运行到数组的末尾。这些zenith.
方法都是用 C 实现的,使用 Userdata 来存储颜色(我有多种构造颜色的方法(rgba、hsl、命名,所以传递它而不使用数字参数是有意义的)
然后我尝试改变结构,如下所示:
唯一的变化是我已将颜色(即用户数据)提取到最外层范围。我希望这能够继续工作,但没有不断分配/收集颜色。相反,我只是得到一个黑屏。有小费吗?我的颜色是否过早地被垃圾收集,因为它们仅在关闭时可用?我还错过了什么其他魔法吗?颜色和颜色之间的唯一区别messages
是它们是用户数据。
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 是否可以自己处理它。
抱歉,如果没有正确解释。
lua - 有没有办法在lua中捕获输出?
我正在尝试捕获例如的输出: print('Hello') 并将其存储在变量/表中。
请让我知道这是否可能。如果不是感谢您的回答。
lua - 如何创建具有唯一 ID 的表条目并使用该 ID 访问它们..?
嗨,我需要在 lua 中创建一个表,每个条目(记录)都可以用唯一的 id 表示
像这样我想插入和访问请帮助我解决这个谜语