<pclass="rvps10"><spanclass="rvts22">TAS Editor 1.0 предоставляет библиотеку из 24 функций, доступных для использования в Lua-скриптах, запускаемых в эмуляторе FCEUX. С помощью Lua-скриптов вы можете автоматизировать некоторые аспекты работы в Тасэдиторе и даже создать свои инструменты для обработки мувика.</span></p>
<pclass="rvps10"><spanclass="rvts22">В папке FCEUX есть папка </span><spanclass="rvts21">/luaScripts</span><spanclass="rvts22">, в которой находится подпапка </span><spanclass="rvts21">/taseditor</span><spanclass="rvts22">. Там можно найти несколько скриптов с примерами использования функций этой библиотеки.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если вы не знаете, как создавать и запускать Lua-скрипты в эмуляторах, прочитайте раздел </span><aclass="rvts28"href="AdvancedFeatures.html#UsingLua">Продвинутые возможности</a><spanclass="rvts22">, а также соответствующий раздел в </span><aclass="rvts28"href="http://www.fceux.com/web/help/fceux.html?Commands.html"target="_blank">документации</a><aclass="rvts28"href="http://www.fceux.com/web/help/fceux.html?Commands.html"target="_blank"> FCEUX</a><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Регистрирует функцию ("Auto Function", Автофункция), которая будет периодически вызываться эмулятором. Можно зарегистрировать и исполнять Автофункцию, даже когда Тасэдитор не запущен.</span></p>
<pclass="rvps10"><spanclass="rvts22">Когда FCEUX эмулирует игру, Автофункция запускается по окончании каждого кадра (то есть 60 раз в секунду в NTSC-играх и 50 раз в PAL).</span></p>
<pclass="rvps10"><spanclass="rvts22">Когда FCEUX стоит на паузе, Автофункция запускается 20 раз в секунду.</span></p>
<pclass="rvps10"><spanclass="rvts22">Пользователь может включать и отключать вызовы Автофункции с помощью галочки "Auto function" в интерфейсе Тасэдитора.</span></p>
<pclass="rvps10"><spanclass="rvts22">Как и в случае с остальными регистрируемыми Луа-функциями в FCEUX, одновременно может быть зарегистрирована только одна Автофункция. Если вы зарегистрируете две Автофункции, вторая заменит первую, причём второй вызов </span><spanclass="rvts21">taseditor.registerauto()</span><spanclass="rvts22"> возвратит ссылку на код старой Автофункции. Вы можете удалить зарегистрированную Автофункцию, вызвав </span><spanclass="rvts21">taseditor.registerauto(</span><spanclass="rvts72">nil</span><spanclass="rvts21">)</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если скрипт заканчивает свою работу, а зарегистрированные функции остались, FCEUX не удаляет скрипт из памяти, чтобы была возможность вызывать эти функции. Скрипт завершается, если пользователь останавливает его вручную, или же если все зарегистрированные функции оказываются удалены.</span></p>
<pclass="rvps10"><spanclass="rvts22">Регистрирует функцию ("Manual Function", Ручная функция), которая может быть вызвана пользователем Тасэдитора вручную. Можно зарегистрировать Ручную функцию даже когда Тасэдитор не запущен.</span></p>
<pclass="rvps10"><spanclass="rvts22">Ручная функция не зависит от состояния паузы эмуляции. Она будет вызвана в конце кадра, в течение которого пользователь нажал кнопку </span><spanclass="rvts32">Run function</span><spanclass="rvts22"> в интерфейсе Тасэдитора.</span></p>
<pclass="rvps10"><spanclass="rvts22">Вы можете указать название, которое будет отображаться на кнопке вместо текста "Run function".</span></p>
<pclass="rvps10"><spanclass="rvts22">Ручную функцию невозможно вызвать чаще, чем частота обновления окна Тасэдитора (60/50 FPS или 20FPS во время паузы).</span></p>
<pclass="rvps10"><spanclass="rvts22">Выполнение Ручной функции расположено в коде FCEUX сразу после выполнения Автофункции.</span></p>
<pclass="rvps10"><spanclass="rvts22">С помощью регистрации Луа-функций вы можете создавать новые инструменты для Тасэдитора. Например, можно написать скрипт, который инвертирует выделенный Ввод, так что пользователь сможет в любой момент выделить регион мувика и нажать кнопку </span><spanclass="rvts32">Run function</span><spanclass="rvts22"> для инвертирования Ввода в этом регионе.</span></p>
<pclass="rvps10"><spanclass="rvts22">Как и в случае с остальными регистрируемыми Луа-функциями в FCEUX, одновременно может быть зарегистрирована только одна Ручная функция. Если вы зарегистрируете две Ручные функции, вторая заменит первую, причём второй вызов </span><spanclass="rvts21">taseditor.registermanual()</span><spanclass="rvts22"> возвратит ссылку на старую Ручную функцию. Вы можете удалить зарегистрированную Ручную функцию, вызвав </span><spanclass="rvts21">taseditor.registermanual(</span><spanclass="rvts72">nil</span><spanclass="rvts21">)</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если скрипт заканчивает свою работу, а зарегистрированные функции остались, FCEUX не удаляет скрипт из памяти, чтобы была возможность вызывать эти функции. Скрипт завершается, если пользователь останавливает его вручную, или же если все зарегистрированные функции оказываются удалены.</span></p>
<pclass="rvps10"><spanclass="rvts22">Возвращает </span><spanclass="rvts72">true</span><spanclass="rvts22">, если Тасэдитор в данный момент запущен, иначе возвращает </span><spanclass="rvts72">false</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Кроме того, когда Тасэдитор запущен, вызов функции </span><spanclass="rvts21">movie.mode()</span><spanclass="rvts22"> возвращает строку "taseditor".</span></p>
<pclass="rvps10"><spanclass="rvts22">Возвращает </span><spanclass="rvts72">true</span><spanclass="rvts22">, если в текущем мувике на указанном кадре установлен Маркер, иначе возвращает </span><spanclass="rvts72">false</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, возвращает </span><spanclass="rvts72">false</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Устанавливает Маркер на указанный кадр. Возвращает порядковый номер установленного Маркера.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если на этом кадре уже есть Маркер, никаких изменений не производится, будет возвращён номер существующего Маркера на указанном кадре.</span></p>
<pclass="rvps10"><spanclass="rvts22">Можно устанавливать Маркеры даже за пределами Ввода.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<pclass="rvps10"><spanclass="rvts22">Удаляет Маркер с указанного кадра. Если на этом кадре не было Маркера, никаких изменений не производится.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, никаких изменений не производится.</span></p>
<pclass="rvps10"><spanclass="rvts22">Когда вам требуется узнать состояние Записи (Read-only или Read+Write), воспользуйтесь функцией </span><spanclass="rvts21">emu.readonly()</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Проигрыватель Тасэдитора в данный момент добегает (seek) к целевому кадру, эта функция возвращает номер целевого кадра.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если же Проигрыватель не занят добеганием, возвращает -1.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<pclass="rvps10"><spanclass="rvts22">Посылает Курсор Проигрывателя на указанный кадр.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указанный кадр не находится в Гринзоне, Проигрыватель Тасэдитора начинает добегание к этому кадру.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<pclass="rvps10"><spanclass="rvts22">Возвращает таблицу (массив), содержащую номера выделенных в данынй момент кадров. Эти номера отсортированы по возрастанию.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если выделенных кадров в данный момент нет, возвращает </span><spanclass="rvts72">nil</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, возвращает </span><spanclass="rvts72">nil</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Изменяет текущее Выделение на указанный набор кадров. Номера кадров в вашей таблице не обязательно отсортировывать.</span></p>
<pclass="rvps10"><spanclass="rvts22">Возвращает число, представляющее собой Ввод указанного джойстика на указанном кадре.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указан отрицательный номер кадра, возвращает -1.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указан номер кадра за пределами текущего Ввода мувика, возвращает 0, что может трактоваться как отсутствие нажатий на этом кадре.</span></p>
<pclass="rvps10"><spanclass="rvts22">Указываемое вами значение джойстика (joypad) должно быть одним из следующих чисел:</span></p>
<pclass="rvps10"><spanclass="rvts22">0 – если нужно получить приставочные команды (бит 0 = сброс, бит 1 = включение консоли, бит 2 = вставка диска FDS, бит 3 = смена стороны диска FDS)</span></p>
<pclass="rvps10"><spanclass="rvts22">1 – чтобы получить кнопки 1 пада (бит 0 = A, бит 1 = B, бит 2 = Select, бит 3 = Start, бит 4 = Вверх, бит 5 = Вниз, бит 6 = Влево, бит 7 = Вправо)</span></p>
<pclass="rvps10"><spanclass="rvts22">2 – чтобы получить кнопки 2 пада</span></p>
<pclass="rvps10"><spanclass="rvts22">3 – чтобы получить кнопки 3 пада</span></p>
<pclass="rvps10"><spanclass="rvts22">4 – чтобы получить кнопки 4 пада</span></p>
<pclass="rvps10"><spanclass="rvts22">Возвратившееся число (если оно не равно -1) следует рассматривать как байт, каждый бит которого отвечает за одну кнопку (например, если младший бит установлен, это означает, что кнопка A нажата). Используйте битовые операции, чтобы получить состояние нужных кнопок.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указанный джойстик не является числом в пределах [0-4], возвращает -1.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<pclass="rvps10"><spanclass="rvts22">Отправляет запрос Тасэдитору, требуя изменить Ввод указанного джойстика на указанном кадре.</span></p>
<pclass="rvps10"><spanclass="rvts22">Сам Ввод мувика будет изменён только после вызова </span><spanclass="rvts21">taseditor.applyinputchanges()</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Таким образом вы можете изменить сразу несколько кадров мувика, сделав несколько последовательных вызовов </span><spanclass="rvts21">taseditor.submitinputchange()</span><spanclass="rvts22">, а затем применив все накопившиеся запросы к мувику одним вызовом </span><spanclass="rvts21">taseditor.applyinputchanges()</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">В момент применения списка запросов Тасэдитор исполняет их в порядке поступления.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указан отрицательный номер кадра, Тасэдитор проигнорирует этот запрос.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указан номер кадра за пределами Ввода мувика, Тасэдитор расширит границы мувика во время </span><spanclass="rvts21">applyinputchanges()</span><spanclass="rvts22"> до указанного кадра.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указанный джойстик не является числом в пределах [0-4], Тасэдитор проигнорирует этот запрос.</span></p>
<pclass="rvps10"><spanclass="rvts22">Указанный Ввод должен быть числом, которое Тасэдитор сможет представить в виде последовательности битов, отражающих состояние соответствующих кнопок указанного джойстика </span><spanclass="rvts22">(бит 0 = A, бит 1 = B, бит 2 = Select, бит 3 = Start, бит 4 = Вверх, бит 5 = Вниз, бит 6 = Влево, бит 7 = Вправо)</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<pclass="rvps10"><spanclass="rvts22">Отправляет запрос Тасэдитору, требуя вставить указанное количество пустых кадров перед указанным номером кадра мувика.</span></p>
<pclass="rvps10"><spanclass="rvts22">Сам Ввод мувика будет изменён только после вызова </span><spanclass="rvts21">taseditor.applyinputchanges()</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Вставка пустых кадров сдвигает вниз часть старого Ввода, а также сдвигает вниз часть Маркеров (если установлена галочка "</span><aclass="rvts28"href="ProgramCustomization.html#BindMarkerstoInput">Bind Markers to Input</a><spanclass="rvts22">").</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указанное количество кадров для вставки меньше или равно нулю, Тасэдитор проигнорирует этот запрос.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указан отрицательный номер кадра, Тасэдитор проигнорирует этот запрос.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указан номер кадра за пределами Ввода мувика, Тасэдитор расширит границы мувика во время </span><spanclass="rvts21">applyinputchanges()</span><spanclass="rvts22"> до указанного кадра.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<pclass="rvps10"><spanclass="rvts22">Отправляет запрос Тасэдитору, требуя удалить из мувика указанное количество кадров, начиная с указанного кадра.</span></p>
<pclass="rvps10"><spanclass="rvts22">Сам Ввод мувика будет изменён только после вызова </span><spanclass="rvts21">taseditor.applyinputchanges()</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Удаление кадров сдвигает вверх часть старого Ввода, а также сдвигает вверх часть Маркеров (если установлена галочка "</span><aclass="rvts28"href="ProgramCustomization.html#BindMarkerstoInput">Bind Markers to Input</a><spanclass="rvts22">").</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указанное количество кадров для удаления меньше или равно нулю, Тасэдитор проигнорирует этот запрос.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указан отрицательный номер кадра, Тасэдитор проигнорирует этот запрос.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если указан номер кадра за пределами Ввода мувика, Тасэдитор расширит границы мувика во время </span><spanclass="rvts21">applyinputchanges()</span><spanclass="rvts22"> до указанного кадра.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<pclass="rvps10"><spanclass="rvts22">Моментально применяет список накопившихся запросов к текущему мувику. Если эти запросы действительно внесли какие-то изменения во Ввод мувика, в Журнале Истории появится новый пункт (чтобы пользователь мог откатить эти изменения), как следствие, Гринзона может быть усечена, Курсор Проигрывателя может отступить назад и запустить автоматическое добегание.</span></p>
<pclass="rvps10"><spanclass="rvts22">Возвращает номер кадра, на котором были обнаружен первый факт изменения Ввода.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если изменений не обнаружено (например, вы запросили Тасэдитор установить нажатия для кнопок, которые и так уже нажаты), возвращает -1.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если список запросов был пуст, возвращает -1.</span></p>
<pclass="rvps10"><spanclass="rvts22">Вы можете указать имя, которое будет присвоено найденным изменениям Ввода. Это имя отразится в Журнале Истории. Если вы не указываете имя, Тасэдитор использует имя по умолчанию ("Change").</span></p>
<pclass="rvps10"><spanclass="rvts22">После применения всех запросов Тасэдитор очищает список запросов.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<pclass="rvps10"><spanclass="rvts22">Очищает список накопившихся запросов, позволяя отменить их до вызова </span><spanclass="rvts21">applyinputchanges()</span><spanclass="rvts22">.</span></p>
<pclass="rvps10"><spanclass="rvts22">Рекомендуется вызывать эту функцию перед формированием нового списка запросов, чтобы быть уверенным, что в список не попадут какие-нибудь старые запросы.</span></p>
<pclass="rvps10"><spanclass="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<pclass="rvps8"><spanclass="rvts18">Created with the Personal Edition of HelpNDoc: </span><aclass="rvts19"href="http://www.helpndoc.com">Full-featured Documentation generator</a></p>