for example if i want to create point by using lookAt and LookVector of two points and then multiply it by magnitude of these two points divided by two it’s doing something like that (example on picture)

It looks like you want to find the midpoint between C and B, which would be (C + B)/2

Which would mean the correction would be:

point.Position = (c + b)/2

The reason why your current code doesn’t work is because a CFrame’s LookVector starts at the origin and not at the CFrame’s position. You can correct that by simply adding the CFrame’s position to the calculation:

local cframe = CFrame.lookAt(c, b)
point.Position = cframe.Position
+ cframe.LookVector
* ((c - b).Magnitude / 2)

You don’t need to construct a CFrame value to get the look vector between two vectors. You just need to normalize the difference between the two of them: (a - b).Unit. But you can also just lerp between the two points too, if you’re just trying get a midpoint: a:Lerp(b, 0.5), or just divide them by two like @goldenstein64 mentioned.

The reason you’re getting weird positions is probably because you’re moving things about the origin, which might not line up with where your other points are located.