问题标签 [angelscript]

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 投票
2 回答
139 浏览

c++ - 在 AngelScript 中使用全局函数

我在 C++ 应用程序中使用 AngelScripts 全局函数时遇到问题。

在我的 .cpp 文件中,我具有以下功能:

我正在使用以下方法注册它:

在我的 .as 文件中,我这样调用函数:

所以在这种情况下,我希望 x 为 1,y 为 2,但是当我使用 cout 打印值时,它类似于 x = 4318096 和 y = 4318100。

我不知道我的错误在哪里。我很感激我能得到的任何帮助。

0 投票
1 回答
903 浏览

c++ - 在 Angelscript 中为基于 glm::vec3 的值类型注册赋值运算符

我已经使用以下方法在 Angelscript 中注册了 Vec3 值类型:

我还为该类型注册了构造函数和析构函数。

我注册了另一种类型“Transform”,并给它一个方法“Vec3 GetTranslation()”,它对应于 C++ 类方法“const glm::vec3& GetTranslation()”

这就是我在 Angelscript 中使用这两者的方式:

我收到了这个错误:

注册赋值运算符或任何运算符的正确方法是什么?

我试过这个:

并得到这个编译错误:

0 投票
1 回答
881 浏览

c++ - 将变量从 AngelScript 传递到 C++

我想将一个变量从 AngelScript 传递给 C++。
我已经设法将函数从 AngelScript 传递到 C++,反之亦然。
我也可以将变量从 C++ 传递到 AngelScript,但是我不知道如何反过来做。
该手册对我没有帮助,或者我已经监督了那部分。
你能给我一个提示吗?

编辑:

正如评论中提到的,这是我已经设法做到的。

在我的 test.as 文件中:

我的 test.cpp 文件:

0 投票
1 回答
228 浏览

c++ - A* 寻路不采用最短路径

我的 A* 寻路功能总是能到达它的预定目的地,但它几乎总是有点偏僻。这是一个例子:

[我制作了一张漂亮的图片来展示我的问题,但显然它不会发布,直到我的声誉达到 10;对不起,我是新人。:P]

本质上,它会尽可能向左或向上拉,而不会实际向路径添加更多图块。这听起来像是计算 gScore 的问题,或者可能是根据相邻瓷砖的 gScore 重新分配瓷砖父级的部分,但我就是不知道哪里出了问题。我已经对我的代码进行了数周的梳理并浏览了数十篇在线帖子,但我仍然陷入困境。仅供参考,我必须使用的编译器/调试器不支持断点或单步调试,所以我坚持使用简单的文本输出。谁能发现我做错了什么?

这是主要功能(注意:这都是在 Angelscript 中。它基于 C++,但有一些小的差异):

我的启发式使用曼哈顿方法:

最后,这是我的路径重建功能:

0 投票
0 回答
339 浏览

parsing - Irony Shift 减少问题

我一直在试图弄清楚如何解决我遇到的一些转变减少冲突。我环顾四周,发现了修复它的不同主题,但似乎无论我做什么,我似乎都找不到解决这些问题的方法。

我正在尝试为流行的脚本引擎 Angel Script 编写语法类,我从解析器类中获得了 BNF 语法。您可以在此处找到语言参考 http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html

在我的课堂上,我为每条规则添加了一条关于我试图复制的 BNF 语法的评论。目前我实际上并没有使用我定义的关键字。一旦我可以让它在没有冲突的情况下工作,我会回去尝试清理它。这是我的课 http://pastebin.com/FydCTqmU

您应该能够只创建一个 Dll 并使用语法资源管理器运行它,您将看到所有错误。似乎大多数错误都来自同一个问题,所以我想也许一旦我能解决这个问题,它几乎可以解决所有问题。

编辑:这是主要问题。那是主要的脚本状态,我知道它被分解成许多不同的规则,但我这样做了,所以我可以尝试解决我仍然没有运气的问题。

编辑:我尝试压缩我的代码以希望通过reduce-reduce错误,但它似乎保持完全相同,只是看起来更加混乱。如果有人能帮我把它弄好,我会很乐意通过贝宝寄给他们几百美元。我正要放弃它已经一个多星期了。我的电子邮件是 Anth0ny229@live.com。

状态 S0(不足)输入上的减少-减少冲突: const identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto :: 移位项目:

减少项目:

过渡:

0 投票
1 回答
389 浏览

shift-reduce-conflict - 具有讽刺意味的归约问题

