Программы
Предназначение:
Работа с файлами
Представляю свое небольшое расширение для VSCode. Добавляется единственная команда 'Warcraft 3: build map'.
Возможности:
- реализация функции require. Подключение файлов с lua кодом. Работает аналогично оригинальной функции.
- реализация функции compiletime. Данная функция позволяет исполнять lua код сразу после склеивания файлов. При использовании данной функции доступны все возможности lua. Внутри функций compiletime доступны переменные src_dir и dst_dir. Это позволяет проводить манипуляции над файлами карты внутри кода (планируется добавить библиотеки). Может возвращать число, строку или таблицу, состоящую из чисел, строк и таблиц.
Для работы расширения необходимо:
- установить расширение marketplace.visualstudio.com/items?itemName=nelloy.lua-wc3
- скачать исполняющий файл github.com/nelloy-git/lua-wc3 (.exe или .py так же можно собрать самостоятельно 'pyinstaller --onefile lua-wc3.py')
- указать путь к исполняющему файлу в настройках расширения
- для python установить зависимости (lupa, py-lua-parser)
- создать проект в VSCode, сохранить карту в виде папки в папку проекта src (по-умолчанию).
Запуск сборки производится командой 'Warcraft 3: build map'. В результате будет получена папка проекта dst (по-умолчанию), готовая к употреблению. О багах прошу сообщая сюда или в любой из гит репозиториев.
UPD: добавлена тестовая версия библиотеки для редактирования объектов WE.
Пример:
Пример:
war3map.lua
local unit_id = 'h001'
local base_id = 'hpea'
local aura_id = 'A001'
local buff_id = 'B001'
compiletime(
function ()
local objEdit = require('compiletime.objEdit.objEdit')
objEdit.init(src_dir, dst_dir)
local unit_type = objEdit.Unit.new(unit_id, base_id)
unit_type:setName('Compiletime footman')
local aura = objEdit.AuraDummy.new(aura_id, buff_id,
'Test buff', 'Some tooltip',
"ReplaceableTextures\\CommandButtons\\BTNAdvancedSpikedBarricades.blp",
'', '')
end)
function FourCC(id)
return string.unpack(">I4", id)
end
...
function Trig_Melee_Initialization_Actions()
local u1 = CreateUnit(Player(0), FourCC(base_id), 0, 0, 0)
local u2 = CreateUnit(Player(0), FourCC(base_id), 0, 0, 0)
UnitAddAbility(u1, FourCC(aura_id))
BlzSetUnitStringField(u1, UNIT_SF_NAME, 'Test')
BlzSetUnitStringField(u2, UNIT_SF_NAME, 'Test2')
end
...
compiletime(
function ()
local objEdit = require('compiletime.objEdit.objEdit')
objEdit.close()
end)
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Берги
Отредактирован Nelloy
костыльметод для объединения всех файлов в архив карты. Последний файл содержит не только создание нового юнита (2 футманов), но и внедрение нового класса "Unit" со всеми функциями (почти), доступными в Jass функциями для unit.local f = Unit.new(Player(0), id, 0, 0, 0)
f = Unit.new(Player(0), id, 0, 0, 0)
local angle = 180
f:setFacing(angle)
H, когда начинал - не было. Надо потестить
PT153, за 2 года было к vscode 1 нарекание. Баг на линуксе был, вместо переключения языка выделял главное меню и не лечилось для ctrl+alt
Отредактирован H