Добавлен , опубликован
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.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
приложить и бэкапы из оригинального варкрафта
Из всех патчей между 1.26 и 1.28? Пахнет переусложнением.
23
nazarpunk, разве оригинальные war3patch.mpq из этих патчей чем то отличаются? Если да, тогда не стоит переусложнять, действительно.
30
разве оригинальные war3patch.mpq из этих патчей чем то отличаются? Если да, тогда не стоит переусложнять, действительно.
Интересно, а куда изменения в патче вносятся?
23
nazarpunk, в exeшник, по идее. Или нет? Ну и в mpq добавляются другие slk, модели, текстуры итд. Но последнее неважно, оно с любым exe
запустится.
20
Unryze, Мне mix не нужен) собственно потому про mpq я вопрос и задавал.
Согласен, что лаунчеры удобно, особенно, если с ними можно совмещать модули.
Ну первым делом сам мод, а потом уже думать над подключениями. Ещё нужно будет смотреть, как будет на всё это реагировать собственно аудитория.
Изменять стандартный MPQ, который хранит элементы баланса - явно не лучше затея. И ещё раз, mix может хранить в себе MPQ, что позволит перезаписать (если установить приоритет выше) стандартные файлы.
Изменения в .exe дают от 0 до 0 разницы, вся логика внутри game.dll и на неё влиять через MPQ нельзя. Все изменения, что возможны из MPQ это "замена файлов", а точнее перекрытие файлом с приоритетом выше.
23
Unryze, Элементы баланса, если речь идёт о юнитах/абилках/обьектах, хранятся в slk. Естественно, я их не трогал, просто добавил туда собственные (в смысле строки в таблицы, а не сами таблицы).
Что ж, если логика в game dll, тогда и бэкап mpq можно смело ставить от 1.28ого, и он переварится 1.26ым)
Что касается мелких патчей, то размещение файлов прямо в папках в папке игры имеет приоритет ещё выше, чем mpq. Проверено, у меня так работает изменённая UnitAskSounds.slk. Соответственно, их можно туда на время и пихать, потом удалять.
20
Unryze, Элементы баланса, если речь идёт о юнитах/абилках/обьектах, хранятся в slk. Естественно, я их не трогал, просто добавил туда собственные (в смысле строки в таблицы, а не сами таблицы).
Если этот MPQ закинут на другой патч, то баланс будет с того "патча" на котором ты собирал war3patch.mpq я думал это было наглядно...
Что ж, если логика в game dll, тогда и бэкап mpq можно смело ставить от 1.28ого, и он переварится 1.26ым)
По поводу этого пояснил выше.
Что касается мелких патчей, то размещение файлов прямо в папках в папке игры имеет приоритет ещё выше, чем mpq. Проверено, у меня так работает изменённая UnitAskSounds.slk. Соответственно, их можно туда на время и пихать, потом удалять.
Локальные файлы не у всех включены, да и неудобные они, в общем ладно, делай так как тебе кажется правильным, тебе дали советы/пояснили что и как работает, дальше на своё усмотрение. :)
23
Unryze, Всё это мне известно) поэтому буду рассматривать, какие ещё версии кроме 1.26 добавить в мод и бэкапы)
Спасибо)
честно говоря, сомневаюсь, а стоит ли вообще делать версии мода под другие версии, кроме 1.26. Всё равно у большинства стоит 1.26...
20
Unryze, Всё это мне известно) поэтому буду рассматривать, какие ещё версии кроме 1.26 добавить в мод и бэкапы)
Спасибо)
честно говоря, сомневаюсь, а стоит ли вообще делать версии мода под другие версии, кроме 1.26. Всё равно у большинства стоит 1.26...
Ну, я хоть и фанат 1.26а, но аудитория есть и на других патчах, тут дело личное, париться ради сомнительного притока людей или таки спокойно жить на 1.26а и не напрягать булки (в целом, если бы не шекели, я бы ВФЕ тоже только на 1.26а оставил и сэкономил бы тьму времени).
23
Unryze, Имхо, булки перенапрягать совсем неохота :)
6
А как в карте создать папку Scripts если карта не папка.
И где взять blizzard.lua и common.lua?
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.