JNGP: Rebuild от PT153

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

Изменения

  • Исправлены некоторые ошибки в UMSWE.
  • Обновлён pjass.exe до версии от 20.02.2021.
  • Обновлён TESH до версии 0.9.3. Внимание: обновление убирает поддержку подсветки cJass.
  • Добавлены interfaces.w3x, slkdemo.w3x и slkdemo.slk. Находятся в папке jasshelper/demos.
  • Добавлены скриптовые .j файлы. Находятся в папке jasshelper.
  • Обновлены jasshelper.conf в корневой папке JNGP и в папке jasshelper.
  • Отредактирован settings.reg.
  • Добавлен GrimexManual.html. Находится в папке grimext.
  • Добавлены "Clean game path.reg" и "Remove Tool Windows entry.reg". Находятся в корневой папке JNGP.
» подробнее
» UMSWE
Создание уберсплата перенесено в категорию Ubersplat.
Старт таймера с функцией перенесён в категорию Countdown Timer.
Применены исправления WorldEditStrings.txt из моего англофикатора.
» 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. Обязательно почитайте.
Clean game path.reg - примените для сброса выбранной директории игры.
Remove Tool Windows entry.reg - примените, чтобы можно было вновь запустить WE Classic и JNGP после запуска WE Reforged.

Установка

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

Обновления

» 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 из моего англофикатора.


Views: 925

» Лучшие комментарии


build #1 - 3 months ago (изм. ) 0
Голосов: +0 / -0
Без претензий, просто хочу лучше понимать: почему не шарпкрафт, он же более новые версии поддерживал?
PT153 #2 - 3 months ago 6
Голосов: +6 / -0
build, я практически не использовал его. Сейчас в нём нет большого смысла, так как есть реф. А в этой сборке смысл всё ещё есть, многие продолжают сидеть на 1.26. Это сборку я уже давно делал, просто не выкладывал на сайте.
mistwood #4 - 3 months ago 1
Голосов: +1 / -0
А скажи чем он лучше обычного JNGP, для простых юзеров?
NaxefirYT #5 - 3 months ago 0
Голосов: +0 / -0
mistwood:
А скажи чем он лучше обычного JNGP, для простых юзеров?
Да тут толком ничего не изменено от обычного JNGP, пара незначительных изменений.
PT153 #6 - 3 months ago 1
Голосов: +1 / -0
mistwood, в посте написано, что изменено. Если эти изменения вам ни о чём не говорят, то можете дальше использовать оригинальный Rebuild.

Я добавлю более подробное описание.
Если вкратце: новый pjass не сообщенает некоторые неошибки, которые сообщал старый. И наоборот сообщается те ошибки, которые всегда ведут к крашу, а старый pjass их не сообщал.
Новый TESH имеет лучший функционал: можно добавлять свои функции и шаблоны.
Остальное мелочи. Добавил мануал, демки и прочее.
JackFastGame #7 - 3 months ago 0
Голосов: +0 / -0
PT153:
Если вкратце: новый pjass не сообщенает некоторые неошибки, которые сообщал старый. И наоборот сообщается те ошибки, которые всегда ведут к крашу, а старый pjass их не сообщал.
Новый pjass с мемхаком дружит?
Новый TESH имеет лучший функционал: можно добавлять свои функции и шаблоны.
А вот это уже интересно. Свои функции надо вручную добавлять или он сам ловит их сигнатуры в коде карты?
PT153 #8 - 3 months ago 0
Голосов: +0 / -0
Новый pjass с мемхаком дружит?
В целом да, DracoL1ch сам порой просил некоторые исправления делать. Также там есть спец флаги, которые позволяют добавить обработку некоторых случаев или наоборот, убрать. Вот мануал со всеми флагами.

Свои функции надо вручную добавлять или он сам ловит их сигнатуры в коде карты?
Вручную.
PT153 #9 - 3 months ago 0
Голосов: +0 / -0
Добавил подробное описание изменений.
Vlod #10 - 3 months ago (изм. ) 1
Голосов: +1 / -0
обновление убирает поддержку подсветки cJass
Это еще зачем
PT153 #11 - 3 months ago (изм. ) 0
Голосов: +0 / -0
Затем, что не все используют cJass, а только vJass, как я. Специально добавил:
Это сборка оптимизирована для vJass
Vlod #12 - 3 months ago (изм. ) 2
Голосов: +2 / -0
Понятно, но в современных языках никто не пишет set перед присвоением и local при объявлении. Вроде недавно говорилось, что существуют всего две основные версии игры, так зачем убирать поддержку столь удобных фишек. Ладно бы если они конфликтовали с vjass, но они могут поддерживаться вместе, разве не так?
PT153 #13 - 3 months ago (изм. ) 0
Голосов: +0 / -0
Могут, но там есть нюансы. Как минимум часть вещей нужно будет писать на понятном для vJass синтаксисе. Если при этом использовать синтаксис cJass, появляется проблема читаемости.

Я никогда не использовал cJass из-за каких-то проблем с ним (AdicHelper зависал из-за какой-то ерунды). Автор TESH 2.0 не добавлял поддержку cJass, потому что никто не просил, и вряд ли будет - cJass сейчас юзает несколько человек. А мне важнее настройка подсветки и добавление своих функций, чем cJass, которым я не пользуюсь.

