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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
20
1 год назад
0
Unryze, Спасибо за пояснение. Значит, с мелким количеством значений разницы не будет.
Ну, всегда можешь тестировать в отдельной карте (взять МемХак карту мою или UjAPI) и проверяй задержку и т.д. если оно тебе очень интересно. Но если изначально запланировать код максимально простым, то там "нагружать" будет толком нечему. Да и многое тяжёлое можно разгрузить/разделить и т.д.
0
18
1 год назад
0
Unryze, Можно конечно, спасибо за предложение) но мне в приоритете важнее не отловить микросекунд, а как оно скажется на фпс и визуале. Игрокам ведь до лампочки, что там и как сделано, лишь бы работало и глюков не было, и чтобы было интересно)
3
20
1 год назад
Отредактирован Unryze
3
Вышла новая версия!

v1.0.15.67

  1. Изменения Типов:
subanimtype теперь расширяет animtype, чтобы иметь доступ к новой нативной функции GetAnimationName для получения имени анимации по её индексу.
  1. Новые Константы:
constant itemstringfield ITEM_SF_ABILITY_LIST = ConvertItemStringField('iabi')
constant itemstringfield ITEM_SF_ICON = ConvertItemStringField('iico')
constant unitstringfield UNIT_SF_ICON_NORMAL = ConvertUnitStringField('uico')
constant unitstringfield UNIT_SF_ICON_SCORE_SCREEN = ConvertUnitStringField('ussi')
constant unitstringfield UNIT_SF_MODEL = ConvertUnitStringField('umdl')
constant unitstringfield UNIT_SF_PORTRAIT = ConvertUnitStringField('upor')
constant unitstringfield UNIT_SF_SPECIAL = ConvertUnitStringField('uspa')
constant unitstringfield UNIT_SF_TOOLTIP_AWAKEN = ConvertUnitStringField('uawt')
constant unitstringfield UNIT_SF_TOOLTIP_REVIVE = ConvertUnitStringField('utpr')
  1. Новые Нативные Функции:
native HandleToHandle takes handle h returns handle
native SaveHandle takes hashtable table, integer parentKey, integer childKey, handle whichHandle returns boolean
native SaveAttackTypeHandle takes hashtable table, integer parentKey, integer childKey, attacktype whichAttackType returns boolean
native SaveDamageTypeHandle takes hashtable table, integer parentKey, integer childKey, damagetype whichDamageType returns boolean
native SaveWeaponTypeHandle takes hashtable table, integer parentKey, integer childKey, weapontype whichWeaponType returns boolean
native LoadHandle takes hashtable table, integer parentKey, integer childKey returns handle
native LoadAttackTypeHandle takes hashtable table, integer parentKey, integer childKey returns attacktype
native LoadDamageTypeHandle takes hashtable table, integer parentKey, integer childKey returns damagetype
native LoadWeaponTypeHandle takes hashtable table, integer parentKey, integer childKey returns weapontype
native GetAnimationName takes animtype whichAnim returns string
native QueueImmediateOrderById takes unit whichUnit, integer order returns boolean
native QueuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean
native QueueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean
native QueueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean
native QueueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns boolean
native QueueBuildOrderById takes unit whichPeon, integer unitId, real x, real y returns boolean
native QueueNeutralImmediateOrderById takes player forWhichPlayer, unit neutralStructure, integer unitId returns boolean
native QueueNeutralPointOrderById takes player forWhichPlayer, unit neutralStructure, integer unitId, real x, real y returns boolean
native QueueNeutralTargetOrderById takes player forWhichPlayer, unit neutralStructure, integer unitId, widget target returns boolean
native GetUnitOrderCount takes unit whichUnit returns integer
native GetUnitOrderIdByIndex takes unit whichUnit, integer index returns integer
native UnitClearOrders takes unit whichUnit, boolean onlyQueued returns nothing
native UnitForceStopOrder takes unit whichUnit, boolean clearQueue returns nothing
  1. Исправлена ошибка JASS парсера, которая не отображала правильный текст ошибки.
  2. Исправлена ошибка случайно сломанной поддержки патча 1.27а.
  3. Переделана в очередной раз система обработки получения урона, которая ломалась при использовании CastTargetAbility внутри DAMAGING события.
  4. Переделан движок фреймов, который был случайно сломан в одном из предидущих обновлений.
