Добавлен , опубликован
Warcraft III - Lua - это модификация, позволяющая встраивать lua script'ы в свои карты. Некоторый стандартный функционал lua был ограничен в целях безопасности пользователей и игроков. В силу различий JASS и lua, некоторые нативные функции Warcraft III могут работать некорректно. Вы имеете возможность поспособствовать развитию проекта, написав об ошибках и багах.

Текущая версия: 1.3.7 (Blight)
Версия lua: 5.4.4
Поддерживаемый патч игры: 1.24e/1.26a/1.27a/1.27b/1.28f Патчи выше 1.26a нуждаются в дополнительных тестах.
Список изменений
  • 1.3.7 (Brlight) - исправлен баг с постоянной утечкой памяти lua потоков из-за особенности самого lua (спасибо за наводку, nazarpunk), добавлен префикс к lua ошибкам в случае запуска игры через UjAPI.
  • 1.3.6 (Brlight) - нативные функции могут использоваться из handle'ов, сами же handle'ы реализованы в виде таблицы (спасибо, Kokomi), что позволяет производить обращения по типу:
Player(0):CreateUnit(FourCC('Hpal'), 0, 0, 0):KillUnit()
-- Вместо
KillUnit(CreateUnit(Player(0), FourCC('Hpal'), 0, 0, 0))
  • 1.3.5 (Brlight) - добавлена поддержка UjAPI и всех jass native'ок, которые он с собой приносит. Добавлена возможность чтения JASS переменных, вплоть до переменных, объявленных в карте. Исправлен баг с остановкой триггера/таймера, в котором была допущена ошибка, теперь игра не вылетает. Сделан корректный конвертер float значений в jReal. Исправлен баг с пропажей аргументов. Исправлена утечка памяти, вызванная в случае использования анонимок при регистрации триггеров, таймеров и т.д. Изменён формат вывода оповещений. Добавлена возможность выводить цветной текст в консоль, посредством использования цветового кода как в самой игре. Теперь вместо любого типа, являющегося handle'ом (unit, location, widget...), может использоваться непосредственно тип handle, который возвращается во время обращения к JASS переменным. В случае такого использования, вам будет выводиться уведомление о преобразовании, при условии, что вы находитесь в dev режиме. При необходимости, вы можете отключить эти уведомления, прописав параметр -nowarnings. Чтобы использовать мод как модуль к UjAPI, разместите его по пути "UjAPI\UjAPIFiles\Modules". Если же вы хотите обойтись без UjAPI, вы можете сменить расширение с dll на mix и поместить мод в папку с игрой, однако вы не сможете использовать новые функции UjAPI без его непосредственного участия.
...
  • 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.
Установка
Чтобы использовать мод как модуль к UjAPI, разместите его по пути "UjAPI\UjAPIFiles\Modules". Если же вы хотите обойтись без UjAPI, вы можете сменить расширение с dll на mix и поместить мод в папку с игрой, однако вы не сможете использовать новые функции UjAPI без его непосредственного участия.
Инструкция по эксплуатации
  1. Создать в карте (её архиве) папку Scripts. В неё перенесите blizzard.lua и common.lua. (Необязательно, позволяет использовать стандартные константы blizzard.j, common.j)
  2. Поместить ваш lua script в архив карты. Обязательно переименуйте его в war3map.lua!
  3. Наслаждайтесь игрой.
Для отображения консоли, запускайте Warcraft с параметром -console.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
4
17
2 года назад
Отредактирован N1ghtSiren
4
Можно добавить параметры запуска в сам редактор жпнг (добавьте в основной пост)
Загруженные файлы
0
18
1 год назад
0
Ещё один вопрос к автору:
Будет ли Ваш мод работать, например, в случае, если карта (ы) находятся внутри mpq (к примеру war3patch.mpq)? Можно ли написать общий код к своему моду и засунуть его в blizzard.lua, чтобы он запускался по умолчанию на всех картах?
Плюс в Вашем моде, наверно, идёт какая то внешняя библиотека, или другие файлы, как их засунуть в mpq, чтобы они работали?
Цель такая: итоговые установочные файлы моего мода со встроенным Вашим модом должны состоять из 1 mpq, с контентом/кодом/slk/картами внутри, комплекта карт в папку Maps, и одной внешней slk, и ничего более.
Вкратце - возможно ли встроить мод в мод?
1
20
1 год назад
1
EugeAl, в теории war3lua можно как mix запаковать. А так не тестировали ничего из предложенного
0
29
1 год назад
0
EugeAl, почему такая фиксация на одном файле для мода?

И почему не использовать микс?
0
18
1 год назад
Отредактирован EugeAl
0
nazarpunk, простота и быстрота установки; меньше претензий от игроков по причине "не работает!" - а потом выясняется, что игрок забыл докинуть/распаковать какой либо файл; сжатие; возможность простого подключения Ujapi и Render Edge "из коробки", без дополнительных файлов, чтобы только exe закинул и всё.
В идеале - лаунчер-установщик с галочками "установить мод", "добавить ujapi" , "добавить render edge", "совместить с JNGP" , но это уже для меня слишком тяжело, ибо не могу в ЯП типа С и т. д.
Зачем микс, если mpq есть?)
0
20
1 год назад
0
EugeAl, Запускать UJApi через лаунчер это обязательное условие. Иначе нативок не будет
0
29
1 год назад
0
EugeAl, Что это за Звезда Смерти планируется с кучей опций?
Зачем микс, если mpq есть?)
Микс удобней и его всегда можно удалить не повредив оригинальному варкрафту.
0
18
1 год назад
0
Kokomi, Да, мне это известно.
nazarpunk, Почему сразу так то? Просто мод-патч, меняющий одну игру на другую, с поддержкой кастомок из оригинального варкрафта, луа и новых нативок для картоделов, и с улучшенной графикой, опционально, для тех, у кого комп мощный (чтобы с render edge не выдавал 10 fps с моделями того качества, что в моих паках, ведь в моде они и будут, естественно). может быть слишком амбициозно, но тем не менее не фантастично )
1
20
1 год назад
1
Kokomi, Да, мне это известно.
nazarpunk, Почему сразу так то? Просто мод-патч, меняющий одну игру на другую, с поддержкой кастомок из оригинального варкрафта, луа и новых нативок для картоделов, и с улучшенной графикой, опционально, для тех, у кого комп мощный (чтобы с render edge не выдавал 10 fps с моделями того качества, что в моих паках, ведь в моде они и будут, естественно). может быть слишком амбициозно, но тем не менее не фантастично )
Слишком много пытаться пихать в игру "из коробки" рано или поздно начнёт вызывать коллизии адресов/функционала, UjAPI через .mix тоже никогда не будет. Лаунчеры удобнее тем (в будущем, когда мои руки дойдут до расширения UjAPI) - это сделать управление включение/выключение тех или иных модулей.
В общем, для начала определись, что именно хочешь сделать и для чего, а там уже виднее будет, что для достижения этого понадобится.
0
18
1 год назад
0
Unryze, Мне mix не нужен) собственно потому про mpq я вопрос и задавал.
Согласен, что лаунчеры удобно, особенно, если с ними можно совмещать модули.
Ну первым делом сам мод, а потом уже думать над подключениями. Ещё нужно будет смотреть, как будет на всё это реагировать собственно аудитория.
0
29
1 год назад
0
Ещё нужно будет смотреть, как будет на всё это реагировать собственно аудитория.
Плохо она будет реагировать. Ибо никаких манипуляций сложнее запуска карты из игры предпринимать никто не хотит.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.