【问题标题】:WoW API / Lua - Math.Random(#,#)WoW API / Lua - Math.Random(#,#)
【发布时间】:2015-05-18 12:29:00
【问题描述】:

总是觉得我做的事情比它必须要做的要复杂得多。我目前正在玩 WoW 插件,Tongues,希望制作一个自定义的方言过滤器 - 这当然很容易,非常适合新手。在这一点上,我想要完成一件事——感觉其影响远不止于此——这只是新奇事物,但在我完全放弃之前(很多小时尝试不同的事情而没有进展)我希望有人能过来,得到一个廉价的笑声,如果他们理解我的观点,也许可以帮助我解决这个问题。谁知道呢,发布这个新的无助问题可能会让我最终能够投票!

Tongues.Affect["Drunk"] = {
    ["substitute"] = {
        [1] = merge({
            { ["([%a]+)(%A*)$"] = "%1 ...hic!"},
            Tongues.Affect["Slur"]["substitute"][1]
        });
    };
    ["frequency"]  = 100;
};

这只是简单地添加“...hic!”发送聊天消息();我相信是的。频率部分似乎完全被破坏了,只有游戏中的 GUI 滑块对此很重要。我希望完成的是重新调整它的用途并制作“......hic!”一个实际的随机词。由于 mod 本身处理了它发生的机会,我认为剩下的就是用 function=X 替换字符串。当然,这完全超出了我的想象,但尽管检查了几个模块的 Lua,但没有什么感觉像“它会适合”。

我能想到的最好的,

Tongues.Affect["TESTAFFECT"] = {
    ["substitute"] = {
        [1] = merge({
            { ["([%a]+)(%A*)$"] = function(b)
            local rand = Math.Random(1,2)
                if (rand == 1) then
                    b = "test1"
                    return b
                elseif (rand == 2) then
                    b = "test2"
                    return b
                end
            end

在错误模式 BugSack 中留下一个光荣无用的消息 - 当然我的尝试是错误的,但没有办法知道如何!

我假设这是足够的信息 - 正如我所说,非常用户友好的 mod,无需了解它的实际工作原理(尽管我很乐意在这个“项目”之后准备好研究它)

有人吗?无论如何,感谢您抽出宝贵时间阅读本文。

更新:投反对票,好吧!这也很酷。有点不可预测,但可以肯定。错误如下

15x Tongues\Core\dialects.lua:172: attempt to index field 'Affect' (a nil value)
Tongues\Core\dialects.lua:172: in main chunk

Locals:

dialects.lua 中的 175 是

        Tongues.Affect["Wordcut"]["substitute"][1],

这与我想要完成的事情无关,并且工作正常。

【问题讨论】:

  • “在错误模块 BugSack 中留下一个光荣无用的消息” 介意告诉我们错误是什么吗?此外,除非 WoW 与内置函数混淆,否则它应该是 math.random(Lua 区分大小写)
  • 更新主帖出错。
  • 一般来说,我对寻求帮助还很陌生,因为在此之前我从来没有,所以我不完全确定我的问题是如何不清楚、无用或懒惰的——我整晚都在尝试不同的事物,寻找例子,阅读事物。我是 Lua 的新手,我开始学习它的地方太理论化了,以至于我无法应用我所看到的 - 我在这个阶段从示例中学习。在什么时候问是正确的? / 抛开一切,感谢您的更正,上校 - 我看到以前使用的大写版本,所以我认为它做了同样的事情。
  • 推荐阅读:How to create a Minimal, Complete, and Verifiable example。错误消息表示Tounges 没有名为Affect 的字段。
  • 谢谢你的链接,我不介意再读一遍。错误消息是虚假的,是我在其他地方创建的错误的产物,但是另一个堆栈(在学习 Lua 和 WoW API 的这几周里,我很难看到它)证明我的冗余符号使用破坏了 mod,因为会期望它这样做。

标签: lua world-of-warcraft


【解决方案1】:

抱歉,我的问题给您带来了不便。我尽我最大的能力问了这个问题,我尽我所能地表达这个问题被证明是不那么出色的。我提供的示例代码是我可以清楚地表明我正在尝试做什么的唯一方式。

我误解了错误框架,发现在调用错误的无用堆栈背后,实际上没有错误,是一个堆栈在破坏它的时候调用语法错误。

我正在分享我的结果,无论社区是否认为这无用。我个人从中学到了很多东西,这是我寻求帮助的唯一动力。

Tongues.Affect["TEST"] = {
        ["substitute"] = {
            [1] = {
                ["([%a]+)"] = function(a)
                    return a
                end;
                ["(%A*)$"] = function(a,b)
                     local rand = math.random(1,2)
                      if (rand == 1) then
                      b = "test1"
                    return b
                    end;
                      if (rand == 2) then
                      b = "test2"
                    return b
                    end;                    
                end;
            };
        };
    };

希望它对那里的人有所帮助 - 正如预期的那样,我让它变得比它必须的更复杂。只需“摇晃”符号即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-26
    • 2016-03-04
    • 2014-03-15
    • 2022-09-28
    • 1970-01-01
    • 2023-03-06
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多