UjAPI

UjAPI — полноценная модификация для Warcraft III версий 1.24e/1.26а/1.27a/1.27b/1.28f кардинально расширяющая функционал игры, добавляющая новые native-функции и типы доступные в редакторе, исправляющая известные проблемы (утечки, неработающие функции и т.п.)
Дополнительно планируется интегрировать и другие проекты, такие как UjAPI - AngelScript, War3 LUA.
В данный момент для тестов и нахождения недочётов доступен альфа-релиз.
Лауреат премии 2023 года
347 7 869
20
Вышла новая версия!
Прокрутить к ресурсу

v1.0.39.142

  1. Новые Типы:
    type renderstage extends handle
  2. Новые Конверторы:
    constant native ConvertRenderStage takes integer i returns renderstage
  3. Новые Константы:
    constant renderstage RENDER_STAGE_SKYBOX = ConvertRenderStage(0)
    constant renderstage RENDER_STAGE_TERRAIN = ConvertRenderStage(1)
    constant renderstage RENDER_STAGE_FOG_OF_WAR = ConvertRenderStage(2)
    constant renderstage RENDER_STAGE_TERRAIN_SHADOW = ConvertRenderStage(3)
    constant renderstage RENDER_STAGE_WATER_SHADOW = ConvertRenderStage(4)
    constant renderstage RENDER_STAGE_BLIGHT = ConvertRenderStage(5)
    constant renderstage RENDER_STAGE_WEATHER = ConvertRenderStage(6)
    constant renderstage RENDER_STAGE_SELECTION_CIRCLE = ConvertRenderStage(7)
    constant renderstage RENDER_STAGE_INDICATOR = ConvertRenderStage(8)
    constant renderstage RENDER_STAGE_FOOTPRINT = ConvertRenderStage(9)
    constant renderstage RENDER_STAGE_DOODAD = ConvertRenderStage(10)
    constant renderstage RENDER_STAGE_SPRITE = ConvertRenderStage(11)
    constant renderstage RENDER_STAGE_SELECTION_SPRITE = ConvertRenderStage(12)
    constant renderstage RENDER_STAGE_DECORATION = ConvertRenderStage(13)
    constant renderstage RENDER_STAGE_WATER = ConvertRenderStage(14)
    constant renderstage RENDER_STAGE_SELECTION_BOX = ConvertRenderStage(15)
    constant renderstage RENDER_STAGE_TEXTURE = ConvertRenderStage(16)
    constant renderstage RENDER_STAGE_OCCLUSION_MASK = ConvertRenderStage(17)
    constant renderstage RENDER_STAGE_BUILDING = ConvertRenderStage(18)
    constant renderstage RENDER_STAGE_UBERSPLAT = ConvertRenderStage(19)
    constant renderstage RENDER_STAGE_LIGHTNING = ConvertRenderStage(20)
    constant renderstage RENDER_STAGE_TEXTTAG = ConvertRenderStage(21)
  4. Новые Нативные Функции:
    native GetFPS takes nothing returns real

    native GetAttackSpeedMinBonus takes nothing returns real
    native SetAttackSpeedMinBonus takes real value returns nothing
    native GetAttackSpeedMaxBonus takes nothing returns real
    native SetAttackSpeedMaxBonus takes real value returns nothing
    native GetMoveSpeedMinAllowed takes nothing returns real
    native SetMoveSpeedMinAllowed takes real value returns nothing
    native GetMoveSpeedMaxAllowed takes nothing returns real
    native SetMoveSpeedMaxAllowed takes real value returns nothing

    native IsSelectionEnabled takes nothing returns boolean
    native EnableSelection takes boolean enable returns nothing
    native IsSelectionCircleEnabled takes nothing returns boolean
    native EnableSelectionCircle takes boolean enable returns nothing
    native IsTargetIndicatorEnabled takes nothing returns boolean
    native EnableTargetIndicator takes boolean enable returns nothing
    native IsRenderStage takes renderstage renderStage returns boolean
    native EnableRenderStage takes renderstage renderStage, boolean enable returns nothing
    native IsStatbarEnabled takes nothing returns boolean
    native EnableStatbar takes boolean enable returns nothing

    native HandleListGetSpriteCount takes handlelist whichHandleList returns integer
    native HandleListGetSpriteByIndex takes handlelist whichHandleList, integer index returns sprite
    native HandleListGetFilterSprite takes nothing returns sprite
    native HandleListGetEnumSprite takes nothing returns sprite

    native SaveSpriteHandle takes hashtable table, integer parentKey, integer childKey, sprite whichsprite returns boolean
    native SaveDoodadHandle takes hashtable table, integer parentKey, integer childKey, doodad whichDoodad returns boolean
    native SaveTextFileHandle takes hashtable table, integer parentKey, integer childKey, textfilehandle whichFile returns boolean
    native LoadSpriteHandle takes hashtable table, integer parentKey, integer childKey returns sprite
    native LoadDoodadHandle takes hashtable table, integer parentKey, integer childKey returns doodad
    native LoadTextFileHandle takes hashtable table, integer parentKey, integer childKey returns textfilehandle
  5. Исправлена критическая ошибка при создании SIMPLETEXT/SIMPLETEXTURE через CreateFrame/CreateFrameByType с родителем не являющимся простым фреймом.
  6. Исправлена IsFrameVisible для SimpleFrames, всегда возвращающая "истину".
