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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
20
1 год назад
0
ScorpioT1000, в каком то смысле widget это интерфейс.
0
37
1 год назад
0
Kokomi, скорее контейнер общих данных
0
18
1 год назад
0
nazarpunk, Загуглил, но нужно кое-что прояснить. Если я например, из нативных функций делаю свои функции, из этих функций делаю более "общие" функции, и так далее вплоть до функций, запускаемых через trigger add action - это является ООП? Согласно парадигме "всё является объектом". Если да, то что тут будет интерфейсом?
0
20
1 год назад
0
ScorpioT1000, возможно и так.

EugeAl, погугли паттерн стратегия.
0
18
1 год назад
0
Kokomi, Загуглил. Посмотрел примеры из Педивикии. Выглядят они как большая функция, в которой через разные условия вызываются другие функции с различающимися аргументами. Большая функция и есть интерфейс?
0
20
1 год назад
0
EugeAl, не идут примеры в мою сонную голову.
По факту интерфейс это просто набор методов, которые должен реализовывать класс. То есть если в классе прописано, что он реализует интерфейс - он обязан иметь все те же функции, которые прописаны в нем.
1
29
1 год назад
Отредактирован nazarpunk
1
не идут примеры в мою сонную голову.
interface Point {
	method setPosition(x, y);
}

interface Unit impliements Point {
	method setPosition(x, y){
		SetUnitX(this, x)
		SetUnitY(this, y)
	}
}

interface Effect impliements Point {
	method setPosition(x, y){
		SetEffectX(this, x)
		SetEffectY(this, y)
	}
}
0
8
1 год назад
0
EugeAl, мне кажется, без полиморфизма не понять все преимущества их использования. Если брать пример выше, то можно иметь один метод, который двигает\отталкивает и т.д., и в качестве аргумента ему можно задать Point. В таком случае, в него можно будет передавать и юниты, и эффекты, и предметы, он будет работать с ними одинаково, просто исходя из того, что все они - Point.
0
18
1 год назад
Отредактирован EugeAl
0
Kokomi, nazarpunk, build, Судя по всему, это что-то вроде типа функции. То есть функции, также как и объекты, имеют тип и наследование, только вместо handle -> widget -> unit здесь идёт function -> method -> interface -> class. Я правильно понимаю?
0
20
1 год назад
0
EugeAl, мы смотрим сейчас взглядом функциональщика. Возьмем пример nazarpunk. К примеру у нас есть абилка огненный вихрь сян лин (вокруг персонажа крутится обруч, который наносит урон при пересечении с персонажами). По большому счету нам все равно что вокруг кастера крутить - юнит, эффект, или хоть texttag. Так вот при инициальзации абилки вместо конкретной реализации можно передать как параметр Point. Способность будет пользоваться переданным инстансом Point чтобы толкать его вокруг кастера. А уже конкретная реализация этих методов будет взаимодействовать с игрой, вызывая нужные методы с нужными параметрами
2
20
1 год назад
Отредактирован Unryze
2

v1.0.12.58

  1. Новые Константы:
constant integer CHAT_RECIPIENT_ALL = 0
constant integer CHAT_RECIPIENT_ALLIES = 1
constant integer CHAT_RECIPIENT_REFEREES = 2
constant integer CHAT_RECIPIENT_OBSERVERS = 2
constant integer CHAT_RECIPIENT_PRIVATE = 3
constant unitweaponintegerfield UNIT_WEAPON_IF_ATTACKS_ENABLED = ConvertUnitWeaponIntegerField('uaen')
  1. Новые Нативные Функции:
native DisplayChatMessage takes player whichPlayer, integer recipient, string message returns nothing
native DisplayTimedChatMessage takes player whichPlayer, integer recipient, string message, real duration returns nothing
native SetSpecialEffectAnimationOffsetPercent takes effect whichEffect, real percent returns boolean
native SetTrackableAnimationOffsetPercent takes trackable whichTrackable, real percent returns boolean
native SetWidgetAnimationOffsetPercent takes widget whichWidget, real percent returns boolean
native SetDestructableAnimationOffsetPercent takes destructable whichDestructable, real percent returns boolean
native SetItemAnimationOffsetPercent takes item whichItem, real percent returns boolean
native SetUnitAnimationOffsetPercent takes unit whichUnit, real percent returns boolean
native SetMissileAnimationOffsetPercent takes missile whichMissile, real percent returns boolean
  1. SetFrameSpriteAnimationOffset изменена на SetFrameSpriteAnimationOffsetPercent.
  2. Исправлены все нативные функции связанные с "таблицами", они все были нерабочими.
  3. Исправлена критическая ошибка при выходе/перезагрузке карты когда какой-либо фрейм был создан через нативные функции CreateFrame, CreateSimpleFrame и CreateFrameByType с дублированием contextId.
    Пояснение: это значит, что если Вы создали фрейм вот так: CreateFrame( "SomFrame", gameUI, 0, 0 ) и создадите фрейм ещё раз через CreateFrame( "SomFrame", gameUI, 0, 0 ), то оно на деле "выкинет" предыдущий фрейм, однако этой проблемы больше нет.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.