UjAPI

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

v1.1.13.208

1. Новые Константы:
	constant integer					CHAT_RECIPIENT_UNKNOWN										= 4
2. Новые Нативные Функции:
	native DisplayChatMessageEx								takes player whichPlayer, integer recipient, real duration, boolean addToLog, string message returns nothing
	//
	native UnitGetTrainingProgress 							takes unit whichUnit returns real
	native UnitSetTrainingProgress 							takes unit whichUnit, integer trainingPercentage returns nothing
	native UnitGetTrainingRemainingTime						takes unit whichUnit returns real
	native UnitSetTrainingRemainingTime						takes unit whichUnit, real time returns nothing
	native UnitGetTrainingTypeIdAt 							takes unit whichUnit, integer index returns integer
	native UnitCancelTrainingAt 							takes unit whichUnit, integer index returns nothing
	native UnitSetTrainingTypeIdAt 							takes unit whichUnit, integer index, integer typeId returns nothing
	//
	native UnitGetResearchProgress 							takes unit whichUnit returns real
	native UnitSetResearchProgress 							takes unit whichUnit, integer trainingPercentage returns nothing
	native UnitGetResearchRemainingTime						takes unit whichUnit returns real
	native UnitSetResearchRemainingTime						takes unit whichUnit, real time returns nothing
	native UnitGetResearchTypeIdAt 							takes unit whichUnit, integer index returns integer
	native UnitCancelResearchAt 							takes unit whichUnit, integer index returns nothing
	native UnitSetResearchTypeIdAt 							takes unit whichUnit, integer index, integer typeId returns nothing
3. Исправлена неверная обработка damagetype в UnitDamageTarget.
4. Исправлены два неверных оффсета в АнтиХаке для 1.26a.
5. Добавлено отображение сообщения о десинхронизации, когда какой-либо игрок вылетит от десинхронизации.
6. Переисправлена ошибка по которой фреймы предметов не перерисовывались после HideOriginFrames.
7. Исправлена GetDestructableName всегда возвращающая "Default String" вместо действительного значения.
8. Исправлена GetItemName всегда возвращающая "Default String" вместо действительного значения.
9. Исправлена GetUnitName всегда возвращающая "Default String" вместо действительного значения.
10. Исправлена GetHeroProperName всегда возвращающая "Default String" вместо действительного значения.
11. Добавлены CLI настройки AngelScript.
20
Вышла новая версия!
Прокрутить к ресурсу

v1.1.12.205

1. Новые Нативные Функции:
	native BenchmarkStart									takes nothing returns nothing
	native BenchmarkEnd										takes nothing returns nothing
	native BenchmarkReset									takes nothing returns nothing
	native BenchmarkGetElapsed								takes integer benchType returns string // 0 for nanoseconds, 1 for microseconds, 2 for milliseconds
	//
	native GetFrameScreenX									takes framehandle whichFrame returns real
	native GetFrameScreenY									takes framehandle whichFrame returns real
	native GetFrameRelativePointParent						takes framehandle whichFrame, framepointtype point returns framehandle
	native GetFrameRelativePointType						takes framehandle whichFrame, framepointtype point returns framepointtype
	native GetFrameRelativePointX							takes framehandle whichFrame, framepointtype point returns real
	native GetFrameRelativePointY							takes framehandle whichFrame, framepointtype point returns real
	native GetFrameAbsolutePointX							takes framehandle whichFrame, framepointtype point returns real
	native GetFrameAbsolutePointY							takes framehandle whichFrame, framepointtype point returns real
	native GetFrameBackdrop									takes framehandle whichFrame, integer backdropId returns framehandle
	native IsFrameBorderEnabled 							takes framehandle whichFrame, integer backdropId returns boolean
	native SetFrameBorderEnabled 							takes framehandle whichFrame, integer backdropId, boolean isEnable returns nothing
	native GetFrameSlider 									takes framehandle whichFrame returns framehandle
	native AddFrameSlider 									takes framehandle whichFrame returns framehandle
2. Удалён стандартный темплейт LISTBOX, все настройки теперь возможны через API.
	Пометка: полная настройка возможна через код.
3. Удалён стандартный темплейт CHECKBOX, все настройки теперь возможны через API.
	Пометка: полная настройка возможна через код.
