在 Gmod 的 lua 插件中无法使用 PlayerSay

我尝试编写一个 Garry's Mod 的 lua 文件,查找以"/discord"开头的消息并将该消息保存为在相同目录下的文本文件,但由于不熟悉 lua 文件,我不确定语法是否正确。当我查看控制台时,什么都不会发生,当我查看服务器命令行时,什么也不会发生,也没有新文件被创建,我甚至搜索了整个电脑。

我使用了 Garry's 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 -- 将消息转换成小写,以便程序读取。
        local file = io.open("message.txt", "w") -- 以写模式打开一个文本文件。
        file:write(message) -- 将消息粘贴到文本文件中。
        file:close() -- 关闭文本文件。
    end
end)

任何帮助将不胜感激。

点赞
用户2858170
用户2858170

你不能在 Gary's mod 中使用 Lua 的 io 库。请使用 Gary's Mod 的 file 模块代替。

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()
2019-10-22 13:24:02
用户9622872
用户9622872

关于Lua需要注意的一件事,也是让它成为一种相当古怪的语言的原因之一,是它的数组从索引1开始。你需要在1和8之间检查来获取你的标签;这应该有助于你开始实现@Piglet的文件IO。

祝你好运,快乐地进行模组开发!

2019-11-03 22:42:14