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
Borodach, карты разработанные с этими нативками работают только с лаунчером. Соответственно на iccup не поиграть. На боте надо при создании игры выбрать версию с лаунчером
18
Крашит при загрузке таблицы, Без лаунчера работает.
/ /! loaddata "data.slk"
Ошибся, совпало после добавления триггера
20
Вышла новая версия! Прокрутить к ресурсу

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
23
Такой вопрос - как быть с патчингом ujapi? Допустим, человек начал делать карту на ujapi позапрошлой версии, написал много кода, а вышло обновление, где часть нативок удалена. Соответственно код у человека перестал работать, потому что вызывает старые нативки, а их не стало. Как быть с этим?
20
Такой вопрос - как быть с патчингом ujapi? Допустим, человек начал делать карту на ujapi позапрошлой версии, написал много кода, а вышло обновление, где часть нативок удалена. Соответственно код у человека перестал работать, потому что вызывает старые нативки, а их не стало. Как быть с этим?
Ручками править, как же ещё? Удаления нативок по идее уже завершены, ибо оставлять совсем бесполезные нативки не хотелось. Да и что World Editor что моя UjAPI в дев моде буквально будут указывать на какой строке не хватает функции.
23
Unryze, неудобно. Если у него удалённая нативка вызывается в коде в 50 местах, кучу кода править придётся... ну если удалений уже не будет, тогда ок)
30
Если у него удалённая нативка вызывается в коде в 50 местах, кучу кода править придётся...
Загруженные файлы
28
nazarpunk, ну так надо пробегаться по разным триггерам, всё равно неудобственно, и это если есть альтернатива, иначе придётся код переписывать
30
rsfghd, ну дык нечего работать в редакторе триггеров.
10
кучу кода править придётся...
Повторение, – мать учения! 🤠
20
Unryze, неудобно. Если у него удалённая нативка вызывается в коде в 50 местах, кучу кода править придётся... ну если удалений уже не будет, тогда ок)
А что ты предлагаешь? Не править косые названия и плодить клонов? И опять же, удалений было лишь 2, сейчас была мелкая правка. И если удаление нужно, значит что поделать придётся не только мне одному страдать.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.