You need to label each one of the moving parts. I see that you are creating new objects instead of moving them. Something like this I think:
function Load( name )
if name ~= getThisResource() then return else
gate1 = createObject ( 986, 96.790939, 1921.111084, 18.860405, [ 1.570796, 0.000000, 0.000000 ] )
end
end
function gateOneOpen ( thePlayer )
moveObject ( gate1, 3000, 96.940948, 1925.990845, 18.860405, [ 1.570796, 0.000000, 0.000000 ] )
outputChatBox ( "Gate one opening", thePlayer, 255, 0, 0 )
end
function gateOneClose ( thePlayer )
moveObject ( gate1, 3000, 96.940948, 1925.990845, 18.860405, [ 1.570796, 0.000000, 0.000000 ] )
outputChatBox ( "Gate one closing", thePlayer, 255, 0, 0 )
end
addEventHandler ( "onResourceStart", getRootElement(), Load)
addCommandHandler ( "gateoneopen", gateOneOpen )
addCommandHandler ( "gateoneclose", gateOneClose )
I haven't tested, but by the looks of it it should work.