31
native SetDestructableZ takes destructable whichDestructable, real z returns nothing
Блин, буквально вчера сетовал, что нет такой функции. Прям мысли читаешь.
20
Вышла новая версия!
Прокрутить к ресурсу

v1.0.38.140

  1. Новые Нативные Функции:
    native MathRealModulo takes real dividend, real divisor returns real
    native MathIntegerModulo takes integer dividend, integer divisor returns integer
    Note: I actually registered these natives long time ago, but forgot to add them to common.j.
    native GetSpriteModel takes sprite whichSprite returns string

    native GetSpecialEffectModel takes effect whichEffect returns string

    native GetTrackableModel takes trackable whichTrackable returns string

    native GetDestructableVariation takes destructable whichDestructable returns integer
    native SetDestructableVariation takes destructable whichDestructable, integer variation returns nothing
    native SetDestructableVariationEx takes destructable whichDestructable, integer variation, boolean ignoreStateCheck returns nothing ignoreStateCheck will skip checking for dead/alive variations of the model.
    native IsDestructableBlighted takes destructable whichDestructable returns boolean
    native SetDestructableBlighted takes destructable whichDestructable, boolean flag returns nothing
    native SetDestructablePositionWithZ takes destructable whichDestructable, real x, real y, real z returns nothing
    native SetDestructableZ takes destructable whichDestructable, real z returns nothing
    native GetDestructableModel takes destructable whichDestructable returns string

    native GetItemModel takes item whichItem returns string

    native SetUnitVisibleByPlayer takes unit whichUnit, player whichPlayer, boolean flag returns nothing
    native SetUnitDetectableByPlayer takes unit whichUnit, player whichPlayer, boolean flag returns nothing
    native GetUnitModel takes unit whichUnit returns string

    native GetProjectileModel takes projectile whichProjectile returns string

    native GetFrameSpriteModel takes framehandle whichFrame returns string
  2. Удалённые Нативные Функции:
    native GetUnitLocustFlag takes unit whichUnit returns integer
  3. Потенциально исправлена ошибка Jass Logger'а, ввиду которой иногда неправильно обрабатывался байткод.
  4. Было переделано чтение чексуммы скриптов, теперь оно должно быть более "мягким" для карт, у которых нет war3map.j.
  5. Исправлен парсер w3i, ввиду которого неправильно обрабатывался заголовок/подзаголовок/текст загрузочных экранов карт/кампаний.
  6. Удалён лимит пищи в 300 единиц.
  7. Исправлены все получатели/установщики Z для спрайтов/моделей и так далее. Поломка была создана из-за маленькой ошибки.
20
Вышла новая версия!
Прокрутить к ресурсу

v1.0.37.138

  1. Исправлена критическая ошибка от SetSpecialEffectX/Y/Z.
    Пометка: ошибка происходила из-за обрезания старого кода, новый метод не был идеален для более простых типов агентов.
  2. Исправлено "зависание" от SetUnitModel/Ex.
    Пометка: эта ошибка происходила случайно на определённых картах.
