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, вот так:
скриншоты

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Этот комментарий удален
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.14.65

  1. Новые Нативные Функции:
native CreateImageSimple takes string file, real sizeX, real sizeY, real posX, real posY, real posZ, integer imageType returns image
native GetImageType takes image whichImage returns integer
native GetImageX takes image whichImage returns real
native SetImageX takes image whichImage, real sizeX returns nothing
native GetImageY takes image whichImage returns real
native SetImageY takes image whichImage, real sizeY returns nothing
native GetImageZ takes image whichImage returns real
native SetImageZ takes image whichImage, real sizeZ returns nothing
native GetImagePositionLocation takes image whichImage returns location
native SetImagePositionLocation takes image whichImage, location whichLocation returns nothing
native GetImageOriginX takes image whichImage returns real
native SetImageOriginX takes image whichImage, real originX returns nothing
native GetImageOriginY takes image whichImage returns real
native SetImageOriginY takes image whichImage, real originY returns nothing
native SetImageOrigin takes image whichImage, real originX, real originY returns nothing
native GetImageSizeX takes image whichImage returns real
native SetImageSizeX takes image whichImage, real sizeX returns nothing
native GetImageSizeY takes image whichImage returns real
native SetImageSizeY takes image whichImage, real sizeY returns nothing
native SetImageSize takes image whichImage, real size returns nothing
native SetImageSizeEx takes image whichImage, real sizeX, real sizeY returns nothing
native GetImageColour takes image whichImage returns integer
native IsImageRendered takes image whichImage returns boolean
native IsImageRenderAlways takes image whichImage returns boolean
native IsImageRenderAboveWater takes image whichImage returns boolean
native IsImageVisible takes image whichImage returns boolean
native GetImageConstantHeight takes image whichImage returns real
native GetImageTexture takes image whichImage returns string
native SetImageTexture takes image whichImage, string imagePath returns nothing
  1. Исправлена Критическая Ошибка с событиями OnDamaging/OnDamage, который происходил в очень неоптимизированных картах (проблема связана с плохим кодом Jass в этих картах).
    Пометка: причина была в виду С++ оптимизации, которая просто на просто очищала данные быстрее, чем они до конца были использованы.
  2. Исправлена критическая ощибка связанная с выделением магазинов/улучшения заклинаний героя/спелбуков и т.д.
    Пометка: данная ошибка была добавлена в виду "велосипедного" метода имплементации экспериментальной функции SetAbilityOrderId.
  3. Добавлена псевдо-поддержка этих JN нативных функций:
native JNDailySave takes string MapId, string UserId, string SecretKey, string Character, string DailyType returns string
native JNDailyCheckToday takes string MapId, string UserId, string SecretKey, string Character, string DailyType returns string
native JNDailyCheckTodayList takes string MapId, string UserId, string SecretKey, string Character, string DailyType returns string
native JNDailyCountWeek takes string MapId, string UserId, string SecretKey, string Character, string DailyType, string WeekDay returns string
native JNDailyCountWeekList takes string MapId, string UserId, string SecretKey, string Character, string DailyType, string WeekDay returns string
native JNDailyCountMonth takes string MapId, string UserId, string SecretKey, string Character, string DailyType returns string
native JNDailyCountMonthList takes string MapId, string UserId, string SecretKey, string Character, string DailyType returns string
23
Unryze, Это очень хорошо. Что то вроде "handlegroup", куда можно выбирать любые объекты и перебирать их по циклу или через For*****, ну или отдельные наборы для widget, agent.
23
nazarpunk, Но ведь Ujapi не Lua. Речь шла о предложении добавить конкретную функцию в Ujapi, для jass. (просто предложение, не обязательно для себя)
30
Но ведь Ujapi не Lua
Не вижу смысла юзать ujapi c jass.
23
nazarpunk, На вкус и цвет, как говорится)
30
На вкус и цвет, как говорится)
Вкус и цвет это про cjass/vjass/zinc/gui. Работа с lua объективно занимает меньше времени.
Вот тебе к примеру баянистый баян. Сравни с реализацией на jass:
local x, y = GetSpellTargetX(), GetSpellTargetY()
TimerStart(CreateTimer(), 1, false, function()
    print(x, y)
end)
20
Но ведь Ujapi не Lua
Не вижу смысла юзать ujapi c jass.
Будешь много потыкивать ножами в жасс, я приложу усилия и прихлопну луа. :D
А если без шуток, то хватит уже переманивать людей на этот... этот "отличный" язык, у него есть свои проблемы, да и функционал, который понадобится далеко не всем.
EugeAl:
nazarpunk, На вкус и цвет, как говорится)
Именно.
nazarpunk:
На вкус и цвет, как говорится)
Вкус и цвет это про cjass/vjass/zinc/gui. Работа с lua объективно занимает меньше времени.
Вот тебе к примеру баянистый баян. Сравни с реализацией на jass:
local x, y = GetSpellTargetX(), GetSpellTargetY()
TimerStart(CreateTimer(), 1, false, function()
    print(x, y)
end)
Уже не раз писал, но анонимки - это круто до поры до времени и клепать их везде - не самая лучшая затея, ибо есть моменты, когда обыкновенный коллбек будет удобнее, ну или написать краткую "библиотеку", которая будет эти обработки сама заносить в данные ХТ и спокойно можно плодить что душе угодно, лишь бы была от этого польза.
Сойдёмся на том, что кому что удобнее, пусть то и использует, главное, чтобы не cjass.
20
Имхо, очень нужна функция
native EnumDestructablesInRange takes real x, real y, real radius, boolexpr filter, code actionFunc returns nothing, чтобы без областей обойтись. Она возможна?
Это было проще, чем я ожидал, найду оффсеты нужные на переборщики и думаю даже для предметов это добавлю, чего уж там.
Загруженные файлы
20
Unryze, а что с cjass не так? Совсем неюзабельный код выходит?
23
Unryze, О, замечательно! Да, для предметов тоже можно, но, правда, не представляю, в каких ситуациях это потребуется.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.