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

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

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

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

v1.0.9.44

  1. Новые Типы:
type mousebuttontype extends handle
  1. Новые Константы:
constant mousebuttontype MOUSE_BUTTON_TYPE_LEFT = ConvertMouseButtonType(1)
constant mousebuttontype MOUSE_BUTTON_TYPE_MIDDLE = ConvertMouseButtonType(2)
constant mousebuttontype MOUSE_BUTTON_TYPE_RIGHT = ConvertMouseButtonType(3)
  1. Новые Конверторы:
constant native ConvertMouseButtonType takes integer i returns mousebuttontype
  1. Новые Нативные Функции:
native GetTriggerPlayerMouseButton takes nothing returns mousebuttontype
native GetFrameSpriteScale takes framehandle whichFrame returns real
native SetFrameSpriteScale takes framehandle whichFrame, real scale returns nothing
native GetFrameSpriteTimeScale takes framehandle whichFrame returns real
native SetFrameSpriteTimeScale takes framehandle whichFrame, real timescale returns nothing
native GetFrameSpriteColour takes framehandle whichFrame returns integer
native SetFrameSpriteColour takes framehandle whichFrame, integer colour returns boolean
native SetFrameSpriteAlpha takes framehandle whichFrame, integer alpha returns boolean
native SetFrameSpriteVertexColour takes framehandle whichFrame, integer red, integer green, integer blue, integer alpha returns boolean
native SetFrameSpriteOrientationEx takes framehandle whichFrame, real yaw, real pitch, real roll, integer eulerOrder returns boolean
native GetFrameSpriteYaw takes framehandle whichFrame returns real
native SetFrameSpriteYaw takes framehandle whichFrame, real yaw returns boolean
native GetFrameSpriteFacing takes framehandle whichFrame returns real
native SetFrameSpriteFacing takes framehandle whichFrame, real facing returns boolean
native GetFrameSpritePitch takes framehandle whichFrame returns real
native SetFrameSpritePitch takes framehandle whichFrame, real pitch returns boolean
native GetFrameSpriteRoll takes framehandle whichFrame returns real
native SetFrameSpriteRoll takes framehandle whichFrame, real roll returns boolean
native SetFrameSpriteOrientation takes framehandle whichFrame, real yaw, real pitch, real roll returns nothing
native SetFrameSpriteModel takes framehandle whichFrame, string modelName returns nothing
native SetFrameSpriteModelEx takes framehandle whichFrame, string modelName, integer playerColour returns nothing
  1. Исправлена критическая ошибка при пинга по миникарте.
  2. Исправлено событие MOUSE_MOVE, которое поглощало все другие действия, приводя как игнорированию других комманд.
  3. Исправлена критическая ошибка от нативной функции SetFrameTooltip.
  4. Исправлена нерабочая нативная функция SetFrameEnabled.
  5. Исправлена нативная функция GetTriggerFrameEvent, ранее возвращала неверные значения.
  6. Исправлена нативная функция GetTriggerPlayerKey, ранее возвращала неверные значения кнопки мышки.
4
20
2 года назад
Отредактирован Unryze
4
Вышла новая версия! Прокрутить к ресурсу

v1.0.10.49

  1. Новые Типы:
type missile extends agent
type playermissileevent extends eventid
  1. Новые Конверторы:
constant native ConvertPlayerMissileEvent takes integer i returns playermissileevent
  1. Новые Константы:
constant playermissileevent EVENT_PLAYER_MISSILE_LAUNCH = ConvertPlayerMissileEvent(600)
constant playermissileevent EVENT_PLAYER_MISSILE_HIT = ConvertPlayerMissileEvent(601)
  1. Новые Нативные Функции:
