0

ゲームモードを実行すると、このエラーが発生します。

[エラー] gamemodes
/rp/gamemode/ cl_init.lua :910: フィールド 'Config' (nil 値) のインデックス作成を試み
ます 1.不明 - gamemodes/rp/gamemode/ cl_init.lua :910

configなどのインデックスを持つテーブルであり、テーブル全体がsh_config.luaファイルのGM.Configconfig["Run Speed"]とグローバルに等しく設定されています。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;

私は includecs("sh_config.lua");sh_init.luaにあります。include("sh_config.lua")そしてAddCSLuaFile("sh_config.lua")init.luaで。そしてinclude("sh_config.lua");cl_init.luaにあります。

ただし、この愚かなエラーはまだ発生しています。ファイルをインクルードすることと Addcs することの違いを誰かが説明できますか? sh_config の変数を他のファイルでグローバルにするにはどうすればよいですか? または、言い換えると、目的のファイル (cl_init) を sh_config.lua のコードを読み取って、クライアント側の init でコードを使用できるようにするにはどうすればよいですか?

4

2 に答える 2

0

*sh_config* は共有ファイルです。つまり、クライアント側とサーバー側の両方に含める必要があります。

init.lua -他のインクルードのに。putinclude("sh_config.lua")
また、init.lua に put AddCSLuaFile("sh_config.lua")- ファイルがクライアントによってダウンロードされ、クライアント側で実行されることを確認します。

cl_init.lua- put include("sh_config.lua"). また、その他の周りも含みます。これは期待どおりに動作するはずです。

これがどのように構成ファイルであるかを見て、最初に、またはほぼ最初に含める必要があると思います。残りのスクリプト ロードのために重要な設定が含まれている場合があります。

また、shared_init ファイルと同等にするために、shared.lua が含まれることがよくあります。これはあなたの場合かもしれません。そうである場合は、includes 、include("sh_config.lua")shared.lua、および -block に追加する必要があります。AddCSLuaFile("sh_config.lua")if CLIENT then

于 2013-06-30T16:48:53.003 に答える
0

sh_config.luacl_init.lua の先頭に含める必要があります。

include("path/to/file.lua")

ファイルでも必ず実行AddCSLuaFile("path/to/lua.lua")してください。また、同様init.luaに行う必要があります。(ただし、これは共有ファイルにのみ必要です)include("path/to/file.lua")init.lua

また、構成テーブルのスコープが sh_config.lua に限定されると確信しているためlocal、変数宣言から削除する必要があります。

于 2013-06-30T16:39:16.093 に答える