首页 > 解决方案 > 我的代码什么也没做

问题描述

game:GetService("Players").PlayerAdded:connect(function()
    for _, Player in pairs(game:GetService("Players"):GetPlayers()) do
      Player.Chatted:connect(function(msg)
            if string.sub(msg,1,5) == "oofergang" then 
                    Player:Kick("no no no cringe baby")
        end
    end)
  end
end)
return ''

我该如何解决?它什么也没做,没有错误。

标签: luaroblox

解决方案


您的问题似乎在您的string.sub()使用中。(我假设这是 Roblox,我不太了解)。该string.sub(a, b, c)方法采用 string 的子字符串a,从 index 开始b并到 index c

您的问题是您试图从字符 1-5 中获取子字符串。字符 1 是第一个字符,字符 5 是字符串中的第 5 个字符。您的if块正在检查玩家消息的前 5 个字符。问题是您要与之比较的字符串"oofergang", 长度超过 5 个字符。

如果玩家正确输入了 oofergang,string.sub()您正在使用的 将输出oofer,即消息的前 5 个字符。本质上,这是程序在运行时将看到的内容:

if "oofer" == "oofergang" then

oofer永远不会相等oofergang

如果你想检查玩家是否开始他们的消息,oofergang那么你应该使用以下if块:

if (string.sub(msg, 1, 9) == "oofergang") then
    --Whatever you want to do here, in your case kick the player
end

编辑:正如建议的那样,以下代码允许您在 ANYwhere 的另一个字符串中找到一个字符串,而不仅仅是开始:

if (string.find(msg, "oofergang")) then
    --Whatever you want to do here, in your case kick the player
end

推荐阅读