4. SetFrameFont теперь работает с CTextArea.
5. SetFrameText теперь работает с CTextArea.
6. AddFrameText теперь работает с CTextArea.
Сравнение скриптовых языков Jass, lua и AngelScript путём измерения скорости через Benchmark API от UjAPI.
Алгоритмы, Наработки и Способности
8 536
30
ScorpioT1000, мы таким образом к примеру избавляемся от нативок. Но тест всё равно больше синтетический.
38
nazarpunk, тоесть мы сначала юзаем поиск z в рантайме, пока в фоне считается карта, а когда готово - переключаем низкоуровневые функции на работу с кешем?
30
Данное сравнение не конечное и другие сравнения будут добавлены, но для более объективных тестов хотелось бы увидеть примеры от вас - читателей.
Довольно редкий, но показательный пример - кэш Z. Нужно пройтись по всей карте с шагом 8/16/32/64, получить высоту и положить в хт/таблицу/коллекцию.

О системе

Относительно краткий пример создания ListBox фрейма используя UjAPI и Frame API.
Главным бонусом UjAPI в данной наработке является полноценный API специально добавленный для обработки ListBox фреймов, который позволяет просто на просто отказаться от fdf, а так же позволяет не только добавлять…
Алгоритмы, Наработки и Способности
4 633
20
Вышла новая версия!
Прокрутить к ресурсу
Карта обновлена под UjAPI v1.1.12.205.
Теперь настройка всего фрейма делается через Jass код, ввиду удаления стандартного темплейта.
Ресурс предназначенный для логирования изменений в проекте UjAPI, а так же для краткого ознакомления со внесёнными изменениями.
90 2 144
20
Вышла новая версия!
Прокрутить к ресурсу

v1.1.12.205

1. Новые Нативные Функции:
	native BenchmarkStart									takes nothing returns nothing
	native BenchmarkEnd										takes nothing returns nothing
	native BenchmarkReset									takes nothing returns nothing
	native BenchmarkGetElapsed								takes integer benchType returns string // 0 for nanoseconds, 1 for microseconds, 2 for milliseconds
	//
	native GetFrameScreenX									takes framehandle whichFrame returns real
	native GetFrameScreenY									takes framehandle whichFrame returns real
	native GetFrameRelativePointParent						takes framehandle whichFrame, framepointtype point returns framehandle
	native GetFrameRelativePointType						takes framehandle whichFrame, framepointtype point returns framepointtype
	native GetFrameRelativePointX							takes framehandle whichFrame, framepointtype point returns real
	native GetFrameRelativePointY							takes framehandle whichFrame, framepointtype point returns real
	native GetFrameAbsolutePointX							takes framehandle whichFrame, framepointtype point returns real
	native GetFrameAbsolutePointY							takes framehandle whichFrame, framepointtype point returns real
	native GetFrameBackdrop									takes framehandle whichFrame, integer backdropId returns framehandle
	native IsFrameBorderEnabled 							takes framehandle whichFrame, integer backdropId returns boolean
	native SetFrameBorderEnabled 							takes framehandle whichFrame, integer backdropId, boolean isEnable returns nothing
	native GetFrameSlider 									takes framehandle whichFrame returns framehandle
	native AddFrameSlider 									takes framehandle whichFrame returns framehandle
2. Удалён стандартный темплейт LISTBOX, все настройки теперь возможны через API.
	Пометка: полная настройка возможна через код.
3. Удалён стандартный темплейт CHECKBOX, все настройки теперь возможны через API.
	Пометка: полная настройка возможна через код.
4. SetFrameFont теперь работает с CTextArea.
5. SetFrameText теперь работает с CTextArea.
6. AddFrameText теперь работает с CTextArea.
Относительно краткий пример создания пик системы строго на CSimpleFrame/CSimpleRegion фреймах (за исключением превью героя) используя UjAPI и Frame API.
Алгоритмы, Наработки и Способности
18 1 130
20
Вышла новая версия!
Прокрутить к ресурсу
Карта обновлена под UjAPI v1.1.8.178, система выбора теперь использует SIMPLEGRID для выставления фреймов.
Относительно краткий пример создания системы магазина строго на CSimpleFrame/CSimpleRegion фреймах используя UjAPI и Frame API.
Алгоритмы, Наработки и Способности
7 876
20
Вышла новая версия!
Прокрутить к ресурсу
Карта обновлена под UjAPI v1.1.8.178, система выбора теперь использует SIMPLEGRID для выставления фреймов.