我已经尝试解决这个问题将近 2 周了。起初是 shift-reduce 错误,现在是 reduce-reduce 问题。我已经尝试了很多方法,现在我已经到了需要帮助的地步。我已经编写了多种语言,并且几乎在 10 年前就开始了,这是我第一次真正发帖寻求帮助。

我正在尝试为流行的脚本引擎 Angel Script 编写语法类,我从解析器类中获得了 BNF 语法。您可以在此处找到语言参考http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html

在我的课堂上,我为每条规则添加了一条关于我试图复制的 BNF 语法的评论。目前我实际上并没有使用我定义的关键字。一旦我可以让它在没有冲突的情况下工作,我会回去尝试清理它。这是我的课http://pastebin.com/FydCTqmU

您应该能够只创建一个 Dll 并使用语法资源管理器运行它,您将看到所有错误。似乎大多数错误都来自同一个问题,所以我想也许一旦我能解决这个问题,它几乎可以解决所有问题。我编写了一个应用程序来帮助我将语法拆分为更不具体的部分,但我认为这导致我遇到了更多的 reduce-reduce 问题。

我尝试压缩我的代码以希望通过reduce-reduce错误,但它似乎保持完全相同,只是看起来更加混乱。如果有人能帮我把它弄好,我会很乐意通过贝宝寄给他们几百美元。我正要放弃它已经超过 2 周的时间了。我的电子邮件是 Anth0ny229@live.com。

我已经从 shift-reduce 到 reduce-reduce 错误。似乎无论我做什么,我都会遇到问题。我只是无法绕过它,我真的需要帮助。正如我所提到的,我会更乐意向某人支付帮助,只需给我发电子邮件即可。我计划制作一个像 babelua 这样的 Visual Studio 扩展,这样人们就可以使用 Visual Studio 编写 Angel Script 脚本,并希望添加调试支持。它将是免费的,因为我认为这将是一个很好的补充。因此,如果有人能以任何方式提供帮助,只要它最终工作,我会更乐意确保他们得到回报。谢谢你。

状态 S0(不足)输入上的减少-减少冲突: const identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto :: 移位项目:

减少项目:

过渡:

0 投票
0 回答
415 浏览

c - AngelScript 中的自定义结构

也许有人知道。如何将我的自定义 c 结构从我的 c 应用程序发送到 AngelScript 脚本?目前,我只使用标准类型(char*,uint8_t)

此致。

0 投票
2 回答
194 浏览

arrays - 你如何使用 Angelscript 访问数组元素?

我正在尝试为我正在创建的游戏创建一个简单的库存系统。库存需要库存中每个物品的2条信息,“物品名称”和“物品描述”。

我从 Angelscript 网站上读到的信息说要创建

一个字符串数组,每个字符串有 2 个元素。

显然这是通过使用

2个元素是什么意思?
如何访问数组中的这两个元素?

下面的代码似乎可以工作,但并没有达到我的预期。

输出

0 投票
2 回答
185 浏览

angelscript - AngelScript 中的枚举或常量

在其他编程语言中,我可以使用静态类方法或枚举来封装常量:

或者

这在 AngelScript 中是如何解决的?据我所知,既没有枚举(具有非整数值)也没有静态类方法。

0 投票
1 回答
195 浏览

class - AngelScript - 避免运行隐式默认构造函数

我目前正在测试一些简单的 AngelScript 东西,并注意到在如何从类中初始化对象时我发现有些奇怪。

假设我定义了一个这样的类:

我可以通过这样做来创建这个类的一个对象:

但是,我似乎也可以通过这样做来创建一个对象:

这里的问题是它obj.i成为一个默认值,因为它是未定义的。此外,向我的类添加一个默认构造函数并在每个类中添加一个 print 函数调用表明,当我这样做时,MyClass obj = MyClass(5);会调用两个构造函数,而不仅仅是具有匹配参数的构造函数。这对我来说似乎很冒险,因为它可能会为这个“幽灵”实例不必要地初始化许多属性。

我可以通过使用句柄来避免这种双重初始化,但这似乎更像是一种解决方法而不是解决方案:

所以我的问题总结为:

  1. 我可以要求调用特定的构造函数吗?
  2. 我可以阻止默认构造函数运行吗?
  3. 创建对象时处理所需参数的正确方法是什么?

请注意,这纯粹是使用 AngelScript 脚本语言,与宿主应用程序的 C++ 代码完全分开。主机是 2010 年的,不是开源的,我对其实现的了解非常有限,所以如果问题出在那儿,我无法更改。