运行我的游戏模式时出现此错误。
[ERROR]
gamemodes / rp / gamemode / cl_init.lua :910:尝试索引字段'Config'(零值)
1.未知 - gamemodes / rp / gamemode / cl_init.lua :910
config
是一个表格,其索引为config["Run Speed"]
,整个表格在 sh_config.lua中全局设置为等于 GM.Config 文件。为什么配置没有注册为值?我必须将配置文件包含在cl_init文件中吗?如果是的话,怎么样?使用include()?
function GM:Think()
if ( self.Config["Local Voice"] ) then **--Referred line(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
-- Call the base class function.
return self.BaseClass:Think();
end
编辑 - sh_config.lua中的配置表。
local config = {};
-- Command
config["Command Prefix"] = "/"; -- The prefix that is used for chat commands.
config["Maximum Notes"] = 2; -- Maximum notes per player
config["Advert Cost"] = 60; -- The money that it costs to advertise.
config["Advert Timeout"] = 150 -- How many seconds between adverts
config["OOC Timeout"] = 60 -- How many seconds between OOC messages
config["Item Timer"] = 7 -- How many seconds between item uses
config["Item Timer (S)"] = 20 -- How many seconds between specific item uses
config["Note Fade Speed"] = 12 -- How many minutes before nots disappear
-- Voice
config["Local Voice"] = true; -- Players can only hear a player's voice if they are near them. This is the index being called which is creating an error.
config["Talk Radius"] = 256; -- The radius of each player that
--other players have to be in to hear them talk (units).
-- Player Stuff
config["Walk Speed"] = 150; -- The speed that players walk at.
config["Run Speed"] = 275; -- The speed that players run at.
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");
。
我仍然得到这个愚蠢的错误。有人可以解释包含和Addcs的文件之间的区别。如何在其他文件中使sh_config的变量全局化?或者换句话说,如何通过sh_config.lua中的代码读取所需文件(cl_init),并且可以在客户端init中使用它的代码?
答案 0 :(得分:0)
您需要在cl_init.lua的顶部加入sh_config.lua
。
include("path/to/file.lua")
请务必在AddCSLuaFile("path/to/lua.lua")
文件中执行init.lua
。您还需要在include("path/to/file.lua")
中init.lua
进行操作。 (但这只是共享文件所必需的)
此外,我非常确定配置表的范围仅限于sh_config.lua,因此您应该从变量声明中删除local
。
答案 1 :(得分:0)
* sh_config *是一个共享文件 - 意味着它必须包含在客户端和服务器端。
在 init.lua 中 - 在其他包含的顶部中。放include("sh_config.lua")
同样在init.lua中,放置AddCSLuaFile("sh_config.lua")
- 这将确保客户端下载文件,并在客户端执行。
在 cl_init.lua 中 - 放置include("sh_config.lua")
。另外包括其他。这应该按预期工作。
看到这是一个Config文件,我认为应首先包含它,或者几乎先包含它。对于脚本加载的其余部分,它可能包含重要设置。
此外 - 通常包含shared.lua,等于shared_init文件。这可能是你的情况。如果是,您应该在shared.lua中添加一个include("sh_config.lua")
,在AddCSLuaFile("sh_config.lua")
- 块中添加if CLIENT then