Platform problems

I am making a platformer, but I am having trouble with momentum conservation from platforms. I have 3 events:

function self:isstanding(on, dt)
self.x = self.x + on.vx * dt
end

function self:jumpedoff(off)

self.vx = self.vx + off.vx
self.lastplatformvel = off.vx
end

function self:landedon(on)

self.vx = self.vx - on.vx --not right: You will "slip"
self.vx = self.vx - self.lastplatformvel --not right: You will instantly stop when jumping from a platform to static ground, and you can't do edge cases: when landing on a slower platform you will react in an unrealistic way.
end

These were really all the "solutions" I could think of.