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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Этот комментарий удален
23
либо будет фиаско в виде рефоржеда и Blz приписок.
а, ну да, яркий пример же есть, точно))
30
У игровых студий решение простое, если надо удалить - удаляют.
Сначала метят deprecated, а через несколько версий удаляют. Кто не успел, тот сам себе доктор.
20
У игровых студий решение простое, если надо удалить - удаляют.
Сначала метят deprecated, а через несколько версий удаляют. Кто не успел, тот сам себе доктор.
Пометка если в имени, то карта всё-равно сломается. А если помечать в комментариях, то кто будет их читать? Никто. :D
30
А если помечать в комментариях, то кто будет их читать?
В нормальных ЯП есть аннотации, и IDE сразу начинает варнами сыпать.
Загруженные файлы
20
А если помечать в комментариях, то кто будет их читать?
В нормальных ЯП есть аннотации, и IDE сразу начинает варнами сыпать.
Не самый правильный пример, ибо в ЯП есть неймспейсы, которыми можно "выпилить" устаревшие функции и т.д. Во всяких юнити/анриале и т.д. такое не получится сделать без костылей, да и там тоже не церемонятся на эту тему, оповещают на сайте, что будет выпилено и сразу выпиливают.
30
Во всяких юнити/анриале и т.д. такое не получится сделать без костылей
Ну я вот нагуглил аналог deprecated на С#. Он вроди с коробки есть, зачем костыли?
20
Во всяких юнити/анриале и т.д. такое не получится сделать без костылей
Ну я вот нагуглил аналог deprecated на С#. Он вроди с коробки есть, зачем костыли?
Ты опять приводишь примеры не связанные с джассом. Метод в С++ тоже можно объявить "устаревшим", а в джассе - это как сделаешь, магией? И ещё раз, когда что-то собираются удалить из движка (речь не об языках), то оно пишется что будет удалено и потом удаляется. Зайди на форум Unreal Engine что ли.
29
Можно просто сделать библиотеку deprecated.j как костыльный вариант, или написать компилятор куда функциональный чем jasshelper)
cJass
#include "deprecated.cj"
define {
deprecatedFunc(...) = freshFunc(...)
// ...
}
vJass
//!import "D:\\WC3Scripts\\deprecated.j"
library Deprecated
	constant	function deprecatedFunc takes <paremetrs> returns <value | nothing>
		<return|call> freshFunc( <paremetrs> ) | DoNothing()
	endfunction
endlibrary
Свой компилятор:
deprecated japi deprecatedNative1 replaced  freshNative1
deprecated japi deprecatedNative2(p1,p2,p3) replaced  freshNative2(p1,p2)
deprecated japi deprecatedNative3 remove
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.18.74

  1. Новые Константы:
constant originframetype ORIGIN_FRAME_CURSOR_FRAME = ConvertOriginFrameType(44)
  1. Новые Нативные Функции:
native BitwiseGetBit takes integer number, integer bitIndex returns integer
native BitwiseGetByte takes integer number, integer byteIndex returns integer
native StringCount takes string s, string whichString, boolean caseSensitive returns integer
native StringTrimLeft takes string s, boolean caseSensitive returns string
native StringTrimRight takes string s, boolean caseSensitive returns string
native StringTrim takes string s, boolean caseSensitive returns string
native StringReverse takes string s, boolean caseSensitive returns string
native StringReplace takes string s, string whichString, string replaceWith, boolean caseSensitive returns string
native StringInsert takes string s, string whichString, integer whichPosition, boolean caseSensitive returns string
native GetTriggerSyncPlayer takes nothing returns player this is simply mimicking GetTriggerPlayer, added for simplicity.
native IsTextTagVisible takes texttag whichTextTag returns boolean
native IsTextTagSuspended takes texttag whichTextTag returns boolean
native IsTextTagPermanent takes texttag whichTextTag returns real
native GetTextTagX takes texttag whichTextTag returns real
native SetTextTagX takes texttag whichTextTag, real x returns nothing
native GetTextTagY takes texttag whichTextTag returns real
native SetTextTagY takes texttag whichTextTag, real y returns nothing
native GetTextTagZ takes texttag whichTextTag returns real
native SetTextTagZ takes texttag whichTextTag, real z returns nothing
native GetTextTagHeight takes texttag whichTextTag returns real
native SetTextTagHeight takes texttag whichTextTag, real height returns nothing
native GetTextTagLocation takes texttag whichTextTag returns location
native SetTextTagPositionLocation takes texttag whichTextTag, location whichLocation returns nothing
native GetTextTagColour takes texttag whichTextTag returns integer
native GetTextTagAlpha takes texttag whichTextTag returns integer
native SetTextTagAlpha takes texttag whichTextTag, integer alpha returns nothing
native GetTextTagVelocityX takes texttag whichTextTag returns real
native SetTextTagVelocityX takes texttag whichTextTag, real velX returns nothing
native GetTextTagVelocityY takes texttag whichTextTag returns real
native SetTextTagVelocityY takes texttag whichTextTag, real velY returns nothing
native GetTextTagVelocityZ takes texttag whichTextTag returns real
native SetTextTagVelocityZ takes texttag whichTextTag, real velZ returns nothing
native GetTextTagAge takes texttag whichTextTag returns real
native GetTextTagLifespan takes texttag whichTextTag returns real
native GetTextTagFadepoint takes texttag whichTextTag returns real
native GetTextTagShadowColour takes texttag whichTextTag returns integer
native SetTextTagShadowColour takes texttag whichTextTag, integer colour returns nothing
native GetTextTagShadowAlpha takes texttag whichTextTag returns integer
native SetTextTagShadowAlpha takes texttag whichTextTag, integer alpha returns nothing
native GetTextTagText takes texttag whichTextTag returns string
  1. Добавлены недостающие константы из предыдущей версии.
  2. Версия UjAPI теперь прописывается в главном меню Warcraft.
  3. Добавлена опция "Load Library" в главную секцию. Это включает/выключает подгрузку UjAPI.mpq и нативных функций.
