1
20
1 неделю назад
Отредактирован Unryze
1

» Unryze Jass API / UjAPI - AngelScript

Вышла новая версия! Прокрутить к ресурсу

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, это контролирует будут ли созданы и запущены таймеры.
1
20
1 неделю назад
1

» Unryze Jass API / UjAPI - Что нового?

Вышла новая версия! Прокрутить к ресурсу

v1.1.15.218

UjAPI.dll

1. Новые Константы:
	constant frameeventtype				FRAMEEVENT_FRAME_ITEM_CHANGED								= ConvertFrameEventType(10)
	constant controlstyleflag 			CONTROL_STYLE_DRAW											= ConvertControlStyleFlag(32)
2. Новые Нативные Функции:
	native BitwiseShiftLeftLogical							takes integer i, integer bitsToShift returns integer
	native BitwiseShiftRightLogical							takes integer i, integer bitsToShift returns integer
	//
	native CountUnitAbilities								takes unit whichUnit, boolean alsoCountBuffs returns integer
	native CountUnitBuffs									takes unit whichUnit returns integer
	//
	native GetBuffOwningAbility								takes buff whichbuff returns ability // experimental
	native SetBuffOwningAbility								takes buff whichBuff, ability whichAbility returns nothing // experimental
	//
	native SetProjectileSourceAbility						takes projectile whichProjectile, ability whichAbility returns nothing
	//
	native GetFrameChildrenCountEx							takes framehandle whichFrame, integer listId returns integer // listId: CFrames: 0 for default | 1 for layouts (will return CLayer) | CSimpleFrames 0 - 6 | CSimpleRegions any number, as they only have 1 child node.
	native GetFrameChildEx									takes framehandle whichFrame, integer listId, integer index returns framehandle
	native GetFrameTextAlignmentValue						takes framehandle whichFrame, integer id returns real // CSimpleFontString: 0 - x, 1 - y | CTextFrame: 0 - x, 1 - y, 2 - x Shadow, 3 - y Shadow, 4 = FontJustificationOffset
	native SetFrameTextAlignmentValue						takes framehandle whichFrame, integer id, real offset returns nothing
	native GetTriggerFrameTargetFrame						takes nothing returns framehandle
3. Исправлена поддержка отрицательных чисел с сеттерами цифровых полей, ранее они обрабатывались без знака.
4. CListBox API теперь работает с CMenu.
5. CListBox API теперь работает с CPopupMenu.
6. CListBox API теперь работает с CRadioGroup.
7. GetFrameTextColourEx теперь работает с CListBoxItem.
8. SetFrameTextColourEx теперь работает с CListBoxItem.
9. SetFrameFont теперь работает с CTimerTextFrame.
10. SetFrameFont теперь работает с CListBoxItem.
11. SetFrameTextAlignment теперь работает с CTimerTextFrame.
12. SetFrameTextAlignment теперь работает с CListBoxItem.
13. SetFrameTextVerticalAlignment теперь работает с CTimerTextFrame.
14. SetFrameTextVerticalAlignment теперь работает с CListBoxItem.
15. SetFrameTextHorizontalAlignment теперь работает с CTimerTextFrame.
16. SetFrameTextHorizontalAlignment теперь работает с CListBoxItem.
17. FRAMEEVENT_POPUPMENU_ITEM_CHANGED теперь работает с CListBox.
18. AddFrameListItem теперь работает с CRadioGroup.
19. FRAMEEVENT_POPUPMENU_ITEM_CHANGED теперь работает с CRadioGroup.
20. Исправлено SetLightningTargetX устанавливающее x источника, вместо цели.
21. Исправлено SetLightningTargetY устанавливающее y источника, вместо цели.
22. Исправлено SetLightningTargetZ устанавливающее z источника, вместо цели.
23. Исправлено SetLightningTargetPositionLoc устанавливающее позицию источника, вместо цели.
24. Исправлено GroupContainsUnit всегда возвращающее true.
25. Перенесён весь внутренний код jFramea API во FrameAPI. Это пометка для себя, данное изменение не должно повлиять ни на что.
26. Исправлено BlzSetUnitMaxMana устанавливающее максимальное здоровье вместо маны.
27. Исправлено не работающее SetFrameTextHorizontalAlignment.
28. Исправлено SetFrameTextColourEx для CSimpleFontString.

