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

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

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

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

v1.1.0.154

  1. Удалено бесполезное логирование для ExecuteCode и схожих нативных функций.
3
20
5 месяцев назад
3
Вышла новая версия!

v1.1.0.155

  1. Исправлена обработка пустой строки, которая вызывала тихое закрытие игры.
    Пометка: это произошло из-за внутренней рекурсии, которую я же и создал, если получаемый текст был пустой или равен nullptr.
0
29
5 месяцев назад
0
Чую,что ещё три hotfix'а будет)
1
20
5 месяцев назад
1
Вышла новая версия!

v1.1.0.156

  1. Переделана обработка OnDamage, дабы избежать новую проблему, из-за которой юниты становились неуязвимыми.
    Пометка: это было связано с предыдущим исправлением 0-левого урона.
0
20
4 месяца назад
0
Вышла новая версия!

v1.1.1.158

  1. Новые Константы:
    constant playerunitevent EVENT_PLAYER_UNIT_ABILITY_ADDED = ConvertPlayerUnitEvent(503)
    constant playerunitevent EVENT_PLAYER_UNIT_ABILITY_REMOVED = ConvertPlayerUnitEvent(504)
    constant playerunitevent EVENT_PLAYER_UNIT_ABILITY_AUTOCAST_ON = ConvertPlayerUnitEvent(505)
    constant playerunitevent EVENT_PLAYER_UNIT_ABILITY_AUTOCAST_OFF = ConvertPlayerUnitEvent(506)
    constant unitevent EVENT_UNIT_ABILITY_ADDED = ConvertUnitEvent(513)
    constant unitevent EVENT_UNIT_ABILITY_REMOVED = ConvertUnitEvent(514)
    constant unitevent EVENT_UNIT_ABILITY_AUTOCAST_ON = ConvertUnitEvent(515)
    constant unitevent EVENT_UNIT_ABILITY_AUTOCAST_OFF = ConvertUnitEvent(516)
    constant originframetype ORIGIN_FRAME_FPS_TEXT = ConvertOriginFrameType(54)
    constant originframetype ORIGIN_FRAME_MEMORY_TEXT = ConvertOriginFrameType(55)
  2. Новые Нативные Функции:
    native GetMapFogZ takes nothing returns real
    native SetMapFogZ takes real z returns nothing
    native GetMapFogColour takes nothing returns integer
    native SetMapFogColour takes integer colour returns nothing
    native IsAbilityAutocastEnabled takes ability whichAbility returns boolean
  3. GetSpellAbility теперь работает с событиями баффов и новыми событиями заклинаний.
  4. GetSpellAbilityId теперь работает с событиями баффов и новыми событиями заклинаний.
  5. Исправлена SetAbilityOwner, которая не до конца работала с активными заклинаниями (они не отображались в панели, если были созданы напрямую через CreateAbility).
  6. Исправлена критическая ошибка от SetDoodadZ на 1.28f.
0
20
4 месяца назад
0
Вышла новая версия!

v1.1.1.159

  1. Исправлено взаимодействие UNIT_ABILITY_REMOVED с RemoveUnit, которое приводило к "замораживанию" процесса игры.
0
20
4 месяца назад
Отредактирован Unryze
0
Вышла новая версия!

v1.1.1.160

  1. Исправлен баг связанный с добавлением/удалением заклинаний скрытому юниту.
    Пометка: это в целом плохой подход, когда юнит спрятан вы не должны ничего с ним делать, отобразите его в начале, а потом уже делайте что нужно!
1
20
4 месяца назад
1
Вышла новая версия!

