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.3.15

  1. Исправлена критическая ошибка от нативных функций имеющих string в аргументах из Item API.
  2. Новые нативные функции:
    native BitwiseNOT takes integer i returns integer
    native BitwiseAND takes integer bit1, integer bit2 returns integer
    native BitwiseOR takes integer bit1, integer bit2 returns integer
    native BitwiseXOR takes integer bit1, integer bit2 returns integer
    native BitwiseShiftLeft takes integer bit1, integer bitsToShift returns integer
    native BitwiseShiftRight takes integer bit1, integer bitsToShift returns integer
    native Id2String takes integer i returns string
    native String2Id takes string idString returns integer
    native GetUnitBaseDescriptionById takes integer unitTypeId returns string
    native SetUnitBaseDescriptionById takes integer unitTypeId, string name returns nothing
    native GetUnitBaseIconById takes integer unitTypeId returns string
    native SetUnitBaseIconById takes integer unitTypeId, string name returns nothing
    native GetUnitBaseDescription takes unit whichUnit returns string
    native SetUnitBaseDescription takes unit whichUnit, string name returns nothing
    native GetUnitBaseIcon takes unit whichUnit returns string
    native SetUnitBaseIcon takes unit whichUnit, string name returns nothing
    native GetItemBaseDescriptionById takes takes integer itemId returns string
    native SetItemBaseDescriptionById takes integer itemId, string name returns nothing
    native GetItemBaseDescription takes item whichItem returns string
    native SetItemBaseDescription takes item whichItem, string name returns nothing
  1. Внутренние флаги MorphUnitToTypeId isUpdateHealthState, isUpdateManaState и isResetBuildingAnimation теперь являются "истиной", ранее были "ложью".
  2. MorphUnitToTypeId теперь также восстанавливает "белое" значение атаки до оригинального показателя.
  3. SetUnitBaseProperNameById изменена последовательность аргументов на "unit, integer, string" заместо "unit, string, integer".
  4. Исправлены все "сеттеры" для SpecialEffectAPI.
  5. Исправлены эти нативные функции:
    native GroupGetUnitByIndex takes group whichGroup, integer index returns unit
    native GroupForEachUnit takes group whichGroup returns unit
    native GroupAddGroupEx takes group destGroup, group sourceGroup returns integer
    native GroupRemoveGroupEx takes group destGroup, group sourceGroup returns integer
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.4.22

  1. Нативная функция IsAbilityShown переименована в IsAbilityVisible.
  2. Все возвращаемые типы сеттеров в AbilityAPI были изменены с "integer" на "nothing", ввиду того, что возвращаемые данные были не валидными.
  3. Новые нативные функции:
    native I2C takes integer i returns code
    native C2I takes code c returns integer
    native MathRound takes real r returns integer
    native MathRealRound takes real r returns real
    native MathRealFloor takes real r returns real
    native MathRealCeil takes real r returns real
    native MathRealAbs takes real r returns real
    native MathRealLog takes real r returns real
    native MathRealLn takes real r returns real
    native MathIntegerAbs takes integer i returns integer
    native MathIntegerLog takes integer i returns real
    native MathIntegerLn takes integer i returns real
    native StringContains takes string s, string whichString returns boolean
    native StringFind takes string s, string whichString returns integer
    native StringFindFirstOf takes string s, string whichString returns integer
    native StringFindFirstNotOf takes string s, string whichString returns integer
    native StringFindLastOf takes string s, string whichString returns integer
    native StringFindLastNotOf takes string s, string whichString returns integer
    native IsOperationLimitEnabled takes nothing returns boolean
    native EnableOperationLimit takes boolean enable returns nothing
    native ExecuteFuncEx takes string funcName returns nothing
    native GetUnitDamageReduction takes unit whichUnit returns real
    native IsUnitAbilityVisible takes unit whichUnit, integer abilityId returns integer
    native ShowUnitAbility takes unit whichUnit, integer abilityId, boolean flag returns nothing
  4. Расшифрованы эти нативные функции:
    native SilenceAbility takes ability whicAbility, boolean hide, boolean disable returns nothing
    native UnsilenceAbility takes ability whicAbility, boolean show, boolean enable returns nothing
