问题标签 [squirrel]

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 投票
3 回答
891 浏览

c++ - 在 C++ 中使用的脚本语言中在运行时创建新的类/成员

我已经断断续续地解决这个问题几个月了,现在想真正想出一个合适的解决方案来处理使用成员函数创建新的用户定义类(和这些类的实例)的情况/在 C++11 项目中运行时的属性。

到目前为止,我一直在使用 SWIG(以前使用 Python,现在使用 Lua,探索 Squirrel)。就像我迄今为止遇到的所有 C++ 绑定/嵌入库(Luna*、luabinder、luabind、OOLua、Sqrat/Sqext、Squall)一样,都希望您的类在代码执行之前在 C++ 中预定义,因为它们要么依赖于预处理器指令或模板。

所以我的问题是,是否有任何库使用更程序化的方法来包装语言,或者是否有任何像 Lua 或 Squirrel 这样的好的教程/示例,可以推荐用于处理自定义命名类的创建具有自定义成员和功能?一些方向将不胜感激。

即使是一个简单的例子,展示如何在 Lua 和 Squirrel 中通过各自的 C++ API 而不使用宏/模板/动态生成的代码来创建具有函数和属性的自定义类,也会非常有帮助。

编辑:我已经创建了一个Instance包含std::vector成员键/值对的类,以及一个标识类型的成员,以便可以查找函数。然而,关于在 Lua/Squirrel 中创建简单类而不使用静态代码的文档很少。

编辑 2:我想要一个适用于任何平台且无需动态链接的解决方案。

0 投票
1 回答
135 浏览

c++ - c++ sqrat 绑定方法虽然是一个包装器

我正在尝试为我的 Squirrel VM 和 SQRat 绑定开发一个包装器

绑定类的正常方法是调用:

我试图绑定的类看起来像这样:

现在 iv 将 squirrel 包装到一个辅助类中,该类处理机器状态和错误,称为“SqEnvironment”

在 main 中调用 bindclass 方法,如下所示:

我只是不能完全理解绑定方法的实现。

现在iv看到了:c ++将类方法作为参数传递给带有模板的类方法

这是非常接近的,但是通过将类的实例添加到方法调用中来解决它,允许直接取消对类方法的引用。

但我不能完全做到这一点......永远不会制作我有权访问的实例。

那么我将如何去做这样的事情呢?

0 投票
1 回答
203 浏览

file - 如何将松鼠“打印”命令输出重定向到文件?

我有一个松鼠插件如下:

我想将“打印”命令的输出从终端/控制台重定向到文件。但是,我似乎不能这样做,如果有人可以帮助我,我将不胜感激。

我在 bash 中尝试过替代方案——“echo”命令和“printf”命令的许多变体,但这些对于捕获包含括号(例如)或单引号(例如')的单词无效。“打印”命令似乎在所有情况下都有效,但我无法重定向输出。

请注意,在将它们发送到 print、echo 或 printf 之前,我无法通过转义/反斜杠特殊字符来修改我首先捕获的单词。

谢谢你。

0 投票
1 回答
101 浏览

bash - 松鼠脚本 - 空格问题 - 添加“空格”以传递给“回声”命令

我有一个调用“回声”的松鼠插件。这几乎是正确的,但是尽管考虑了关于如何处理“空白”或元字符问题的 stackoverflow 上的各种响应(以及其他与 unix 相关的站点),但我无法获得“回声”工作。

松鼠插件如下:

我收到的错误如下:

该代码有效地将输出传递到终端。但是,它不会将输出重定向到 REMOVEFAVOURITE.temp 文件。问题似乎是围绕“>”或“>”本身的空白。

我已经尝试了几十种“ > ”的替代品,但没有一个奏效。如何创建一个“空间”来传递给它可以接受的脚本?谢谢。

0 投票
1 回答
99 浏览

squirrel - Squirrel-lang 中是否有类似“require”的功能?

我尝试使用“require”导入一些包......因为来自Lua的Squirrel-lang。

但我发现“squirrel3”和“sqstdlib3”都没有。

所以我这样做:

此外,没有“dostring”

.....我需要自己实现一个包管理器吗?

0 投票
0 回答
35 浏览

c - 将 C api 动态暴露给 squirrel

我有这个 C 函数

我想把它暴露给松鼠,但我必须手动创建一个 SQFUNCTION

C 中有没有办法动态生成 SQFUNCTION 对象?说一个宏或一个函数,它将从一个函数创建 SQFUNCTION 对象,这样我就可以像那样使用它

0 投票
1 回答
76 浏览

squirrel - 如何在类中定义变量,并将其传递给函数

所以我为电脑游戏 Counter Strike: Global Offensive 写了一个脚本,它改变了玩家在游戏中的十字准线。游戏引擎使用的语言称为 Vscript。Vscript 没有很好的文档记录,我唯一可以罚款的文档是一长串函数。但是在尝试了一个错误之后,我发现语法几乎与 JavaScript 相同,唯一真正的区别是语言中有特定的函数,例如 SetHealth 或 GetTeam,它们是特定于游戏的,而 JavaScript 中不存在。

当我打开游戏并运行脚本时,在游戏控制台内它说

如果我在 hideCrosshair() 函数中定义 crosshair_hidden 变量, crosshair_hidden = false; 那么每次我调用该函数时,它的值都会为 false。我需要在函数外部定义它,以便变量可以被其他函数访问CrosshairAlpha(),因此每次调用函数时变量值都不完全相同。

那么如何在 JavaScript 的类中定义一个变量,然后将该变量传递给一个函数呢?

0 投票
0 回答
301 浏览

electron - Electron:在 MacOsx 上使用 electron-winstaller 生成 Windows 安装程序时出错

由于我使用的是 Catalina,因此无法使用 electron-winstaller 生成新的 nupkg 和 setup.exe。我认为这是一个权限问题,但我不知道如何解决它。

希望有人可以帮助我。谢谢。

创建 nupkg 后出现的错误:

0 投票
1 回答
91 浏览

session - Squirrel 4.0.0,会话开始时出错

几天以来,我一直在 Windows 10 上的新 PC 上工作。我刚刚在 windows cmd 上通过 Java 安装了第一个 Java 版本 1.8 和第二个 Squirrel 版本 4.0.0。我已经创建了所有需要的别名,并且我已经测试了连接 => OK enter image description here

但是,当我通过最近创建的别名启动连接时,我收到一条消息“打开会话时出错”。我不是计算机专家,我不知道为什么。

在此处输入图像描述

以前我的旧 PC 和旧 Squirrel 版本从来没有遇到过这样的问题。请问你能帮帮我吗 ?例如,对于其他一些请求者,我完全没有问题(Beaver,或使用 ODBC 链接、WINSQL、MSQUERY 或 HEIDI),但我更喜欢而且我更习惯 Squirrel。

0 投票
0 回答
30 浏览

encryption - 如何在源文件中隐藏数字答案而不让人能够阅读它们?

我正在 Squirrel Lang 中编写一个 vscript,就像一个问答游戏,我有一个二维数组的问题答案。我想知道在脚本知道正确值的同时隐藏这些答案的好方法。我无权访问文件 I/O 或任何加密库。目前我正在做的隐藏数字是播种随机数生成器并生成这些数字的数组。

Value = Answer ^ srand_num 这是存储的值

我已经把这些数字和答案异或得到了我隐藏的答案键。这会创建一个数字数组,这些数字不是直接的答案,但可以通过逆向工程来获得正确的答案,这是这种方法的当前问题。有没有其他方法可以让用户无法获得正确的答案来解决这个问题。