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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
4
20
2 месяца назад
4
Вышла новая версия!

v1.1.11.199

1. Добавлен AngelScript - новый скрпитовый язык с синтаксическим стилем C++ у которого есть строгая типизация как у Jass.
	Пометка: вы можете сравнить этот язык с vJass в плане синтаксиса. Этот язык во много раз быстрее Jass и имеет множество современных парадигм.
2. Новые Константы:
	constant gameevent					EVENT_GAME_AGENT_DESTROYED									= ConvertGameEvent(800)
	constant gameevent					EVENT_GAME_AGENT_ARRIVAL									= ConvertGameEvent(801)
	constant gameevent					EVENT_GAME_AGENT_CANT_PATH									= ConvertGameEvent(802)
	constant gameevent					EVENT_GAME_AGENT_WARP_START									= ConvertGameEvent(803)
	constant gameevent					EVENT_GAME_AGENT_WARP_END									= ConvertGameEvent(804)
	constant gameevent					EVENT_GAME_WIDGET_DAMAGING									= ConvertGameEvent(805)
	constant gameevent					EVENT_GAME_WIDGET_DAMAGED									= ConvertGameEvent(806)
	constant gameevent					EVENT_GAME_WIDGET_DEATH										= ConvertGameEvent(807)
	//
	constant playerevent				EVENT_PLAYER_WIDGET_TRACK									= ConvertPlayerEvent(320)
	constant playerevent				EVENT_PLAYER_WIDGET_GHOST_TRACK								= ConvertPlayerEvent(321)
	constant playerevent				EVENT_PLAYER_WIDGET_CLICK									= ConvertPlayerEvent(322)
	constant playerevent				EVENT_PLAYER_WIDGET_GHOST_CLICK								= ConvertPlayerEvent(323)
	constant playerevent				EVENT_PLAYER_TERRAIN_CLICK									= ConvertPlayerEvent(324)
3. Новые Нативные Функции:
	native HexToInt											takes string hex returns integer
	//
	native ResetAbilityOrder								takes ability whichAbility returns nothing
	//
	native GetWidgetZ										takes widget whichWidget returns real
	native SetWidgetZ										takes widget whichWidget, real z returns nothing
	native ResetWidgetZ										takes widget whichWidget returns nothing // returns Z control to game.
	native GetWidgetHeight									takes widget whichWidget returns real
	native SetWidgetHeight									takes widget whichWidget, real height returns nothing
	native SetWidgetPositionWithZ							takes widget whichWidget, real x, real y, real z returns nothing
	//
	native GetDestructableHeight							takes destructable whichDestructable returns real
	native SetDestructableHeight							takes destructable whichDestructable, real height returns nothing
	native GetDestructableZ									takes destructable whichDestructable returns real
	native ResetDestructableZ								takes destructable whichDestructable returns nothing // returns Z control to game.
	//
	constant native GetTriggerItem							takes nothing returns item
	native GetItemOwner										takes item whichItem returns unit
	native GetItemZ											takes item whichItem returns real
	native SetItemX											takes item whichItem, real x returns nothing
	native SetItemY											takes item whichItem, real y returns nothing
	native SetItemZ											takes item whichItem, real z returns nothing
	native SetItemPositionWithZ								takes item whichItem, real x, real y, real z returns nothing
	native ResetItemZ										takes item whichItem returns nothing // returns Z control to game.
	native GetItemHeight									takes item whichItem returns real
	native SetItemHeight									takes item whichItem, real height returns nothing
	//
	native SaveBuffHandle									takes hashtable table, integer parentKey, integer childKey, buff whichBuff returns boolean
	native SaveWar3Image									takes hashtable table, integer parentKey, integer childKey, war3image whichWar3Image returns boolean
	native LoadBuffHandle									takes hashtable table, integer parentKey, integer childKey returns buff
	native LoadWar3ImageHandle								takes hashtable table, integer parentKey, integer childKey returns war3image
	//
	native SetUnitPositionEx								takes unit whichUnit, boolean breakOrder, boolean checkPathing, real x, real y, real z returns nothing
	native SetUnitPositionWithZ								takes unit whichUnit, real x, real y, real z returns nothing
	native SetUnitZ											takes unit whichUnit, real z returns nothing
	native ResetUnitZ										takes unit whichUnit returns nothing // returns Z control to game.
	native GetUnitHeight									takes unit whichUnit returns real
	native SetUnitHeight									takes unit whichUnit, real height returns nothing
	native SetUnitResourceCurrent							takes unit whichUnit, integer amount returns nothing // only works on units that can "keep" gathered resources.
	native GetUnitResourceCapacity							takes unit whichUnit, integer resourceType returns integer // 0 for gold, 1 for lumber.
	native SetUnitResourceCapacity							takes unit whichUnit, integer resourceType, integer amount returns nothing // only works on units that can "keep" gathered resources.
	native GetUnitResourcePerGather							takes unit whichUnit, integer resourceType returns integer
	native SetUnitResourcePerGather							takes unit whichUnit, integer resourceType, integer amount returns nothing // for gold simply changes capacity
	native GetUnitResourceGatherInterval					takes unit whichUnit, returns real // wisp only
	native SetUnitResourceGatherInterval					takes unit whichUnit, real interval returns nothing