Launcher

1. CLI теперь может обрабатывать эти warcraft 3 комманды: d3d, opengl, swtnl, classic, datadir, gametype, fullscreen.
2. Добавлена опция Dev Mode для AngelScript.
3. Добавлена опция Console для AngelScript.
4. Добавлена опция No Warnings для AngelScript.
5. Добавлена опция "dev" CLI команда для AngelScript.
6. Добавлена опция "console" CLI команда для AngelScript.
7. Добавлена опция "nowarnings" CLI команда для AngelScript.
8. Добавлен модуль FastMenu.dll в Modules.
9. Добавлена опция Fast Menu для Launcher.
10. Добавлена -fastmenu CLI команда для Launcher.
1
20
1 неделю назад
Отредактирован Unryze
1

» Unryze Jass API / UjAPI

Вышла новая версия! Прокрутить к ресурсу

v1.1.15.218

UjAPI.dll

1. Новые Константы:
	constant frameeventtype				FRAMEEVENT_FRAME_ITEM_CHANGED								= ConvertFrameEventType(10)
	constant controlstyleflag 			CONTROL_STYLE_DRAW											= ConvertControlStyleFlag(32)
2. Новые Нативные Функции:
	native BitwiseShiftLeftLogical							takes integer i, integer bitsToShift returns integer
	native BitwiseShiftRightLogical							takes integer i, integer bitsToShift returns integer
	//
	native CountUnitAbilities								takes unit whichUnit, boolean alsoCountBuffs returns integer
	native CountUnitBuffs									takes unit whichUnit returns integer
	//
	native GetBuffOwningAbility								takes buff whichbuff returns ability // experimental
	native SetBuffOwningAbility								takes buff whichBuff, ability whichAbility returns nothing // experimental
	//
	native SetProjectileSourceAbility						takes projectile whichProjectile, ability whichAbility returns nothing
	//
	native GetFrameChildrenCountEx							takes framehandle whichFrame, integer listId returns integer // listId: CFrames: 0 for default | 1 for layouts (will return CLayer) | CSimpleFrames 0 - 6 | CSimpleRegions any number, as they only have 1 child node.
	native GetFrameChildEx									takes framehandle whichFrame, integer listId, integer index returns framehandle
	native GetFrameTextAlignmentValue						takes framehandle whichFrame, integer id returns real // CSimpleFontString: 0 - x, 1 - y | CTextFrame: 0 - x, 1 - y, 2 - x Shadow, 3 - y Shadow, 4 = FontJustificationOffset
	native SetFrameTextAlignmentValue						takes framehandle whichFrame, integer id, real offset returns nothing
	native GetTriggerFrameTargetFrame						takes nothing returns framehandle
3. Исправлена поддержка отрицательных чисел с сеттерами цифровых полей, ранее они обрабатывались без знака.
4. CListBox API теперь работает с CMenu.
5. CListBox API теперь работает с CPopupMenu.
6. CListBox API теперь работает с CRadioGroup.
7. GetFrameTextColourEx теперь работает с CListBoxItem.
8. SetFrameTextColourEx теперь работает с CListBoxItem.
9. SetFrameFont теперь работает с CTimerTextFrame.
10. SetFrameFont теперь работает с CListBoxItem.
11. SetFrameTextAlignment теперь работает с CTimerTextFrame.
12. SetFrameTextAlignment теперь работает с CListBoxItem.
13. SetFrameTextVerticalAlignment теперь работает с CTimerTextFrame.
14. SetFrameTextVerticalAlignment теперь работает с CListBoxItem.
15. SetFrameTextHorizontalAlignment теперь работает с CTimerTextFrame.
16. SetFrameTextHorizontalAlignment теперь работает с CListBoxItem.
17. FRAMEEVENT_POPUPMENU_ITEM_CHANGED теперь работает с CListBox.
18. AddFrameListItem теперь работает с CRadioGroup.
19. FRAMEEVENT_POPUPMENU_ITEM_CHANGED теперь работает с CRadioGroup.
20. Исправлено SetLightningTargetX устанавливающее x источника, вместо цели.
21. Исправлено SetLightningTargetY устанавливающее y источника, вместо цели.
22. Исправлено SetLightningTargetZ устанавливающее z источника, вместо цели.
23. Исправлено SetLightningTargetPositionLoc устанавливающее позицию источника, вместо цели.
24. Исправлено GroupContainsUnit всегда возвращающее true.
25. Перенесён весь внутренний код jFramea API во FrameAPI. Это пометка для себя, данное изменение не должно повлиять ни на что.
26. Исправлено BlzSetUnitMaxMana устанавливающее максимальное здоровье вместо маны.
27. Исправлено не работающее SetFrameTextHorizontalAlignment.
28. Исправлено SetFrameTextColourEx для CSimpleFontString.

