30

» WarCraft 3 / Урон по линии

что возвращает Perpendicular?
Формула возвращает длинну от бесконечной прямой линии, которая проходит через [Xa,Ya] [Xb,Yb]. Тобишь нужно ещё сделать проверку на то, что цель находится перед кастером.
30

» WarCraft 3 / Урон по линии

Хотя вроде как должен учитываться физический размер.
При GroupEnumUnitsInRange не учитывается физический размер, поэтому нужно при наборе в группу добавлять к радиусу максимальный физ.размер, а уже при переборе проверять функцией IsUnitInRangeXY.

Или вообще выбирать всех юнитов и радиусе урона и считать перпендикуляр от прямой.
function Perpendicular takes real Xa,real Ya,real Xb,real Yb,real Xc,real Yc returns real
    return SquareRoot((Xa - Xc) * (Xa - Xc) + (Ya - Yc) * (Ya - Yc)) * Sin(Atan2(Yc-Ya,Xc-Xa) - Atan2(Yb-Ya,Xb-Xa))
endfunction
30

» WarCraft 3 / Приведите примеры работы с SetUnitLookAt

но оказалось можно сделать больше - поворачивать dummy-снаряды
Почему не перейти на новый патч и не делать снаряды из эффектов?
30

» WarCraft 3 / Приведите примеры работы с SetUnitLookAt

Я просто хз что это за команда, но судя по переводу - заставляет кого-то куда-то смотреть
Если посмотреть на параметры, то да заставляет кость повернуться к цели:
---@param whichUnit unit
---@param whichBone string
---@param lookAtTarget unit
---@param offsetX real
---@param offsetY real
---@param offsetZ real
---@return nothing
function SetUnitLookAt(whichUnit, whichBone, lookAtTarget, offsetX, offsetY, offsetZ) end	-- (native)
30

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

Обновил софтину, кучу всего улучшил, файлы common.j, blizzard.j, common.ai теперь парсятся без ошибок, синтаксический анализатор в выхлопном луа коде тоже проблем не обнаружил, emmyDoc добавляется куда только можно. Можно проверять
Всё отлично работает, обновил файлы в своей статье.
30

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

луа не типизированный язык и будет глупо добавлять правила парсинга объявления типов..))
Тогда IDE не будет подсвечивать типы передаваемых данных в функцию, что не очень удобно.

к тому же придётся каждый return заменить на any.
Загруженные файлы
30

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

Окей, сделаю, не обещаю что будет прям как там, но будет парсить нормально
Будет просто шикарно, особенно если EmmyDoc расставить.
Загруженные файлы
30

» WarCraft 3 / Поднятие юнита в воздух.

Принятый ответ
do
    local ability = FourCC('Aave')
    local location = Location(0, 0)
    ---@param target unit
    ---@param z real
    function SetUnitZ(target, z)
        UnitAddAbility(target, ability)
        UnitRemoveAbility(target, ability)
        MoveLocation(location, GetUnitX(target), GetUnitY(target))
        SetUnitFlyHeight(target, z - GetLocationZ(location), 0)
    end
end
30

» WarCraft 3 / Reforged на LUA

А где можно посмотреть все альтернативы джассу для LUA?
Например в документации.
30

» WarCraft 3 / Ентер Рект

Не уверен, но возможно сборщик мусора в луа удаляет триггер потому что он локальный и после выхода из функции на него больше никто нигде не ссылается, попробуй присвоить его глобальной переменной.
Потрётся только ссылка на триггер, а с триггером ничего не случится.
30

» WarCraft 3 / Геометрические функции - проекция

и зачем ты на луа вызываеш таймер на jass когда есть у луа свой таймер
А таймер lua перестанет тикать при паузе игры?
30

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

Инкрименты не очень корректно конвертируются
integer f(){
    integer i = 3
    if (i > 3){
        return i++
    } else {
        return ++i
    }
}
function f()
	local i = 3
	if i > 3 then
		return i = i + 1
	else
		return i
	end
