startThread(kingblok); запускает функцию в первый раз, функция продолжит выполняться с интервалом sleep(), пока задание не выполнено. А ошибку выдаёт, потому что не поставлены скобки рядом с kingblok.
function kingblok()
while GetObjectiveState("sec2",--заменить_на_id_игрока) ~= 3 do
sleep(5);
end;
SetRegionBlocked("block", nil, -1);
end;
startThread(kingblok);