v1.1.2.163

  1. Новые Нативные Функции:
    native TextFileRead takes textfilehandle whichTextFile returns string
    native UnitAddItemToSlot takes unit whichUnit, item whichItem, integer itemSlot returns boolean
    native ReviveUnit takes unit whichUnit, real x, real y returns boolean
    native ReviveUnitLoc takes unit whichUnit, location loc returns boolean
  2. TextFileReadAll переименован в TextFileReadAllLines, теперь оно читает именно текст, а не сам файл.
  3. Добавлена экспериментальная поддержка CSimpleFrame в АПИ CBackdropFrame.
  4. Исправлена критическая ошибка от всех вариантов SetModel, эта ошибка связана с не-Ex вариациями, ибо цвет обрабатывался неверно.
  5. Добавлена более точная, но менее строгая внутренняя проверка на "активность" Агента (то, что он не удалён).
    Пометка: это изменение по большей части затрагивает новое АПИ юнитов, которое было через-чур строгое к скрытым/убитым/удалённым юнитам.
0
37
4 месяца назад
Отредактирован ScorpioT1000
0
Вообще писать все эти Ex это плохие практики, когда разработчик не может придумать правильное имя функции. В винапи оно имеет смысл, т.к. добавляет огромный набор параметров, но все еще является примером плохой архитектуры
2
20
4 месяца назад
2
Вышла новая версия!

v1.1.3.165

  1. Новые Типы:
    type connectiontype extends handle
  2. Новые Конверторы:
    constant native ConvertConnectionType takes integer i returns connectiontype
  3. Новые Константы:
    constant connectiontype CONNECTION_TYPE_SINGLE_PLAYER = ConvertConnectionType(0)
    constant connectiontype CONNECTION_TYPE_LOCAL_GAME = ConvertConnectionType(1)
    constant connectiontype CONNECTION_TYPE_BATTLE_NET = ConvertConnectionType(2)
    constant connectiontype CONNECTION_TYPE_REPLAY = ConvertConnectionType(3)
  4. Новые Нативные Функции:
    native GetConnectionType takes nothing returns connectiontype
  5. Исправлена некорректная работа GetFrameUnderCursor со фреймами не CSimpleFrame типа.
  6. Исправлено некорректное поведение GetEventIsAttack в DAMAGED событии.
  7. Добавлена поддержка CommandButton_0 по CommandButton_11 в GetFrameByName с contextId 0.
    Пометка: эти имена отвечают за кнопки заклинаний. Пример: GetFrameByName( "CommandButton_0", 0 ).
  8. Добавлена поддержка CommandButton_0 по CommandButton_5 в GetFrameByName с contextId 1.
    Пометка: эти имена отвечают за кнопки предметов. Пример: GetFrameByName( "CommandButton_0", 1 ).
  9. Исправлена некорректная обработка цвета в SetModel.
5
20
4 месяца назад
Отредактирован Unryze
5
Вышла новая версия!

v1.1.4.167

1. Новые Типы:
	type war3image											extends agent
	type styleflag											extends handle
	type layerstyleflag										extends flagtype
	type controlstyleflag									extends flagtype
2. Новые Конверторы:
	constant native ConvertLayerStyleFlag					takes integer i returns layerstyleflag
	constant native ConvertControlStyleFlag					takes integer i returns controlstyleflag
3. Новые Константы:
	constant originframetype			ORIGIN_FRAME_SIMPLE_TOP										= ConvertOriginFrameType(56) // This frame contains all CSimpleRegions/CSimpleFrames.
	//
	constant layerstyleflag				LAYER_STYLE_SVIEWPOINT										= ConvertLayerStyleFlag(1)
	constant layerstyleflag				LAYER_STYLE_IGNORE_TRACK_EVENTS								= ConvertLayerStyleFlag(2)
	constant layerstyleflag				LAYER_STYLE_SHADING											= ConvertLayerStyleFlag(4)
	constant layerstyleflag				LAYER_STYLE_NO_DEPTH_SET									= ConvertLayerStyleFlag(16)
	constant layerstyleflag				LAYER_STYLE_NO_DEPTH_TEST									= ConvertLayerStyleFlag(32)
	//
	constant controlstyleflag 			CONTROL_STYLE_AUTOTRACK										= ConvertControlStyleFlag(1)
	constant controlstyleflag 			CONTROL_STYLE_CLICK_MOUSE_DOWN								= ConvertControlStyleFlag(2)
	constant controlstyleflag 			CONTROL_STYLE_RELEASE_NOTIFY								= ConvertControlStyleFlag(4)
	constant controlstyleflag 			CONTROL_STYLE_DRAG											= ConvertControlStyleFlag(8)
	constant controlstyleflag 			CONTROL_STYLE_HIGHLIGHT_FOCUS								= ConvertControlStyleFlag(32)
	constant controlstyleflag 			CONTROL_STYLE_HIGHLIGHT_HOVER								= ConvertControlStyleFlag(64)
	constant controlstyleflag 			CONTROL_STYLE_SLIDER_STEP									= ConvertControlStyleFlag(128)
	constant controlstyleflag 			CONTROL_STYLE_EXCLUSIVE										= ConvertControlStyleFlag(512)
	constant controlstyleflag 			CONTROL_STYLE_AT_LEAST_ONE									= ConvertControlStyleFlag(1024)