Launcher

1. CLI теперь может обрабатывать эти warcraft 3 комманды: d3d, opengl, swtnl, classic, datadir, gametype, fullscreen.
2. Добавлена опция Dev Mode для AngelScript.
3. Добавлена опция Console для AngelScript.
4. Добавлена опция No Warnings для AngelScript.
5. Добавлена опция "dev" CLI команда для AngelScript.
6. Добавлена опция "console" CLI команда для AngelScript.
7. Добавлена опция "nowarnings" CLI команда для AngelScript.
8. Добавлен модуль FastMenu.dll в Modules.
9. Добавлена опция Fast Menu для Launcher.
10. Добавлена -fastmenu CLI команда для Launcher.
0
20
1 неделю назад
0

» Unryze Jass API / UjAPI - AngelScript

Makeba, редактирование World Editor'a ужасно геморройное занятие, так что скорее нет, чем да. Ибо мне тяжко вообще оправдать трудочасы на него, учитывая все его проблемы, да и когда есть тот же w3x2lni.
1
20
2 недели назад
1

» Unryze Jass API / UjAPI

PT153, потому что внутри игры функция правит всё на нулевой индекс, посылая 1 -> 0, а ниже 0 правятся до 0.
0
20
2 недели назад
0

» Unryze Jass API / UjAPI

PT153, ты готов писать описания 2000 нативкам, которые по факту своими именами поясняю то, за что они отвечают? Или я должен работу целой компании (в которой людям ещё и платят) делать в одиночку ещё и за "а мы попросим, но потом не прочитаем". Толку от этого комьюнити, если оно само не хочет ничего делать?
0
20
2 недели назад
Отредактирован Unryze
0

» Unryze Jass API / UjAPI

PT153, GetHeroMaxLevelExperienceNeeded возвращает сколько нужно ещё опыта до достижения уровня.
GetHeroExperienceNeeded - внутри движка требует юнита, чтобы проверить данные и провести пересчёты, ибо юнит может иметь флаг RoC и просчёт опыта будет по-другому.
//----- (6F207760) --------------------------------------------------------
int __stdcall Game::Data::GetExperienceNeededForLevel(int a1)
{
  int v1; // esi
  unsigned int v2; // eax

  v1 = a1;
  v2 = (unsigned int)Engine::Config::ReadInteger((int)"Misc", (int)"MaxHeroLevel", 0) - 1;
  if ( a1 - 1 > v2 )
    v1 = (v2 & ~((a1 - 1) >> 31)) + 1;
  return sub_6F00B0E0(v1 - 1);
}

int __thiscall CUnit::GetLevelExperienceNeeded(uint32_t *this, int a1) // unit, level
{
  int result; // eax

  if ( this[124] )
    result = Game::Data::GetExperienceNeededForLevel(a1);
  else
    result = 0;
  return result;
}
int32_t CUnit::GetHeroExperienceNeeded( CUnit* unit, int32_t level )
{
	return ( pOffsets[ Enum::Offsets::GetHeroXPNeeded ] && CUnit::IsOkay( unit ) && CUnit::IsHero( unit ) && !CUnit::IsTower( unit ) ) ? this_call<int32_t>( pOffsets[ Enum::Offsets::GetHeroXPNeeded ], unit, level ) : NULL;
}
Индексации видать у них под капотом даже для уровней идут с нуля. Ты можешь идти оспаривать эту логику с Blizzard, мои ручки умыты.
Юнита в целом можно убрать, но нужно тогда менять оффсет, а мне немного лень, да и так в целом правильнее~.
0
20
2 недели назад
0

» WarCraft 3 / Проблема с ACac

KlonRefa, За несколько лет в вар3 кого только ко мне не приписывали уже, я всё и вся, альфа и омега. >_> Нет, я не SAND.
4
20
2 недели назад
Отредактирован Unryze
4