Теперь аргументы этих функций имеют нормальные названия.
  1. Исправлена нативная функция GetUnitAblity, по каким-то причинам, она не брала заклинания выше 1 уровня.
  2. Пере-пере-исправлены сеттеры x/y/z в SpecialEffectAPI.
  3. Исправлена неправильная проверка флагов в нативной функции IsAbilityOnCooldown.
  4. Исправлена неправильная проверка флагов в нативной функции IsFrameVisible.
  5. Исправлена нативная функция SetUnitCurrentSight.
  6. TriggerRegisterFrameEvent теперь работает верно и полноценно создаёт новый ивент для заданного фрейма.
    Пометка: пока что реализованы не все ивенты, а так же эти ивенты пока что локальные, однако скоро они будут работать и в мультиплеере.
  7. Исправлена критическая ошибка когда Нейтральный Пассивный игрок был подвержен урону.
  8. Исправлена критическая ошибка при запуске карты на 1.28.5.
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.5.31

  1. Новые типы:
    type timetype extends handle
  2. Новые конвертеры:
    constant native ConvertTimeType takes integer i returns timetype
  3. Новые константы:
    constant timetype TIME_TYPE_YEAR = ConvertTimeType( 0 )
    constant timetype TIME_TYPE_MONTH = ConvertTimeType( 1 )
    constant timetype TIME_TYPE_DAY_OF_WEEK = ConvertTimeType( 2 )
    constant timetype TIME_TYPE_DAY = ConvertTimeType( 3 )
    constant timetype TIME_TYPE_HOUR = ConvertTimeType( 4 )
    constant timetype TIME_TYPE_MINUTE = ConvertTimeType( 5 )
    constant timetype TIME_TYPE_SECOND = ConvertTimeType( 6 )
    constant timetype TIME_TYPE_MILLISECOND = ConvertTimeType( 7 )
  4. Новые нативные функции:
    native GetSystemTime takes timetype whichTimeType returns integer
    native GetLocalTime takes timetype whichTimeType returns integer
    native ExecuteCode takes code c returns nothing
    native SyncInteger takes string variableName returns nothing
    native SyncReal takes string variableName returns nothing
    native SyncBoolean takes string variableName returns nothing
    native SyncString takes string variableName returns nothing
    native SyncHandle takes string variableName returns nothing
    native SyncSavedInteger takes hashtable table, integer parentKey, integer childKey returns nothing
    native SyncSavedReal takes hashtable table, integer parentKey, integer childKey returns nothing
    native SyncSavedBoolean takes hashtable table, integer parentKey, integer childKey returns nothing
    native SyncSavedHandle takes hashtable table, integer parentKey, integer childKey returns nothing
    native SyncSavedString takes hashtable table, integer parentKey, integer childKey returns nothing
  5. Улучшение кода и увеличение производительности.
38
Millisecond - с двумя l пишется. Велосипед изобретал вместо готовой либы?)
20
Millisecond - с двумя l пишется. Велосипед изобретал вместо готовой либы?)
Провтыкал. Поправлю По поводу "готовой" либы не понял, ибо какие готовые либы и на что...?
38
Думал, формат времени из строки-шаблона планируешь делать (есть готовый strftime)
20
Думал, формат времени из строки-шаблона планируешь делать (есть готовый strftime)
Это я может и добавлю тоже, просто это стандартное получение просто времени, а дальше юзверь может что угодно делать. Это Jass, а не lua, тут нужна максимальная простота. :D
19
На счёт Jass, а не Lua, я хз, как будет работать синхронизация на Lua, т.к. ты её реализовал по имени переменной. :D
20
На счёт Jass, а не Lua, я хз, как будет работать синхронизация на Lua, т.к. ты её реализовал по имени переменной. :D
Оно строго берёт значения из джасс, ей пофиг на луа. Технически я могу и под луа это сделать... но желания 0.
19
Я так и понял. Не проще ли тогда было сделать, чтобы она принимала не название переменной, а её значение?

Хотяяя, с другой стороны, у нас есть доступ к Jass переменным из Lua, так что временно пофиг. 😁
20
Я так и понял. Не проще ли тогда было сделать, чтобы она принимала не название переменной, а её значение?

Хотяяя, с другой стороны, у нас есть доступ к Jass переменным из Lua, так что временно пофиг. 😁
И куда мне это значение синхать? Пример кода:
globals
    integer GlobalInteger = 0
endglobals

function TestSync takes nothing returns nothing
    if GetLocalPlayer( ) == Player( 0 ) then
        set GlobalInteger = 999
        call SyncInteger( "GlobalInteger" )
    endif
endfunction
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.