4. Удалённые Нативные Функции:
	native IsFrameDraggable									takes framehandle whichFrame returns boolean
	native SetFrameDraggable								takes framehandle whichFrame, boolean enabled returns nothing
	native GetFrameTrackState								takes framehandle whichFrame returns integer
	native SetFrameTrackState								takes framehandle whichFrame, integer trackState returns nothing // 0 - NONE | 1 - Track | 2 - Ignore Track
5. Новые Нативные Функции:
	native GetWar3ImagePlayerColour							takes war3image whichWar3Image returns playercolor // This gets glow/team colour.
	native SetWar3ImagePlayerColour							takes war3image whichWar3Image, playercolor color returns nothing // This sets Glow and Team Colour. Mimics the SetUnitColor.
	native SetWar3ImageMaterialTexture						takes war3image whichWar3Image, string textureName, integer materialId, integer textureIndex returns nothing
	native SetWar3ImageTexture								takes war3image whichWar3Image, string textureName, integer textureIndex returns nothing
	native SetWar3ImageReplaceableTexture					takes war3image whichWar3Image, string textureName, integer textureIndex returns nothing // 1 - TeamColour | 2 - TeamGlow | 11 - Cliff0/1 |  21 - "grabbed texture" for CCursorFrame | 31-37 trees.
	native GetWar3ImageModel								takes war3image whichWar3Image returns string
	native SetWar3ImageModel								takes war3image whichWar3Image, string modelName returns nothing
	native SetWar3ImageModelEx								takes war3image whichWar3Image, string modelName, integer playerColour returns nothing // 0-15, -1 to ignore the colour.
	native GetWidgetUnderCursor								takes nothing returns widget // Async
	native GetWidgetPlayerColour							takes widget whichWidget returns playercolor
	native SetWidgetPlayerColour							takes widget whichWidget, playercolor color returns nothing
	native GetDestructableUnderCursor						takes nothing returns destructable // Async
	native GetDestructablePlayerColour						takes destructable whichDestructable returns playercolor
	native SetDestructablePlayerColour						takes destructable whichDestructable, playercolor color returns nothing
	native GetItemUnderCursor								takes nothing returns item // Async
	native GetItemPlayerColour								takes item whichItem returns playercolor
	native SetItemPlayerColour								takes item whichItem, playercolor color returns nothing
	native IsItemDroppable									takes item whichItem returns boolean
	native GetUnitPlayerColour								takes unit whichUnit returns playercolor
	native SetUnitPlayerColour								takes unit whichUnit, playercolor color returns nothing
	native IsUnitGhosted									takes unit whichUnit returns boolean
	native SetUnitGhosted									takes unit whichUnit, boolean state, real transitionTime returns nothing // Attacking from this state does not cause the unit to exit Ghost state.
    native GetProjectilePlayerColour						takes projectile whichProjectile returns playercolor
	native GetDoodadPlayerColour							takes doodad whichDoodad returns playercolor
	native SetDoodadPlayerColour							takes doodad whichDoodad, playercolor color returns nothing
	native SetDoodadModelEx									takes doodad whichDoodad, string modelFile, integer playerId returns nothing
	native SetDoodadMaterialTexture							takes doodad whichDoodad, string textureName, integer materialId, integer textureIndex returns nothing
	native SetDoodadTexture									takes doodad whichDoodad, string textureName, integer textureIndex returns nothing
	native SetDoodadReplaceableTexture						takes doodad whichDoodad, string textureName, integer textureIndex returns nothing
	native IsFrameLayerFlag									takes framehandle whichFrame, layerstyleflag whichLayerStyle returns boolean
	native SetFrameLayerFlag								takes framehandle whichFrame, layerstyleflag whichLayerStyle, boolean isSet returns nothing
	native IsFrameControlFlag								takes framehandle whichFrame, controlstyleflag whichControlStyle returns boolean
	native SetFrameControlFlag								takes framehandle whichFrame, controlstyleflag whichControlStyle, boolean isSet returns nothing
	native GetFrameSpritePlayerColour						takes framehandle whichFrame returns playercolor
	native GetFrameMinMaxValues								takes framehandle whichFrame, integer valueId returns real // 0 = min | 1 = max
