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
А как луы всякие прикручивали к 1.26, вызовом этой функции из lualib?
Это вообще не связано с луа... я понимаю к чему ты ведёшь, но ты очень поверхностно судишь о реверс-инженерии, я бы даже сказал через-чур.
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.27.100

  1. Новые Константы
constant playercolor PLAYER_COLOR_MAROON = ConvertPlayerColor(12)
constant playercolor PLAYER_COLOR_NAVY = ConvertPlayerColor(13)
constant playercolor PLAYER_COLOR_TURQUOISE = ConvertPlayerColor(14)
constant playercolor PLAYER_COLOR_VIOLET = ConvertPlayerColor(15)
constant playercolor PLAYER_COLOR_WHEAT = ConvertPlayerColor(16)
constant playercolor PLAYER_COLOR_PEACH = ConvertPlayerColor(17)
constant playercolor PLAYER_COLOR_MINT = ConvertPlayerColor(18)
constant playercolor PLAYER_COLOR_LAVENDER = ConvertPlayerColor(19)
constant playercolor PLAYER_COLOR_COAL = ConvertPlayerColor(20)
constant playercolor PLAYER_COLOR_SNOW = ConvertPlayerColor(21)
constant playercolor PLAYER_COLOR_EMERALD = ConvertPlayerColor(22)
constant playercolor PLAYER_COLOR_PEANUT = ConvertPlayerColor(23)

constant integer CORNER_FLAG_UPPER_LEFT = 1
constant integer CORNER_FLAG_UPPER_RIGHT = 2
constant integer CORNER_FLAG_BOTTOM_LEFT = 4
constant integer CORNER_FLAG_BOTTOM_RIGHT = 8
constant integer CORNER_FLAG_TOP = 16
constant integer CORNER_FLAG_LEFT = 32
constant integer CORNER_FLAG_BOTTOM = 64
constant integer CORNER_FLAG_RIGHT = 128
constant integer CORNER_FLAG_ALL = 255
  1. Новые Нативные Функции:
constant native GetBJMaxPlayers takes nothing returns integer
constant native GetBJPlayerNeutralVictim takes nothing returns integer
constant native GetBJPlayerNeutralExtra takes nothing returns integer
constant native GetBJMaxPlayerSlots takes nothing returns integer
constant native GetPlayerNeutralPassive takes nothing returns integer
constant native GetPlayerNeutralAggressive takes nothing returns integer

native SaveCode takes hashtable table, integer parentKey, integer childKey, code whichCode returns boolean
native SaveHandleList takes hashtable table, integer parentKey, integer childKey, handlelist whichHandleList returns boolean
native LoadCode takes hashtable table, integer parentKey, integer childKey returns code
native LoadHandleList takes hashtable table, integer parentKey, integer childKey returns handlelist

native GetFrameTypeName takes framehandle whichFrame returns string
native GetFrameCornerFlags takes framehandle whichFrame, integer backdropId returns integer
native SetFrameCornerFlags takes framehandle whichFrame, integer backdropId, integer cornerFlag returns nothing
native GetFrameCornerSize takes framehandle whichFrame, integer backdropId returns real
native SetFrameCornerSize takes framehandle whichFrame, integer backdropId, real value returns nothing
native GetFrameBackgroundSize takes framehandle whichFrame, integer backdropId returns real
native SetFrameBackgroundSize takes framehandle whichFrame, integer backdropId, real value returns nothing
native GetFrameBackgroundInsetById takes framehandle whichFrame, integer backdropId, integer insetId returns real
native SetFrameBackgroundInsets takes framehandle whichFrame, integer backdropId, real minX, real minY, real maxX, real maxY returns nothing
native SetFrameBackgroundInsetById takes framehandle whichFrame, integer backdropId, integer insetId, real value returns nothing
native SetFrameBackdropTexture takes framehandle whichFrame, integer textureId, string backgroundTextureFile, boolean allowTransparency, boolean blend, string borderTextureFile, integer borderFlags, boolean isControlBackdrop returns nothing
  1. Изменена последовательность аргументов SetFrameTextureEx.
  2. Исправлен анализатор опкодов Jass секции, а точнее: GREATER/LESSER/GREATEROREQUAL/LESSEROREQUAL, числовые сравнения изменены с uint32_t на int32_t.