Ресурс предназначенный для логирования изменений в проекте UjAPI, а так же для краткого ознакомления со внесёнными изменениями.
90 2 144
20
Вышла новая версия!
Прокрутить к ресурсу

v1.0.38.140

  1. Новые Нативные Функции:
    native MathRealModulo takes real dividend, real divisor returns real
    native MathIntegerModulo takes integer dividend, integer divisor returns integer
    Note: I actually registered these natives long time ago, but forgot to add them to common.j.
    native GetSpriteModel takes sprite whichSprite returns string

    native GetSpecialEffectModel takes effect whichEffect returns string

    native GetTrackableModel takes trackable whichTrackable returns string

    native GetDestructableVariation takes destructable whichDestructable returns integer
    native SetDestructableVariation takes destructable whichDestructable, integer variation returns nothing
    native SetDestructableVariationEx takes destructable whichDestructable, integer variation, boolean ignoreStateCheck returns nothing ignoreStateCheck will skip checking for dead/alive variations of the model.
    native IsDestructableBlighted takes destructable whichDestructable returns boolean
    native SetDestructableBlighted takes destructable whichDestructable, boolean flag returns nothing
    native SetDestructablePositionWithZ takes destructable whichDestructable, real x, real y, real z returns nothing
    native SetDestructableZ takes destructable whichDestructable, real z returns nothing
    native GetDestructableModel takes destructable whichDestructable returns string

    native GetItemModel takes item whichItem returns string

    native SetUnitVisibleByPlayer takes unit whichUnit, player whichPlayer, boolean flag returns nothing
    native SetUnitDetectableByPlayer takes unit whichUnit, player whichPlayer, boolean flag returns nothing
    native GetUnitModel takes unit whichUnit returns string

    native GetProjectileModel takes projectile whichProjectile returns string

    native GetFrameSpriteModel takes framehandle whichFrame returns string
  2. Удалённые Нативные Функции:
    native GetUnitLocustFlag takes unit whichUnit returns integer
  3. Потенциально исправлена ошибка Jass Logger'а, ввиду которой иногда неправильно обрабатывался байткод.
  4. Было переделано чтение чексуммы скриптов, теперь оно должно быть более "мягким" для карт, у которых нет war3map.j.
  5. Исправлен парсер w3i, ввиду которого неправильно обрабатывался заголовок/подзаголовок/текст загрузочных экранов карт/кампаний.
  6. Удалён лимит пищи в 300 единиц.
  7. Исправлены все получатели/установщики Z для спрайтов/моделей и так далее. Поломка была создана из-за маленькой ошибки.
20
Вышла новая версия!
Прокрутить к ресурсу

v1.0.37.138

  1. Исправлена критическая ошибка от SetSpecialEffectX/Y/Z.
    Пометка: ошибка происходила из-за обрезания старого кода, новый метод не был идеален для более простых типов агентов.
  2. Исправлено "зависание" от SetUnitModel/Ex.
    Пометка: эта ошибка происходила случайно на определённых картах.
Относительно краткий пример создания пик системы строго на CSimpleFrame/CSimpleRegion фреймах (за исключением превью героя) используя UjAPI и Frame API.
Алгоритмы, Наработки и Способности
18 1 130
20
Проблема в ShowFrame, изучу и постараюсь поправить. Спасибо.
Редактирование 1: Ошибку нашёл и поправил, легаси код - мать его.
31
ковыряюсь дальше с настройкой интерфейса.
Словил крит.
//! zinc
library Main {

function onInit(){
    framehandle UI;
    UI = GetOriginFrame( ORIGIN_FRAME_COMMAND_BUTTON, 5 );
    ShowFrame(UI, true);
    TriggerSleepAction(0.001); //закоментировать данную строку, чтобы словить крит
    CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE), 'hfoo', 0.0, 0.0, 270.0);
    UI = null;
}
    
}
//! endzinc

почему-то именно с ORIGIN_FRAME_COMMAND_BUTTON, с другими фреймами такого не было. Но после смены видимости кнопок команд нужно немного подождать, прежде чем создавать юнитов.
20
Вышла новая версия!
Прокрутить к ресурсу
Карта обновлена под UjAPI v1.0.37.137.