4. Удалён предыдущий механизм обработки netCode пакетов, который удалял дубликаты "событий", для избежания лимита в 1024 байта.
	Пометка: это был достаточно медленный процесс, который не особо нужен после полноценной переделки обработки NetCode.
5. Лимит в 1024 байтов был зафиксирован для нестадартных NetCode событий, так как если лимит был достигнут, то игра отвергала оставшиеся пакеты.
	Пометка: превышение лимита может вызывать проблемы, такие как неправильная обработка полученных пакетов, типа приказов юнитов и так далее.
6. Исправлена критическая ошибка от использования предметов на 1.27a/1.27b/1.28f.
7. Исправлена критическая ошибка от переноса предмета в другой слот на 1.27a/1.27b/1.28f.
8. Добавлено выведение текста загрузки UjAPI в World Editor.
9. Исправлена инвертированное поведение CBuffHowlOfTerror.
10. Исправлена критическая ошибка от SetBuffRemainingDuration на неподдерживаемых/удалённых баффах.
11. Добавлена поддержка CBuffAcidBomb в Buff API.
12. Добавлена поддержка CBuffSlowPoison в Buff API.
13. Исправлена критическая ошибка от SetFrameAlpha на 1.27a/1.27b/1.28f.
14. Исправлена GetBuffOwner всегда возвращающая 0.
15. Исправлена GetBuffTypeId всегда возвращающая 0.
16. GetUnitCurrentResources переименовано в GetUnitResourceCurrent.
17. Исправлена GetBuffIntegerField возвращающая неверные значения.
18. Исправлена SetBuffIntegerField устанавливающая неверные значения.
19. Исправлена CBuffRegenLife обработка DataC и DataD в Buff API.
20. Исправлена CBuffRegenMana обработка DataC и DataD в Buff API.
21. Исправлена CBuffRegeneration обработка DataC и DataE в Buff API.
22. Исправлена CBuffRejuvination обработка DataC и DataD в Buff API.
23. Исправлена CBuffDrunkenHaze обработка DataA в Buff API.
24. Исправлена CBuffLavaMonster обработка DataC и DataF в Buff API.
25. Исправлена CBuffSlowPoison обработка DataD в Buff API.
26. Исправлена критическая ошибка от SetFrameParent с CFrames на 1.27a.
27. SetFrameVertexColourEx теперь дополнительно берёт аргумент textureId.
28. SetFrameVertexColour теперь использует предыдущую декларацию SetFrameVertexColourEx без использования индекса текстуры.
29. SetFrameVertexColour and SetFrameVertexColourEx colour order fixed from ARBG to ARGB.
30. GetFrameAlpha/Ex теперь работает с CModelFrame/CBackdropFrame/CChatEditBar.
31. GetFrameAlpha/Ex теперь работает с CModelFrame/CBackdropFrame/CChatEditBar.
32. GetFrameColour/Ex теперь работает с CModelFrame/CBackdropFrame/CChatEditBar.
33. SetFrameColour/Ex/VertexColour/Ex теперь работает с CModelFrame/CBackdropFrame/CChatEditBar.
	Пометка: 30 - 33 работают только с моделями добавленными в CModelFrame/CBackdropFrame/CChatEditBar, а не на текстуры.
34. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_ABILITY_ADDED.
35. Полностью переписана внутренняя обработка EVENT_UNIT_ABILITY_ADDED.
36. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_ABILITY_REMOVED.
37. Полностью переписана внутренняя обработка EVENT_UNIT_ABILITY_REMOVED.
38. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_ABILITY_AUTOCAST_ON.
39. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_ABILITY_AUTOCAST_OFF.
40. Полностью переписана внутренняя обработка EVENT_UNIT_ABILITY_AUTOCAST_ON.
41. Полностью переписана внутренняя обработка EVENT_UNIT_ABILITY_AUTOCAST_OFF.
42. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_BUFF_RECEIVED.
43. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_BUFF_REFRESHED.
44. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_BUFF_ENDED.
45. Полностью переписана внутренняя обработка EVENT_UNIT_BUFF_RECEIVED.
46. Полностью переписана внутренняя обработка EVENT_UNIT_BUFF_REFRESHED.
47. Полностью переписана внутренняя обработка EVENT_UNIT_BUFF_ENDED.
48. Полностью переписана внутренняя обработка EVENT_WIDGET_DAMAGING.
49. Полностью переписана внутренняя обработка EVENT_WIDGET_DAMAGED.
50. Полностью переписана внутренняя обработка EVENT_WIDGET_DEATH.
51. Полностью переписана внутренняя обработка EVENT_GAME_WIDGET_DAMAGING.
52. Полностью переписана внутренняя обработка EVENT_GAME_WIDGET_DAMAGED.
53. Полностью переписана внутренняя обработка EVENT_GAME_WIDGET_DEATH.
54. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_DAMAGING.
55. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_DAMAGED.
56. Полностью переписана внутренняя обработка EVENT_UNIT_DAMAGING.
57. Полностью переписана внутренняя обработка EVENT_UNIT_DAMAGED.
58. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_PROJECTILE_LAUNCHED.
59. Полностью переписана внутренняя обработка EVENT_PLAYER_UNIT_PROJECTILE_HIT.
60. Полностью переписана внутренняя обработка EVENT_UNIT_PROJECTILE_LAUNCHED.
61. Полностью переписана внутренняя обработка EVENT_UNIT_PROJECTILE_HIT.
62. Полностью переписаны оффсеты Антихака для 1.24e.
	Пометка: 14 оффсетов было добавлено.
63. Полностью переписаны оффсеты Антихака для 1.26a.
	Пометка: 30 оффсетов было добавлено.
64. Полностью переписаны оффсеты Антихака для 1.27a.
	Пометка: 20 оффсетов было добавлено.
65. Полностью переписаны оффсеты Антихака для 1.27b.
	Пометка: 12 оффсетов было добавлено.
66. Полностью переписаны оффсеты Антихака для 1.28f.
	Пометка: 2 оффсетов было добавлено.
67. Юнит фрейма CTrainableButton теперь посылается в событие FRAMEEVENT_MOUSE_ENTER/FRAMEEVENT_MOUSE_LEAVE/FRAMEEVENT_MOUSE_UP/FRAMEEVENT_MOUSE_DOWN/FRAMEEVENT_CONTROL_CLICK.
68. Предмет/заклинание фрейма CCommandButton теперь посылается в событие FRAMEEVENT_MOUSE_ENTER/FRAMEEVENT_MOUSE_LEAVE/FRAMEEVENT_MOUSE_UP/FRAMEEVENT_MOUSE_DOWN/FRAMEEVENT_CONTROL_CLICK.
69. Юнит фрейма CCargoButton теперь посылается в событие FRAMEEVENT_MOUSE_ENTER/FRAMEEVENT_MOUSE_LEAVE/FRAMEEVENT_MOUSE_UP/FRAMEEVENT_MOUSE_DOWN/FRAMEEVENT_CONTROL_CLICK.
70. Юнит фрейма CHeroBarButton теперь посылается в событие FRAMEEVENT_MOUSE_ENTER/FRAMEEVENT_MOUSE_LEAVE/FRAMEEVENT_MOUSE_UP/FRAMEEVENT_MOUSE_DOWN/FRAMEEVENT_CONTROL_CLICK.
71. Бафф фрейма CBuffIndicator теперь посылается в событие FRAMEEVENT_MOUSE_ENTER/FRAMEEVENT_MOUSE_LEAVE/FRAMEEVENT_MOUSE_UP/FRAMEEVENT_MOUSE_DOWN/FRAMEEVENT_CONTROL_CLICK.
72. Исправлены SetDestructableX/Y/Z/Position/PositionWithZ/PositionLoc не двигающие карту путей.
	Пометка: тени карты путей не могут быть сдвинуты, так как они не привязаны к объекту.
