TASVideos

Tool-assisted game movies
When human skills are just not enough

RU / Lua Scripting

This page in other languages

>> EN | English
>> DE | Deutsch
>> ES | Español


Lua-скрипты — это очень полезный инструмент при ТАСинге. Хотя для их написания требуется некоторое знание программирования, они позволяют управлять такими вещами, как отображение игры на экране, ввод и память. Lua-скрипты часто используются для:

Snes9x был первым эмулятором, где появилась поддержка Lua в 2008 году. Сейчас Lua поддерживают следующие эмуляторы: FCEU(X), BizHawk, lsnes, Snes9x, Gens, VBA, Final Burn Alpha, PCSX, DeSmuME, PCEjin, VBjin и JPC-RR.

Для интеграции Lua в эмуляторе были созданы некоторые специальные функции, составляющие основу Lua API эмулятора, и предоставляющие скриптам способ управления эмулятором. Однако, этими функциями скрипты не ограничены. В скриптах можно использовать любые функции из стандартной библиотеки Lua, включая поддержку чтения и записи файлов. Так, например, в эмулятор можно добавить поддержку управления через текстовые файлы!

Как запустить Lua-скрипт

Чтобы запустить Lua-скрипт, скопируйте исходный код и поместите его в текстовый редактор. Сохраните текст в файл с названием file.lua, или любым другим, оканчивающимся на .lua. При сохранении в Блокноте Windows, имя файла необходимо заключить в кавычки: "file.lua".

Теперь откройте эмулятор и запустите файл Lua. В некоторых эмуляторах есть специальное окно для Lua-скриптов; после загрузки скрипт автоматически начнёт выполнение.

Основы

Ознакомиться с основами Lua можно в руководстве по Lua 5.1. Там описаны принципы работы языка, а также основной API.

В эмуляторе часто требуется основной цикл выполнения. Он может быть двух видов (весь текст от -- и до конца строки является комментарием):

  -- Здесь объявления

  while true do
      -- Здесь выражения
      emu.frameadvance()
  end

и

  -- Здесь объявления
  function fn()
      -- Здесь выражения
  end
  gui.register(fn)
Второй вариант технически является функцией, которая вызывается эмулятором при обновлении экрана (как правило, они происходят раз в кадр, но некоторые эмуляторы[1] вызывают эту функцию и во время паузы). Второй вариант необходим для эмулятора DeSmuME, так как первый вариант в нём работает иначе, чем в большинстве эмуляторов (подробности есть в этом топике).

TODO

  • Требуется описать:
    • joypad.set
    • savestate.create, savestate.load, savestate.save
    • FCEU.pause
    • FCEU.speedmode
    • io.write, io.output

Использование MHS для эмуляторов без поддержки Lua

L. Spiro's Memory Hacking Software

  • Требуется описать:
    • Упомянуть, что значения позиций, как правило, являются типами данных с плавающей точкой.

Дополнительная информация

Ссылки на сайте

Внешние ссылки

Подстраницы


[1]: Известно, что такое происходит в FCEUX, PCSX и DeSmuME.



Combined RSS Feed
RU/LuaScripting last edited by feos on 2017-09-18 17:11:04
Page info and history | Latest diff | List referrers | View Source