Будем считать что 10 часовой трек мы делать не будем, а разобьём его по 5 часов
Дело не в том, кто как работает и поступает, а в том что если человек введет больше 9, то произойдет абра-кадабра.)))Все так поступают кто с большими проектами работает.
Вот держи:
Первая цифра - это часы
вторая,третья - это минуты
четвертая,пятая - это секунды
и остальные - это миллисекунды
Но как по мне, то это только запутает и не удобнее.
PHP:
local
Previous_input = true;
-------------------------------------------------------
local function no_undo()reaper.defer(function()end)end;
-------------------------------------------------------
local title = 'Go To Time (time)';
local _,filename,buf;
if Previous_input == true then;
_,filename,_,_,_,_,_ = reaper.get_action_context();
filename = filename:match('(.+)[/\\](.+)');
buf = reaper.GetExtState(filename,title);
end;
if not buf or buf == '' then;
--local CurPos = reaper.GetCursorPosition();
-- buf = reaper.format_timestr_pos(CurPos,'',0);
end;
--local
retval,retvals_csv = reaper.GetUserInputs(title,1,'Sec:,extrawidth=25',buf);
if not retval then no_undo()return end;
--[[
local MSec = retvals_csv:match( '(%d+)$')or 0;
local Sec = retvals_csv:match( '(%d+)%D+%d*$')or 0;
local Min = retvals_csv:match( '(%d+)%D+%d*%D+%d*$')or 0;
local Hour = retvals_csv:match('(%d+)%D+%d*%D+%d*%D+%d*$')or 0;
--]]
retvals_csv = retvals_csv:gsub('%D','');
Hour = retvals_csv:match('^(%d)')or 0
retvals_csv = retvals_csv:gsub('^(%d)','');
Min = retvals_csv:match('^(%d%d)')or 0
retvals_csv = retvals_csv:gsub('^(%d%d)','');
Sec = retvals_csv:match('^(%d%d)')or 0
retvals_csv = retvals_csv:gsub('^(%d%d)','');
MSec = retvals_csv:match('^(%d*)')or 0
retvals_csv = retvals_csv:gsub('^(%d*)','');
-- Hour,Min,Sec,MSec = retvals_csv:match('(%d)(%d%d)(%d%d)(%d*)');--(%d%d)(%d%d)(%d*)
--[
local time = reaper.parse_timestr_pos(Hour..':'..Min..':'..Sec..'.'..MSec,0);
reaper.SetEditCurPos(time,true,false);
if Previous_input == true then;
-- reaper.SetExtState(filename,title,retvals_csv,false);
end;
no_undo();