UjAPI - AngelScript

Добавлен , опубликован
Программы
Предназначение:
Работа с файлами

Данный ресурс работает ТОЛЬКО с патчами 1.24e/1.26а/1.27a/1.27b/1.28f и требует UjAPI

Как пользоваться?

  1. Перенесите AngelScript.dll в папку Modules в папке UjAPI.
  2. Запустите UjAPI.exe и отметьте чекбокс "Load Library" в секции AngelScript.
  3. Запустите игру.
  4. Наслаждайтесь.

Как программировать?

  1. Создайте war3map.as файл, в этом файле вы будете писать код.
  2. Добавьте файл через менеджер импорта или же MPQ по пути Scripts\\war3map.as или же просто war3map.as.
  3. Запустите UjAPI со включённой опцией AngelScript.
  4. Наслаждайтесь.

В чём особенность AngelScript?

  1. Строгая типизация как в Jass.
  2. Возможность создавать свои объекты/классы.
  3. Современные парадигмы и их особенности.
  4. Возможность программировать код по кускам за счёт "#include".
  5. Скорость сравнимая с lua, без её проблем.
  6. И многое другое.

Парсер/Проверка синтаксиса и простое выполнение:

  1. Скачать: файлы.
    Пометка: common.j и blizzard.as рекомендуется вручную брать из последнего релиза UjAPI.mpq
  2. Перетащите ваш файл в приложение.
  3. В консоль выведутся предупреждения/ошибки.

Подсветка для AngelScript:

Visual Studio Code: Github (Мой плагин).
Sublime: Github.

Пример кода:

раскрыть
#include "Scripts\\blizzard.as" // это подключит blizzard.as (транспилированный blizzard.j) в проект.

void SomeFunction( )
{
  print( "SomeFunction\n" );
}

void main( )
{
	TimerStart( CreateTimer( ), 1.f, false, @SomeFunction ); // @ используется для создания делегата, в данном случае ссылки на функцию.
	TimerStart( CreateTimer( ), 1.f, false,  function( )
        {
          print( "OnSomeTimerAction\n" );
        }  ); // Данный вид написания тоже валиден, в данном случае мы используем лямбду (анонимную функцию).

	// Пример лямбды с триггером.
	trigger tTest = CreateTrigger( );
	player p = Player( 0 );
	TriggerRegisterPlayerEvent( tTest, p, EVENT_PLAYER_ARROW_LEFT_DOWN ); // ConvertPlayerEvent(261)
	TriggerAddCondition( tTest, Filter(
			function( )
			{
				print( "OnSomeStupidCond\n" );
				return true;
			}
		)
	);
	TriggerAddAction( tTest,
		function( )
		{
		  print( "OnSomeStupidAct\n" );
		}
	);
}

void config( )
{
	// Логика этой функции в точности копирует поведение функции config в Jass, потому тут показывать нечего.
}

Скриншоты:

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
20
В данный момент не дома, AngelScript не был создан для WE, ошибка тоже странная, буду дома гляну сам.
По парсеру - там отдельная ошибка, точнее мой косяк, я когда добавлял новые типы именно в парсере забыл добавить их регистрацию, обновлю его скоро.
31
При добавлении через менеджер импорта и попытке сохранить появляется ошибка:
Это, скорее всего, мой личный косяк.
без UjAPI происходит тоже самое. Как и в обычном WE. И не только со скриптами. Пытался заменить текстуру ландшафта - та же проблема. Переустановка JNGP не дала результатов. Чуть позже проверю на другой машине, надеюсь, поможет.

