问题标签 [tabletop-simulator]

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 回答
299 浏览

for-loop - 由于不相关的表索引分配,Lua '尝试调用 for..in 附近的数字值' 错误 - 为什么?

我正在 Tabletop Simulator 中编写一些 Lua 脚本,并看到让attempt to call a number value near for..in我完全困惑的错误。这是导致错误的带有 for 循环的代码片段:

好的,首先我会说,通过注释掉直接分配给and的两行,错误消失了,当我用等效语句替换这些行时p[1]p[3]

然后一切正常。但是,我完全不知道为什么这会修复错误。我在大约六个地方使用这个精确的 for 循环定义来迭代播放器及其组件(存储在 global 中GUIDs),并且它在其他任何地方都可以完美地工作。

添加更多细节,即使使用旧代码,循环的第一次迭代也能完美运行。第一个回合标记被移动到它的正确位置,两个消息都被打印,但错误阻止了进一步的迭代。递增循环迭代器时显然会发生错误,但我无法理解如何直接分配给p[1]并且p[3]可能会干扰这一点,但分配给p很好。更多细节:p预先在 for 循环内部而不是外部声明没有帮助。

(编辑添加更多细节)

经过更多测试后,看起来@luther 可能是正确的,因为positionToLocal. 此函数返回的值是Vector由 Tabletop Simulator 定义的,我相信它是 UnityVector3类型的扩展。一个重要的细节是,这种类型允许您可以互换x,y,z地引用索引。1,2,3

所以,我用 and 替换了p[1]andp[3]赋值,p.xp.z修复了错误。这似乎意味着Vector返回的 bypositionToLocal没有1,2,3明确定义索引,而是使用元方法将这些索引链接到x,y,z. 而且,不知何故,那个元方法正在搞乱循环迭代器......但老实说,这仍然让我大吃一惊。

GUIDs.Nations是传递给pairs()用于生成迭代器的函数的表,它基本上是一个常量——我从不在任何函数中添加或更新它,因为它包含静态 GUID。它当然与p.

更多详细信息

这似乎肯定与桌面模拟器的 Vector 实现有关:https ://forums.tabletopsimulator.com/showthread.php?8344-For-loop

上面的示例仅使用一个简单的数字 for 循环来更新1,2,3Vector 值的索引,并且用于索引 Vector 的赋值语句i最终将 value 更改i为分配的相同值。

我仍然无法理解这在语言中是如何实现的......

0 投票
1 回答
483 浏览

xml - 桌面模拟器 Lua 错误:“尝试对字符串值执行算术运算”

首先,一些上下文(除了我对编码还很陌生)......我正在开发一个棋盘游戏,对于所说游戏的桌面模拟器版本,我创建了一系列 UI每当玩家按下桌子中间的按钮时弹出的菜单操作(玩家必须首先宣布他们将为特定工作提交投标,并且他们的按钮按下启动该工作的 RFP 投标过程)。玩家按下按钮后,UI 会提示所有其他玩家是否愿意参与相关工作的竞标。

投标意向菜单

然后所有参与的投标人输入他们的有效投标——连同他们的市场声誉,这会影响他们在投标过程中从工作中收取的总体费用——然后脚本找到最低投标来确定工作获胜者。

出价调整/提交菜单

此出价调整菜单的前两个字段是可编辑的,而第三个(费用)是只读的。费用数字会根据其他两个输入的值实时调整。费用的计算公式是effective bid + (reputation * 5) = fee

我遇到的问题是,每当玩家从前两个字段之一中删除一个值(例如,通过突出显示它并按退格键),游戏的聊天框中会弹出以下错误:

我假设错误是由删除数值后的 nil 值引起的,因此我尝试添加一些条件逻辑,在执行任何算术之前将前两个字段中的 nil 值重置为 0。然而,这并没有奏效,所以我有点难过。

这是相关的 Lua 代码(在按钮的 ttslua 文件中):

这是相关的 XML 代码(在全局 UI 文件中):

如果您想查看完整代码,请访问 GitHub它在 Steam 创意工坊中。

非常感谢!

0 投票
1 回答
129 浏览

lua - 有没有办法在 If 语句中为 Wait 类添加时间?

几天前我开始学习LUA,在桌面模拟器游戏中开始了我自己的项目,但是我碰壁了。我无法为等待课程增加时间。

这是我尝试过的一个例子:

我需要该功能检查第一部分,如果为真,请在 1 秒后执行第二部分。如果没有,请正常执行第二部分并跳过“i = i + 1”。我的问题是该函数同时执行所有操作。我知道我做错了什么,但我不知道是什么。有没有办法创建一些门来按顺序或类似的事情做所有事情?

0 投票
1 回答
1527 浏览

lua - Accessing data found in another object/script

In Tabletop Simulator, how can I exchange information between objects?

Is there a way, for example, to create a global variable?

0 投票
1 回答
119 浏览

sorting - 用于防止玩家获得同一张牌的算法

我有一个我正在桌面模拟器中编码的游戏,其中所有玩家(P)都得到一张卡片(C)。一旦记住所有玩家将卡片放回牌组(D),洗牌,然后所有玩家都从同一牌组(D)中获得一张牌。我正在尝试编写最简单的算法来防止玩家获得自己的卡片。现在,当涉及到编码时,我认为这应该很简单,而不是创建模拟运行直到它成功。

0 投票
1 回答
131 浏览

lua - 将相对于 obj1 的坐标转换为相对于 obj2

我有一个obj1创建按钮的对象 ( )。

当然,那个位置是相对于 的obj1

obj1是一个袋子,它创建的按钮位于游戏板上,远离袋子(从 X 分量的大小可以看出)。这是不合适的,这意味着袋子不能移动。我想让游戏板创建按钮。

createButton从游戏板 ( ) 中调用时,如何确定要提供的坐标obj2

0 投票
1 回答
268 浏览

lua - 桌面模拟器 - 文本框 - 自动调整文本大小?

我正在制作一款有点晦涩且绝版的游戏,Creatures & Cultists,可在桌面模拟器上使用。播放器板有各种文本框。对于其中两个文本框,当没有足够的空间显示玩家输入的内容时,我需要缩小文本的大小。

我用 C# 编写了程序,并且有一个内置的自动调整大小功能,可以针对文本框等字段进行切换。桌面模拟器 LUA 和 API 是否允许这样的功能?

我正在使用 Stump 先生的文本框模板。

文本框之一的参数:

这些参数从 Stump 先生传递给 create_text-box 函数:

谢谢你的帮助。

0 投票
1 回答
196 浏览

lua - lua如何在表中获取表使用变量值而不是变量作为索引?TTS

新手程序员我正在使用表中的表来使用脚本在桌面模拟器上存储信息

我使用了一个精简的代码示例,但基本上不是在 masterTable 中创建一个带有 key = 123456 的表,而是创建一个 key = rpgPlayer 是将程序指向 rpgPlayer 的值而不是变量的方法?

0 投票
3 回答
86 浏览

lua - 在桌面模拟器中设置预定义的计数器范围

尝试使用 LUA 在桌面模拟器计数器对象中限制计数器可以设置的数量。希望减号按钮在 1 处停用。通读 API 源后,我似乎找不到答案。

0 投票
1 回答
216 浏览

lua - 使用状态 TTS 生成对象

我想在 TabletopSimulator 中组合两个或更多对象。Wenn 我生成了可以组合的对象,例如此页面https://kb.tabletopsimulator.com/host-guides/creating-states/。我想用 Lua 创建这个。所以我需要帮助......我生成了像这里这样的对象,但我没有得到两个具有 2 个状态的对象。

感谢您的帮助