UjAPI

Добавлен , опубликован
Лауреат премии 2023 года


Данный ресурс работает ТОЛЬКО с патчами 1.24e/1.26а/1.27a/1.27b/1.28f

Как пользоваться?

  1. Распакуйте все файлы из архива, желательно в отдельную папку, вот так:
скриншоты
  1. Запустите UjAPI.exe.
    • Если же у вас приложение не запускается, то скачайте и установите: .NET Framework 4.7.2.
    • Если же ни в игре, ни в World Editor UjAPI не работает, то скачайте и установите: C++ Redistributable 2012
  2. Установите путь для Warcraft 3, вот так:
скриншоты
  • Можно указать и на Frozen Throne.exe или же на Warcraft III.exe (но рекомендуется использовать именно war3.exe для патчей 1.27б и ниже).
  • На патче 1.28.5(f) рекомендуется использовать непосредственно Warcraft III.exe.
  1. Установите путь для World Editor, вот так:
скриншоты
  • Рекомендуется использовать JNGP версии Прометея: скачать
  • Пароль от архива: JNGP
4.1 Для удобства, добавления подсветки/автозаполнения, скачайте: [UjAPI] TESH Подсветка (спасибо DevilVsLife и Nazarpunk) и просто положите его в папку tesh/data вот так:
скриношоты
  1. Готово, вы можете теперь смело запускать как игру, так и World Editor через UjAPI Launcher.
    • Для использования оконного режима в Warcraft III нажмите галочку на "Additional command line arguments" и в появившееся окно, пропишите -window, вот так:
скриншоты

Полезные файлы

`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Этот комментарий удален
23
Unryze, Да, это велосипед, но он требуется. Допустим, у героя имеется комплект абилок, при этом каждая из абилок работает на коде и состоит из нескольких стандартных абилок. Для простого кода требуется бд, из нескольких массивов, в каждом из которых записаны равкоды абилок, в одинаковой последовательности. Код определяет индекс в одном массиве, а потом его использует для взятия данных из остальных массивов.
Хештаблица - да, она может, но если абилок таких 50? 50 раз по циклу придётся вызвать функцию извлечения данных из Хештаблицы, для сравнения. А вызовы более ресурсозатратные, чем просто обращение к переменным. А в случае нативки достаточно 1 раз её вызвать, и всё, в коде она больше не потребуется.
Да, на джассе можно сделать подобное, как сказал nazarpunk, но это костыльно.
20
Unryze, Да, это велосипед, но он требуется. Допустим, у героя имеется комплект абилок, при этом каждая из абилок работает на коде и состоит из нескольких стандартных абилок. Для простого кода требуется бд, из нескольких массивов, в каждом из которых записаны равкоды абилок, в одинаковой последовательности. Код определяет индекс в одном массиве, а потом его использует для взятия данных из остальных массивов.
Хештаблица - да, она может, но если абилок таких 50? 50 раз по циклу придётся вызвать функцию извлечения данных из Хештаблицы, для сравнения. А вызовы более ресурсозатратные, чем просто обращение к переменным. А в случае нативки достаточно 1 раз её вызвать, и всё, в коде она больше не потребуется.
Да, на джассе можно сделать подобное, как сказал nazarpunk, но это костыльно.
Разница будет не такая существенная, да и твой юзкейс возвращает элемент, что можно вернуть хештаблицей, и каждый вызов элемента из массива всё-равно нужно вызывать, так что ты сам не понял что попросил. :(
Поясняю, можно передать хештаблицу и родительский ключь, раз на то пошло и сократить количество вызовов, но на деле, эта «ресурсоёмкость» повлияет ровным счётом ни на что.
Прекратите уже извращаться и выдумывать псевдо-более-быстрые велосипеды, если бы это реально было бы существенно быстрее, я бы это уже сам форсировал бы, но это не так.
30
Для простого кода требуется бд, из нескольких массивов, в каждом из которых записаны равкоды абилок, в одинаковой последовательности.
Сделать из одномерного массива n-мерный религия не позволяет?
23
Unryze, ок, я просто предложил. Нет - нет, да - да.
nazarpunk, можно конечно, у себя так и сделал, но определять индекс всё равно требуется. А несколько массивов просто для примера описал.
30
EugeAl, при инициализаци проести индексацию и положить индексы в хт?
23
nazarpunk, но у меня нет хт, только "двумерный" массив ( не люблю хт) ). Что значит провести индексацию? Заполнить массив? так это вначале делается.
30
не люблю хт
Кто тебе дохтор?
Получать элемент за О(n) всяко лучше чем за O(1)
Что значит провести индексацию?
Это значит положить в хт индекс элемента в массиве, чтоб можно было достать его без перебора.
23
nazarpunk, ок, а как его привязать например к равкоду абилки? Чтобы при касте абилки код сразу распознал её индекс в массиве, ведь без перебора это не определить. Что тогда нужно загрузить/ выгружать в/из хт? Не скажется ли это на фпс/производительности?
30
ок, а как его привязать например к равкоду абилки?
Равкод это число.
SaveInteger(Таблица, Равкод, 0, ИндексМассива)
Не скажется ли это на фпс/производительности?
Перебор массива гораздо производительней получения значения таблицы.
23
nazarpunk, Что ж, интересная концепция. Пожалуй, можно пробовать. Но вот вопрос в рациональности - если требуется перебрать всего 60 значений максимум, имеет ли такая оптимизация смысл?
30
Но вот вопрос в рациональности - если требуется перебрать всего 60 значений максимум, имеет ли такая оптимизация смысл?
Если есть возможность не перебирать, то зачем перебирать?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.