4

» WarCraft 3 / Как правильно использовать boolexpr?

nazarpunk, Вообще-то я ни это имел в виду.
ScorpioT1000, Получается, я могу использовать одну глобальную переменную, условно "Кастер". И допустим, примерно в одно и тоже время разные игроки применят свои способности, в которых запустятся периодические таймеры. И в каждой способности каждого игрока будут прогонять поочередно эту переменную "Кастер"? И никаких нестыковок же не будет?
вообще-то я спрашивал про то, что если например у меня будет 1 фильтр (пусть будет 1 булэкспр) и 1 глобальная переменная условно "Кастер". И если её будут использовать все игроки для фильтра юнитов (не враг ли этот фильтруемый юнит к нам) в многократном таймере - то не будет ли каких либо проблем, вроде в одно и тоже время 2 и более игроков будут использовать эту самую переменную "кастер". Грубо говоря из MUI, не превратиться ли это в "Не MUI"?
4

» WarCraft 3 / Как правильно использовать boolexpr?

ScorpioT1000, Не дописал свой вопрос более точно)
Если примерно такой:
globals
	unit Caster = null	//Эту переменную используют все
endglobals

function My_Filter takes nothing return boolean
	return IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(Caster))	//Вот она!
endfunction

function Two takes nothing return nothing
	local timer t = GetExpiredTimer()
	local integer id = GetHandleId(t)
	local unit caster = LoadUnitHandle(Hash, id, 1)
	
	set Caster = caster	//Вот она!
	//Тут какие-то действия с группой
	
	set t = null
	set caster = null
endfunction

function One takes nothing return nothing
	local unit caster = GetTriggerUnit()
	local timer t = CreateTimer()
	local integer id = GetHandleId(t)
	
	call SaveUnitHandle(Hash, id, 1, caster)
	call TimerStart(t, 0.035, true, function Two)
	
	set caster = null
	set t = null
endfunction
То, не проканает?
4

» WarCraft 3 / Как правильно использовать boolexpr?

ScorpioT1000, Получается, я могу использовать одну глобальную переменную, условно "Кастер". И допустим, примерно в одно и тоже время разные игроки применят свои способности, в которых запустятся периодические таймеры. И в каждой способности каждого игрока будут прогонять поочередно эту переменную "Кастер"? И никаких нестыковок же не будет?
4

» WarCraft 3 / Как правильно использовать boolexpr?

Или вообще не дай боже гуй-муй.
Разве на ГУИ можно использовать boolexpr? Нет же, ведь.
4

» WarCraft 3 / Как изменить максимальное здоровье юниту?

Joma, а если юнит-здание?
Также, дать здании способность. Ведь здание это тоже юнит)
4

» WarCraft 3 / Способность "безумие" и молчанка

OVOgenez, проверил, поставил уровень на 2 и манакост 0 - сало все равно не работает на "безумие". Получается это зависит от манакоста
4

» WarCraft 3 / Как правильно расставить скобки?

nazarpunk, Хм, понятно, получается если я возьму в скобки - это значит уже другой уровень?
Ну тогда все более менее понятно.
Про уровни я вот не знал)))
4

» WarCraft 3 / Как правильно расставить скобки?

MpW, Знаете, тоже так пробовал, выдает "NO" без скобок ))
	local integer a = 1
    local integer b = 1
    local integer c = 1

    if c == 1 or a == 0 and b == 0 then
        call BJDebugMsg("YES")
    else
        call BJDebugMsg("NO")
    endif
4

» WarCraft 3 / Как правильно расставить скобки?

nazarpunk, Если не совмещать And и Or, то нужно делать вот так:
	local integer a = 1
    local integer b = 1
    local integer c = 1

    if a == 0 and b == 0 then
        call BJDebugMsg("YES")
    elseif c == 1 then
        call BJDebugMsg("YES")
	else
		call BJDebugMsg("NO")
    endif
