17 dec
2021

Warcraft III - Lua

Added by , published
Warcraft III - Lua - это mix, позволяющий creater'ам встраивать lua script'ы в свои карты. Некоторый стандартный функционал lua был ограничен в целях безопасности пользователей и игроков. В силу различий JASS и lua, некоторые нативные функции Warcraft III могут работать некорректно. Вы имеете возможность поспособствовать развитию проекта, написав об ошибках и багах.
Текущая версия: 1.2.9 (Outland)
Версия lua: 5.4.4
Поддерживаемый патч игры: 1.24e/1.26a/1.27a/1.27b/1.28f Патчи выше 1.26a нуждаются в дополнительных тестах.
Список изменений
  • 1.2.9 (Outland) - добавлена поддержка других патчей. Добавлена функция GetMapFileName(bool flag), возвращающая путь файла карты относительно папки игры, если flag равен true, и имя файла карты, если false.
  • 1.1.9 (Outland) - StormOpenFile заменен на StormOpenFileEx, чтобы исправить ошибку с поиском файлов на локальном диске, когда нам нужно открыть файл из mpq. Также был добавлен режим для require, который позволяет использовать точку в пути вместо \\ (идея от Kirill78, все жалобы к нему 😀 ).
  • 1.1.8 (Outland) - фикс бага в "dofile". Lua-функция "loadfile" теперь также переписана, как и "dofile".
  • 1.1.7 (Outland) - Lua-функция "dofile" переписана. Теперь она работает в 2-х режимах:
    1. Режим по умолчанию: файлы выполняются только из mpq архивов;
    2. Режим разработчика: файлы выполняются как из mpq архивов, так и из папки с игрой.
  • 1.1.6 (Outland) - убраны фреймы (ненадолго). Исправлены баг с произвольным вылетом, в случае использования анонимок. Добавлен автоматический парсер нативок JASS, а также типов. Добавлена типизация для нативок JASS (бережёного код бережёт), а также псевдо-наследование. Исправлен баг с некорректной передачей аргументов при вызове нативок JASS. Исправлен баг со stacktrace'ом, теперь он действительно отображается. Добавлена возможность подключения с помощью мемхака. И т.д. (я просто уже забыл часть того, что наворотил). P.s. ждём новых нативок для JASS. 😉
  • 1.1.4 (Ashenvale) - добавлены фреймы. Добавлен режим разработчика (-dev) со снятыми на lua ограничениями. Добавлен заперт на подключение к пользователям без мода и наоборот. Добавлен фикс широкоформатных экранов. Изменена карта-пример.
  • 1.1.3 (Beta) - оптимизирован код преобразования float2jReal. Исправлен вылет после попытки запуска триггера с ошибкой. Добавлен stack trace и всплывающее сообщение. Добавлено сообщение о критической ошибке, а именно отсутствие необходимого количества аргументов, при попытке вызова стандартных функций Warcraft III . Исправлена ошибка, из-за которой мог произойти десинк, так как сборщик мусора поспешно удалял значения. Исправлена ошибка с потерей аргументов во время переадресации вызова lua2jassnative.
Как и писал N1ghtSiren, вы можете добавить параметры запуска в JNGP, что позволит вам использовать скрипты из директории Warcraft III. Таким образом вы сможете работать со скриптами в отдельной среде, к примеру Visual Studio Code или Sublime Text. Приложенный им wehack.lua.
Установка
Перенести war3_lua.mix в папку с игрой.
Инструкция по эксплуатации
  1. Создать в карте (её архиве) папку Scripts. В неё перенесите blizzard.lua и common.lua. (Необязательно, позволяет использовать стандартные константы blizzard.j, common.j)
  2. Поместить ваш lua script в архив карты. Обязательно переименуйте его в war3map.lua!
  3. Наслаждайтесь игрой.
Для отображения консоли, запускайте Warcraft с параметром -console.
0
Голосов: 0
Unryze - 3 months ago
0
Голосов: 0
Портируется ли на рефордж или же придется переделывать код?
Если речь о нативках, они будут реализованы как "врапперы" и скорее всего пойдут в Blizzard.j, но работать будут так же, ибо я не горю желанием обзывать функции Blz, но их поддержку можно сделать банальным вызовом соответствующей нативки. Просто немного бы подробнее бы расписал, что именно нужно "портировать".
0
Голосов: 0
Smeto - 3 months ago
0
Голосов: 0
Портируется ли на рефордж или же придется переделывать код?
Если речь о нативках, они будут реализованы как "врапперы" и скорее всего пойдут в Blizzard.j, но работать будут так же, ибо я не горю желанием обзывать функции Blz, но их поддержку можно сделать банальным вызовом соответствующей нативки. Просто немного бы подробнее бы расписал, что именно нужно "портировать".
Согласен, непонятно выразился.
Если допустим я сейчас буду в 1.26 писать на Lua, захочу вот перенести карту в рефордж, смогу ли я уже её редактировать в рефордже с новыми функциями рефорджа(ведь были добавлены новые функции), откроется ли она у меня, а то я так полагаю тут и мемхак частично задействован в этой сборке исходя из видео, а в рефордже его убрали насколь знаю
2
Голосов: 2
Unryze - 3 months ago
Edited by
2
Голосов: 2
Портируется ли на рефордж или же придется переделывать код?
Если речь о нативках, они будут реализованы как "врапперы" и скорее всего пойдут в Blizzard.j, но работать будут так же, ибо я не горю желанием обзывать функции Blz, но их поддержку можно сделать банальным вызовом соответствующей нативки. Просто немного бы подробнее бы расписал, что именно нужно "портировать".
Согласен, непонятно выразился.
Если допустим я сейчас буду в 1.26 писать на Lua, захочу вот перенести карту в рефордж, смогу ли я уже её редактировать в рефордже с новыми функциями рефорджа(ведь были добавлены новые функции), откроется ли она у меня, а то я так полагаю тут и мемхак частично задействован в этой сборке исходя из видео, а в рефордже его убрали насколь знаю
В идеале (по-крайней мере я попытаюсь так сделать), что можно будет прямо весь ЛУА код с рефорджа перетащить на 1.26а и наоборот, я хочу добавить поддержку всех нативок. Однако, ввиду того, что я добавлю БОЛЬШЕ чем на рефордже, то перейти с нашего патча (используя новые функции) на рефордж будет уже нельзя. То есть будет +- полная ОБРАТНАЯ совместимость, но вот совместимость "вперёд" будет в руках близзардов. :D
0
Голосов: 0
Smeto - 3 months ago
0
Голосов: 0
Unryze, отличная идея у тебя на реализацию))
А что если как-нибудь отмечать нативки, которых нет в рефордже? (Другой цвет или префикс добавлять, который можно включать/отключать в настройках редактора?)
2
Голосов: 2
N1ghtSiren - 3 months ago
Edited by
2
Голосов: 2
Можно добавить параметры запуска в сам редактор жпнг (добавьте в основной пост)
Uploaded files
To leave a comment please sign in to the site.