Добавлен , опубликован

FNWE - новый редактор мира для Warcraft III

Существует до сих пор еще много людей, которые не понимают триггеры на английском языке, поэтому основной целью модификации на данный момент есть замена английских названий и описаний триггерных событий, условий, действий, функций на русские аналоги, которые будут более понятными для пользователя. Наработка будет полезна и тем, кто не желает учить Jass, так как пользователь получит в свои руки весьма мощный функционал, который будет составлен не только переведенными BJ-функциями, а и native'ками, а также новыми пользовательскими функциями.
По сравнению с предыдущими версиями редакторов, FNWE поддерживает использование локальных переменных на простых GUI-триггерах. Это облегчит создание заклинаний и поможет в решении более сложных задач, где использование глобальных переменных достаточно непрактичное.
Редактор содержит улучшенную графическую оболочку, которая поможет в создании триггеров. Согласитесь, в те времена, когда значки действий хэш-таблицы, присвоения переменной и буфера игры были одинаковы, разобраться что и где было несколько проблематично. С новой графической составляющей эта проблема решается. В дальнейшем планируется улучшить и другие однообразные иконки действий.
Помимо графики, которая призвана радовать глаз пользователя, FNWE содержит дополнительный функционал, который может быть полезен, как и обычным триггерщикам, так и Jass-программистам, поскольку и тем, и тем могут понадобиться новые функции отлова урона, работы с отслеживающимися(trackable), причем они будут доступны как и в обычном GUI, так и на коде. Также в наличии есть система выделения свободного индекса для массива, чтобы упростить работу с массивами глобальных переменных в триггерных магиях. Этот набор со временем будет дополняться ввиду востребования его пользователями.

Преимущества модификации

Далее приведен список причин, почему стоит использовать новый редактор:
  • новые native-функции, которые не модифицируют игру (т.е. карта может быть запущена у другого человека без этой модификации, но это сработает в роли защиты, если человек без нового GUI попытается открыть карту с новыми native-функциями);
  • возможность одномоментного присвоения переменных (т.е. теперь не нужно создавать объект, а потом обращаться к нему, как к последнему созданному объекту);
  • возможность использования локальных переменных;
  • возможность использования регионов (т.е. у вас появится возможность создания областей различных форм и произведения с ними различных действий);
  • возможность использования unitpool'ов и itempool'ов, как стандартных типов (т.е. можно будет задать вероятность выставления на карту случайных юнитов и предметов более удобным и понятным способом);
  • использование типа trackable, как стандартного, а также библиотека FNWETrackableAPI, которая расширяет функционал работы с ними;
  • метки для BJ-функций (это поможет составлять триггеры более грамотно);
  • динамическое создание триггеров (т.е. в игровом процессе с помощью GUI);
  • функции-аналоги стандартным BJ-функциям, которые упрощают код и делают его чище;
  • действия редактора ИИ также переведены;
  • добавление пользовательских функций в GUI с ходом обновлений;
  • содержание полезных библиотек для работы с различными объектами;
  • четкое разграничение старых функций (не отмечены звездочкой), новых (*), а также самых новых, которых в игре не было (**);
  • совместимость с JNGP (т.к. данный редактор является основной надстройки);
  • использование личного сценария не только в блоке действий, но и в блоке событий триггера, а также в блоке условий;
  • небольшая система для выделения свободного индекса в массиве (полезная вещь в создании MUI заклинаний на GUI).

Библиотеки редактора

На данный момент таких библиотек всего 5 и они содержатся в файлах:
  • fn_all.j (позволяет подключить к карте все и сразу);
  • fn_damageSystem.j (система отлова урона, которая срабатывает при событии получения какого-либо урона боевой единицей);
  • fn_localVariables.j (своеобразный движок для поддержки создания локальных переменных в среде GUI);
  • fn_trackableAPI.j (библиотека-первооткрыватель в плане новых функций для работы с объектами, в данном случае с отслеживающимися);
  • fn_main.j (содержит основные переменные и функции).
Проведу некоторый инструктаж, как их использовать. Для начала поместите файлы в папку с ваше версией JNGP. Они должны находиться в папке AdicHelper/lib. Это позволит произвести подключение библиотеки более простым способом, а именно прописав одну строку в код вашей карты:
#include ""fn_all.j"
В противном случае придется прописывать полный путь к файлу, что не есть удобным. Также каждую библиотеку можно подключать отдельно, если определенные функции вам не нужны.
Примеры использования
=
=== Перевод функций ===
Для более наглядной демонстрации возможностей и особенностей перевода данной наработки, я сделал несколько скриншотов с ее использованием. Картами, для наглядности, стали последние миссии игр Warcraft 3 ROC и TFT, а именно противостояния против Архимонда и Иллидана. Эти карты нам хорошо знакомы, а также их сложный "триггерный состав".

