JNGP: Rebuild от PT153

Добавлен , опубликован
Программы
Предназначение:
Работа с файлами
Jass New Gen Pack - расширенный редактор карт для Warcraft 3.
Редактор работает с версиями только до 1.27 включительно.
Основная сборка и другие версии игры по ссылке.
Это сборка оптимизирована для vJass и включает в себя обновления pjass.exe и TESH.

Изменения

  • Язык редактора - английский (можно вернуть язык игры, подробности ниже).
  • Исправлены некоторые ошибки в UMSWE.
  • Добавлен UMSWEManual.html. Находится в папке umswe.
  • Обновлён pjass.exe до версии от 15.08.2021.
  • Обновлён TESH до версии 0.9.3 с удалением отсутствующих в версии 1.26 функций. Внимание: обновление убирает поддержку подсветки cJass.
  • Добавлены interfaces.w3x, slkdemo.w3x и slkdemo.slk. Находятся в папке jasshelper/demos.
  • Добавлены скриптовые .j файлы. Находятся в папке jasshelper.
  • Обновлены jasshelper.conf в корневой папке JNGP и в папке jasshelper.
  • Отредактирован settings.reg.
  • Добавлен GrimexManual.html. Находится в папке grimext.
  • Добавлены примеры скриптов для Grimex. Находятся в папке grimext/samples.
  • Добавлены clear-game-path.reg и remove-tool-windows-entry.reg. Находятся в корневой папке JNGP.

Подробное описание изменений

UMSWE
В архиве присутствует umswe.mpq с исправлениями. Это также означает, что JNGP с включённым UMSWE всегда будет на английском. Чтобы сделать UMSWE на языке локализации игры, удалите umswe.mpq в папке umswe, но это также уберёт применённые исправления.
Исправления:
  • Создание уберсплата перенесено в категорию Ubersplat.
  • Старт таймера с функцией перенесён в категорию Countdown Timer.
  • Применены исправления WorldEditStrings.txt из моего англофикатора.
UMSWEManual.html - руководство по UMSWE. Обязательно почитайте.
pjass
pjass.exe в оригинальной сборке может сообщить ошибки, которые не являются ошибками. И наоборот, может не сообщить об ошибке, которая приведёт к крашу игры или как минимум остановки потока выполнения. В обновлённом pjass.exe все эти недочёты исправлены. Также в код можно добавить специальные флаги, которые включают или выключают некоторые проверки. Подробности в мануле.
примеры ошибок
function Func takes nothing returns nothing
endfunction

function Main takes nothing returns nothing
    local filter f = Filter(function Func)
endfunction
Старый pjass.exe выдаст ошибку, новый - нет.
function Main takes nothing returns nothing
    local integer f
    local real r = I2R(f)
endfunction
Старый pjass.exe не выдаст ошибку, новый - выдаст.
TESH
Обновлённый TESH позволяет очень гибко настроить подсветку, а также добавить свои собственные функции и шаблоны. Некоторые подробности использования перечислены на странице XGM, посвящённой TESH. К сожалению, обновлённый TESH не поддерживает cJass.
Для TESH были установлены личные настройки. Сбросить к настройкам по умолчанию можно в настройках.
JassHelper
interfaces.w3x, slkdemo.w3x и slkdemo.slk - части мануала по vJass. Сам мануал есть в оригинальной сборке.
Скриптовые .j файлы помогут вам узнать, какие нативные и BJ функции есть в JASS в версии 1.26 и 1.32+.
jasshelper.conf - файл конфигурации JassHelper. Туда были добавлены комментарии, которые описывают некоторые флаги компиляции vJass.
Напоминаю, что JassHelper во время работы JNGP использует jasshelper.conf из корневой папки JNGP, а не из папки jasshelper.
settings.reg
Применение settings.reg делает следующее:
  • Включает локальные файлы для WarCraft 3.
  • Сбрасывает настройки редактора и устанавливает следующие:
    • Отмечает, что редактор уже был запущен.
    • Фиксирует время суток в редакторе.
    • Отключает создание новой карты при запуске.
    • Разрешает отрицательные значения и включает сортировку по имени в редакторе объектов.
    • Зануляет громкость звуков UI редактора.
    • Отключает фиксированный генератор случайных чисел во время теста карты.
    • Включает автоматическое создание переменных в редакторе триггеров.
    • Отключает описания объектов в панели инструментов (оставляет только имена).
    • Отключает список кистей (Brush List).
    • Устанавливает размеры некоторых окон, положение разделителей и ширину колонок.
  • Сбрасывает настройки JNGP и устанавливает следующие:
    • Включает UMSWE.
    • Отключает кастомное расположение категорий, Colorizer и отключение звуков WE.
      • Отключение звуков WE заменяет звуки в архивах самой игры на время работы редактора, что делает невозможным проигрывание этих звуков в редакторе звуков. Вместо этого лучше всего изменить настройки самого WE, то есть занулить звук UI, что также делает этот файл.
    • Включает JassHelper и режим дебага.
    • Полностью отключает cJass и ScExp.
