Script partially working on local, but completely failing on a dedicated server
11 replies, posted
I'm not exactly new to Lua, but it's my first time using Derma properly(I think). Now I'm not getting any error messages in either server, but on the dedicated server my commands refuse to register. Could it be the way I have my code set up and what not?
Here's the script:
[code]
function mainmenu()
local MainMenu
local SpawnIcon1FIDG
local SpawnIcon1EETM
local SpawnIcon1
local RpDesc
local RpName3
local DLabel3
local RpName2
local Start
MainMenu = vgui.Create('DFrame')
MainMenu:SetSize(481, 694)
MainMenu:SetPos(272, 12)
MainMenu:SetTitle('Welcome to Vanilla!')
MainMenu:SetSizable(true)
MainMenu:SetDeleteOnClose(false)
MainMenu:SetBackgroundBlur(true)
MainMenu:MakePopup()
SpawnIcon1FIDG = vgui.Create('SpawnIcon',MainMenu)
SpawnIcon1FIDG:SetPos(179, 83)
SpawnIcon1FIDG.OnMousePressed = function( icon ) surface.PlaySound( "ui/buttonclickrelease.wav" ) RunConsoleCommand("rp_setmodel","models/players/perp2suit/male_03.mdl") end
SpawnIcon1FIDG:SetModel('models/players/perp2suit/male_03.mdl')
SpawnIcon1EETM = vgui.Create('SpawnIcon',MainMenu)
SpawnIcon1EETM:SetPos(115, 83)
SpawnIcon1EETM.OnMousePressed = function( icon ) surface.PlaySound( "ui/buttonclickrelease.wav" ) RunConsoleCommand("rp_setmodel1","models/players/perp2suit/male_04.mdl") end
SpawnIcon1EETM:SetModel('models/players/perp2suit/male_04.mdl')
SpawnIcon1 = vgui.Create('SpawnIcon',MainMenu)
SpawnIcon1:SetPos(51, 83)
SpawnIcon1.OnMousePressed = function( icon ) surface.PlaySound( "ui/buttonclickrelease.wav" ) RunConsoleCommand("rp_setmodel2","models/players/humans/group01/clo4fe_01.mdl") end
SpawnIcon1:SetModel('models/players/humans/group01/clo4fe_01.mdl')
RpDesc = vgui.Create('DLabel',MainMenu)
RpDesc:SetPos(51, 627)
RpDesc:SetText('Description')
RpDesc:SizeToContents()
RpDescrip = vgui.Create('DTextEntry',MainMenu)
RpDescrip:SetSize(158, 20)
RpDescrip:SetPos(116, 623)
RpDescrip.OnEnter = function() end
RpName3 = vgui.Create('DLabel',MainMenu)
RpName3:SetPos(51, 652)
RpName3:SetText('Job')
RpName3:SizeToContents()
RpJob = vgui.Create('DTextEntry',MainMenu)
RpJob:SetSize(158, 20)
RpJob:SetPos(116, 648)
RpJob.OnEnter = function() end
DLabel3 = vgui.Create('DLabel',MainMenu)
DLabel3:SetPos(45, 47)
DLabel3:SetText('Please select a player model! This will represent your character in-game!')
DLabel3:SizeToContents()
RpName2 = vgui.Create('DLabel',MainMenu)
RpName2:SetPos(51, 678)
RpName2:SetText('Set an RP Name')
RpName2:SizeToContents()
RPName = vgui.Create('DTextEntry',MainMenu)
RPName:SetSize(158, 22)
RPName:SetPos(115, 673)
RPName.OnEnter = function() end
Start = vgui.Create('DButton',MainMenu)
Start:SetSize(95, 28)
Start:SetPos(158, 670)
Start:SetText('Start')
Start.DoClick = function() end
end
concommand.Add("rp_mainmenu",mainmenu)
function setmodel(ply)
ply:SetModel("models/players/perp2suit/male_03.mdl")
end
concommand.Add("rp_setmodel",setmodel)
function setmodel2(ply)
ply:SetModel("models/players/perp2suit/male_04.mdl")
end
concommand.Add("rp_setmodel1",setmodel2)
function setmodel3(ply)
ply:SetModel("models/players/humans/group01/clo4fe_01.mdl")
end
concommand.Add("rp_setmodel2",setmodel3)[/code]
Any help with this would be greatly appreciated, I'd just like to get it working on the dedicated server so I can continue work.
Make sure this code is clientside, and you send it to the client via AddCSLuaFile (<LuaPath>) and include on the client.
The code is clietnside, but I have a feeling that
[code]
function setmodel(ply)
ply:SetModel("models/players/perp2suit/male_03.mdl")
end
concommand.Add("rp_setmodel",setmodel)
function setmodel2(ply)
ply:SetModel("models/players/perp2suit/male_04.mdl")
end
concommand.Add("rp_setmodel1",setmodel2)
function setmodel3(ply)
ply:SetModel("models/players/humans/group01/clo4fe_01.mdl")
end
concommand.Add("rp_setmodel2",setmodel3)[/code]
Shouldn't be included in this then and rather kept serverside?
Yes, those concomands should be server side.
Thanks for the help. Gonna test this out ASAP.
[editline]8th January 2011[/editline]
Well, it works now. Time to move forward. Thanks guys.
Updated script:
[code]function mainmenu()
local MainMenu
local SpawnIcon1FIDG
local SpawnIcon1EETM
local SpawnIcon1
local RpDesc
local RpName3
local DLabel3
local RpName2
local Start
MainMenu = vgui.Create('DFrame')
MainMenu:SetSize(481, 694)
MainMenu:SetPos(272, 12)
MainMenu:SetTitle('Welcome to Vanilla!')
MainMenu:SetSizable(true)
MainMenu:SetDeleteOnClose(false)
MainMenu:SetBackgroundBlur(true)
MainMenu:MakePopup()
SpawnIcon1FIDG = vgui.Create('SpawnIcon',MainMenu)
SpawnIcon1FIDG:SetPos(179, 83)
SpawnIcon1FIDG.OnMousePressed = function( icon ) surface.PlaySound( "ui/buttonclickrelease.wav" ) RunConsoleCommand("rp_setmodel","models/players/perp2suit/male_03.mdl") end
SpawnIcon1FIDG:SetModel('models/players/perp2suit/male_03.mdl')
SpawnIcon1EETM = vgui.Create('SpawnIcon',MainMenu)
SpawnIcon1EETM:SetPos(115, 83)
SpawnIcon1EETM.OnMousePressed = function( icon ) surface.PlaySound( "ui/buttonclickrelease.wav" ) RunConsoleCommand("rp_setmodel1","models/players/perp2suit/male_04.mdl") end
SpawnIcon1EETM:SetModel('models/players/perp2suit/male_04.mdl')
SpawnIcon1 = vgui.Create('SpawnIcon',MainMenu)
SpawnIcon1:SetPos(51, 83)
SpawnIcon1.OnMousePressed = function( icon ) surface.PlaySound( "ui/buttonclickrelease.wav" ) RunConsoleCommand("rp_setmodel2","models/players/humans/group01/clo4fe_01.mdl") end
SpawnIcon1:SetModel('models/players/humans/group01/clo4fe_01.mdl')
RpDesc = vgui.Create('DLabel',MainMenu)
RpDesc:SetPos(51, 590)
RpDesc:SetText('Description')
RpDesc:SizeToContents()
RpDescrip = vgui.Create('DTextEntry',MainMenu)
RpDescrip:SetSize(158, 20)
RpDescrip:SetPos(116, 586)
RpDescrip.OnEnter = function() end
RpName3 = vgui.Create('DLabel',MainMenu)
RpName3:SetPos(51, 620)
RpName3:SetText('Job')
RpName3:SizeToContents()
RpJob = vgui.Create('DTextEntry',MainMenu)
RpJob:SetSize(158, 20)
RpJob:SetPos(116, 614)
RpJob.OnEnter = function() end
DLabel3 = vgui.Create('DLabel',MainMenu)
DLabel3:SetPos(45, 47)
DLabel3:SetText('Please select a player model! This will represent your character in-game!')
DLabel3:SizeToContents()
RpName2 = vgui.Create('DLabel',MainMenu)
RpName2:SetPos(42, 648)
RpName2:SetText('Set an RP Name')
RpName2:SizeToContents()
RPName = vgui.Create('DTextEntry',MainMenu)
RPName:SetSize(158, 22)
RPName:SetPos(116, 644)
RPName.OnEnter = function() end
Start = vgui.Create('DButton',MainMenu)
Start:SetSize(95, 28)
Start:SetPos(290, 640)
Start:SetText('Start')
Start.DoClick = function() end
end
concommand.Add("rp_mainmenu",mainmenu)
[/code]
Broken again somehow, no idea whats wrong with it this time and several people have told me that it shouldn't be broken.
the error is:
Attempt to index global 'vgui'(a nil value) on line 15.
Are you definitely doing this clientside?
it's all in the cl_init.lua file, so it should be client side.
Shouldn't you use at beginning of code include("pathhere.lua")
Someone told me this earlier today, I [b]still[/b] have troubles with clientside derma even though I know what to do and how. Just doesn't like me
It's there, i was just posting a snippet of my cl_init.lua file
[editline]8th January 2011[/editline]
Right, so I thought that the problem maybe that i have
[code]include('cl_init.lua')[/code]
in my init.lua file, so I removed it, but now it won't add the command to bring the menu up.
AddCSLuaFile() it in init.lua
Err, just in case you understand why -TB- told you to put concommand.Add() on serverside is because:
concommand.Add() is a shared function, so you can put it in cl_init.lua BUT ONLY if you put clientside code in it, same with putting concommand.Add() on serverside, it must include serverside code.
Also, let me explain include() and AddCSLuaFile()
init.lua is automatically loaded(unless there are some really big errors like not including an 'end' or something that might completely break the gamemode, making it resort to sandbox)
Garrysmod looks if you have included files into the gamemode, both clientside and serverside.
Serverside files are added with include()
Clientside files are added with AddCSLuaFile()
Shared files are added by using both include() and AddCSLuaFile() on the file you wish to be shared
Sorry, you need to Log In to post a reply to this thread.