Локальные переменные

Также хотелось бы пролить свет на новые действия для работы с локальными переменными. В списке категорий первой можно увидеть "Локальная переменная". Она содержит ряд возможностей по объявлению локальных переменных в коде триггера. Первым, что нужно сделать, это создать глобальную переменную необходимого типа через редактор триггеров. С помощью нее мы заставим редактор триггеров и саму игру считать данную переменную локальной за счет эффекта затенения. После этого выбираете все необходимые действия, связанные якобы с "глобальной переменной", но на самом деле будет в ней видеть локальную.

Место для творчества

Можно долго перебирать различные интересные функции и их применение, но пока что ограничусь лишь на этом, так как вам предстоит их освоить и привыкнуть к новому редактору, а все самое основное и, может быть, непонятное я объяснил.

Установка модификации

Процесс установки нового редактора FNWE крайне прост. Для начала вам необходимо установить JNGP, так как установка будет происходить поверх. Далее приведен список действий после установки:
  • скачать архив и извлечь файлы;
  • разблокировать локальные файлы для Warcraft III;
Для тех, кто не знает, как это сделать
Первый способ. Найдите в редакторе вкладку "Extensions" (для обладателей JNGP) и поставьте галочку напротив пункта Enable Local Files.
Второй способ. Войдите в редактор реестра через команду "regedit" и пройдите по приблизительно такому пути HKEY_CURRENT_USER/Software/Blizzard Entertainmet/Warcraft III, после чего найдете в данной папке пункт Allow Local Files и поставьте значение 1.
  • установить папки UI и ReplaceableTextures в папку с игрой;
  • поместить библиотеки из AdicHelper/lib в соответствующие в папке с JNGP (там, где лежат обычные cj_библиотеки);
  • перезапустить редактор.
После проделанных Вами действий, данная модификация будет успешно установлена.

Дальнейшие идеи

Данные идеи формируются от пользовательской востребованности. На данный момент есть несколько путей для развития проекта. Я лично, как автор, считаю, что обычному пользователю было бы хорошо иметь некоторый дополнительный функционал для расширенного взаимодействия с объектами, как это было сделано и с отслеживающимися. Крайне необходимы базисы для определения значений из памяти Warcraft'а, а именно так называемый новый RB (return bug). Люди, которые занимаются отслеживанием памяти игры, можете написать о своих исследованиях. Они необходимы. Также было бы хорошо, если к редактору можно было присоединить JAPI (т.е. новые native-функции), но на данный момент приходится отталкиваться от стандарта и созданных библиотек.

Обратная связь и контактная информация

С целью улучшения данной модификации и внесения необходимых изменений, исправления ошибок и различных неточностей, буду признателен, если Вы, пользователи,сообщите мне о выявленных недостатках. Приму различные предложения по добавляемым функциям в новый GUI (они также могут быть нестандартными).
Вы можете связаться со мной через профиль на сайте: Пушистый или с помощью аккаунта в соц. сети ВКонтакте: new.vk.com/fluffy_777. Идейные вдохновители приветствуются.
Приятного Вам использования:)

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
48
8 лет назад
0
я привык функции читать на английском, на русском не знаю как читаются.

моё обширное мышление подсказывает мне что мне можно в отдельную папку закинуть FNWE, и вроде как можно язык оставить стандартным?
0
13
8 лет назад
0
molot39, да я тоже как-то, ведь учился именно на таком, когда нормального руссификатора не было. Ну, да, также, как и перевод, ставится в виде модуля.
0
48
8 лет назад
0
Пушистый:
molot39, да я тоже как-то, ведь учился именно на таком, когда нормального руссификатора не было. Ну, да, также, как и перевод, ставится в виде модуля.
от души)
0
26
8 лет назад
0
А как же имена переменных на русском? не?
0
13
8 лет назад
0
Extremator, они у меня сразу были на русском) Но, с точки зрения jass'ера, это весьма непрактично. В списке теряешься, пока создаешь глобалку.
6
48
8 лет назад
6
Решил проверить функции, пробежался по хеш-таблице, потыкал в item, и во что то там ещё, редактор вылетел. Это из за чего?
4
13
8 лет назад
4
molot39, в хэш-таблице, даже еще в Blizzard'овской версии присутствуют те типы, которых нет в списке для создания глобальных переменных. Думал, что с добавлением trackable, widget, unitpool'ов, itempool'ов все типы будут, но нет, еще остались недобавленные. Буду дорабатывать. Спасибо за отзыв.
0
7
8 лет назад
0
Пушистый, а можешь сделать еще вот такой вариант?
Т.е. вместо одного действия (как сейчас), можно было указать несколько