Пометка: это была очень глупая ошибка, которую заметил N1ghtSiren.
  1. Исправлена неверное возвращаемо значение нативной функцией I2C.
Пометка: Оказывается хоть сама переменная code хранит индекс функции, в неё нельзя посылать его напрямую, а нужно посылать адрес Opcode...
Спасибо N1ghtSiren за то, что заметил эту проблему.
  1. Исправлена критическая ошибка от SetWidgetModel и SetWidgetModelEx.
Пометка: Юниты/Предметы/Разрушаемые имели эту же проблему.
Спасибо PinkieNecro за то, что заметил эту проблему.
  1. Исправлена "форсированная" загрузка библиотеки в UjAPIApp даже если опция "Load Library" была отключена.
  2. Исправлен форсированный запуск карты UjAPI приложением, если был указан -loadfile даже при выключенном "Additional Command Line Arguments".
  3. Исправлена ошибка по которой UjAPI приложение не могло удалить старый "инстанс" после обновления.
  4. Исправлено событие EVENT_UNIT_DAMAGED теряющее GetUnitDamageSource когда UnitDamageTarget был вызван внутри него.
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.28.102

  1. Новые Константы:
    constant integer TEXT_TAG_MAX_SIZE = GetTextTagLimit( ) Original 100 limit raised to 1024, this is subject to change if needed.
  2. Новые Нативные Функции:
    constant native GetJassArrayLimit takes nothing returns integer
    constant native GetTextTagLimit takes nothing returns integer

    native GetCodeByName takes string funcName returns code

    native TimerIsPaused takes timer whichTimer returns boolean
    native TimerRestart takes timer whichTimer returns nothing
    native TimerIsPeriodic takes timer whichTimer returns boolean
    native TimerSetPeriodic takes timer whichTimer, boolean isPeriodic returns nothing
    native TimerSetRemaining takes timer whichTimer, real remaining returns nothing
    native TimerSetTimeout takes timer whichTimer, real timeout returns nothing
    native TimerGetCallback takes timer whichTimer returns code
    native TimerSetCallback takes timer whichTimer, code whichFunction returns nothing

    native GetDoodadModel takes doodad whichDoodad returns string
    native SetDoodadModel takes doodad whichDoodad, string whichModel returns nothing
    native IsDoodadVisible takes doodad whichDoodad returns boolean
    native ShowDoodad takes doodad whichDoodad, boolean isShow returns nothing

    native GetLightningSourceX takes lightning whichBolt returns real
    native SetLightningSourceX takes lightning whichBolt, real value returns nothing
    native GetLightningSourceY takes lightning whichBolt returns real
    native SetLightningSourceY takes lightning whichBolt, real value returns nothing
    native GetLightningSourceZ takes lightning whichBolt returns real
    native SetLightningSourceZ takes lightning whichBolt, real value returns nothing
    native GetLightningSourcePositionLocation takes lightning whichBolt returns location
    native SetLightningSourcePositionLocation takes lightning whichBolt, location whichLocation returns nothing
    native GetLightningTargetX takes lightning whichBolt returns real
    native SetLightningTargetX takes lightning whichBolt, real value returns nothing
    native GetLightningTargetY takes lightning whichBolt returns real
    native SetLightningTargetY takes lightning whichBolt, real value returns nothing
    native GetLightningTargetZ takes lightning whichBolt returns real
    native SetLightningTargetZ takes lightning whichBolt, real value returns nothing
    native GetLightningTargetPositionLocation takes lightning whichBolt returns location
    native SetLightningTargetPositionLocation takes lightning whichBolt, location whichLocation returns nothing
    native GetLightningScreenX takes lightning whichBolt returns real
    native GetLightningScreenY takes lightning whichBolt returns real
    native GetLightningColour takes lightning whichBolt returns integer
    native GetLightningLength takes lightning whichBolt returns real
    native SetLightningLength takes lightning whichBolt, real value returns nothing
    native GetLightningNoiseScaling takes lightning whichBolt returns real
    native SetLightningNoiseScaling takes lightning whichBolt, real value returns nothing
    native GetLightningTextureCoordinates takes lightning whichBolt returns real
    native SetLightningTextureCoordinates takes lightning whichBolt, real value returns nothing
    native GetLightningDuration takes lightning whichBolt returns real
    native SetLightningDuration takes lightning whichBolt, real value returns nothing
    native GetLightningTexture takes lightning whichBolt returns string
    native SetLightningTexture takes lightning whichBolt, string textureName returns nothing

    native GetTextTagScreenX takes texttag whichTextTag returns real
    native GetTextTagScreenY takes texttag whichTextTag returns real

    native GetImageScreenX takes image whichImage returns real
    native GetImageScreenY takes image whichImage returns real

    native GetSpecialEffectScreenX takes effect whichEffect returns real
    native GetSpecialEffectScreenY takes effect whichEffect returns real

    native GetTrackableScreenX takes trackable whichTrackable returns real
    native GetTrackableScreenY takes trackable whichTrackable returns real

    native GetWidgetScreenX takes widget whichWidget returns real
    native GetWidgetScreenY takes widget whichWidget returns real

    native GetDestructableScreenX takes destructable whichDestructable returns real
    native GetDestructableScreenY takes destructable whichDestructable returns real

    native GetItemScreenX takes item whichItem returns real
    native GetItemScreenY takes item whichItem returns real

    native GetUnitScreenX takes unit whichUnit returns real
    native GetUnitScreenY takes unit whichUnit returns real

    native GetProjectileScreenX takes projectile whichProjectile returns real
    native GetProjectileScreenY takes projectile whichProjectile returns real

    native HandleListContainsTypeId takes handlelist whichHandleList, integer typeId returns boolean
    native HandleListGetHandleByTypeId takes handlelist whichHandleList, integer typeId, integer index returns handle
    native HandleListRemoveEmpty takes handlelist whichHandleList returns integer
  3. Лимит TextTag'ов был увеличен со 100 до 1024.
    Пометка: использование 512 тексттагов никак не повлияло на фпс, однако тесты проведённые на 8192 увенчались 20 средними фпс, потому лимит был установлен в 1024, так как при этом лимите фпс тоже не пострадал.
  4. Исправлена ошибка в HandleListContainsHandle, по которой оно не определяло содержится хендл или нет.
  5. Исправлена критическая ошибка, при попытке получения индекса превышающего размер массива, если массив был инициализирован.
    Пометка: такой проблемы не было на "ванилле".
  6. Исправлена критическая ошибка от установки RESEARCH/ACTIVATED иконок через SetAbilityStringField, и т.д..
  7. ICON_RESEARCH теперь срабатывает на AHer (Изучение способностей героя) способность и всё связанное с изучением/наёмом и т.д..
  8. Исправлена SetFrameTexture, которая использовала неправильные внутренний аргументы.
  9. Исправлена HideOriginFrames вызывающая критическую ошибку, если была вызвана из main потока без задержки таймера.
  10. Исправлена критическая ошибка для пользователей на Windows 7, которая случалась в виду банально медленного запуска Warcraft III на Windows 7...
    Пометка: ошибка происходила потому, что UjAPI пытался получать доступ к CGlueManager для перезаписи "версии" и добавлении текста версии UjAPI, но это по итогу происходило на "чёрном" экране.
