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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Этот комментарий удален
38
Думал, формат времени из строки-шаблона планируешь делать (есть готовый strftime)
20
Думал, формат времени из строки-шаблона планируешь делать (есть готовый strftime)
Это я может и добавлю тоже, просто это стандартное получение просто времени, а дальше юзверь может что угодно делать. Это Jass, а не lua, тут нужна максимальная простота. :D
19
На счёт Jass, а не Lua, я хз, как будет работать синхронизация на Lua, т.к. ты её реализовал по имени переменной. :D
20
На счёт Jass, а не Lua, я хз, как будет работать синхронизация на Lua, т.к. ты её реализовал по имени переменной. :D
Оно строго берёт значения из джасс, ей пофиг на луа. Технически я могу и под луа это сделать... но желания 0.
19
Я так и понял. Не проще ли тогда было сделать, чтобы она принимала не название переменной, а её значение?

Хотяяя, с другой стороны, у нас есть доступ к Jass переменным из Lua, так что временно пофиг. 😁
20
Я так и понял. Не проще ли тогда было сделать, чтобы она принимала не название переменной, а её значение?

Хотяяя, с другой стороны, у нас есть доступ к Jass переменным из Lua, так что временно пофиг. 😁
И куда мне это значение синхать? Пример кода:
globals
    integer GlobalInteger = 0
endglobals

function TestSync takes nothing returns nothing
    if GetLocalPlayer( ) == Player( 0 ) then
        set GlobalInteger = 999
        call SyncInteger( "GlobalInteger" )
    endif
endfunction
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.6.34

  1. Новые Типы:
type variabletype extends handle
  1. Новые Конверторы:
constant native ConvertVariableType takes integer i returns variabletype
  1. Новые Константы:
constant variabletype VARIABLE_TYPE_NOTHING = ConvertVariableType(0)
constant variabletype VARIABLE_TYPE_UNKNOWN = ConvertVariableType(1)
constant variabletype VARIABLE_TYPE_NULL = ConvertVariableType(2)
constant variabletype VARIABLE_TYPE_CODE = ConvertVariableType(3)
constant variabletype VARIABLE_TYPE_INTEGER = ConvertVariableType(4)
constant variabletype VARIABLE_TYPE_REAL = ConvertVariableType(5)
constant variabletype VARIABLE_TYPE_STRING = ConvertVariableType(6)
constant variabletype VARIABLE_TYPE_HANDLE = ConvertVariableType(7)
constant variabletype VARIABLE_TYPE_BOOLEAN = ConvertVariableType(8)
constant variabletype VARIABLE_TYPE_INTEGER_ARRAY = ConvertVariableType(9)
constant variabletype VARIABLE_TYPE_REAL_ARRAY = ConvertVariableType(10)
constant variabletype VARIABLE_TYPE_STRING_ARRAY = ConvertVariableType(11)
constant variabletype VARIABLE_TYPE_HANDLE_ARRAY = ConvertVariableType(12)
constant variabletype VARIABLE_TYPE_BOOLEAN_ARRAY = ConvertVariableType(13)
  1. Новые Нативные Функции:
native GetSyncedVariableType takes nothing returns variabletype
native GetSyncedVariableName takes nothing returns string
native GetSyncedInteger takes nothing returns integer
native GetSyncedReal takes nothing returns real
native GetSyncedString takes nothing returns string
native GetSyncedHandle takes nothing returns handle
native GetSyncedBoolean takes nothing returns boolean
native TriggerRegisterPlayerVariableSyncEvent takes trigger whichTrigger, player whichPlayer, string variableName returns event
native GetSyncSavedVariableType takes nothing returns variabletype
native GetSyncSavedHashtable takes nothing returns hashtable
native GetSyncSavedParentKey takes nothing returns integer
native GetSyncSavedChildKey takes nothing returns integer
native TriggerRegisterPlayerHashtableDataSyncEvent takes trigger whichTrigger, player whichPlayer, hashtable whichHashtable returns event
native GetTriggerFrameVariableType takes nothing returns variabletype
native GetTriggerFrameInteger takes nothing returns integer
native GetTriggerFrameReal takes nothing returns real
native GetTriggerFrameBoolean takes nothing returns boolean
native GetTriggerFrameString takes nothing returns string
native GetMouseScreenX takes nothing returns real
native GetMouseScreenY takes nothing returns real
native SetMouseScreenX takes real x returns nothing
native SetMouseScreenY takes real y returns nothing
native SetMouseScreenPosition takes real x, real y returns nothing
native GetMouseScreenPixelX takes nothing returns integer
native GetMouseScreenPixelY takes nothing returns integer
native SetMouseScreenPixelX takes integer x returns nothing
native SetMouseScreenPixelY takes integer y returns nothing
native SetMouseScreenPixelPosition takes integer x, integer y returns nothing
native GetMouseWorldX takes nothing returns real
native GetMouseWorldY takes nothing returns real
native GetMouseWorldZ takes nothing returns real
  1. Исправлен обработчик Net пакетов синхронизации, теперь он более не сталкивается с оригинальным обработчиком, приводя к потере пакетов.
  2. Исправлена критическая ошибка вызываемая этими нативными функциями:
native SilenceAbility takes ability whichAbility, boolean hide, boolean disable returns nothing
native UnsilenceAbility takes ability whichAbility, boolean show, boolean enable returns nothing
23
Unryze, Эти variabletype позволяют менять типы переменных в процессе исполнения кода, что ли? Или это просто для базы данных типов объектов? Если первое, то это очень удобно.
20
Unryze, Эти variabletype позволяют менять типы переменных в процессе исполнения кода, что ли? Или это просто для базы данных типов объектов? Если первое, то это очень удобно.
Кастинг типов можно делать через тайпкастеры, а так для понимания что пришло в синх триггере, получаешь тип через GetSyncedVariableType допустим 4 (Integer) и берёшь значение через GetSyncedInteger для получения значения, вот и всё.
23
Unryze, кастинг типов... тайпкастер... это очень тяжело для меня))) но я так понял, типы можно только определять, но не менять самому.
20
Unryze, кастинг типов... тайпкастер... это очень тяжело для меня))) но я так понял, типы можно только определять, но не менять самому.
Тип переменной менять то можно, но это бессмысленно на уровне джасс кода, ибо потом начнётся вакханалия, что старые данные пытаются обращаться к integer типу, а там уже сидит real.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.