0
13
1 год назад
Отредактирован Borodach
0
Крашит при загрузке таблицы, Без лаунчера работает.
/ /! loaddata "data.slk"
Карты с UJApi могут запускаться на айкапе или ирине?
1
20
1 год назад
1
Borodach, карты разработанные с этими нативками работают только с лаунчером. Соответственно на iccup не поиграть. На боте надо при создании игры выбрать версию с лаунчером
0
13
1 год назад
0
Крашит при загрузке таблицы, Без лаунчера работает.
/ /! loaddata "data.slk"
Ошибся, совпало после добавления триггера
3
20
1 год назад
Отредактирован Unryze
3
Вышла новая версия!

v1.0.17.73

  1. Новые Типы:
    type minimapicon extends handle
    type commandbuttoneffect extends handle
  2. Новые Константы:
    constant unitrealfield UNIT_RF_COLLISION_SIZE = ConvertUnitRealField('ucol')
    constant originframetype ORIGIN_FRAME_CONSOLE_UI = ConvertOriginFrameType(18)
    constant originframetype ORIGIN_FRAME_PORTRAIT_TEXT = ConvertOriginFrameType(19)
    constant originframetype ORIGIN_FRAME_BUFF_BAR = ConvertOriginFrameType(20)
    constant originframetype ORIGIN_FRAME_BUFF_BAR_TEXT = ConvertOriginFrameType(21)
    constant originframetype ORIGIN_FRAME_BUFF_BAR_INDICATOR = ConvertOriginFrameType(22)
    constant originframetype ORIGIN_FRAME_TIME_OF_DAY_INDICATOR = ConvertOriginFrameType(23)
    constant originframetype ORIGIN_FRAME_LEADERBOARD = ConvertOriginFrameType(24)
    constant originframetype ORIGIN_FRAME_MULTIBOARD = ConvertOriginFrameType(25)
    constant originframetype ORIGIN_FRAME_INFO_BAR = ConvertOriginFrameType(26)
    constant originframetype ORIGIN_FRAME_COMMAND_BAR = ConvertOriginFrameType(27)
    constant originframetype ORIGIN_FRAME_RESOURCE_BAR = ConvertOriginFrameType(28)
    constant originframetype ORIGIN_FRAME_RESOURCE_BAR_TEXTURE = ConvertOriginFrameType(29)
    constant originframetype ORIGIN_FRAME_RESOURCE_BAR_TEXT = ConvertOriginFrameType(30)
    constant originframetype ORIGIN_FRAME_UPPERBUTTON_BAR = ConvertOriginFrameType(31)
    constant originframetype ORIGIN_FRAME_UPPERBUTTON_BAR_BUTTON = ConvertOriginFrameType(32)
    constant originframetype ORIGIN_FRAME_PEON_BAR = ConvertOriginFrameType(33)
    constant originframetype ORIGIN_FRAME_PLAYER_MESSAGE = ConvertOriginFrameType(34)
    constant originframetype ORIGIN_FRAME_UNIT_MESSAGE = ConvertOriginFrameType(35)
    constant originframetype ORIGIN_FRAME_CHAT_MESSAGE = ConvertOriginFrameType(36)
    constant originframetype ORIGIN_FRAME_TOP_MESSAGE = ConvertOriginFrameType(37)
    constant originframetype ORIGIN_FRAME_CHAT_EDITBAR = ConvertOriginFrameType(38)
    constant originframetype ORIGIN_FRAME_CINEMATIC_PANEL = ConvertOriginFrameType(39)
    constant originframetype ORIGIN_FRAME_COMMAND_BUTTON_COOLDOWN_INDICATOR = ConvertOriginFrameType(40)
    constant originframetype ORIGIN_FRAME_COMMAND_BUTTON_AUTOCAST_FRAME = ConvertOriginFrameType(41)
    constant originframetype ORIGIN_FRAME_COMMAND_BUTTON_CHARGES_FRAME = ConvertOriginFrameType(42)
    constant originframetype ORIGIN_FRAME_COMMAND_BUTTON_CHARGES_TEXT = ConvertOriginFrameType(43)
  3. Новые Нативные Функции:
    native MathRealMin takes real a, real b returns real
    native MathRealMax takes real a, real b returns real
    native MathRealSign takes real r returns integer
    native MathIntegerMin takes integer a, integer b returns integer
    native MathIntegerMax takes integer a, integer b returns integer
    native MathIntegerSign takes integer i returns integer
    native MathPointProjectionX takes real x, real angle, real distance returns real
    native MathPointProjectionY takes real y, real angle, real distance returns real
    native MathAngleBetweenPoints takes real fromX, real fromY, real toX, real toY returns real
    native MathDistanceBetweenPoints takes real fromX, real fromY, real toX, real toY returns real
    native MathAngleBetweenLocations takes location fromLoc, location toLoc returns real
    native MathDistanceBetweenLocations takes location fromLoc, location toLoc returns real
    native GetUnitZ takes unit whichUnit returns real
    native DisableUnitAbility takes unit whichUnit, integer abilityId, boolean hide, boolean disable returns nothing
    native EnableUnitAbility takes unit whichUnit, integer abilityId, boolean show, boolean enable returns nothing
    native GetUnitBuffByIndex takes unit whichUnit, integer index returns buff
    native SetSpecialEffectMatrixScale takes effect whichEffect, real x, real y, real z returns nothing\
    native SetMiniMapTexture takes string texturePath returns boolean
    native IsFrameRegion takes framehandle whichFrame returns boolean
    native IsFrameSimple takes framehandle whichFrame returns boolean
    native IsFrameComplex takes framehandle whichFrame returns boolean
  4. Добавлена упущенная константа UNIT_IF_LUMBER_COST.
  5. Добавлена упущенная константа UNIT_IF_HOTKEY.
  6. Добавлена упущенная константа UNIT_WEAPON_IF_ATTACK_WEAPON_TYPE.
  7. Исправлена критическая ошибка в нативных функциях полей при использовании UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC или UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED на юните ближнего боя.
  8. Исправлено неправильное значение в константе UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART.
  9. GetMouseScreenX и GetMouseScreenY теперь возвращают значения от .0 до 1. заместо .0 до .8 для X и .0 до .6 для Y.
  10. HideOriginFrames теперь ведёт себя почти идентично функции на Рефордже.
  11. UnitUnapplyUpdates и UnitApplyUpdates, слова Updates изменены на Upgrades, это была большая опечатка.
  12. Silence/UnsilenceAbility переименованы в Disable/EnableAbility.
  13. ITEM_IF_TINTING_COLOR значение изменено с icol на iclt.
  14. UNIT_IF_TINTING_COLOR значение изменено с ucol на uclt.
  15. Добавлены Blz нативные функции, часть из них - простые пустышки, но большая часть рабочая. Список рабочих/не пустышек функций:
    BlzGroupAddGroupFast
    BlzGroupRemoveGroupFast
    BlzGroupGetSize
    BlzGroupUnitAt
    BlzForceHasPlayer
    BlzGetTriggerPlayerMouseX
    BlzGetTriggerPlayerMouseY
    BlzGetTriggerPlayerMousePosition
    BlzGetTriggerPlayerMouseButton
    BlzSetAbilityTooltip
    BlzSetAbilityActivatedTooltip
    BlzSetAbilityExtendedTooltip
    BlzSetAbilityActivatedExtendedTooltip
    BlzSetAbilityResearchTooltip
    BlzSetAbilityResearchExtendedTooltip
    BlzGetAbilityTooltip
    BlzGetAbilityActivatedTooltip
    BlzGetAbilityExtendedTooltip
    BlzGetAbilityActivatedExtendedTooltip
    BlzGetAbilityResearchTooltip
    BlzGetAbilityResearchExtendedTooltip
    BlzSetAbilityIcon
    BlzGetAbilityIcon
    BlzSetAbilityActivatedIcon
    BlzGetAbilityActivatedIcon
    BlzGetAbilityPosX
    BlzGetAbilityPosY
    BlzSetAbilityPosX
    BlzSetAbilityPosY
    BlzGetAbilityActivatedPosX
    BlzGetAbilityActivatedPosY
    BlzSetAbilityActivatedPosX
    BlzSetAbilityActivatedPosY
    BlzGetUnitMaxHP
    BlzSetUnitMaxHP
    BlzGetUnitMaxMana
    BlzSetUnitMaxMana
    BlzSetItemName
    BlzSetItemDescription
    BlzGetItemDescription
    BlzSetItemTooltip
    BlzGetItemTooltip
    BlzSetItemExtendedTooltip
    BlzGetItemExtendedTooltip
    BlzSetItemIconPath
    BlzGetItemIconPath
    BlzSetUnitName
    BlzSetHeroProperName
    BlzGetUnitBaseDamage
    BlzSetUnitBaseDamage
    BlzGetUnitDiceNumber
    BlzSetUnitDiceNumber
    BlzGetUnitDiceSides
    BlzSetUnitDiceSides
    BlzGetUnitAttackCooldown
    BlzSetUnitAttackCooldown
    BlzSetSpecialEffectColorByPlayer
    BlzSetSpecialEffectColor
    BlzSetSpecialEffectAlpha
    BlzSetSpecialEffectScale
    BlzSetSpecialEffectPosition
    BlzSetSpecialEffectHeight
    BlzSetSpecialEffectTimeScale
    BlzSetSpecialEffectTime
    BlzSetSpecialEffectOrientation
    BlzSetSpecialEffectYaw
    BlzSetSpecialEffectPitch
    BlzSetSpecialEffectRoll
    BlzSetSpecialEffectX
    BlzSetSpecialEffectY
    BlzSetSpecialEffectZ
    BlzSetSpecialEffectPositionLoc
    BlzGetLocalSpecialEffectX
    BlzGetLocalSpecialEffectY
    BlzGetLocalSpecialEffectZ
    BlzPlaySpecialEffect
    BlzPlaySpecialEffectWithTimeScale
    BlzGetAnimName
    BlzGetUnitArmor
    BlzSetUnitArmor
    BlzUnitHideAbility
    BlzUnitDisableAbility
    BlzIsUnitSelectable
    BlzIsUnitInvulnerable
    BlzUnitInterruptAttack
    BlzGetUnitCollisionSize
    BlzGetAbilityManaCost
    BlzGetAbilityCooldown
    BlzSetUnitAbilityCooldown
    BlzGetUnitAbilityCooldown
    BlzGetUnitAbilityCooldownRemaining
    BlzEndUnitAbilityCooldown
    BlzStartUnitAbilityCooldown
    BlzGetUnitAbilityManaCost
    BlzSetUnitAbilityManaCost
    BlzGetLocalUnitZ
    BlzSetEventDamage
    BlzGetEventDamageTarget
    BlzGetEventAttackType
    BlzGetEventDamageType
    BlzGetEventWeaponType
    BlzSetEventAttackType
    BlzSetEventDamageType
    BlzSetEventWeaponType
    BlzGetEventIsAttack
    BlzGetUnitZ
    BlzGetOriginFrame
    BlzHideOriginFrames
    BlzConvertColor
    BlzLoadTOCFile
    BlzCreateFrame
    BlzCreateSimpleFrame
    BlzCreateFrameByType
    BlzDestroyFrame
    BlzFrameSetPoint
    BlzFrameSetAbsPoint
    BlzFrameClearAllPoints
    BlzFrameSetAllPoints
    BlzFrameSetVisible
    BlzFrameIsVisible
    BlzGetFrameByName
    BlzFrameGetName
    BlzFrameClick
    BlzFrameSetText
    BlzFrameGetText
    BlzFrameAddText
    BlzFrameSetTextSizeLimit
    BlzFrameGetTextSizeLimit
    BlzFrameSetTextColor
    BlzFrameSetFocus
    BlzFrameSetModel
    BlzFrameSetEnable
    BlzFrameGetEnable
    BlzFrameSetAlpha
    BlzFrameGetAlpha
    BlzFrameSetSpriteAnimate
    BlzFrameSetTexture
    BlzFrameSetScale
    BlzFrameSetTooltip
    BlzFrameCageMouse
    BlzFrameSetValue
    BlzFrameGetValue
    BlzFrameSetMinMaxValue
    BlzFrameSetStepSize
    BlzFrameSetSize
    BlzFrameSetVertexColor
    BlzFrameSetLevel
    BlzFrameSetParent
    BlzFrameGetParent
    BlzFrameGetHeight
    BlzFrameGetWidth
    BlzFrameSetFont
    BlzFrameSetTextAlignment
    BlzFrameGetChildrenCount
    BlzFrameGetChild
    BlzTriggerRegisterFrameEvent
    BlzGetTriggerFrame
    BlzGetTriggerFrameEvent
    BlzGetTriggerFrameValue
    BlzGetTriggerFrameText
    BlzTriggerRegisterPlayerSyncEvent
    BlzSendSyncData
    BlzGetTriggerSyncPrefix
    BlzGetTriggerSyncData
    BlzTriggerRegisterPlayerKeyEvent
    BlzGetTriggerPlayerKey
    BlzGetTriggerPlayerMetaKey
    BlzGetTriggerPlayerIsKeyDown
    BlzSetMousePos
    BlzGetLocalClientWidth
    BlzGetLocalClientHeight
    BlzIsLocalClientActive
    BlzGetMouseFocusUnit
    BlzChangeMinimapTerrainTex
    BlzGetSpecialEffectScale
    BlzSetSpecialEffectMatrixScale
    BlzResetSpecialEffectMatrix
    BlzGetUnitAbility
    BlzGetUnitAbilityByIndex
    BlzGetAbilityId
    BlzDisplayChatMessage
    BlzPauseUnitEx
    BlzFourCC2S
    BlzS2FourCC
    BlzSetUnitFacingEx
    BlzBitOr
    BlzBitAnd
    BlzBitXor
    BlzGetAbilityBooleanField
    BlzGetAbilityIntegerField
    BlzGetAbilityRealField
    BlzGetAbilityStringField
    BlzGetAbilityBooleanLevelField
    BlzGetAbilityIntegerLevelField
    BlzGetAbilityRealLevelField
    BlzGetAbilityStringLevelField
    BlzGetAbilityBooleanLevelArrayField
    BlzGetAbilityIntegerLevelArrayField
    BlzGetAbilityRealLevelArrayField
    BlzGetAbilityStringLevelArrayField
    BlzSetAbilityBooleanField
    BlzSetAbilityIntegerField
    BlzSetAbilityRealField
    BlzSetAbilityStringField
    BlzSetAbilityBooleanLevelField
    BlzSetAbilityIntegerLevelField
    BlzSetAbilityRealLevelField
    BlzSetAbilityStringLevelField
    BlzSetAbilityBooleanLevelArrayField
    BlzSetAbilityIntegerLevelArrayField
    BlzSetAbilityRealLevelArrayField
    BlzSetAbilityStringLevelArrayField
    BlzAddAbilityBooleanLevelArrayField
    BlzAddAbilityIntegerLevelArrayField
    BlzAddAbilityRealLevelArrayField
    BlzAddAbilityStringLevelArrayField
    BlzRemoveAbilityBooleanLevelArrayField
    BlzRemoveAbilityIntegerLevelArrayField
    BlzRemoveAbilityRealLevelArrayField
    BlzRemoveAbilityStringLevelArrayField
    BlzGetItemBooleanField
    BlzGetItemIntegerField
    BlzGetItemRealField
    BlzGetItemStringField
    BlzSetItemBooleanField
    BlzSetItemIntegerField
    BlzSetItemRealField
    BlzSetItemStringField
    BlzGetUnitBooleanField
    BlzGetUnitIntegerField
    BlzGetUnitRealField
    BlzGetUnitStringField
    BlzSetUnitBooleanField
    BlzSetUnitIntegerField
    BlzSetUnitRealField
    BlzSetUnitStringField
    BlzGetUnitWeaponBooleanField
    BlzGetUnitWeaponIntegerField
    BlzGetUnitWeaponRealField
    BlzGetUnitWeaponStringField
    BlzSetUnitWeaponBooleanField
    BlzSetUnitWeaponIntegerField
    BlzSetUnitWeaponRealField
    BlzSetUnitWeaponStringField
    BlzQueueImmediateOrderById
    BlzQueuePointOrderById
    BlzQueueTargetOrderById
    BlzQueueInstantPointOrderById
    BlzQueueInstantTargetOrderById
    BlzQueueBuildOrderById
    BlzQueueNeutralImmediateOrderById
    BlzQueueNeutralPointOrderById
    BlzQueueNeutralTargetOrderById
    BlzGetUnitOrderCount
    BlzUnitClearOrders
    BlzUnitForceStopOrder
2
18
1 год назад
2
Такой вопрос - как быть с патчингом ujapi? Допустим, человек начал делать карту на ujapi позапрошлой версии, написал много кода, а вышло обновление, где часть нативок удалена. Соответственно код у человека перестал работать, потому что вызывает старые нативки, а их не стало. Как быть с этим?
0
20
1 год назад
0
Такой вопрос - как быть с патчингом ujapi? Допустим, человек начал делать карту на ujapi позапрошлой версии, написал много кода, а вышло обновление, где часть нативок удалена. Соответственно код у человека перестал работать, потому что вызывает старые нативки, а их не стало. Как быть с этим?
Ручками править, как же ещё? Удаления нативок по идее уже завершены, ибо оставлять совсем бесполезные нативки не хотелось. Да и что World Editor что моя UjAPI в дев моде буквально будут указывать на какой строке не хватает функции.
2
18
1 год назад
2
Unryze, неудобно. Если у него удалённая нативка вызывается в коде в 50 местах, кучу кода править придётся... ну если удалений уже не будет, тогда ок)
1
29
1 год назад
Отредактирован nazarpunk
1
Если у него удалённая нативка вызывается в коде в 50 местах, кучу кода править придётся...
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.