37
Установил нет фраемворк 4.72
Установил патч 1.27а
Сделал как всему описание
Запустил
Выхожу - выкидывает ошибка что варкрафт перестал
Запускаю и на карту китайскую нажимаю и происходит вылет
Теперь при запуске игры не видит ужапи
После этого ужапи перестал запускаться
37
После выхода из игры вылетает вот это
Загруженные файлы
20
После выхода из игры вылетает вот это
Да, это приколы вин7 и ниже, к сожалению не исправимо.
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.29.104

  1. Новые Нативные Функции:
    native GetLightningColourA takes lightning whichBolt returns integer
    native GetLightningColourR takes lightning whichBolt returns integer
    native GetLightningColourG takes lightning whichBolt returns integer
    native GetLightningColourB takes lightning whichBolt returns integer
    native SetLightningColour takes lightning whichBolt, integer r, integer g, integer b, integer a returns boolean

    native GetLocale takes nothing returns string

    native DisplayWarningMessage takes player toPlayer, string message returns nothing
    native DisplayTimedWarningMessage takes player toPlayer, real duration, string message returns nothing
    native DisplayTopMessage takes player toPlayer, string message returns nothing
    native DisplayTimedTopMessage takes player toPlayer, real duration, string message returns nothing

    native TextFileGetSizeByPath takes string filePath returns integer
    native TextFileGetSize takes textfilehandle whichTextFile returns integer

    native CreateDoodad takes integer objectid, real x, real y, real face, real scale, integer variation returns doodad
    native CreateDoodadZ takes integer objectid, real x, real y, real z, real face, real scale, integer variation returns doodad
    native RemoveDoodad takes doodad whichDoodad returns nothing
    native GetDoodadColour takes doodad whichDoodad returns integer
    native SetDoodadColour takes doodad whichDoodad, integer colour returns nothing
    native SetDoodadVertexColour takes doodad whichDoodad, integer red, integer green, integer blue, integer alpha returns nothing
    native GetDoodadScale takes doodad whichDoodad returns real
    native SetDoodadScale takes doodad whichDoodad, real facing returns nothing
    native GetDoodadX takes doodad whichDoodad returns real
    native SetDoodadX takes doodad whichDoodad, real x returns nothing
    native GetDoodadY takes doodad whichDoodad returns real
    native SetDoodadY takes doodad whichDoodad, real y returns nothing
    native GetDoodadZ takes doodad whichDoodad returns real
    native SetDoodadZ takes doodad whichDoodad, real z returns nothing
    native SetDoodadPosition takes doodad whichDoodad, real x, real y returns nothing
    native SetDoodadPositionEx takes doodad whichDoodad, real x, real y, real z returns nothing
    native GetDoodadPositionLocation takes doodad whichDoodad returns location
    native SetDoodadPositionLocation takes doodad whichDoodad, location whichLocation returns nothing
    native GetDoodadScreenX takes doodad whichDoodad returns real
    native GetDoodadScreenY takes doodad whichDoodad returns real
    native SetDoodadMatrixScale takes doodad whichDoodad, real x, real y, real z returns nothing
    native ResetDoodadMatrix takes doodad whichDoodad returns nothing
    native SetDoodadOrientationEx takes doodad whichDoodad, real yaw, real pitch, real roll, integer eulerOrder returns nothing
    native GetDoodadYaw takes doodad whichDoodad returns real
    native SetDoodadYaw takes doodad whichDoodad, real yaw returns nothing
    native GetDoodadFacing takes doodad whichDoodad returns real
    native SetDoodadFacing takes doodad whichDoodad, real facing returns nothing
    native GetDoodadPitch takes doodad whichDoodad returns real
    native SetDoodadPitch takes doodad whichDoodad, real pitch returns nothing
    native GetDoodadRoll takes doodad whichDoodad returns real
    native SetDoodadRoll takes doodad whichDoodad, real roll returns nothing
    native SetDoodadOrientation takes doodad whichDoodad, real yaw, real pitch, real roll returns nothing
    native GetDoodadModel takes doodad whichDoodad returns string
    native SetDoodadModel takes doodad whichDoodad, string whichModel returns nothing

    native GetWidgetTypeId takes widget whichWidget returns integer

    native GetUnitTarget takes unit whichUnit returns widget
    native GetUnitTargetUnit takes unit whichUnit returns unit
    native GetUnitTargetItem takes unit whichUnit returns item
    native GetUnitTargetDestructable takes unit whichUnit returns destructable
    native UnitAttackTarget takes unit whichUnit, widget whichTarget, bool ignoreDistance, boolean isInstant returns nothing ignoreDistance only works if isInstant is set to true.
    native UnitAttackTargetPointZ takes unit whichUnit, real x, real y, real z, boolean ignoreDistance, boolean isInstant returns nothing
    native UnitAttackTargetPoint takes unit whichUnit, real x, real y, boolean ignoreDistance, boolean isInstant returns nothing
    native UnitAttackTargetPointLoc takes unit whichUnit, location whichLocation, boolean ignoreDistance, boolean isInstant returns nothing
    native UnitAttackCancel takes unit whichUnit returns boolean
    native UnitCancelTimedLife takes unit whichUnit returns nothing
    native GetUnitRemainingTimedLife takes unit whichUnit returns real
    native SetUnitRemainingTimedLife takes unit whichUnit, real duration returns nothing

    native CreateIllusion takes player whichPlayer, integer unitTypeId, real x, real y, real facing returns unit
    native CreateIllusionAtLoc takes player whichPlayer, integer unitTypeId, location whichLocation, real facing returns unit
    native CreateIllusionFromUnit takes unit whichUnit returns unit
    native GetIllusionDamageDealt takes unit whichUnit returns real
    native SetIllusionDamageDealt takes unit whichUnit, real multiplier returns nothing
    native GetIllusionDamageReceived takes unit whichUnit returns real
    native SetIllusionDamageReceived takes unit whichUnit, real multiplier returns nothing

    native SetFrameValueEx takes framehandle whichFrame, real value, boolean isFireEvent returns nothing
    native GetFrameStepSize takes framehandle whichFrame returns real
  2. Исправлены некоторые (скорее всего все) способности, которые имели приказ выключения. (Пример: "Трансформация в эльфа" из формы медведя друида).
  3. Исправлена критическая ошибка при использовании DestroyFrame с CSimpleRegion/CSimpleFrame и их дочерними типами.
  4. Исправлены нерабочие OSKEY_UP/DOWN/LEFT/RIGHT кнопки с TriggerRegisterPlayerKeyEvent, и так далее.
  5. SetFrameValue теперь вызывает SLIDER_CHANGE событие.
  6. Исправлены ошибки по которым TriggerRegisterPlayerKeyEvent иногда блокировал ввод.
  7. SetUnitModel и SetUnitModelEx теперь так же обновляют любые и все крепления/эффекты и так далее.
  8. Исправлены нерабочие поля UnitStringFields: ICON_SCORE_SCREEN/MODEL/PORTRAIT/SHADOW_IMAGE_UNIT.
  9. Обновлён TextFile API, теперь оно может читать файлы из MPQ/Карт/Патчей и так далее.
    Пометка: когда TextFile API работает только в режиме чтения с этими файлами.
  10. Исправлены неправильные значения полей UNIT_IF_STRENGTH_BASE/UNIT_IF_AGILITY_BASE/UNIT_IF_INTELLIGENCE_BASE.
  11. UnitResetAttack переименовано в UnitRestartAttack.
  12. Исправлены нерабочие нативные функции UnitRestartAttack и UnitFinishAttack.
  13. Исправлены MathAngleBetweenPoints и MathAngleBetweenLocations возвращающие обратные значения.
  14. UnitRestartAttack и UnitFinishAttack переименованы в: UnitAttackRestart и UnitAttackFinish.
  15. BlzUnitCancelTimedLife теперь работает.
  16. Исправлено нерабочее событие PROJECTILE_HIT для Артиллерии/Артиллерии (линии).
  17. Добавлена экспериментальная система SecurityProtocol для обхода истёкших сертификатов Windows 7 из-за которых C# не мог использовать WebAPI.
    Пометка: это возможно исправит авто апдейтер для последующих версий.

После выхода из игры вылетает вот это
Да, это приколы вин7 и ниже, к сожалению не исправимо.
К слову эта проблема была исправлена тоже.
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.29.105

  1. Исправлена неправильная обработка геттера и сеттера поля ABILITY_ILF_TARGET_TYPE.
  2. Добавлены новые методы детекта для АнтиХака.

v1.0.29.106

  1. Исправлена критическая ошибка на 1.28f при выборе карты, при включённом Дебаг Режиме.
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.29.107

  1. Исправлено быстрое меню от WFE, которое ломалось в виду Авто Инжектора.
    Пометка: это происходило потому что UjAPI имело свой код, который позволял включать/выключать быстрое меню, этот код был временно отключён.
  2. Исправлена ошибка по которой UjAPI не работала с аппликацией Frozen Throne.exe.
    Пометка: всё ещё рекомендовано запускать игру через War3.exe для патчей ниже 1.28.
  3. Начиная со следующей версии UjAPI должно без проблем удалять старую аппликацию после обновления.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.