需要 Lua 帮助。尝试对 'Config' 字段进行索引(一个无值的字段)。Gmod13。
当我运行我的游戏模式时出现了这个错误。
[ERROR]
gamemodes/rp/gamemode/ cl_init.lua:910: attempt to index field 'Config' (a nil value)
1. unknown - gamemodes/rp/gamemode/ cl_init.lua:910
config 是一个表,它的索引是 config["Run Speed"] 等,整个表在 sh_config.lua 文件中等于 GM.Config。为什么 config 没有被注册为一个值?我必须将 config 文件包含到 cl_init 文件中吗?如果是这样,怎么做?使用 include() 吗?
function GM:Think()
if ( self.Config["Local Voice"] ) then **--出错的行(910)**
for k, v in pairs( player.GetAll() ) do
if ( hook.Call("PlayerCanVoice",GAMEMODE, v) ) then
if ( v:IsMuted() ) then v:SetMuted(); end
else
if ( !v:IsMuted() ) then v:SetMuted(); end
end
end
end
-- 调用基类函数。
return self.BaseClass:Think();
end
编辑-- sh_config.lua 文件中的 config 表。
local config = {};
-- Command
config["Command Prefix"] = "/"; -- 用于聊天命令的前缀。
config["Maximum Notes"] = 2; -- 每个玩家的最大笔记数量
config["Advert Cost"] = 60; -- 广告费用。
config["Advert Timeout"] = 150 -- 广告之间的秒数
config["OOC Timeout"] = 60 -- OOC 消息之间的秒数
config["Item Timer"] = 7 -- 物品使用之间的秒数
config["Item Timer (S)"] = 20 -- 特定物品使用之间的秒数
config["Note Fade Speed"] = 12 -- 笔记消失之前的分钟数
-- Voice
config["Local Voice"] = true; -- 只有附近的玩家才能听到玩家的声音。 这是正在调用的索引,从而创建了错误。
config["Talk Radius"] = 256; -- 其他玩家必须在此玩家的半径内才能听到他们讲话(单位)。
-- Player Stuff
config["Walk Speed"] = 150; -- 玩家行走的速度。
config["Run Speed"] = 275; -- 玩家奔跑的速度。
GM.Config = config;
我在 sh_init.lua 中包含了 includecs("sh_config.lua");。在 init.lua 中,我使用了 include("sh_config.lua") 和 AddCSLuaFile("sh_config.lua")。在 cl_init.lua 中,我使用了 include("sh_config.lua");。
尽管如此,我仍然得到了这个愚蠢的错误。有人能解释一下包含和添加文件之间的区别吗?如何使 sh_config 的变量全局可用于其他文件?换句话说,我如何使希望的文件(cl_init)读取 sh_config.lua 中的代码,并且我可以在客户端的 init 中使用它的代码?
*sh_config* 是一个共享文件 - 这意味着它必须包括在客户端和服务器端。
在 init.lua 中 - 在顶部的其他包含项中放置 include("sh_config.lua")。
还在 init.lua 中,放置 AddCSLuaFile("sh_config.lua") - 这将确保客户端下载文件并客户端执行。
在 cl_init.lua 中 - 放置 include("sh_config.lua")。此外,还要放在其他包含项周围。这应该按预期工作。
由于这是一个配置文件,我假设它应该首先或几乎首先包括。它可能包含关于脚本加载其余部分的重要设置。
此外 - 通常包括一个 shared.lua,等同于 shared_init 文件。这可能是你的情况。如果是这样,你应该在 shared.lua 中添加一个 include("sh_config.lua") 与其他包含项,并在 if CLIENT then-block 中放置 AddCSLuaFile("sh_config.lua")。
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你需要在
cl_init.lua的顶部包含sh_config.lua文件。include("path/to/file.lua")同时,在
init.lua文件中要执行AddCSLuaFile("path/to/lua.lua")。对于共享文件,还需要在init.lua中执行include("path/to/file.lua")。(但是这只需要共享文件时才需要)此外,我非常确定你的配置表的作用域将仅限于
sh_config.lua,因此您应该从变量声明中删除local。