73. Исправлены строки не работающие во второстепенных потоках. (В прелоаде, а так же в ExecuteFunc которые были вызваны из ExecuteFunc).
74. ClickFrame и ClickFrameEx теперь вызывают событие FRAMEEVENT_CONTROL_CLICK для CSimpleButton и дочерних фреймов.
75. Исправлена SetAbilityField API не обновляющая некоторые данные заклинания.
76. Исправлена CBuffAuraDevotion не дающая никаких бонусов при создании через buff API.
77. Исправлена CBuffAuraRegenLife не дающая никаких бонусов при создании через buff API.
78. Исправлена CBuffAuraRegenMana не дающая никаких бонусов при создании через buff API.
79. Исправлена CBuffAuraBrilliance не дающая никаких бонусов при создании через buff API.
80. Исправлена CBuffAuraBlightRegen не дающая никаких бонусов при создании через buff API.
81. Исправлена CBuffAuraUnholy не дающая никаких бонусов при создании через buff API.
82. Исправлена CBuffAuraEndurance не дающая никаких бонусов при создании через buff API.
83. Исправлена CBuffAuraSlow не дающая никаких бонусов при создании через buff API.
84. Исправлена CBuffAuraThorns не дающая никаких бонусов при создании через buff API.
85. Исправлена CBuffAuraVampiric не дающая никаких бонусов при создании через buff API.
86. Исправлена ошибка по которой фреймы предметов ломались если HideOriginFrames было использовано.
87. Исправлена критическая ошибка от DisplayTimedTopMessage.
88. Исправлены критические ошибки от некоторых заклинаний, которые были подвергнуты SetAbilityOrder.
89. Исправлено неправильное поведение SetAbilityOrder с CAbilityChannel.
90. Исправлена ошибка SetAbilityLevel позволяющая установить уровень выше максимального.
91. SetAbilityOrderId теперь возвращает nothing вместо boolean.
92. SetAbilityCooldown теперь возвращает nothing вместо boolean.
93. SetAbilityRemainingCooldown теперь возвращает nothing вместо boolean.
94. Все хендлы расширяющие agentdatafield теперь используют мнимые хендлы.
	Пометка: настоящие хендлы были использованы на значениях выше 0x100000, дабы луа не крашилось, это более не является приоритетом.
95. war3_lua был удалён из Modules, он будет доступен для скачивания отдельно.
2
20
2 месяца назад
2
Вышла новая версия!

v1.1.11.202

1. Исправлено повторение события WIDGET_DEATH если уже умерший виджет получал урон.
2. Исправлено событие EVENT_PLAYER_MOUSE_MOVE не возвращающее позиции на экране.
3. Обработчик событий KEY/MOUSE нажатия/отжатия был перенесён в WndProc для более стабильной обработки.
	Пометка: это должно поправить часть игнорируемых клавиш, так я более не ориентируюсь на кнопки, которые обработала игра.
4. Добавлена поддержка XButton1 кнопки в событии KEY/MOUSE нажатия/отжатия.
5. Добавлена поддержка XButton2 кнопки в событии KEY/MOUSE нажатия/отжатия.
6. Исправлена обработка клавиш SHIFT/LSHIFT/RSHIFT. LSHIFT/RSHIFT будут посылать отдельное событие после SHIFT.
7. Исправлена обработка клавиш ALT/LALT/RALT. LALT/RALT будут посылать отдельное событие после ALT.
8. Исправлена обработка клавиш CTRL/LCTRL/RCTRL. LCTRL/RCTRL будут посылать отдельное событие после CTRL.
9. Исправлен десинх, который был обнаружен с версии 1.1.11.199.
10. Исправлена LaunchProjectileAt не сохраняющая координаты цели.
11. Исправлена LaunchProjectile не работающая через SetProjectileTargetPositionWithZ.
12. GetFrameTexture теперь работает с CSimpleFrame.
13. Исправлено кеширование текстур в SetFrameTexture с CSimpleFrame которое не позволяло вернуть оригинальную текстуру.
14. Обновлён модуль UnlockMapSize до версии 1.0.1.3.
3
20
2 месяца назад
3
Вышла новая версия!

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.
1
20
2 месяца назад
1
Вышла новая версия!

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.
1
20
1 месяц назад
1
Вышла новая версия!

