|
"Косинус угла альфа плюс бета равен косинус альфа умножить на косинус бета минус синус альфа на синус бета... Ах, музыка для моих ушей". Информация ниже изобилует техническими терминами из информатики и программирования. Вас предупредили. |
- Lua (лу́а, с порт. — «луна») — скриптовый язык программирования, разработанный в подразделении Tecgraf (Computer Graphics Technology Group) Католического университета Рио-де-Жанейро (Бразилия). Интерпретатор языка является свободно распространяемым, с открытыми исходными текстами на языке Си.[1]
В данной статье будут даны области применения языка Lua в League of Legends Вики. Для более подробного изучения языка и его синтаксиса читайте следующие статьи:
- Официальное руководство по фреймворку Scribunto (на англ. языке)
- Статья о Lua в Викии Вики
- Lua reference manual
Введение[]
Язык Lua стал вводиться в русскоязычном сегменте League of Legends Wiki с февраля 2019 года, когда был добавлен и частично локализован первый модуль Модуль:SkinData и хранилище SkinData/data, предназначенный для демонстрации образов чемпионов. Достаточно долгое время он был единственным скриптом, периодически обновлявшимся при выходе новых чемпионов и образов. В дальнейшем развитие получили скрипты для перекрашивания текста. Первым независимым модулем стал Модуль:Stats icon, заменивший сложный код шаблона Statistic icon.
Лавинообразное увеличение роли Lua показе информации об игре произошло зимой 2020 г., когда были созданы Модуль:ChampionData и первый полностью самостоятельный проект Модуль:ItemData, которые переняли сведения о чемпионах и предметах LoL из Data-шаблонов.
Основной задачей при внедрении Lua было уменьшить единовременное число правок при выходе обновлений, а также упрощение получения доступа к различным данным о конкретном чемпионе или предмете. Также стоит отметить, что внешне Lua гораздо ближе к традиционным языкам программирования, чем функции парсера, хотя и не предоставляет практически никакого функционала, который не давали бы вторые (в этом основное отличие от используемого в проектах JavaScript, чьи функции могут быть опасны и посему должны быть обязательно отправляться на проверку перед выпуском в проекте).
Структура Lua на сайте[]
В целом все существующие Lua скрипты можно разделить на два вида по области применения: утилиты и хранилища. Утилиты содержат полезные функции, которые слишком сложно записывать при помощи функций парсера: перекрашивание текста по ключевым словам, вывод иконок и др.
Основные используемые скрипты-утилиты:
- Модуль:Feature - Общая библиотека стандартных программистских функций, например, сортировка массива, тернарный оператор, проверка на nil и прочее.
- Модуль:Filename - библиотека для вызова названий файлов
- Модуль:ImageLink - библиотека для вызова любых иконок игровых объектов.
- Модуль:Color - библиотека для перекрашивания текста по ключевым словам (используется в шаблоне {{As}})
- Модуль:Stats icon - библиотека для вызова иконок характеристик (используется в шаблоне {{Sti}})
- Модуль:RusLocalization - библиотека со специфическими функциями локализации
Модули-хранилища используются как базы данных об определенном классе игровых объектов: чемпионах, их образах, предметах, рассказах. Они состоят из 2 компонентов:
- Таблица игровых объектов - просто огромный массив Lua, в котором перечисляются все однотипные объекты:
- Модуль:ChampionData/data - чемпионы
- Модуль:ItemData/data - предметы
- Модуль:UniverseData/data - объекты лора игры (регионы, рассказы, комиксы, сюжетные видеоролики)
- Модуль:UniverseData/skinlines - линейки образов
- Модуль:TFTUnitData/data - чемпионы TFT
- Модуль:TFTTraitData/data - чемпионы TFT
- Модуль:LoRData/data - карты LoR
- Модуль:RusLocalization/LittleLegends/data - Маленькие легенды
- Модуль с функциями, которые обеспечивают вывод хранимой информации в удобном виде, имитируя работу шаблонов.
(Для упрощения доступа также у некоторых хранилищ есть геттер (например, Модуль:ItemData/getter), с помощью которого можно получать конкретные поля объектов.
Вызов[]
Вызов многих модулей вставлен в шаблоны, чтобы упростить использование или избежать неверного указания параметров. У модулей практически нет "защиты от дурака" и при любой ошибке работа модуля будет приостановлена.
Основной код для вызова:
{{#invoke:''Название модуля''|Название функции}}
- Пример
{{#invoke:ChampionData|getChampionTable}}
Примечания[]
Правила | Общие правила · Загрузка файлов · Нейтральность · Лицензирование · Статьи-заготовки · Категоризация · Запрещённые материалы · Вандализм · Деструктивное поведение · Удаление статей · Имена участников · Личные страницы |
---|---|
Рекомендации | Общие наставления · Шаблоны · Lua · Статьи о чемпионах (Новый чемпион · Новый образ · Категоризация · Умения · Фразы) · Статьи о предмете · Статьи о руне · Статьи о лоре · Статьи о TFT · Статьи о LoR (Фразы) · Статьи о WR · Работа в исходном коде · FAQ |
Прочее | Список задач (LoL · TFT · LoR · Вселенная · Аркейн) · Команда Вики |