Touch the physic object (car) to take the control and move it around your place. It may be improved for more functions and options. active = false linearSpeed = 0.0 angularSpeed = 0.0 function state_entry() ll.SetStatus(STATUS_PHYSICS, 1) ll.InstantMessage(ll.GetOwner(),"Touch me to activate remote control") end function touch_start(toucher) ll.RequestPermissions(ll.GetOwner(), PERMISSION_TAKE_CONTROLS) end function run_time_permissions(perm) if bit32.band(perm, PERMISSION_TAKE_CONTROLS) then ll.OwnerSay("Permissions granted.") local controlMask = bit32.bor(CONTROL_FWD, CONTROL_BACK, CONTROL_ROT_LEFT, CONTROL_ROT_RIGHT) ll.TakeControls(controlMask, 1, 0) active = true ll.SetTimerEvent(0.1) end end function control(avatar_id, level, edge) local start = bit32.band(level, edge) local finish = bit32.band(bit32.bnot(level), edge) local held = bit32.band(level, bit32.bnot(edge)) local untouched = bit32.bnot(bit32.bor(level, edge)) if (true) then if bit32.band(held, CONTROL_FWD) ~= 0 then linearSpeed = 12.0 elseif bit32.band(held, CONTROL_BACK) ~= 0 then linearSpeed = -12.0 elseif (bit32.band(held, CONTROL_FWD) == 0 or bit32.band(held, CONTROL_BACK) == 0) then linearSpeed = 0.0 end if bit32.band(held, CONTROL_ROT_LEFT) ~= 0 and linearSpeed >= 0.0 then angularSpeed = 2.5 end if bit32.band(held, CONTROL_ROT_LEFT) ~= 0 and linearSpeed <= 0.0 then angularSpeed = -2.5 end if bit32.band(held, CONTROL_ROT_RIGHT) ~= 0 and linearSpeed >= 0.0 then angularSpeed = -2.5 end if bit32.band(held, CONTROL_ROT_RIGHT) ~= 0 and linearSpeed >= 0.0 then angularSpeed = 2.5 end if (bit32.band(held, CONTROL_ROT_LEFT) == 0 or bit32.band(held, CONTROL_ROT_RIGHT) == 0) then angularSpeed = 0.0 end end end function timer() ll.SetVelocity(vector(linearSpeed, 0, 0), 1) ll.SetAngularVelocity(vector(0, 0, angularSpeed), 1) end state_entry()