native KillMissile takes missile whichMissile returns nothing
native IsMissileVisible takes missile whichMissile returns boolean
native SetMissileVisibility takes missile whichMissile, boolean visibility returns nothing
native GetMissileX takes missile whichMissile returns real
native SetMissileX takes missile whichMissile, real x returns nothing
native GetMissileY takes missile whichMissile returns real
native SetMissileY takes missile whichMissile, real y returns nothing
native GetMissileZ takes missile whichMissile returns real
native SetMissileZ takes missile whichMissile, real z returns nothing
native GetMissileHeight takes missile whichMissile returns real
native SetMissileHeight takes missile whichMissile, real height returns nothing
native GetMissilePositionLocation takes missile whichMissile returns location
native SetMissilePositionWithZ takes missile whichMissile, real x, real y, real z returns nothing
native SetMissilePosition takes missile whichMissile, real x, real y returns nothing
native SetMissilePositionLocation takes missile whichMissile, location loc returns nothing
native GetMissileScale takes missile whichMissile returns real
native SetMissileScale takes missile whichMissile, real scale returns nothing
native GetMissileTimeScale takes missile whichMissile returns real
native SetMissileTimeScale takes missile whichMissile, real timescale returns nothing
native GetMissileColour takes missile whichMissile returns integer
native SetMissileColour takes missile whichMissile, integer colour returns boolean
native SetMissileAlpha takes missile whichMissile, integer alpha returns boolean
native SetMissileVertexColour takes missile whichMissile, integer red, integer green, integer blue, integer alpha returns boolean
native SetMissileAnimationWithRarityByIndex takes missile whichMissile, integer animIndex, raritycontrol rarity returns nothing
native SetMissileAnimationWithRarity takes missile whichMissile, string animation, raritycontrol rarity returns nothing
native SetMissileAnimationByIndex takes missile whichMissile, integer animIndex returns nothing
native SetMissileAnimation takes missile whichMissile, string animation returns nothing
native QueueMissileAnimationByIndex takes missile whichMissile, integer animIndex returns nothing
native QueueMissileAnimation takes missile whichMissile, string animation returns nothing
native ResetMissileMatrix takes missile whichMissile returns nothing
native SetMissileOrientationEx takes missile whichMissile, real yaw, real pitch, real roll, integer eulerOrder returns boolean
native GetMissileYaw takes missile whichMissile returns real
native SetMissileYaw takes missile whichMissile, real yaw returns boolean
native GetMissileFacing takes missile whichMissile returns real
native SetMissileFacing takes missile whichMissile, real facing returns boolean
native GetMissilePitch takes missile whichMissile returns real
native SetMissilePitch takes missile whichMissile, real pitch returns boolean
native GetMissileRoll takes missile whichMissile returns real
native SetMissileRoll takes missile whichMissile, real roll returns boolean
native SetMissileOrientation takes missile whichMissile, real yaw, real pitch, real roll returns nothing
native SetMissileModel takes missile whichMissile, string modelName returns nothing
native SetMissileModelEx takes missile whichMissile, string modelName, integer playerColour returns nothing
native GetMissileSource takes missile whichMissile returns unit
native SetMissileSource takes missile whichMissile, unit whichUnit returns nothing
native GetMissileTarget takes missile whichMissile returns widget
native SetMissileTarget takes missile whichMissile, widget whichWidget returns nothing
native GetMissileAttackType takes missile whichMissile returns attacktype
native SetMissileAttackType takes missile whichMissile, attacktype whichAttackType returns nothing
native GetMissileDamage takes missile whichMissile returns real
native SetMissileDamage takes missile whichMissile, real damage returns nothing
native GetMissileSpeed takes missile whichMissile returns real
native SetMissileSpeed takes missile whichMissile, real speed returns nothing
native GetMissileArc takes missile whichMissile returns real
native SetMissileArc takes missile whichMissile, real arc returns nothing
native GetMissileWeaponType takes missile whichMissile returns weapontype
native SetMissileWeaponType takes missile whichMissile, weapontype whichWeaponType returns nothing
native GetMissileDamageType takes missile whichMissile returns damagetype
native SetMissileDamageType takes missile whichMissile, damagetype whichDamageType returns nothing
native GetMissileDamageFlags takes missile whichMissile returns integer
native SetMissileDamageFlags takes missile whichMissile, integer flags returns nothing
native SaveMissileHandle takes hashtable whichHashtable, integer parentKey, integer childKey, missile whichMissile returns boolean
native LoadMissileHandle takes hashtable whichHashtable, integer parentKey, integer childKey returns missile
native GetTriggerMissile takes nothing returns missile
native GetTriggerMissileSource takes nothing returns unit
native GetTriggerMissileTarget takes nothing returns unit
native TriggerRegisterPlayerMissileEvent takes trigger whichTrigger, player whichPlayer, playermissileevent whichMissileEvent returns event
  1. Исправлены все получатели/установщики типов атаки/урона/оружия, теперь они используют соответствующие хендлы заместо типа integer.
  2. Все нативные функции связанные с главным аттрибутом героя теперь используют тип heroattribute заместо типа integer.
  3. Исправлена нативная функция GetTriggerFrameReal вызванная при ивенте MOUSE_WHEEL, теперь она возвращает дельту мышки, как на Рефорджеде.
