WoW API / Lua - Math.Random(#,#) 的中文翻译为: 魔兽世界API / Lua - Math.Random(#, #)。

总是觉得自己把事情搞得比必须要麻烦得多。我正在玩WoW插件Tongues,希望制作一个自定义方言过滤器 - 当然这很容易,非常适用于新手。在这一点上,有一件事情我想要实现 - 似乎具有远远超出这个的含义 - 这只是新奇的,但在我完全放弃之前(尝试不同的方法很多小时都没有进展),我希望有人能过来,发个便宜的笑话,如果他们理解我的意思,也许帮我修复一下这个问题。谁知道,发布这个新的无助的问题可能会把我提升到能够最终点赞的水平!

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

它只是在sendchatmessage()后面添加了“...hic!”; 我相信是这样的。频率部分似乎完全失效,只有游戏中的GUI滑块才起作用。我希望实现的是将“...hic!”变成实际的随机单词。由于mod本身处理它发生的几率,我认为要做的只是用函数=X替换字符串。当然,这完全超出了我的头脑,尽管检查了几个mod的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],

与我想要实现的没有任何关系,而且工作得非常好。

点赞
用户4641964
用户4641964

很抱歉我的问题给您带来了不便。我已尽我所能提出问题,但表达的能力并不好。我提供的示例代码是我能表达我正在尝试做的事情的唯一方式。

我误解了错误帧,并发现在那里无用地调用错误的堆栈后面实际上是一个调用在那时断掉的语法错误的堆栈。

我分享我的结果,无论社区是否认为这无用。我从中个人获得了很多收益,这是我寻求帮助的唯一动力。

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;
            };
        };
    };

希望它能帮助到某个人-正如预期的那样,我把它弄得比必要的还要复杂。只需“振动”符号,就可以了。

2015-03-16 19:10:07