» WarCraft 3 / Проблема с ACac

DracoL1ch, Если точнее, то любая аура автоматически накладывается на нового созданно юнита, если он входит в АоЕ ауры. То бишь не на карту, а при подходе юнита в рейндж юнита с аурой.
Пруф:
А тут смена обновления тика таймера ауры (ауры обновляются лишь при конце тика таймера) с 2 сек на .1 сек.
Загруженные файлы
4
20
2 недели назад
Отредактирован Unryze
4

» WarCraft 3 / Проблема с ACac

quq_CCCP, у тебя тоже какой-то странный миф. У каждой ауры в структуре свой таймер и каждый выстреливает отдельно, потому в UjAPI возможно менять тик ауры (сменить стандартные 2 сек, допустим на .1) пруф:
    local rect world = GetWorldBounds( )
    local region reg = CreateRegion( )
    
    call RegionAddRect( reg, world )
    
    set t = CreateTrigger( )
    call TriggerRegisterEnterRegion( t, reg, null )
    call TriggerAddAction( t, function OnAnyUnitEntersWorld )
    
    set u = CreateUnit( Player( 0 ), 'Hpal', .0, .0, .0 )
    call UnitAddAbility( u, 'AHad' )
    call UnitAddAbility( u, 'ACac' )
    set a = GetUnitAbility( u, 'ACac' )
    call SetAbilityRealField( a, ABILITY_RF_AURA_REFRESH_TIME, .1 )
Загруженные файлы
0
20
2 недели назад
0

» Unryze Jass API / UjAPI - Пример PopupMenu без FDF

П.С. данный пример будет возможно на будущем обновлении UjAPI, то бишь с версии 1.1.15.218, которая ещё не выпущена.
0
20
2 недели назад
0

» Unryze Jass API / UjAPI - Пример ListBox без FDF

Карта обновлена под UjAPI v1.1.14.215, добавлено событие выбора фреймов в ListBox.
0
20
2 недели назад
Отредактирован Unryze
0

» Unryze Jass API / UjAPI - Система Выбора Героев

Вышла новая версия! Прокрутить к ресурсу
Карта обновлена под UjAPI v1.1.14.215, система выбора теперь использует SetFrameBlendMode для изменения типа отрисовки.
0
20
2 недели назад
Отредактирован Unryze
0

» Unryze Jass API / UjAPI - Система Магазина

Вышла новая версия! Прокрутить к ресурсу
Карта обновлена под UjAPI v1.1.14.215, система выбора теперь использует SetFrameBlendMode для изменения типа отрисовки.
0
20
2 недели назад
0

» Unryze Jass API / UjAPI - AngelScript

Алексей Андреич, забыл ответить, парсер был обновлён.
0
20
3 недели назад
0

» Unryze Jass API / UjAPI - AngelScript

В данный момент не дома, AngelScript не был создан для WE, ошибка тоже странная, буду дома гляну сам.
По парсеру - там отдельная ошибка, точнее мой косяк, я когда добавлял новые типы именно в парсере забыл добавить их регистрацию, обновлю его скоро.
0
20
3 недели назад
0

» Unryze Jass API / UjAPI - Jass vs lua vs AngelScript

Вышла новая версия! Прокрутить к ресурсу
Исправлен тестовый код AngelScript под последнюю версию, где более нет нужды в FourCC ибо теперь есть поддержка равкодов.
Исправлен карта в архиве.
0
20
4 недели назад
0

» Unryze Jass API / UjAPI

EugeAl, карты есть, но меня это особо не заботит. Установка и так проще некуда, а твоя затея буквально странная… ибо не нужно менять никакие .exe файлы, и вообще ужапи должна ставиться в отдельную папку. 2024 год, тяжело разархивировать файлы в папку (это вся установка) и указать путь к игре/редактору (как-то с Magos люди справлялись). Ну и закончим тем, что вдруг у кого-то несколько сборок (как у меня) и автоматом выберется не та? Да и опять же, можно буквально копипастнуть путь напрямую, а не искать по папкам.
Ну блин, реально несерьёзно как-то заявлять о сложности установки.
0
20
4 недели назад
0

» Unryze Jass API / UjAPI