И что значит FNWE?

"объединение предметов" и "объединение юнитов" странно звучит. Может заменить на "набор" или "таблица"?
Да и само слово "юнит" в стандартном редакторе не используется, вместо него "боевая единица".
Загруженные файлы
0
13
8 лет назад
0
Ige, знаю, что не используется. Тоже порой казалось, что боевая единица привычнее для глаз. Насчет объединений предметов и юнитов надо подумать. Набор хорошо звучит, а таблица - весьма странно. Насчет варианта, как на скрине, нужно подумать. Я пробовал уже для нативных групповых действий делать подпункт "Действия", но оно что-то не хочет его показывать. Насчет редактора FNWE, то еще нужно продумать фичи, чтобы такой редактор скрутить (да и нужно учитывать совместимость с игрой, чтобы это не было патчем, ведь патч сделать легко, но он будет не у всех).
0
26
8 лет назад
Отредактирован Extremator
0
Основное что надо для GUI-шника
не для этих омаров, которые даже не читают как работает функция
1. Доступ к именованию переменных, полный - что бы юзер видел udg_ , знал что это, и мог САМ это изменить
2. Строка фильтрации переменных, написал "spell_" или "item_" и в списке отображаются только те переменные, которые имеют эту часть в названии ( spell_ReCall_hero , spell_FArmor_count , item_WardS_dummy )
3. Динамическое переключение локализации, допустим сначала всё как в стандартном WE ( Боевая единица - Kill Unit ), кликнул где то галочку - оно стало полостью англ., либо полностью рус. В добавок к тому же - доп.инфу в каких-нибудь всплывающих подсказках (навёл на функцию - оно через пару сек высветило оба варианта названия функций, + подсказку , что бы не переключаться каждый раз при необходимость поверить ОДНО название)
4. Блок CS - в WE есть возможность писать строку Jass в GUI, но было бы неплохо иметь возможность писать сразу на куске чистого кода, а не создавать отдельно "триггер-GUI", конвертировать его, и оставлять в нём пустое место, там где триггер должен инициализировать себя. Это выглядит неряшливо... А писать ВСЁ в кастом-коде карты - не всегда удобно... ведь GUI - это в-первую очередь удобство!
в общем суть писанины выше в том, что бы создать пустой триггер, который будет заполняться только кодом, и при этом будет автоматически встраиваться к код-карты при компиляции, и нормально работать (мб даже с пометкой об очереди в коде)
. . .
На счёт нескольких действий по таймеру - он же вызывает функцию, которая вызывает следом ещё что-либо, либо работает напрямую (без вызовов, но такое не часто бывает). Можно просто вызвать функцию, которая будет вызывать следующие функции. Вот как у тебя на скрине
Таймер - Запустить "TIMER" на (0.00) сек как [многократный]
Действия - function TIMER_Act
внутри которой будут call TIMER_Act1; call TIMER_Act2; call TIMER_Act3 и т.д.
. . .
Ige:
"объединение предметов" и "объединение юнитов" странно звучит.
Вот поэтому и я предлагаю оставить возможность ВИДЕТЬ оба вариант
В идеале было бы неплохо сделать GUI на англ., но что бы всплывали сноски с рус.переводом
причём нормальным, доступным для понимания, а не тупо транслит/перевод + подсказки/инфа
0
13
8 лет назад
0
Extremator, данные идеи прекрасны и хотелось бы их реализовать, но если отталкиваться от стандартного WE (JNGP), то не все поля присутствуют.
1. Насчет доступа к именованию. Можно, конечно, показывать приставку для создаваемой переменной, но данное решение не слишком красивое. Программное решение требует более сложного подхода к проблеме и больших познаний.
2. Строка поиска переменных. Опять таки требует программного решения. Нужно добавить свое поле и окно поиска с выбиваемыми значениями.
3. Динамическое переключение ресурсов редактора. Вещь, которую сложно представить без программы. Можно, конечно, я думаю, придумать некий lua-скрипт, который будет вызываться через вкладки редактора (как это было в JNGP, как и изменение в реестре с локальными файлами) и будет изменять названия папок с содержимым перевода, после чего редактор можно перезапускать для применения изменений.
4. Блок CS. Нужно придумать, как выкрутить из оригинальных файлов нечто подобное, разве что, как в некоторых действиях доступна многострочность. Возможно, это есть ключом решения к данной проблеме.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.