end
Лог
[16.11.2019|23:22:59][main.cpp:277 (main)] [Info]:	Starting cJass2Lua application (version 1.02 / x64 ) 
[16.11.2019|23:22:59][main.cpp:296 (main)] [Info]:	Config loaded 
[16.11.2019|23:23:05][cjassparser2.cpp:395 (cJass::Parser2::Parse)] [Info]:	Parsing file C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass 
[16.11.2019|23:23:05][cjassparser2.cpp:1181 (cJass::Parser2::Parse)] [Info]:	Starting parse of " C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass " 
[16.11.2019|23:23:05][cjassparser2.cpp:1182 (cJass::Parser2::Parse)] [Debug]:	Parsing line 1 
[16.11.2019|23:23:05][cjassparser2.cpp:687 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Debug]:	Parsing function f 
[16.11.2019|23:23:05][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node Function 
[16.11.2019|23:23:05][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 2 
[16.11.2019|23:23:05][cjassnodes.cpp:906 (cJass::LocalDeclaration::InitData)] [Debug]:	LocalDeclaration::InitData Args: { "integer" }
[16.11.2019|23:23:05][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node LocalDeclaration 
[16.11.2019|23:23:05][cjassnodes.cpp:922 (cJass::LocalDeclaration::AddVariable)] [Debug]:	Adding local variable i 
[16.11.2019|23:23:05][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 3 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(VarInitExpression) 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node LocalDeclaration 
[16.11.2019|23:23:05][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Logic) 
[16.11.2019|23:23:05][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(If) 
[16.11.2019|23:23:05][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Expression) 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Expression) 
[16.11.2019|23:23:05][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 4 
[16.11.2019|23:23:05][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Return) 
[16.11.2019|23:23:05][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 5 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Return) 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(If) 
[16.11.2019|23:23:05][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Else) 
[16.11.2019|23:23:05][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 6 
[16.11.2019|23:23:05][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Return) 
[16.11.2019|23:23:05][cjassparser2.cpp:857 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Warning]:	Unary operator not after identifier.( 6 : 19 ) 
[16.11.2019|23:23:05][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 7 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Return) 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Else) 
[16.11.2019|23:23:05][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 8 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Logic) 
[16.11.2019|23:23:05][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node Function 
[16.11.2019|23:23:05][cjassparser2.cpp:1162 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Debug]:	End parsing function 
[16.11.2019|23:23:05][cjassparser2.cpp:1355 (cJass::Parser2::Parse)] [Info]:	Parsing of file  C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass  successfuly done! 8 

В cjass скобочки if необязательны.
integer f(){
    if true {
        DoNothing()
    }
}
function f()
	if  then
	end
end
Лог
[16.11.2019|23:36:19][main.cpp:277 (main)] [Info]:	Starting cJass2Lua application (version 1.02 / x64 ) 
[16.11.2019|23:36:19][main.cpp:296 (main)] [Info]:	Config loaded 
[16.11.2019|23:36:22][cjassparser2.cpp:395 (cJass::Parser2::Parse)] [Info]:	Parsing file C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass 
[16.11.2019|23:36:22][cjassparser2.cpp:1181 (cJass::Parser2::Parse)] [Info]:	Starting parse of " C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass " 
[16.11.2019|23:36:22][cjassparser2.cpp:1182 (cJass::Parser2::Parse)] [Debug]:	Parsing line 1 
[16.11.2019|23:36:22][cjassparser2.cpp:687 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Debug]:	Parsing function f 
[16.11.2019|23:36:22][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node Function 
[16.11.2019|23:36:22][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 2 
[16.11.2019|23:36:22][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Logic) 
[16.11.2019|23:36:22][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(If) 
[16.11.2019|23:36:22][cjassparser2.cpp:754 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Warning]:	Expected condition expression ( ( 2 : 13 ) 
[16.11.2019|23:36:22][cjassparser2.cpp:754 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Warning]:	Expected condition expression ( ( 2 : 14 ) 
[16.11.2019|23:36:22][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 3 
[16.11.2019|23:36:22][cjassparser2.cpp:754 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Warning]:	Expected condition expression ( ( 3 : 1 ) 
[16.11.2019|23:36:22][cjassparser2.cpp:754 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Warning]:	Expected condition expression ( ( 3 : 19 ) 
[16.11.2019|23:36:22][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Expression) 
[16.11.2019|23:36:22][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Expression) 
[16.11.2019|23:36:22][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 4 
[16.11.2019|23:36:22][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(If) 
[16.11.2019|23:36:22][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 5 
[16.11.2019|23:36:22][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Logic) 
[16.11.2019|23:36:22][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node Function 
[16.11.2019|23:36:22][cjassparser2.cpp:1162 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Debug]:	End parsing function 
[16.11.2019|23:36:22][cjassparser2.cpp:1355 (cJass::Parser2::Parse)] [Info]:	Parsing of file  C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass  successfuly done! 5 
30

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

nothing f(){
    integer i=5
    loop {
        exitwhen i > 5
        i++
    }
}
function f()
	local i = 5
	loop
	exitwheni > 5
	i = i + 1
end
Лог
[16.11.2019|22:40:22][main.cpp:277 (main)] [Info]:	Starting cJass2Lua application (version 1.01 / x64 ) 
[16.11.2019|22:40:22][main.cpp:296 (main)] [Info]:	Config loaded 
[16.11.2019|22:40:28][cjassparser2.cpp:395 (cJass::Parser2::Parse)] [Info]:	Parsing file C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass 
[16.11.2019|22:40:28][cjassparser2.cpp:1165 (cJass::Parser2::Parse)] [Info]:	Starting parse of " C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass " 
[16.11.2019|22:40:28][cjassparser2.cpp:1166 (cJass::Parser2::Parse)] [Debug]:	Parsing line 1 
[16.11.2019|22:40:29][cjassparser2.cpp:671 (cJass::Parser2::Parse::<lambda_970c80303602dae1ae8b808a90cd2d4b>::operator ())] [Debug]:	Parsing function f 
[16.11.2019|22:40:29][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node Function 
[16.11.2019|22:40:29][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 2 
[16.11.2019|22:40:29][cjassnodes.cpp:942 (cJass::LocalDeclaration::InitData)] [Debug]:	LocalDeclaration::InitData Args: { "integer" }
[16.11.2019|22:40:29][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node LocalDeclaration 
[16.11.2019|22:40:29][cjassnodes.cpp:958 (cJass::LocalDeclaration::AddVariable)] [Debug]:	Adding local variable i 
[16.11.2019|22:40:29][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 3 
[16.11.2019|22:40:29][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(VarInitExpression) 
[16.11.2019|22:40:29][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node LocalDeclaration 
[16.11.2019|22:40:29][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Wrapper) 
[16.11.2019|22:40:29][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 4 
[16.11.2019|22:40:29][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Wrapper) 
[16.11.2019|22:40:29][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 5 
[16.11.2019|22:40:29][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Wrapper) 
[16.11.2019|22:40:29][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Wrapper) 
[16.11.2019|22:40:29][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 6 
[16.11.2019|22:40:29][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Wrapper) 
[16.11.2019|22:40:29][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Wrapper) 
[16.11.2019|22:40:29][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 7 
[16.11.2019|22:40:29][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node Function 
[16.11.2019|22:40:29][cjassparser2.cpp:1146 (cJass::Parser2::Parse::<lambda_970c80303602dae1ae8b808a90cd2d4b>::operator ())] [Debug]:	End parsing function 
[16.11.2019|22:40:29][cjassparser2.cpp:1339 (cJass::Parser2::Parse)] [Info]:	Parsing of file  C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass  successfuly done! 7 

В плане косметики, можно ли очищать лог при начале конвертирования и добавить какуюнибудь иконку))

Конкатекация в lua происходит через ..
local string = 'Concatecate'..'String'
А конвертер оставляет +
nothing test() {
    string s = "Concatecate"+"String"
}
function test()
	local s = "Concatecate" + "String"
end
Лог
[16.11.2019|22:51:35][main.cpp:277 (main)] [Info]:	Starting cJass2Lua application (version 1.01 / x64 ) 
[16.11.2019|22:51:35][main.cpp:296 (main)] [Info]:	Config loaded 
[16.11.2019|22:51:42][cjassparser2.cpp:395 (cJass::Parser2::Parse)] [Info]:	Parsing file C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass 
[16.11.2019|22:51:42][cjassparser2.cpp:1165 (cJass::Parser2::Parse)] [Info]:	Starting parse of " C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass " 
[16.11.2019|22:51:42][cjassparser2.cpp:1166 (cJass::Parser2::Parse)] [Debug]:	Parsing line 1 
[16.11.2019|22:51:42][cjassparser2.cpp:671 (cJass::Parser2::Parse::<lambda_970c80303602dae1ae8b808a90cd2d4b>::operator ())] [Debug]:	Parsing function test 
[16.11.2019|22:51:42][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node Function 
[16.11.2019|22:51:42][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 2 
[16.11.2019|22:51:42][cjassnodes.cpp:942 (cJass::LocalDeclaration::InitData)] [Debug]:	LocalDeclaration::InitData Args: { "string" }
[16.11.2019|22:51:42][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node LocalDeclaration 
[16.11.2019|22:51:42][cjassnodes.cpp:958 (cJass::LocalDeclaration::AddVariable)] [Debug]:	Adding local variable s 
[16.11.2019|22:51:42][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 3 
[16.11.2019|22:51:42][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(VarInitExpression) 
[16.11.2019|22:51:42][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node LocalDeclaration 
[16.11.2019|22:51:42][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node Function 
[16.11.2019|22:51:42][cjassparser2.cpp:1146 (cJass::Parser2::Parse::<lambda_970c80303602dae1ae8b808a90cd2d4b>::operator ())] [Debug]:	End parsing function 
[16.11.2019|22:51:42][cjassparser2.cpp:1339 (cJass::Parser2::Parse)] [Info]:	Parsing of file  C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass  successfuly done! 3 

С циклами беда какая-то творится
nothing f(){
    integer res = 1, i = 0
    whilenot (i++ >= pow) {
        res *= num
    }
    do {
        res *= num
    } whilenot (i++ >= pow)
}
function f()
	local res, i = 1, 0
	whilenot(i = i + 1 >= pow)
	res = res * numdo
	res = res * num
end

function i(>=pow)
end
Лог
[16.11.2019|23:10:22][main.cpp:277 (main)] [Info]:	Starting cJass2Lua application (version 1.02 / x64 ) 
[16.11.2019|23:10:22][main.cpp:296 (main)] [Info]:	Config loaded 
[16.11.2019|23:10:27][cjassparser2.cpp:395 (cJass::Parser2::Parse)] [Info]:	Parsing file C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass 
[16.11.2019|23:10:27][cjassparser2.cpp:1181 (cJass::Parser2::Parse)] [Info]:	Starting parse of " C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass " 
[16.11.2019|23:10:27][cjassparser2.cpp:1182 (cJass::Parser2::Parse)] [Debug]:	Parsing line 1 
[16.11.2019|23:10:27][cjassparser2.cpp:687 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Debug]:	Parsing function f 
[16.11.2019|23:10:27][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node Function 
[16.11.2019|23:10:27][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 2 
[16.11.2019|23:10:27][cjassnodes.cpp:906 (cJass::LocalDeclaration::InitData)] [Debug]:	LocalDeclaration::InitData Args: { "integer" }
[16.11.2019|23:10:27][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node LocalDeclaration 
[16.11.2019|23:10:27][cjassnodes.cpp:922 (cJass::LocalDeclaration::AddVariable)] [Debug]:	Adding local variable res 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(VarInitExpression) 
[16.11.2019|23:10:27][cjassnodes.cpp:922 (cJass::LocalDeclaration::AddVariable)] [Debug]:	Adding local variable i 
[16.11.2019|23:10:27][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 3 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(VarInitExpression) 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node LocalDeclaration 
[16.11.2019|23:10:27][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Wrapper) 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Argument) 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Call) 
[16.11.2019|23:10:27][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 4 
[16.11.2019|23:10:27][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Wrapper) 
[16.11.2019|23:10:27][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 5 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Wrapper) 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Wrapper) 
[16.11.2019|23:10:27][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 6 
[16.11.2019|23:10:27][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 7 
[16.11.2019|23:10:27][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node OperationObject(Wrapper) 
[16.11.2019|23:10:27][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 8 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node OperationObject(Wrapper) 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node Function 
[16.11.2019|23:10:27][cjassparser2.cpp:1162 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Debug]:	End parsing function 
[16.11.2019|23:10:27][cjassparser2.cpp:687 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Debug]:	Parsing function i 
[16.11.2019|23:10:27][cjassparser2.cpp:339 (cJass::Parser2::_addNode)] [Debug]:	Pushing node Function 
[16.11.2019|23:10:27][cjassparser2.cpp:1203 (cJass::Parser2::Parse)] [Debug]:	Parsing line 9 
[16.11.2019|23:10:27][cjassparser2.cpp:323 (cJass::Parser2::_pop)] [Debug]:	Popping node Function 
[16.11.2019|23:10:27][cjassparser2.cpp:1162 (cJass::Parser2::Parse::<lambda_1487e515c1170e8de97051d05f17d0de>::operator ())] [Debug]:	End parsing function 
[16.11.2019|23:10:27][cjassparser2.cpp:1355 (cJass::Parser2::Parse)] [Info]:	Parsing of file  C:\Users\nazarpunk\Downloads\cJass2Lua_v1.02_x64\test.cjass  successfuly done! 9 
Загруженные файлы
30

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

Конкатекация не работает
define {
    EXAMPLE_STRING = "Concatecate"+"String"
}
EXAMPLE_STRING = "Concatecate"
Лог
[16.11.2019|22:24:05][main.cpp:277 (main)] [Info]:	Starting cJass2Lua application (version 1.01 / x64 ) 
[16.11.2019|22:24:05][main.cpp:296 (main)] [Info]:	Config loaded 
[16.11.2019|22:24:11][cjassparser2.cpp:395 (cJass::Parser2::Parse)] [Info]:	Parsing file C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass 
[16.11.2019|22:24:11][cjassparser2.cpp:1165 (cJass::Parser2::Parse)] [Info]:	Starting parse of " C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass " 
[16.11.2019|22:24:11][cjassparser2.cpp:1166 (cJass::Parser2::Parse)] [Debug]:	Parsing line 1 
[16.11.2019|22:24:11][cjassparser2.cpp:694 (cJass::Parser2::Parse::<lambda_970c80303602dae1ae8b808a90cd2d4b>::operator ())] [Debug]:	Parsing defines 
[16.11.2019|22:24:11][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 2 
[16.11.2019|22:24:11][cjassparser2.cpp:1187 (cJass::Parser2::Parse)] [Debug]:	Parsing line 3 
[16.11.2019|22:24:11][cjassparser2.cpp:648 (cJass::Parser2::Parse::<lambda_970c80303602dae1ae8b808a90cd2d4b>::operator ())] [Debug]:	End parsing defines 
[16.11.2019|22:24:11][cjassparser2.cpp:1339 (cJass::Parser2::Parse)] [Info]:	Parsing of file  C:\Users\nazarpunk\Downloads\cJass2Lua_v1.01_x64\test.cjass  successfuly done! 3 
30

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

Drulia_san, можно запоминать последний путь? Не очень удобно каждый раз его вбивать.
Загруженные файлы
30

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

Drulia_san, в lua номерация массивов начинается с 1 в отличии от cjass. Это как-то учтено или придётся ручками все переборы править?
30

» WarCraft 3 / Color

Принятый ответ
---@param whichEffect effect
---@param r integer
---@param g integer
---@param b integer
function BlzSetSpecialEffectColor(whichEffect, r, g, b) end
30

» WarCraft 3 / Галочка изначально включен jass

я хотел подключать скрипты героев, непосредственно после их пика
Если хотите оптимизировать количество триггеров, то есть более простой способ.
30

» WarCraft 3 / Оптимизация jass кода

В чём разница между этой статьёй и этой?
Это ж одна и таже статья)
30

» WarCraft 3 / Свитч-панелька для скиллов [лучший способ в 1.31]

а запрещать для игрока, если игрок может управлять только 1 таким юнитом.
Можно и для юнита запрещать
---@param whichUnit unit
---@param abilId integer
---@param flag boolean
---@param hideUI boolean
function BlzUnitDisableAbility(whichUnit, abilId, flag, hideUI) end