v1.1.13.209

1. Исправлен некорректный посыл события EVENT_PLAYER_WIDGET_GHOST_CLICK вместо EVENT_PLAYER_WIDGET_CLICK.
2. Добавлен пуш виджета под мышкой в GetTriggerWidget в событии EVENT_PLAYER_TERRAIN_CLICK.
0
15
1 месяц назад
0
А можно как-то с помощью Unryze API организовать управление на джойстике?
Ответы (6)
1
20
1 месяц назад
1
DarkLigthing, если совсем делать нечего, то при желании - возможно. Но страдать такой вакханалией я не особо горю. :)
1
37
1 месяц назад
1
Unryze, там у винды есть универсальное апи, но тот же стим позволяет off-game controls, можно и без поддержки геймпада это делать
0
15
1 месяц назад
Отредактирован DarkLigthing
0
Unryze, Да, я понимаю что это маловостребовано ведь в кто играет в Wc3 на джойстиках. Просто сейчас все больше становятся актуальны портативные устройства как Steam Deck и теоретически карты, адаптированные под управление на подобных устройствах могли бы привлечь новых людей в Wc3. (:
0
37
1 месяц назад
0
DarkLigthing, steam deck работает на линуксе, а wine будет жрать аккум как не в себя
0
15
1 месяц назад
Отредактирован DarkLigthing
0
ScorpioT1000, Steam Deck работает на той OS которую ты туда захочешь поставить. Но по дефолту на ней действительно Linux семейства Arch Linux, который Valve адаптировала под свои нужды назвав SteamOS.
А wine это предшественник современной эмуляции, который называется Proton.
На моей деке, которой я уже пользуюсь как единственным пк стоит Windows 11 и батарейка это откровенно не проблема. Вот для портативного устройства x86 архитектура процессора это проблема для батарейки, лучше был бы ARM, но тогда игры с пк не запустились бы... А в целом это просто офигенная штука, для многих игр клавиатура и мышь по моему опыту это избыточность.
0
37
1 месяц назад
0
DarkLigthing, ну, мы же про стим дек для целевой аудитории говорим как стандартный стим ос с линуксом без подключенной зарядке на постоянке, x86 есть и на смартфонах, и кто-то даже ставил туда винду, но это единицы
2
20
1 месяц назад
2
Вышла новая версия!

v1.1.13.210

1. Исправлена внутренняя ошибка Id2S.
	Пометка: эта ошибка ломала Buff API для слк-оптимизированных карт.
5
20
3 недели назад
5
Вышла новая версия!

v1.1.14.214

1. Изменение типов:
	type effect												extends war3image
	type trackable											extends war3image
2. Новые Константы:
	constant abilityintegerfield		ABILITY_IF_BUTTON_POSITION_SPELLBOOK_X						= ConvertAbilityIntegerField('asbx') // Ability Instance only
	constant abilityintegerfield		ABILITY_IF_BUTTON_POSITION_SPELLBOOK_Y						= ConvertAbilityIntegerField('asby') // Ability Instance only
3. Новые Нативные Функции:
	native GetMouseMoveEventScreenAxisEnabled				takes nothing returns boolean
	native SetMouseMoveEventScreenAxisEnabled				takes boolean enable returns nothing // Enables GetTriggerPlayerMouseScreenX/Y, default: on.
	native GetMouseMoveEventWorldAxisEnabled				takes nothing returns boolean
	native SetMouseMoveEventWorldAxisEnabled				takes boolean enable returns nothing // Enables GetTriggerPlayerMouseWorldX/Y/Z, default: off.
	native GetMouseMoveEventDelay							takes nothing returns integer
	native SetMouseMoveEventDelay							takes integer delay returns nothing // delay is in ticks (ms), default: 10
	//
	native IsHandleDestroyed								takes handle whichHandle returns boolean // this returns internal state of the object, whenever it's nullptr or CAgentBaseAbs was removed.
	//
	native GetWar3ImageSprite								takes war3image whichWar3Image returns sprite
	native IsWar3ImageVisible								takes war3image whichWar3Image returns boolean
	native SetWar3ImageVisible								takes war3image whichWar3Image, boolean visible returns nothing
	native IsWar3ImageInvulnerable							takes war3image whichWar3Image returns boolean
	native SetWar3ImageInvulnerable							takes war3image whichWar3Image, boolean invulnerable returns nothing
	native GetWar3ImageX									takes war3image whichWar3Image returns real
	native GetWar3ImageY									takes war3image whichWar3Image returns real
	native GetWar3ImageZ									takes war3image whichWar3Image returns real
	native GetWar3ImagePositionLoc							takes war3image whichWar3Image returns location
	native SetWar3ImagePositionLoc							takes war3image whichWar3Image, location whichLocation returns nothing
	native SetWar3ImagePosition								takes war3image whichWar3Image, real x, real y returns nothing
	native SetWar3ImagePositionWithZ						takes war3image whichWar3Image, real x, real y, real z returns nothing
	native SetWar3ImageX									takes war3image whichWar3Image, real x returns nothing
	native SetWar3ImageY									takes war3image whichWar3Image, real y returns nothing
	native SetWar3ImageZ									takes war3image whichWar3Image, real z returns nothing
	native ResetWar3ImageZ									takes war3image whichWar3Image returns nothing // returns Z control to game.
	native GetWar3ImageHeight								takes war3image whichWar3Image returns real
	native SetWar3ImageHeight								takes war3image whichWar3Image, real height returns nothing
	native GetWar3ImageScreenX								takes war3image whichWar3Image returns real
	native GetWar3ImageScreenY								takes war3image whichWar3Image returns real
	native GetWar3ImageVertexColour							takes war3image whichWar3Image returns integer
	native SetWar3ImageVertexColour							takes war3image whichWar3Image, integer red, integer green, integer blue, integer alpha returns nothing
	native GetWar3ImageTimeScale							takes war3image whichWar3Image returns real
	native SetWar3ImageTimeScale							takes war3image whichWar3Image, real timeScale returns nothing
	native GetWar3ImageScale								takes war3image whichWar3Image returns real
	native SetWar3ImageScale								takes war3image whichWar3Image, real scale returns nothing
	native GetWar3ImageFacing								takes war3image whichWar3Image returns real
	native SetWar3ImageFacing								takes war3image whichWar3Image, real facing, boolean isInstant returns nothing
	native SetWar3ImageMatrixScale							takes war3image whichWar3Image, real x, real y, real z returns nothing
	native ResetWar3ImageMatrix								takes war3image whichWar3Image returns nothing
	native SetWar3ImageOrientationEx						takes war3image whichWar3Image, real yaw, real pitch, real roll, integer eulerOrder returns nothing
	native SetWar3ImageOrientation							takes war3image whichWar3Image, real yaw, real pitch, real roll returns nothing
	native GetWar3ImageYaw									takes war3image whichWar3Image returns real
	native SetWar3ImageYaw									takes war3image whichWar3Image, real yaw returns nothing
	native GetWar3ImagePitch								takes war3image whichWar3Image returns real
	native SetWar3ImagePitch								takes war3image whichWar3Image, real pitch returns nothing
	native GetWar3ImageRoll									takes war3image whichWar3Image returns real
	native SetWar3ImageRoll									takes war3image whichWar3Image, real roll returns nothing
	native GetWar3ImageModelObjectX							takes war3image whichWar3Image, string whichObject returns real
	native GetWar3ImageModelObjectY							takes war3image whichWar3Image, string whichObject returns real
	native GetWar3ImageModelObjectZ							takes war3image whichWar3Image, string whichObject returns real
	native GetWar3ImageModelObjectPositionLoc				takes war3image whichWar3Image, string whichObject returns location
	native GetWar3ImageCurrentAnimationId					takes war3image whichWar3Image returns integer
	native GetWar3ImageCurrentAnimationName					takes war3image whichWar3Image returns string
	native SetWar3ImageAnimationWithRarityByIndex			takes war3image whichWar3Image, integer animIndex, raritycontrol rarity returns nothing
	native SetWar3ImageAnimationWithRarity					takes war3image whichWar3Image, string animationName, raritycontrol rarity returns nothing
	native SetWar3ImageAnimationByIndex						takes war3image whichWar3Image, integer animIndex returns nothing
	native SetWar3ImageAnimation							takes war3image whichWar3Image, string animationName returns nothing
	native QueueWar3ImageAnimationByIndex					takes war3image whichWar3Image, integer animIndex returns nothing
	native QueueWar3ImageAnimation							takes war3image whichWar3Image, string animationName returns nothing
	native GetWar3ImageAnimationOffsetPercent				takes war3image whichWar3Image returns real
	native SetWar3ImageAnimationOffsetPercent				takes war3image whichWar3Image, real percent returns nothing
	//
	native SetAbilityOwningAbility							takes ability whichAbility, ability whichSpellbook returns nothing
	native SetAbilityOwningItem								takes ability whichAbility, item whichItem returns nothing
	//
	native GetFrameBlendMode								takes framehandle whichFrame, integer textureId returns blendmode // 0 for CSimpleRegions.
	native SetFrameBlendMode								takes framehandle whichFrame, integer textureId, blendmode whichBlendMode returns nothing
	native GetFrameHighlight								takes framehandle whichFrame, integer highlightId returns framehandle // Gets highlights of CControl
	native GetFrameHighlightTexture							takes framehandle whichFrame, integer highlightId returns string // If highlighframe type is sent, it will modify itself instead, if ccontrol or its children, then it will check possible highlights.
	native SetFrameHighlightTexture							takes framehandle whichFrame, integer highlightId, string texturePath, blendmode blendMode returns nothing // 0 - FOCUS | 1 - ON HOVER
4. Исправлена GetUnitStringField всегда возвращающая "Default String" с UNIT_SF_HERO_ABILITY_LIST.
5. Исправлена UNIT_SF_ABILITY_LIST всегда возвращающая "Default String" с UNIT_SF_HERO_ABILITY_LIST.
6. GetTriggerPlayerMouseWorldX/Y/Z теперь отключено по стандарту для сохранения 12 байтов нетКода. Используйте SetMouseMoveEventWorldAxisEnabled для того, чтобы включить эту опцию.
7. Исправлена OnCommandBarProcessKey не работающая со спеллбуками.
8. Исправлена обработка TRIGSTR_ в SetTextTagText.
9. Добавлен хук на CGameState::ToHandle.
10. Исправлена критическая ошибка с картами содержащими w3i от версии 1.29 и выше. Критическая ошибка связана с максимальным индексом игрока.
11. SetFramePriority более не работает с CSimpleRegions, так как они не имеют приоритет, а эта функция меняла blendmode.
2
20
2 недели назад
2
Вышла новая версия!

v1.1.14.215

1. Исправлена SetTextTagText не работающая с текстами отличными от TRIGSTR_ из-за предидущего исправления.
2. Исправлена Get/SetBlendMode с CSimpleFontString.
Этот комментарий удален
0
18
2 недели назад
0
Посмотрел тут инструкцию по установке. Не кажется ли, что она довольно громоздкая для аудитории? Особенно для молодых "зумеров", которые выросли на Google play и подобных сервисах, где установка делается в 1 клик? Они, если увидят подобную длинную установку, скажут, "что за кривая хрень" и не станут ничего ставить)) Возможно ли переделать установку так, чтобы после запуска установщика поиск путей, размещение файлов выполнялись сами собой? Плюс в идеале, чтобы заменялись файлы war3 exe и world editor exe на новые, с сохранением путей от ярлыков с рабочего стола? Чтобы юзер мог запускать игру как обычно, как привык, без поиска и запуска дополнительных exe? Я конечно понимаю, что это душно, но вряд-ли понравится, если ujapi будут юзать 3,5 олда (по крайней мере, я за последний год не видел карт на хгм, сделанных с помощью ujapi, максимум одну)
Ответы (2)
0
29
2 недели назад
Отредактирован nazarpunk
0
EugeAl, молодые зумеры и так не смогут пользоваться утилитой ибо там нужно думать через мозг. Коей способностью эволюция их обделила.
0
20
2 недели назад
0
EugeAl, карты есть, но меня это особо не заботит. Установка и так проще некуда, а твоя затея буквально странная… ибо не нужно менять никакие .exe файлы, и вообще ужапи должна ставиться в отдельную папку. 2024 год, тяжело разархивировать файлы в папку (это вся установка) и указать путь к игре/редактору (как-то с Magos люди справлялись). Ну и закончим тем, что вдруг у кого-то несколько сборок (как у меня) и автоматом выберется не та? Да и опять же, можно буквально копипастнуть путь напрямую, а не искать по папкам.
Ну блин, реально несерьёзно как-то заявлять о сложности установки.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.