JNGP: Rebuild от PT153

Published
Published from За огненной стеной » JNGP: Rebuild от PT153

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

Изменения

  • Обновлён pjass.exe до версии от 04.08.2020.
  • Обновлён TESH до версии 0.9.3. Внимание: обновление убирает поддержку подсветки cJass.
  • Отредактирован settings.reg.
  • Добавлен GrimexManual.html. Находится в папке grimext.
  • Добавлены interfaces.w3x, slkdemo.w3x и slkdemo.slk. Находятся в папке jasshelper/demos.
  • Добавлены скриптовые .j файлы. Находятся в папке jasshelper.
  • Обновлены jasshelper.conf в корневой папке JNGP и папке jasshelper.
  • Для TESH были установлены личные настройки. Сбросить к настройкам по умолчанию можно в настройках.
» подробнее
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 позволяет очень гибко настроить подсветку, а также добавить свои собственные функции и шаблоны. Некоторые подробности использования перечислены на странице XGM посвящённой TESH. К сожалению, обновлённый TESH не поддерживает cJass.
Применение settings.reg делает следующее:
  • Включает локальные файлы для WarCraft 3.
  • Изменяет настройки редактора:
    • Отмечает, что редактор уже был запущен.
    • Фиксирует время суток в редакторе.
    • Отключает создание новой карты при запуске.
    • Разрешает отрицательные значения и включает сортировку по имени в редакторе объектов.
    • Зануляет громкость звуков UI редактора.
    • Отключает фиксированный генератор случайных чисел во время теста карты.
    • Включает автоматическое создание переменных в редакторе триггеров.
    • Отключает описания объектов в панели инструментов (оставляет только имена).
  • Изменяет настройки JNGP:
    • Включает UMSWE.
    • Отключает кастомное расположение категорий, Colorizer и отключение звуков WE.
      • Отключение звуков WE заменяет звуки в архивах самой игры на время работы редактора, что делает невозможным проигрывание этих звуков в редакторе звуков. Вместо этого лучше всего изменить настройки самого WE, то есть занулить звук UI, что также делает этот файл.
    • Включает JassHelper и режим дебага.
    • Полностью отключает cJass и ScExp.
Это не исчерпывающий список, подробности в самом файле.
GrimexManual.html - это мануал по утилите Grimex, встроенной в JNGP. Обязательно почитайте.
interfaces.w3x, slkdemo.w3x и slkdemo.slk - части мануала по vJass. Сам мануал есть в оригинальной сборке.
Скриптовые .j файлы помогут вам узнать, какие нативные и BJ функции есть в JASS в версии 1.26 и 1.32+.
jasshelper.conf - файл конфигурации JassHelper. Туда были добавлены комментарии, которые описывают некоторые флаги компиляции vJass. Напоминаю, что JassHelper во время работы JNGP использует jasshelper.conf из корневой папки JNGP, а не из папки jasshelper.

Установка

  • Распаковать архив в любую удобную папку, не требующию прав администратора (на подобии C:/Program Files).
  • (Рекомендуется) После распаковки применить изменения реестра из settings.reg.


Views: 319

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


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

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

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

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

Тут всё ещё можно использовать cJass, просто, как и написал, адекватной подсветки не будет.
Vlod #14 - 2 weeks ago 2
Голосов: +2 / -0
Просто в старом jnpg есть поддержка синтаксиса vjass+cjass + include user func в папку с tesh
Понятно, жалко
PT153 #15 - 2 weeks ago (изм. ) 0
Голосов: +0 / -0
Vlod, на самом деле cJass мало чем отличается от ZINC по синтаксису (только дурацким void). TESH не поддерживает ZINC, но автор может добавить поддержку (ровно как и поддержку Lua).
Clamp #16 - 2 weeks ago 3
Голосов: +3 / -0
cJass мало чем отличается от ZINC по синтаксису
В нём есть #define, это киллер-фича cJass по сути
GetLocalPlayer #17 - 2 weeks ago 4
Голосов: +4 / -0
В нём есть #define, это киллер-фича cJass по сути
Это обоюдоострый меч, но где "обоюдоострый" подразумевает второй клинок вместо рукояти.
Кет #19 - 2 weeks ago 1
Голосов: +1 / -0
GetLocalPlayer, а чем плохи макросы?
GetLocalPlayer #20 - 2 weeks 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 - 2 weeks ago 0
Голосов: +0 / -0
Clamp, так и есть.
Clamp #22 - 2 weeks ago 3
Голосов: +3 / -0
GetLocalPlayer, у дефайнов есть возможность определять области видимости, и корректное использованные дефайны являются невероятно мощным инструментом для решения многих задач, например, реализации дженериков.
GetLocalPlayer #23 - 2 weeks ago 3
Голосов: +3 / -0
дефайны являются невероятно мощным инструментом для решения многих задач
Невероятно мощным инструментам полагается иметь свой синтаксис и семантику. Например, к месту упомянутые дженерики или аннотации. В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
Clamp #24 - 2 weeks ago 0
Голосов: +0 / -0
В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
"этим не пользуюсь я - это бесполезно всем"
Doc #25 - 2 weeks ago (изм. ) 0
Голосов: +0 / -0
Clamp:
В наши дни дефайны лишь стон изголодавшегося разума по вменяемо написанному коду.
"этим не пользуюсь я - это бесполезно всем"
Не надо утрировать. Текстовый препроцессинг откровенно устаревшая фича, которая заменяется адекватными гигиеническими макросами и строго определенной внутри основного языка семантикой метапрограммирования в целом.
Насчет отсутствия отличий с Zinc - бред, помимо упомянутых макросов есть вещи типа flushlocals и foreach по группам (через генерацию FirstInGroup), а также нет клоунского ограничения на объявление переменных в начале функции.
PT153 #26 - 2 weeks ago (изм. ) 1
Голосов: +1 / -0
foreach по группам
В мануале этого нет.
flushlocals
также нет клоунского ограничения на объявление переменных в начале функции
Это не имеет никакого отношения в синтаксису.
В cJass есть whilenot, do - whilenot и препроцессорные штуки include, define и enum и прочие препроцессорные директивы, инкремент и декремент. У ZINC препроцессор такой же, как и у vJass, есть циклы for и while. Также отличается определение функций. На этом синтаксические отличия заканчиваются. В обоих одинаковые логические операторы, не нужно писать local, set и call, блоки определяются скобками. Тем самым бóльшая часть кода будет идентична с точки зрения подсветки и автодополнения.
И очень классно ты переделал вот это.
на самом деле cJass мало чем отличается от ZINC по синтаксису
В это.
Насчет отсутствия отличий с Zinc - бред
Никто не писал, что отличий вовсе нет.
Это сообщение удалено