? Или как?
Просто у меня вместо call BJDebugMsg("YES") может стоят очень много действии и все это копипастить на elseif кажется не красиво)
4

» WarCraft 3 / Как правильно расставить скобки?

Joma, здесь тоже скобки не нужны. Ибо значения a, b, c константны.
Интересно, он мне выдает "NO".
Но если я поставлю скобки, так:
if (a == 0 and b == 0) or c == 1 then
Тогда, выдает "YES"
4

» WarCraft 3 / Как правильно расставить скобки?

Вот другой пример:
function Trig_One_Actions takes nothing returns nothing
    local integer a = 1
    local integer b = 1
    local integer c = 1

    if a == 0 and b == 0 or c == 1 then
        call BJDebugMsg("YES")
    else
        call BJDebugMsg("NO")
    endif

endfunction
4

» WarCraft 3 / Глобальный таймер

Extremator, В данном конкретном случае, мне нужно запустить этот таймер через "триггер А", а потом навсегда выключить этот "триггер А". И периодический запускать таймер через другой "триггер Б". Если коротко, "триггер А" первично запускает таймер, а дальше за её повторные запуски берется "триггер Б".

может стоит уйти от события истечения таймера и указать нужнкю выполняемую функцию по его окончанию, мм?
В целом так тоже можно. Тогда все придется сделать одним триггером. И поставить переключатель на входе в триггер (ложь, истина или 1, 0) и который после первого в хода в триггер больше никогда не позволит войти в него снова. А внутри триггера таймер будет играть сам по себе.
В общем, я понял почему изначально мой глобальный таймер не работал. Нужно было создать его при инициализации триггера, чего я не знал)))
Я думал что глобальный таймеры тоже можно как и другие типы, просто объявить и создать где мне удобно и все)))
4

» WarCraft 3 / Глобальный таймер

Hate, Поразительно) все работает, если начать так:
function TimerGoActions takes nothing returns nothing
    call TimerStart(T, 5, false, null)  //Запускаю таймер
endfunction

function InitTrig_TimerGo takes nothing returns nothing
    set gg_trg_TimerGo = CreateTrigger()
    set T = CreateTimer()
    call TriggerRegisterTimerEventSingle(gg_trg_TimerGo, 0.00)  //Через 0 сек
    call TriggerAddAction(gg_trg_TimerGo, function TimerGoActions)
endfunction

Хмм. Получается, глобальный таймер нужно создавать только при инициализации триггера? А другие типы, например группы (CreateGroup()), можно в любом месте?
4

» WarCraft 3 / Глобальный таймер

globals
    timer T = null
endglobals
function TimerGoActions takes nothing returns nothing
    set T = CreateTimer()
    call TimerStart(T, 5, false, null)  //Запускаю таймер
endfunction

function InitTrig_TimerGo takes nothing returns nothing
    set gg_trg_TimerGo = CreateTrigger()
    call TriggerRegisterTimerEventSingle(gg_trg_TimerGo, 0.00)  //Через 0 сек
    call TriggerAddAction(gg_trg_TimerGo, function TimerGoActions)
endfunction

Где-то уже другой триггер:
function TimerEndActions takes nothing returns nothing
    call DisplayTextToForce(GetPlayersAll(), "Hello world!")
endfunction

function InitTrig_TimerEnd takes nothing returns nothing
    set gg_trg_TimerEnd = CreateTrigger()
    call TriggerRegisterTimerExpireEvent(gg_trg_TimerEnd, T)    //Таймер истекает
    call TriggerAddAction(gg_trg_TimerEnd, function TimerEndActions)
endfunction
4

» WarCraft 3 / Глобальный таймер

Extremator, Примерно, вот так пытаюсь сделать как в гуи)
Загруженные файлы
4

» WarCraft 3 / Не разблокируется способность.

Это просто смешно) Нашел ошибку, которую сам же и совершил) 😃
Логическая ошибка. Просто бред.