6. SetSpecialEffectVisibility переименован в SetSpecialEffectVisible.
7. SetTrackableVisibility переименован в SetTrackableVisible.
8. Исправлено PauseUnitEx позволяющая мёртвым юнитам атаковать.
	Пометка: это связано с неполным скрытием заклинаний, теперь заклинание атаки насильно скрывается.
9. Частично изменена обработка "RETURN" операции в JassVM, теперь она полностью обрабатывается через UjAPI и более не полагается на оригинальную функцию обработки байткода.
10. Исправлена критическая ошибка от CreateIllusion, так как оно ссылалась на изменённный код CAbilityInventory где я забыл, что GetIntegerField к сожалению работает со значениями с точкой в самом движке.
	Пометка: это было связано с проверкой размером инвентаря.
11. Исправлена работа с характеристиками заклинания "Бонусные Характеристики" (Aamk) через Field API.
12. Исправлено GetItemStringField возвращающая неверные значения.
13. Частично переделано внутреннее API Снарядов, чтобы предотвратить критические ошибки связанные с неправильным использованием API в коде.
14. Полностью переделано GetProjectileTargetX/Y/Z, теперь их значения хранятся в std::unordered_map, так как игра к сожалению не хранит эти точки, а если и хранит, то не так явно.
15. Исправлена критическая ошибка от HandleListGetHandleById.
16. Исправлена HandleListContainsTypeId срабатывающая только на первый индекс.
	Пометка: эта проблема появилась пару версий назад, после большого рефактора кода.
17. Исправлены поведения SetProjectileTargetX/Y/Z, которыеп запускали снаряд, заместо лишь установки точки цели.
	Пометка: если снаряд уже был запущен, то эти функции будут "перезапускать" снаряд на новую установленную точку, как и должны были.
18. Исправлена SetProjectileArc устанавливающая неверное значение.
19. Исправлено инвертирование событие CHECKBOX.
20. Добавлен темплейт для фреймов типа CHECKBOX.
21. SetFrameTexture теперь работает со всеми фреймами типа CControl.
22. SetFrameTexture теперь может менять текстуру галочки через эти индексы: 5 - галочка, 6 - галочка отключённая (серая).
23. widget теперь расширяет тип war3image вместо agent.
24. sprite теперь расширяет тип war3image вместо agent.
25. projectile теперь расширяет тип war3image вместо agent.
26. doodad теперь расширяет тип war3image вместо agent.
24. racepreference теперь расширяет тип flagtype вместо handle.
25. gametype теперь расширяет тип flagtype вместо handle.
26. mapflag теперь расширяет тип flagtype вместо handle.
27. movetype теперь расширяет тип flagtype вместо handle.
28. pathingaitype теперь расширяет тип flagtype вместо handle.
29. collisiontype теперь расширяет тип flagtype вместо handle.
30. targetflag теперь расширяет тип flagtype вместо handle.
31. unitcategory теперь расширяет тип flagtype вместо handle.
32. pathingflag теперь расширяет тип flagtype вместо handle.
33. GetUnitAbilityLevel now also properly works with buffs.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.