Это не исчерпывающий список, подробности в самом файле.
Файлы
GrimexManual.html - это мануал по утилите Grimex, встроенной в JNGP. Обязательно почитайте.
grimext/samples - примеры скриптов для Grimex. Подробнее в его руководстве.
clear-game-path.reg - примените для сброса выбранной директории игры.
remove-tool-windows-entry.reg - примените, чтобы можно было вновь запустить WE Classic и JNGP после запуска WE Reforged.

Содержимое архива

  • Папка с JNGP.
  • Текстовый файл с описанием изменений.

Установка

  • Распаковать архив в любую удобную папку, не требующую прав администратора. Например, C:\Program Files требует права администратора. Пароль для распаковки - JNGP.
  • (Рекомендуется) После распаковки применить изменения реестра из settings.reg.
  • (Рекомендуется для Windows 8+) Запустить редактор. Необходимо будет выбрать директорию игры. После запуска закройте редактор и откройте директорию игры. Откройте свойства worldedit121.exe, перейдите во вкладку Совместимость и установите "Запустить программу в режиме совместимости с Windows 7". Нажмите "Применить" и "OK".

Обновления

v1.4
  • Добавлены примеры скриптов для Grimex.
  • Добавлены картинки для руководства Grimex.
  • Добавлено руководство UMSWE.
v1.3.2
  • Обновлены файлы "common.j ref.j" и "common.ai ref.ai".
v1.3.1
  • Файл "Clean game path.reg" переименован в "clear-game-path.reg" и обновлён.
  • Файл "Remove Tool Windows entry.reg" переименован в "remove-tool-windows-entry.reg".
v1.3
TESH:
  • Оптимизирована база данных ключевых слов.
  • Колонка вертикальной линии изменена с 160 на 120.
v1.2
pjass:
  • Обновлён до версии от 15.08.2021.
  • Удалён pjass-readme.txt, относящийся к старому pjass.exe.
  • Добавлен pjass-readme.md. Это документация нового pjass.exe.
TESH:
  • Были удалены все функции, которые не присутствуют в 1.26.
v1.1
Общее:
  • Обновлён pjass.exe до версии от 20.02.2021.
  • Исправлен common.ai. Ранее была устаревшая версия.
  • Добавлен файл "Clean game path.reg" для сброса выбранной директории игры.
  • Добавлен файл "Remove Tool Windows entry.reg" для удаления значения реестра, которое не даёт запускаться WE Classic после запуска WE Reforged.
settings.reg:
  • Исправлена кодировка.
  • Теперь применение сбрасывает ВСЕ настройки Word Editor и Grimoire к рекомендуемым.
  • Добавлена установка значения Visible UI Elements. Устанавливаемое значение закрывает все окна, кроме редактора ландшафта и панели инструментов (Tool Palette), а также отключает отображение Brush List.
  • Добавлена установка расположения разделителей и ширины колонок для многих элементов WE.
  • Добавлена установка размеров некоторых подокон.
