无法让 PlayerSay 在 Gmod lua 插件中工作

Posted

技术标签:

【中文标题】无法让 PlayerSay 在 Gmod lua 插件中工作【英文标题】:Can't get PlayerSay working in Gmod lua addon 【发布时间】:2019-10-22 11:14:21 【问题描述】:

我尝试制作一个 Garry 的 Mod lua 文件来查找开头包含“/discord”的消息,并将该消息作为文本文件保存在同一目录中,我不熟悉 lua 文件,所以我不确定语法,但是当我查看控制台时,没有任何反应,当我查看服务器命令行时,没有任何反应,也没有创建新文件,我什至搜索了我的整个 PC。

我在 Garry 的 mod wiki 上使用了以下页面:https://wiki.garrysmod.com/page/GM/PlayerSay 并且那里提供的代码有效,但只要我添加任何内容,它就完全停止工作。这是我的代码:

hook.Add( "PlayerSay", "GmodToDiscord", function( player, text, team )
    if ( string.sub( string.lower( text ), 0, 7 ) == "/discord" ) then -- Makes message lowercase to be read by the program.
        local file = io.open("message.txt", "w") -- Opens a text file in write mode.
        file:write(message) -- Pastes in the message.
        file:close() -- Closes the text file.
    end
end)

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

你不能在 Gary 的模组中使用 Lua 的 io 库。改用 Gary's Mod 的文件模块。

https://wiki.garrysmod.com/page/file/Open

例子:

local f = file.Open( "cfg/mapcycle.txt", "r", "MOD" )
print( f:ReadLine() )
print( f:ReadLine() )
print( f:Tell() )
f:Close()

【讨论】:

感谢您的帮助,但是当我注释掉第 4 到 6 行并将其替换为 print ("test")【参考方案2】:

关于 Lua 需要注意的一点,以及使它成为一种相当古怪的语言的原因是,它的数组从索引 1 开始。您需要在 1 到 8 之间进行检查以获取您的标签;这应该可以帮助您开始 @Piglet 的文件 IO 实现。

祝你好运,改装愉快!

【讨论】:

基于 1 的索引不会使 Lua 成为一种“古怪的语言”......有很多出版物说明了为什么其中任何一个更好,但没有一个真正说服我。

以上是关于无法让 PlayerSay 在 Gmod lua 插件中工作的主要内容,如果未能解决你的问题,请参考以下文章

这个lua代码是否可以在我的GMOD服务器上下载某些文件

Lua GMOD自定义聊天脚本问题

vgui 是一个零值 Gmod

我正在尝试通过 Logitech GHub 为 GMod 制作一个 lua 脚本,将玩家视图旋转 180 度,但不知道如何进行旋转

无法在 gmod 中创建实体

资源分享Gmod动态方框透视脚本