• Online only script error
    2 replies, posted
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.