Пометка: эта опция по стандарту включена и смена этой опции на уже запущенном Warctaft не будет работать.
  1. Добавлена опция "Load Library" для секции LUA. Это включает/выключает подгрузку библиотеки war3_lua.dll.
Пометка: эта опция по стандарту выключена и смена этой опции на уже запущенном Warctaft не будет работать.
  1. Добавлена "CLI" обработка в UjAPI, теперь каждый последующий запуск приложения UjAPI будет просто на просто отправлять аргументы запуска в уже запущенное приложение.
Пример 1: "D:\Files\Work Files\Programming\uJAPI\Release\UjAPILauncher.exe" -ujapi "dev" -lua "dev console nowarnings" -multiwindow -window -loadfile "Maps\Test\WorldEditTestMap.w3x"
Пометка 1: Это выполнит UjAPI и включит его режим разработчика, а так же включит луа с заданными к ней параметрами, игра будет в мультиоконном режиме и в режиме окна. Затем будет запущена карта заданная в loadfile аргументе.
Пример 2 (полный): "D:\Files\Work Files\Programming\uJAPI\Release\UjAPILauncher.exe" -ujapi "dev" -lua "dev console nowarnings" -multiwindow -window -launch "Warcraft" -gamepath "D:\Games\Warcraft III TFT\war3.exe" -loadfile "Maps\Test\WorldEditTestMap.w3x"
Пометка 2: Это выполнит всё, что описано в Примере 1, однако если присутствуют (-gamepath или -editorpath) оно также "переопределит" путь игры/редактора основываясь на аргументах поданных в них.
  1. CLI команды:
Пометка: пояснения команд будут в скобочках, вот так - (информация).
-justdoupdate (просто на просто выполнит форсированное скачивание последней версии и выполнит автообновление UjAPI, остальные команды будут проигнорированы).
-ujapi (даёт возможность переопределения некоторых базовых настроек UjAPI, пример: -ujapi "dev"), "" (кавычки) обязательны!
noload (отключает подгрузку UjAPI.mpq и UjAPI нативных функций).
dev (включает режим разработчика, который также включит консоль).
-lua (даёт возможность переопределения некоторых базовых настроек war3_lua.dll, пример: -lua "dev console nowarnings"), "" (кавычки) обязательны!
dev (включает режим разработчика).
console (включает консоль для луа ошибок и так далее).
nowarnings (отключает некоторые внутренние ошибки типов).
-multiwindow (включает режим Multi-Window и загружает необходимый модуль).
-window (запустит приложение в оконном режиме).
-launch (даёт возможность переопределения/указания пути для запуска игры или редактора, по стандарту будет запускаться игра, пример: -launch "Editor"), "" (кавычки) обязательны!
-gamepath (переопределяет и использует путь игры заданный в UjAPI Launcher, пример: -gamepath "D:\Games\Warcraft III TFT\war3.exe"), "" (кавычки) обязательны!
-editorpath (переопределяет и использует путь редактора заданный в UjAPI Launcher, пример: -editorpath "D:\Programs\WC3 Tools\JNPG-R1.4-Prometheus-Edition\NewGen WE.exe"), "" (кавычки) обязательны!
-loadfile (повторяет 1 в 1 метод запуска карт, путь до карты для игры ВСЕГДА относителен пути игры, однако для редактора нужно указывать ПОЛНЫЙ путь до карты).
  1. Добавлена -loadfile команда для секции World Editor, однако путь до карты НЕ относителен пути игры, нужно указывать полный путь до карты.
  2. Добавлена опция "Load Library" в секции World Editor.
  3. Добавлена опция "Dev Mode" в секции World Editor.
Пометка: #10 и #11 работают точно так же как такие же опции в Warcraft 3.
20
Вышла новая версия! Прокрутить к ресурсу

v1.0.18.75

  1. Исправлены проблемы с полноэкранным режимом запуска игры.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.