Toribash
well yeah..
local Camx = 0
local Camy = 0
local Camz = 0
local CamMinusX, CamPlusX, CamMinusZ, CamPlusZ = 0,0,0,0

local function keypress(key)
        if(key == 274) then
            CamMinusZ = 1
        elseif(key == 273) then
            CamPlusZ = 1
        elseif(key == 275) then
            CamMinusX = 1
        elseif(key == 276) then
            CamPlusX = 1
        end
        
        while (CamMinusX == 1) do
            Camx = Camx -1
        end
        while (CamPlusX == 1) do
            Camx = Camx +1
        end
        while (CamMinusZ == 1) do
            Camz = Camz -1
        end
        while (CamPlusZ == 1) do
            Camz = Camz +1
        end
    end
    
local function keyrelease(key)
        if(key == 274) then
            CamMinusZ = 0
        elseif(key == 273) then
            CamPlusZ = 0
        elseif(key == 275) then
            CamMinusX = 0
        elseif(key == 276) then
            CamPlusX = 0
        end
    end

local function camera()
    set_camera_pos(Camx, Camy, Camz)
end

local function cameramove()
    set_camera_pos(Camx, Camy, Camz)
end

add_hook("key_down","FreeRoam", keypress)
add_hook("key_up","FreeRoam", keyrelease)
add_hook("draw3d","FreeRoam", camera)
add_hook("camera","FreeRoam", cameramove)
--back = 274
--forward = 273
--right = 275
--left = 276

I think it does an infinite loop and crashes TB...
Can someone tell me how to do a better "while key is down"
:D