Borodach, а документация на джасс от Близзард была? Я что-то не помню… а, вспомнил, нет, не было.
И опять же, минимальное знание английского языка - уже служит документацией, но, если ты готов расписать 2000+ нативок, еще и документацией, я готов на это посмотреть.
1
20
4 недели назад
1

» IntelliJASS / Переменные

EugeAl, да, `set someInts[1000] = 5000 первая установка значения так же инициализирует индексы от 0 до X` Как я и указал индексы от 0 до 1023 (ибо размер 1024) будут заполнены нулями, а индекс 1000 примет значение 5000.
Уйму статей потому я и опровергал в Jass Mythbusters, и потому был дан резкий ответ, чтобы последующие мифы не рождались.
2
20
4 недели назад
Отредактирован Unryze
2

» IntelliJASS / Переменные

globals
	integer array someInts // массив пустой, get любого индекса вернёт 0, по указанным выше причинам.
endglobals

function TestArrayStuff takes nothing returns nothing
	set someInts[1000] = 5000 // первая установка значения так же инициализирует индексы от 0 до X по мере возрастания 1/2/4/8/16/32/64 то есть после 64 индекса расти будет по 64. И того выделиться размер в 1024, то бишь от 0 до 1023.
endfunction
Поясняю, в Jass нельзя именно инициализировать массив, ибо он растёт автоматически, у него нет требования указания строго размера как допустим в AS:
array<unit> U_SelectionSelArr( 12 );
Ты путаешь вещи, и писать "проверено" - не проверив / не зная внутренности движка - и есть "дезинформация", ибо ответ твой был в корне неверный.
Ну и закончим опять же этим кодом:
//----- (6F459730) --------------------------------------------------------
int __thiscall JassVM::GetArrayValueById(uint32_t *this, unsigned int a2)
{
  int result; // eax

  if ( a2 < this[2] )
    result = *(uint32_t *)(this[3] + 4 * a2);
  else
    result = 0;
  return result;
}
Даже без знания ЯП у тебя лишь 2 варианта:
  1. a2 (индекс) меньше числа (размера) - то вернуть это число по индексу a2.
  2. a2 (индекс) больше или равен числу (размеру) - то вернуть 0.
Ну ты и опирался на 2) не понимая почему так.
1
20
4 недели назад
1

» IntelliJASS / Переменные

EugeAl, ещё раз, посмотри мои скрины глазами, а не пятой точкой. То, что "null" применимо к string - не значит, что это СТОИТ использовать, джассу то пофиг, ибо строки по сути в переменной хранят индекс на текст, а не сам текст. Потому 0 = null = "", но когда это дело нужно транслировать допустим в AS, то начинаются отстрелы задниц, когда строки сравнивают с null, что недопустим в AS.
Повторяю на более простом языке, когда у тебя массив только объявлен, то размер равен нулю, так как индекс 0 >= размеру, то возвращается всегда 0, не потому что в нём есть значение, а потому что 0 - это стандартное значение. На кой болт ты споришь - непонятно.
И повторюсь в третий раз, ВЫВОД 0 НЕ ОЗНАЧАЕТ ЧТО У НАС БЫЛА ИНЦИАЛИЗАЦИЯ, то, что игра не отстреливает - как раз причина проверки индекса против размера.
Надеюсь столько повторений хватит.
1
20
4 недели назад
1

» IntelliJASS / Переменные

Открою секрет, массив не иницилизирован пока не используется set, а 0 возвращается так как это стандартное значение. 0 в string = "" или же null.
Измерение свечками - это конечно прикольно, но не стоит распространять дезинформацию, не проведя тестов/не изучив внутренности. :(
Загруженные файлы
0
20
4 недели назад
0

» Unryze Jass API / UjAPI - Что нового?

Вышла новая версия! Прокрутить к ресурсу

v1.1.14.215

1. Исправлена SetTextTagText не работающая с текстами отличными от TRIGSTR_ из-за предидущего исправления.
2. Исправлена Get/SetBlendMode с CSimpleFontString.
2
20
4 недели назад
2

» Unryze Jass API / UjAPI

Вышла новая версия! Прокрутить к ресурсу

v1.1.14.215

1. Исправлена SetTextTagText не работающая с текстами отличными от TRIGSTR_ из-за предидущего исправления.
2. Исправлена Get/SetBlendMode с CSimpleFontString.