Advertisement
YaLTeR

LuaScripting/RU

Aug 10th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.99 KB | None | 0 0
  1. Lua-скрипты — это очень полезный инструмент при ТАСинге. Для их написания требуется некоторое знание программирования, но они позволяют управлять такими вещами, как отображение игры на экране, ввод и память. Lua-скрипты часто используются для:
  2. *Отображения полезной информации на экране,
  3. *Автоматизации муторных действий,
  4. *Создания специальных условий для тестирования,
  5. *Перебора всевозможных действий для нахождения решения.
  6.  
  7. Snes9x был первым эмулятором, где появилась поддержка Lua, в 2008 году. Сейчас Lua поддерживают следующие эмуляторы: FCEU(X), BizHawk, lsnes, Snes9x, Gens, VBA, Final Burn Alpha, PCSX, DeSmuME, PCEjin, VBjin и JPC-RR.
  8.  
  9. Для интеграции Lua в эмуляторе были созданы некоторые специальные функции, составляющие основу Lua API эмулятора, и предоставляющие скриптам способ управления эмулятором. Однако, этими функциями скрипты не ограничены. В скриптах можно использовать любые функции из стандартной библиотеки Lua, включая поддержку чтения и записи файлов. Так, например, в эмулятор можно добавить поддержку управления через текстовые файлы!
  10.  
  11. !! Как запустить Lua-скрипт
  12.  
  13. Чтобы запустить Lua-скрипт, скопируйте исходный код и поместите его в текстовый редактор. Сохраните текст в файл с названием {{file.lua}}, или любым другим, оканчивающимся на {{.lua}}. При сохранении в Блокноте Windows, имя файла необходимо заключить в кавычки: {{"file.lua"}}.
  14.  
  15. Теперь откройте эмулятор и запустите файл Lua. В некоторых эмуляторах есть специальное окно для Lua-скриптов; после загрузки скрипт автоматически начнёт выполнение.
  16.  
  17. !! Основы
  18.  
  19. Ознакомиться с основами Lua можно в [http://www.lua.ru/doc/|руководстве]. Здесь описаны принципы работы языка, а также основной API.
  20.  
  21. В эмуляторе часто требуется основной цикл выполнения. Он может быть двух видов (весь текст от -- и до конца строки является комментарием):
  22.  
  23. -- Здесь объявления
  24.  
  25. while true do
  26. -- Здесь выражения
  27. emu.frameadvance()
  28. end
  29.  
  30. и
  31.  
  32. -- Здесь объявления
  33.  
  34. function fn()
  35. -- Здесь выражения
  36. end
  37.  
  38. gui.register(fn)
  39.  
  40. Второй вариант технически является функцией, которая вызывается эмулятором при обновлении экрана (как правило, они происходят раз в кадр, но некоторые эмуляторы[#1] вызывают эту функцию и во время паузы). Второй вариант необходим для эмулятора DeSmuME, так как первый вариант в нём работает по-другому, чем в большинстве эмуляторов (подробности есть в [=forum/t/18798|этом топике]).
  41.  
  42. *[LuaScripting/Registers|Регистры] — запуск функций при происхождении определённых событий, таких как прохождение кадра (frame advance), сохранение/загрузка состояния и т.п.
  43. *[LuaScripting/Display|Отображение] — рисование, наблюдение за памятью и т.п.
  44. *[LuaScripting/Macros|Макросы]
  45. ** [LuaScripting/TableKeys] — управление вводом, включая автозажатие и автонажатие.
  46. *[LuaScripting/MemoryEditing|Редактирование памяти]
  47.  
  48. [TODO]
  49.  
  50. * Описать:
  51. ** joypad.set
  52. ** savestate.create, savestate.load, savestate.save
  53. ** FCEU.pause
  54. ** FCEU.speedmode
  55. ** io.write, io.output
  56.  
  57. !! Использование MHS для эмуляторов без поддержки Lua
  58.  
  59. [http://memoryhacking.com/download.php|L. Spiro's Memory Hacking Software]
  60.  
  61. * Описать:
  62. ** Обратите внимание, что значения позиций, как правило, являются типами данных с плавающей точкой.
  63.  
  64. !! Дополнительная информация
  65.  
  66. ! Ссылки на сайте
  67.  
  68. * [Bizhawk/LuaFunctions|Lua-функции в эмуляторе BizHawk]
  69. * [Lsnes/LuaFunctions|Lua-функции в эмуляторе lsnes]
  70. * Некоторые [Bisqwit/LuaFunctions|более сложные] применения Lua за авторством [Bisqwit].
  71.  
  72. ! Внешние ссылки
  73.  
  74. * [http://code.google.com/p/snes9x-rr/wiki/LuaScriptingFunctions|Lua-функции в эмуляторе Snes9x]
  75. * [http://code.google.com/p/vba-rerecording/wiki/LuaScriptingFunctions|Lua-функции в эмуляторе VBA]
  76. * [http://dehacked.2y.net/snes9x-lua/|Lua-скрипты DeHackEd]
  77.  
  78. ! Подстраницы
  79.  
  80. [module:listsubpages]
  81. ----
  82.  
  83. [1]: Известно, что такое происходит в FCEUX, PCSX и DeSmuME.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement