Я прочитал некоторые другие ответы на это, и я понимаю, что я пытаюсь получить доступ к переменной, которая еще не была назначена. Однако из того, что я вижу, я уже назначил это. Мой Lua не самый лучший, и, может быть, я просто еще не совсем правильно понимаю область видимости, но кто-нибудь может объяснить, почему я это получаю?
include( "/vgui/cs_f4_menu.lua" )
AddCSLuaFile( "/vgui/cs_f4_menu.lua" )
local function openMenu()
if(!CSF4Menu) then
CSF4Menu = vgui.Create( "cs_f4_menu")
CSF4Menu:SetVisible( false )
end
if(CSF4Menu:IsVisible()) then
CSF4Menu:SetVisible( false )
gui.EnableScreenClicker(false) --Here
else
CSF4Menu:SetVisible( true )
gui.EnableScreenClicker(true)
end
end
hook.Add("PlayerBindPress", "F4MenuBind", function(ply, bind, pressed)
if string.find(bind, "gm_showspare2", 1, true) then
F4Bind = input.KeyNameToNumber(input.LookupBinding(bind))
openMenu()
end
end)
vgui / cs_f4_menu. lua
scr_width = surface.ScreenWidth()
scr_height = surface.ScreenHeight()
box_width = math.floor(surface.ScreenWidth()*0.7)
box_height = math.floor(surface.ScreenHeight()*0.7)
local PANEL = {
Init = function( self )
self:SetSize( box_width, box_height )
self:Center()
self:SetVisible( true )
end,
Paint = function(self, w, h)
surface.SetDrawColor(255, 255, 255, a=150)
surface.DrawRect( 0, 0, w, h)
surface.DrawOutlinedRect(2, 2, w-4, h-4)
end
}
vgui.Register( "cs_f4_menu", PANEL)
Точная ошибка, которую я получаю:
[ERROR] addons/darkrpmodification/lua/darkrp_modules/tpr_f4menu/cl_core.lua:14: attempt to index global 'CSF4Menu' (a nil value)
1. openMenu - addons/darkrpmodification/lua/darkrp_modules/tpr_f4menu/cl_core.lua:14
2. fn - addons/darkrpmodification/lua/darkrp_modules/tpr_f4menu/cl_core.lua:29
3. unknown - addons/ulib/lua/ulib/shared/hook.lua:109
Но, опять же, я не до конца понимаю, почему. Мне пришлось переместить мой оператор включения из функции, потому что я предполагал, что локальная функция не может найти файл вне области видимости?