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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
20
2 года назад
2
Unryze, Эти variabletype позволяют менять типы переменных в процессе исполнения кода, что ли? Или это просто для базы данных типов объектов? Если первое, то это очень удобно.
Кастинг типов можно делать через тайпкастеры, а так для понимания что пришло в синх триггере, получаешь тип через GetSyncedVariableType допустим 4 (Integer) и берёшь значение через GetSyncedInteger для получения значения, вот и всё.
0
19
2 года назад
0
Unryze, кастинг типов... тайпкастер... это очень тяжело для меня))) но я так понял, типы можно только определять, но не менять самому.
2
20
2 года назад
2
Unryze, кастинг типов... тайпкастер... это очень тяжело для меня))) но я так понял, типы можно только определять, но не менять самому.
Тип переменной менять то можно, но это бессмысленно на уровне джасс кода, ибо потом начнётся вакханалия, что старые данные пытаются обращаться к integer типу, а там уже сидит real.
1
37
2 года назад
1
Когда хромиум встроите?)
0
19
2 года назад
0
Unryze, Здесь согласен, но это бы упростило написание кода, чтобы не создавать кучу локалок разных типов.
3
20
2 года назад
3
Когда хромиум встроите?)
Та за шо… :(
EugeAl:
Unryze, Здесь согласен, но это бы упростило написание кода, чтобы не создавать кучу локалок разных типов.
Ну, это как раз приблизило бы к С#/JS стилю, но это потребует очень много усилий для «исправлений», которые вряд ли того стоят. :(
Ибо эта логика как раз с handle типом, который является общим, просто функции которые требует дочерний класс, его не примут, но наоборот можно. Но эту проблему решает HandleToUnit и прочие функции, что я добавил. (Это и есть тайпкаст).
0
19
2 года назад
0
Unryze, окей, понял.
0
20
2 года назад
0
EugeAl, есть lua или tstl.
Если сильно замотивтруете, мб сделаю tstl штуку, где можно писать ООП код
0
19
2 года назад
0
Kokomi, ясно, теперь и тут свой транспилятор распространяет. The cult of tstl. 😂
3
20
2 года назад
Отредактирован Unryze
3
Вышла новая версия! Прокрутить к ресурсу

v1.0.7.36

Список изменений:
  1. Добавлен Авто Апдейтер (пока что он работает в "тихом" режиме при нажатии кнопки "Yes").
  2. Исправлены критические ошибки связанные с CreateFrameByType.
  3. Исправлены критические ошибки связанные с SetFrameTexture.
  4. Исправлена нерабочая нативная функция SetFrameVertexColour связанная с CSimpleStatusBar.
  5. Исправлен NetCode обработчик, который ломался если два или более игрока одновременно отсылали пакеты.
  6. Добавлена новая опция IsNoWarnings для LUA.
  7. Настройки LUA были вынесены в отдельную секцию.
3
20
2 года назад
3
Вышла новая версия! Прокрутить к ресурсу

v1.0.8.39

  1. Новые Константы:
constant raritycontrol RARITY_QUEUE = ConvertRarityControl(2)
constant oskeytype OSKEY_LBUTTON = ConvertOsKeyType(0x01)
constant oskeytype OSKEY_RBUTTON = ConvertOsKeyType(0x02)
constant oskeytype OSKEY_CANCEL = ConvertOsKeyType(0x03)
constant oskeytype OSKEY_MBUTTON = ConvertOsKeyType(0x04)
constant oskeytype OSKEY_XBUTTON1 = ConvertOsKeyType(0x05)
constant oskeytype OSKEY_XBUTTON2 = ConvertOsKeyType(0x06)
constant oskeytype OSKEY_UNDEFINED = ConvertOsKeyType(0x07)
constant integer META_KEY_NONE = 0
constant integer META_KEY_SHIFT = 1
constant integer META_KEY_CONTROL = 2
constant integer META_KEY_ALT = 4
constant integer META_KEY_WINDOWS = 8
constant playerevent EVENT_PLAYER_MOUSE_DOWN = ConvertPlayerEvent(305)
constant playerevent EVENT_PLAYER_MOUSE_UP = ConvertPlayerEvent(306)
constant playerevent EVENT_PLAYER_MOUSE_MOVE = ConvertPlayerEvent(307)
constant playerevent EVENT_PLAYER_SYNC_DATA = ConvertPlayerEvent(309) currently not active
constant playerevent EVENT_PLAYER_KEY = ConvertPlayerEvent(311)
constant playerevent EVENT_PLAYER_KEY_DOWN = ConvertPlayerEvent(312)
constant playerevent EVENT_PLAYER_KEY_UP = ConvertPlayerEvent(313)
  1. Новые Нативные Функции:
native GetFramePriority takes framehandle whichFrame returns integer
native SetFrameSpriteAnimationWithRarityByIndex takes framehandle whichFrame, integer animIndex, integer rarity returns nothing
native SetFrameSpriteAnimationByIndex takes framehandle whichFrame, integer animIndex returns nothing
native QueueFrameSpriteAnimationByIndex takes framehandle whichFrame, integer animIndex returns nothing
native SetFrameSpriteAnimationWithRarity takes framehandle whichFrame, string animationName, integer rarity returns nothing
native SetFrameSpriteAnimation takes framehandle whichFrame, string animationName returns nothing
native QueueFrameSpriteAnimation takes framehandle whichFrame, string animationName returns nothing
native GetTriggerSyncPrefix takes nothing returns string
native GetTriggerSyncData takes nothing returns string
native SendSyncData takes string prefix, string data returns boolean
native TriggerRegisterPlayerSyncEvent takes trigger whichTrigger, player whichPlayer, string prefix, boolean fromServer returns event
native GetTriggerPlayerKey takes nothing returns oskeytype
native GetTriggerPlayerMetaKey takes nothing returns integer
native GetTriggerPlayerIsKeyDown takes nothing returns boolean
native TriggerRegisterPlayerKeyEvent takes trigger whichTrigger, player whichPlayer, oskeytype whichKey, integer whichMetaKey, boolean isKeyDown returns event
native PauseUnitEx takes unit whichUnit, boolean flag returns nothing this is pretty much a copy of SetUnitStunned
native GetTriggerPlayerMouseWorldX takes nothing returns real
native GetTriggerPlayerMouseWorldY takes nothing returns real
native GetTriggerPlayerMouseWorldZ takes nothing returns real
native GetTriggerPlayerMouseScreenX takes nothing returns real
native GetTriggerPlayerMouseScreenY takes nothing returns real
  1. Исправлена критическая ошибка, если были слишком быстро/одновременно вызваны новые нативные функции синхронизации (как пример вызов синхронизации по ,01 таймеру).
  2. Все нативные функции связанные с анимациями с раритетом теперь используют тип raritycontrol тип вместо integer.
  3. Исправлена нативная функция SetUnitStunned, она более не перекрывает саму себя и не устанавливает неверные флаги.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.