UMSWE:
  • Создание уберсплата теперь в категории Ubersplat.
  • Старт таймера с функцией теперь в категории Countdown Timer.
  • Применены исправления WorldEditStrings.txt из моего англофикатора.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
28
3 года назад
Отредактирован PT153
0
Vlod, на самом деле cJass мало чем отличается от ZINC по синтаксису (только дурацким void). TESH не поддерживает ZINC, но автор может добавить поддержку (ровно как и поддержку Lua).
3
30
3 года назад
3
cJass мало чем отличается от ZINC по синтаксису
В нём есть #define, это киллер-фича cJass по сути
4
17
3 года назад
4
В нём есть #define, это киллер-фича cJass по сути
Это обоюдоострый меч, но где "обоюдоострый" подразумевает второй клинок вместо рукояти.
1
33
3 года назад
1
GetLocalPlayer, а чем плохи макросы?
0
17
3 года назад
0
Кет:
GetLocalPlayer, а чем плохи макросы?
В рамках констант особо ничем, окромя засорения пространства имен. Вce выше этого тянет за собой сложности отладки и непредсказуемое поведение кода. Простой пример:
nothing Test()
{
    integer a = 2
    integer b = 3
    a = square(a++)
    b = square(++b)
    BJDebugMsg(I2S(a))
    BJDebugMsg(I2S(b))
}
Что будет выведено на экран, если square, это функция и что, если это макрос? А в процессе работы, тебе известно что это функция или макрос? Будешь ли ты в состоянии держать в уме, что это макрос, если у тебя десятки тысяч строк кода? А когда ты будешь волосы на голове рвать, не понимая что происходит в больших системах с кучей взаимосвязей?
За большим количеством примеров можно обратится к гуглу.
0
28
3 года назад
0
Clamp, так и есть.
3
30
3 года назад
3
GetLocalPlayer, у дефайнов есть возможность определять области видимости, и корректное использованные дефайны являются невероятно мощным инструментом для решения многих задач, например, реализации дженериков.
3
17
3 года назад
3
дефайны являются невероятно мощным инструментом для решения многих задач
Невероятно мощным инструментам полагается иметь свой синтаксис и семантику. Например, к месту упомянутые дженерики или аннотации. В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
0
30
3 года назад
0
В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
"этим не пользуюсь я - это бесполезно всем"
0
29
3 года назад
Отредактирован Doc
0
Clamp:
В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
"этим не пользуюсь я - это бесполезно всем"
Не надо утрировать. Текстовый препроцессинг откровенно устаревшая фича, которая заменяется адекватными гигиеническими макросами и строго определенной внутри основного языка семантикой метапрограммирования в целом.
Насчет отсутствия отличий с Zinc - бред, помимо упомянутых макросов есть вещи типа flushlocals и foreach по группам (через генерацию FirstInGroup), а также нет клоунского ограничения на объявление переменных в начале функции.
1
28
3 года назад
Отредактирован PT153
1
foreach по группам
В мануале этого нет.
flushlocals
также нет клоунского ограничения на объявление переменных в начале функции
Это не имеет никакого отношения в синтаксису.
В cJass есть whilenot, do - whilenot и препроцессорные штуки include, define и enum и прочие препроцессорные директивы, инкремент и декремент. У ZINC препроцессор такой же, как и у vJass, есть циклы for и while. Также отличается определение функций. На этом синтаксические отличия заканчиваются. В обоих одинаковые логические операторы, не нужно писать local, set и call, блоки определяются скобками. Тем самым бóльшая часть кода будет идентична с точки зрения подсветки и автодополнения.
И очень классно ты переделал вот это.
на самом деле cJass мало чем отличается от ZINC по синтаксису
В это.
Насчет отсутствия отличий с Zinc - бред
Никто не писал, что отличий вовсе нет.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.