• Addon VGUI
    9 replies, posted
I am trying to make a VGUI screen in an addon, using a console command to access it( "vgui_menu" ). And the problem is when I call it, I get a server error( blue text ) about a nil value vgui. I know the problem is that its calling it on server, when its a client function. But when I check if its a client [lua] if( CLIENT ) then[/lua] I get an error of unknown console command "vgui_menu". Im confused and unsure of what to do!
How do I make it a shared script? I'm used to working with the gamemodes with 3 files that are the server, client, and shared. This addon is a bit more confusing....
You send the file to the clients with AddCSLuaFile.
I did send the file to the clients... unless I messed up somewhere. I will go overlook my code again. EDIT: Well I have 1 main file, that includes "cl_menu.lua" and also sends "cl_menu.lua" to the client. Do I have to send the main file to the client aswell?
Does the client include (run) the file?
Yes, I now see the error of my way, I DO have to send the main file for it starts all the client functions and server functions. I might make 2 seperate "main" files for client functions and server functions.
That's better, yes.
Well, if I'm testing on singleplayer, I shouldn't have to worry about sending the files, as I already have them... and I am still getting errors. Maybe I looked at this wrong... Heres the basic outlay.... [addons] -> [My_Addon] -> [lua] -> [autorun] -> "launcher.lua" [lua]if( SERVER ) then AddCSLuaFile( "autorun/launcher.lua" ) end include( "AddonLUA/init.lua" )[/lua] [addons] -> [My_Addon] -> [lua] -> [AddonLUA] -> "init.lua" [lua]if( SERVER ) then AddCSLuaFile( "AddonLUA/init.lua" ) AddCSLuaFile( "cl_menu.lua" ) end include( "cl_menu.lua" )[/lua] [addons] -> [My_Addon] -> [lua] -> [AddonLUA] -> "cl_menu.lua" [lua]local function plugin_DermaMenu() local DermaPanel = vgui.Create( "DFrame" ) DermaPanel:SetPos( 50,50 ) DermaPanel:SetSize( 200, 250 ) DermaPanel:SetTitle( "Testing Derma Stuff" ) DermaPanel:SetVisible( true ) DermaPanel:SetDraggable( true ) DermaPanel:ShowCloseButton( true ) DermaPanel:MakePopup() local CheckBoxThing = vgui.Create( "DCheckBoxLabel", DermaPanel ) CheckBoxThing:SetPos( 10,50 ) CheckBoxThing:SetText( "God Mode" ) CheckBoxThing:SetConVar( "sbox_godmode" ) -- ConCommand must be a 1 or 0 value CheckBoxThing:SetValue( 1 ) CheckBoxThing:SizeToContents() -- Make its size to the contents. Duh? end concommand.Add( "qk_menu", plugin_DermaMenu )[/lua] This is not all the code, except for cl_menu. Its just bits and bobs of the areas that handle inclusion and sending of other files.... The error is a blue text server error,cl_menu.lua:10: attempt to index global 'vgui' (a nil value). But in this case, line 02 is line 10!
That's because after the server has ran the code inside the 'if ( SERVER ) then', it continues with the menu include. Try this: [lua]if( SERVER ) then AddCSLuaFile( "AddonLUA/init.lua" ) AddCSLuaFile( "cl_menu.lua" ) else include( "cl_menu.lua" ) end[/lua]
Sorry, you need to Log In to post a reply to this thread.