Hi!
I've made my first addon today because I needed more advanced ball sockets. The addon works in single player, but when I try to fire the tool in listen server mode I get script errors, however the tool seems to work anyway.
These are my errors from firing the tool the 2nd time:
[CODE][ERROR] addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277: attempt to call field 'AdvBallsocket' (a nil value)
1. LeftClick - addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277
2. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:254
[ERROR] addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277: attempt to call field 'AdvBallsocket' (a nil value)
1. LeftClick - addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277
2. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:254
[ERROR] addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277: attempt to call field 'AdvBallsocket' (a nil value)
1. LeftClick - addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277
2. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:254
[ERROR] addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277: attempt to call field 'AdvBallsocket' (a nil value)
1. LeftClick - addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277
2. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:254
[Voroz|6|STEAM_0:0:1996532] Lua Error:
[ERROR] addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277: attempt to call field 'AdvBallsocket' (a nil value)
1. LeftClick - addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277
2. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:254
[Voroz|6|STEAM_0:0:1996532] Lua Error:
[ERROR] addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277: attempt to call field 'AdvBallsocket' (a nil value)
1. LeftClick - addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277
2. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:254
[Voroz|6|STEAM_0:0:1996532] Lua Error:
[ERROR] addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277: attempt to call field 'AdvBallsocket' (a nil value)
1. LeftClick - addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277
2. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:254
[Voroz|6|STEAM_0:0:1996532] Lua Error:
[ERROR] addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277: attempt to call field 'AdvBallsocket' (a nil value)
1. LeftClick - addons/mostadv_ballsocket/lua/weapons/gmod_tool/stools/mostadv_ballsocket.lua:277
2. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:254[/CODE]
And this is the relevant code:
[CODE]local clickCounter = 0
function TOOL:LeftClick( trace )
if clickCounter % 2 == 0 then
aimPos1 = trace.HitPos
ent1 = trace.Entity
else
aimPos2 = trace.HitPos
ent2 = trace.Entity
end
if ent1 ~= nil && ent2 ~= nil then
if centerSocket == 1 then
ent1:SetPos(aimPos2)
elseif snapTo == 1 then
ent1:SetPos(ent1:GetPos() + (aimPos2 - aimPos1))
end
ent1:SetPos(ent1:GetPos() + movementOffset)
lPos1 = aimPos2 - ent1:GetPos() + socketOffset
constraint.AdvBallsocket( ent1, ent2, bone1, bone2, lPos1, lPos2, forcelimit, torquelimit, rotationMin.x, rotationMin.y, rotationMin.z, rotationMax.x, rotationMax.y, rotationMax.z, friction.x, friction.y, friction.z, onlyrotation, nocollide)
ent1 = nil
ent2 = nil
end
clickCounter = clickCounter + 1
end[/CODE]
ent1, ent2 and other variables are declared and initialized earlier in the code. ex: local ent1 = nil.
Hope you can help me, thanks.
Make sure it's run serverside only
Ok, I added an "if Server then" around that part of the code, and now it's working. Thanks.
[editline]7th July 2016[/editline]
Another question: With my code below, will a client change a variable on the server, or on their client? If this changes the server variable, how can I make it so it's changed on client only?
[CODE]local nocollide = 0
CreateClientConVar("mab_nocollide", nocollide, true, true)
cvars.AddChangeCallback( "mab_nocollide", function( convar_name, value_old, value_new )
nocollide = tonumber(value_new)
end )[/CODE]
Sorry, you need to Log In to post a reply to this thread.