Тут всё ещё можно использовать cJass, просто, как и написал, адекватной подсветки не будет.
Vlod #14 - 3 months ago 2
Голосов: +2 / -0
Просто в старом jnpg есть поддержка синтаксиса vjass+cjass + include user func в папку с tesh
Понятно, жалко
PT153 #15 - 3 months ago (изм. ) 0
Голосов: +0 / -0
Vlod, на самом деле cJass мало чем отличается от ZINC по синтаксису (только дурацким void). TESH не поддерживает ZINC, но автор может добавить поддержку (ровно как и поддержку Lua).
Clamp #16 - 3 months ago 3
Голосов: +3 / -0
cJass мало чем отличается от ZINC по синтаксису
В нём есть #define, это киллер-фича cJass по сути
GetLocalPlayer #18 - 3 months ago 4
Голосов: +4 / -0
В нём есть #define, это киллер-фича cJass по сути
Это обоюдоострый меч, но где "обоюдоострый" подразумевает второй клинок вместо рукояти.
Кет #19 - 3 months ago 1
Голосов: +1 / -0
GetLocalPlayer, а чем плохи макросы?
GetLocalPlayer #20 - 3 months ago 0
Голосов: +0 / -0
Кет:
GetLocalPlayer, а чем плохи макросы?
В рамках констант особо ничем, окромя засорения пространства имен. Вce выше этого тянет за собой сложности отладки и непредсказуемое поведение кода. Простой пример:
nothing Test()
{
    integer a = 2
    integer b = 3
    a = square(a++)
    b = square(++b)
    BJDebugMsg(I2S(a))
    BJDebugMsg(I2S(b))
}
Что будет выведено на экран, если square, это функция и что, если это макрос? А в процессе работы, тебе известно что это функция или макрос? Будешь ли ты в состоянии держать в уме, что это макрос, если у тебя десятки тысяч строк кода? А когда ты будешь волосы на голове рвать, не понимая что происходит в больших системах с кучей взаимосвязей?
За большим количеством примеров можно обратится к гуглу.
PT153 #21 - 3 months ago 0
Голосов: +0 / -0
Clamp, так и есть.
Clamp #22 - 3 months ago 3
Голосов: +3 / -0
GetLocalPlayer, у дефайнов есть возможность определять области видимости, и корректное использованные дефайны являются невероятно мощным инструментом для решения многих задач, например, реализации дженериков.
GetLocalPlayer #23 - 3 months ago 3
Голосов: +3 / -0
дефайны являются невероятно мощным инструментом для решения многих задач
Невероятно мощным инструментам полагается иметь свой синтаксис и семантику. Например, к месту упомянутые дженерики или аннотации. В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
Clamp #24 - 3 months ago 0
Голосов: +0 / -0
В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
"этим не пользуюсь я - это бесполезно всем"
Doc #25 - 3 months ago (изм. ) 0
Голосов: +0 / -0
Clamp:
В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
"этим не пользуюсь я - это бесполезно всем"
Не надо утрировать. Текстовый препроцессинг откровенно устаревшая фича, которая заменяется адекватными гигиеническими макросами и строго определенной внутри основного языка семантикой метапрограммирования в целом.
Насчет отсутствия отличий с Zinc - бред, помимо упомянутых макросов есть вещи типа flushlocals и foreach по группам (через генерацию FirstInGroup), а также нет клоунского ограничения на объявление переменных в начале функции.
PT153 #26 - 3 months ago (изм. ) 1
Голосов: +1 / -0
foreach по группам
В мануале этого нет.
flushlocals
также нет клоунского ограничения на объявление переменных в начале функции
Это не имеет никакого отношения в синтаксису.
В cJass есть whilenot, do - whilenot и препроцессорные штуки include, define и enum и прочие препроцессорные директивы, инкремент и декремент. У ZINC препроцессор такой же, как и у vJass, есть циклы for и while. Также отличается определение функций. На этом синтаксические отличия заканчиваются. В обоих одинаковые логические операторы, не нужно писать local, set и call, блоки определяются скобками. Тем самым бóльшая часть кода будет идентична с точки зрения подсветки и автодополнения.
И очень классно ты переделал вот это.
на самом деле cJass мало чем отличается от ZINC по синтаксису
В это.
Насчет отсутствия отличий с Zinc - бред
Никто не писал, что отличий вовсе нет.
Это сообщение удалено
PT153 #28 - 2 months ago 0
Голосов: +0 / -0
Перенесли из блога в проект WarCraft 3.
N7 Molot #29 - 2 months ago 0
Голосов: +0 / -0
а файл где сам? если можно ссылку
PT153 #31 - 2 months ago 0
Голосов: +0 / -0
N7 Molot, он же был там.
N7 Molot #32 - 2 months ago 0
Голосов: +0 / -0
PT153:
пользователи писали что не было файла, да и вчера я тоже самое заметил.
PT153 #33 - 2 months ago 0
Голосов: +0 / -0
N7 Molot, а куда они писали? В фидбек сайту?
PT153 #34 - 2 months ago 0
Голосов: +0 / -0
Бтв, готовлю небольшой апдейт, исправлю неточности.
N7 Molot #35 - 2 months ago 0
Голосов: +0 / -0
PT153:
N7 Molot, а куда они писали? В фидбек сайту?
да
PT153 #36 - 1 week ago 2
Голосов: +2 / -0
Ну что же, апдейт готов, все подробности в посте.
N7 Molot #37 - 1 week ago 0
Голосов: +0 / -0
PT153:
Распект. Как раз в тиме обсуждали проблему открывания WE после рефоговского