2
19
2 года назад
2
Больше нативок богу нативок. :DD
0
27
2 года назад
Отредактирован MpW
0
Unryze, есть ли события фреймов? И синхронизируются 🙂 а вот все нашел, есть они. Близзард еще не дождешься

Как lua использовать на 1.26 и выше?

Unryze, а где очередь приказов как в рефе?
0
20
2 года назад
0
Как lua использовать на 1.26 и выше?
Закинуть файл war3map.lua в карту и всё, lua идёт c UjAPI из коробки.

Unryze, а где очередь приказов как в рефе?
Ещё не доделал, приоритет этой нишевой фигни очень низкий. Человек один, а работы тьма. :(
0
29
2 года назад
0
Человек один, а работы тьма. :(
Сделай как сейчас принято в опенсурсе - реквест фич через денюжку.

Закинуть файл war3map.lua в карту и всё, lua идёт c UjAPI из коробки.
В какой момент инициализируется lua, и нет ли проблемы, как в рефе, с созданием объектов?
1
20
2 года назад
1
Сделай как сейчас принято в опенсурсе - реквест фич через денюжку.
Опенсорсом ни WFE ни UjAPI никогда не будут. Фичи и так реквестили (по крайней мере на ВФЕ) за шекели. Я очень-очень противлюсь опенсорса, ибо не для того столько времени влил, чтобы проект вот так взяли и себе присвоили.

В какой момент инициализируется lua, и нет ли проблемы, как в рефе, с созданием объектов?
В момент обработки джасс кода, проблем как в рефе не наблюдаются, но есть свои. + пока что есть зависимость от war3map.j для слотов, в будущем помогу Ev3nt'у убрать нужду war3map,j для слотов и т.д.
0
29
2 года назад
Отредактирован nazarpunk
0
Опенсорсом ни WFE ни UjAPI никогда не будут. Фичи и так реквестили (по крайней мере на ВФЕ) за шекели. Я очень-очень противлюсь опенсорса, ибо не для того столько времени влил, чтобы проект вот так взяли и себе присвоили.
В каком месте я предлагал код одкрывать?
Просто исходя из информации на xgm нельзя понять, что функция новых фич за шекели доступна. Например сколько стоит возможность работать в режиме папки прямо из JNGP?
1
20
2 года назад
1
В каком месте я предлагал код одкрывать?
Тьфу, неправильно прочитал. Сорян.
Просто исходя из информации на xgm нельзя понять, что функция новых фич за шекели доступна. Например сколько стоит возможность работать в режиме папки прямо из JNGP?
Хм... технически если перехватить обработку файлов/импорт и т.д. реализуемо, но очень геморно. Особо не задумывался об этом. Я больше по варику, с редактором много разбора не делал, кроме нужных мне фич.
Я потыкаю в скором времени редактор, когда с нативками +- будет всё нужное сделано и лаунчер станет человеческим, затем постараюсь выкатить хотя бы частичную поддержку DzAPI и Blz нативок, а вот потом уже можно и редактор потыкать.
0
29
2 года назад
0
пока что есть зависимость от war3map.j для слотов
Тоесть в карте может быть одновременно jass код и lua? Если так, то это огонь, ибо можно старые карты постепенно на lua переписать.
0
20
2 года назад
Отредактирован Unryze
0
пока что есть зависимость от war3map.j для слотов
Тоесть в карте может быть одновременно jass код и lua? Если так, то это огонь, ибо можно старые карты постепенно на lua переписать.
Я помог Ev3nt'у получить доступ как к глобалкам (пока что лишь к чтению), так и абсолютно ко всем функциям из blizzard.j/war3map.j (изначально я сделал лишь blizzard.j, но потом понял что можно и war3map.j получить, в итоге дал полный метод).
В идеале я постараюсь потом сделать нативку DoScript, которая будет выполнять lua скрипт. Если я осилю Jass парсер (внутриигровой), то может даже получится сделать выполнение джасс скрипта, что позволит делить .j на файлы, как с луа.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.