Luacraft - набор Typesctipt деклараций, содержащий все объявления наивных функций. На данный момент в NPM репозитории содержится пакет для версии 1.26 (Warcraft III - Lua), содержащий в себе все наивные функции для версии 1.26. Дополнительно определены нативные функции из UjAPI.

Настройка Typescript To Lua

Предполагается, что у вас есть базовые знания по использованию пакетного менеджера и вы можете инициализировать npm проект.
  1. Скачиваем зависимости
Выполните команду npm install -D typescript-to-lua typescript
  1. Добавьте скрипты в package.json
В JSON файл добавьте скрипты для сборки и наблюдения за изменениями:
  "scripts": {
    "build": "tstl",
    "dev": "tstl --watch"
  }
Пример package.json
{
  "name": "irina-bot-data",
  "version": "1.0.0",
  "description": "",
  "main": "./dist/index",
  "types": "./dist/index",
  "scripts": {
    "build": "tstl",
    "dev": "tstl --watch"
  },
  "files": [
    "dist/**/*.lua",
    "dist/**/*.d.ts"
  ],
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "lua-types": "^2.13.0",
    "typescript": "^4.8.4",
    "luacraft-1.26": "^1.0.5",
    "typescript-to-lua": "^1.10.1"
  }
}
  1. Создайте в корне проекта файл tsconfig.json. Заполните его
Пример файла
{
  "compilerOptions": {
    "target": "esnext",
    "lib": ["esnext"],
    "moduleResolution": "node",
    "strict": true,
    "rootDir": "./src",
    "outDir": "./dist",
    "module": "CommonJS"
  },
  "tstl": {
    "luaTarget": "5.3",
  },
  "strictFunctionTypes": true
}
Вы можете изменить входной и выходной каталог, указав их в rootDir и outDir соответственно.

Подключение luacarft к проекту

  1. Устанавливаем пакет luacraft-1.26
Выполняем команду npm install -D luacraft-1.26.
  1. Подключаем декларацию типов к typescript проекту
Для этого в файле tsconfig.json добавляем путь к типам. Декларации разложены по категориям: типы, функции, константы. Вы можете подключить сразу все указав luacraft-1.26/all, либо любые другие, которые необходимы вам. Изучить можно тут: github.com/kirill-782/luacraft-1.26/tree/master/types. Должно получиться что-то на подобии этого:
{
  "compilerOptions": {
    "types": ["luacraft-1.26/all"]
  }
}
Готово. Теперь автокомплит будет подсказывать вам константы, функции. Так же будет контролироваться соблюдение типов. Рекомендуем включить строгий режим для функций объявив в tsconfig.json следующее значение:
"strictFunctionTypes": true

Сборка проекта

Выполните в корне проекта в терминале команду npm run build. Если в коде отсутствуют ошибки - в выходном каталоге появятся LUA файлы, которые можно подключать к карте Warcraft III. Обратите внимание, что Warcraft III ищет файл war3map.lua в корне карты. Его нужно создать самостоятельно и в нем подключить нужные файлы.. Скопируйте файлы в w3x архив карты.
Пример проекта сделаю позже. Возможно, позже сделаю пример по сборке в бандл.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
29
1 год назад
0
Потом можно будет писать код на классах
Зачем? Это же будет гигансткая обёртка, которая будет предоставлять посредственный функционал.
0
20
1 год назад
0
nazarpunk, пишу для себя, мне так удобнее
0
19
1 год назад
0
Kokomi, таки ты это же уже сделал. :D
0
20
1 год назад
0
Ev3nt, Я сделал ну максимум 10% от того, что нужно. Самые востребованные мне обертки еще не готовы (виджет, предмет), да и реализация событий юнита требует доработок
0
37
1 год назад
0
Получится ещё один вурст скрипт
0
20
1 год назад
0
ScorpioT1000, о, и правда велосипед делаю
0
27
1 год назад
Отредактирован MpW
0
Kokomi, ой сорри. Сначала не понял. Тут оказывается для удобства, ошибки выводит сразу. Хотя это круто. Но мне редко доставляли ошибки, хотя признаюсь, что бывало, что не ту переменную или тип, потом полчаса возишься. Я тут подумал как вы запускаете в мемхаке луа.. я еще не пробовал на древнем 1 26 патче. Не люблю ваши build run как я ненавижу checkpack. Эту штуку придется настраивать. Нужны пошаговые инструкции для нубов
0
29
1 год назад
0
Так же будет контролироваться соблюдение типов.
Только код не исполняется и посему не все типы одинаково полезны.
Загруженные файлы
0
19
1 год назад
0
МрачныйВорон, UjAPI добавляет новые нативки в игру (в том числе функции из мемхака), war3_lua их парчи и добавляет к себе. Kokomi вручную переписывает их объявление в tstl. :D
0
20
1 год назад
0
Ev3nt, вот не надо тут. Я руками только утилиты декларировал. И не надо путать декларации и мой фетиш на ООП
0
19
1 год назад
0
Kokomi, предлагаю создать ООП-тян, чтобы Kokomi полностью удовлетворился.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.