Все, разобрался, запустил. Сдуру в пути импорта указал двойные "//".
Тогда только жду обновление парсера. Спасибо.
Ответы (1)
20
Алексей Андреич, забыл ответить, парсер был обновлён.
24
Добавьте файл через менеджер импорта или же MPQ по пути Scripts\\war3map.as или же просто war3map.as.
Режим папки [как в рефе] возможен на 1.26-1.28? Что-нибудь такое в перспективе вообще планируется?
Ответы (4)
20
Makeba, редактирование World Editor'a ужасно геморройное занятие, так что скорее нет, чем да. Ибо мне тяжко вообще оправдать трудочасы на него, учитывая все его проблемы, да и когда есть тот же w3x2lni.
24
Unryze, к хорошему быстро привыкаешь, физически больно откатываться назад к менеджеру импорта и mpq редактору
20
Вышла новая версия! Прокрутить к ресурсу

AngelScript v1.0.4.16

1. Базовый код AngelScript обновлён до 2.36.1.
2. Добавлено std:sleep_ns(uint64_t) как внутреннее API, которое принимает nanoseconds.
3. Добавлено std:sleep_us(uint64_t) как внутреннее API, которое принимает microseconds.
4. Добавлено std:sleep_ms(uint64_t) как внутреннее API, которое принимает milliseconds.
5. Добавлено std:sleep(double) как внутреннее API, которое принимает float/double.
6. TriggerSleepAction теперь использует std::sleep(double), раннее ничего не делало.
7. Изменены << и <<= операторы с Логических в Арифметические.
8. Изменены >>, >>> и >>= операторы с Логических в Арифметические.
9. Добавлен оператор <<< как Логическия операция.

AngelScript Parser 1.0.3.14

1. AngelScript base code updated в 2.36.1.
2. Добавлено std:sleep_ns(uint64_t) как внутреннее API, которое принимает nanoseconds.
3. Добавлено std:sleep_us(uint64_t) как внутреннее API, которое принимает microseconds.
4. Добавлено std:sleep_ms(uint64_t) как внутреннее API, которое принимает milliseconds.
5. Добавлено std:sleep(double) как внутреннее API, которое принимает float/double.
6. TriggerSleepAction теперь использует std::sleep(double), раннее ничего не делало.
7. Изменены << и <<= операторы с Логических в Арифметические.
8. Изменены >>, >>> и >>= операторы с Логических в Арифметические.
9. Добавлен оператор <<< как Логическия операция.
10. Добавлена опция RunTimers в settings.ini, это контролирует будут ли созданы и запущены таймеры.
15
Для того кто раньше карты делал в WorldEditor как этим пользоваться? Есть туториал как организовывается работа? Как вы редактируете ландшафт и связываете это с тем что пишите в редакторе кода.
Ответы (4)
29
bifurcated, редактируешь ланд в WE, код пишешь в IDE. В чём проблема?
15
nazarpunk, а как проект по структуре выглядит, раньше я всё в WE делал и ланд и код. А тут вы предлагаете отдельно в IDE писать, создавать отдельный файл, что значит добавлять файл через MPQ, мне для каждого изменения в коде, чтобы проверить нужно копировать файл в карту? Я не шарю за мемхаки и тому подобное, только слышал о них.
15
  1. Добавьте файл через менеджер импорта или же MPQ по пути Scripts\\war3map.as или же просто war3map.as.

что значит добавлять файл через MPQ
это значит открыть карту через MPQ Editor и добавить туда файл(ы) с кодом. В этом случае надо будет после каждого пересохранения в редакторе заново закидывать файлик(и). В случае менеджера импорта перезакидывать не надо.
29
bifurcated, документация потихоньку пишется. Работы непочатый край, так что на данный момент сорян, придётся ещё годик подождать.
10
Когда появятся указатели на объект?) И ещё вопрос. Как реализованы потоки в Ангел скрипте?
Ответы (1)
20
Vampir_kolik, указатели в скриптовом языке? Чтобы ты и себе и собрату отстрелил пятую точку? Потоков как таковых там нет, точно так же как на луа их нет. Движок AS делегирует на псевдопотоки. А ручного управления потоками я лично не давал. Ну и в целом для этого есть гугл: Документация и API: www.angelcode.com/angelscript/sdk/docs/manual/group_ api _multithread_functions.html (нужно удалить пробелы между _ _.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.