3

» WarCraft 3 / Поиск карты

Holy War? И карта была на русском? Может быть ты помнишь ещё и другие механики из этой карты? Покупают юнитов именно в магазине, или всё же они их строят?
3

» WarCraft 3 / Кампания-противостояние 2

А разве дело не в том, что в варкрафте есть максимальная длина пути к карте, и поэтому он не отображает карты, которые её превышают. Попробуй сократить название самих карт или название папки.
*******
Сейчас проверил, что максимальная длина пути к карте должна быть 53 символа. Например, есть у тебя карта с названием "Arthas vs Kael.w3x" по такому пути: "Warcraft3\Maps\Campaign-counteraction 2\". Тогда для варкрафта эта карта будет иметь такой внутренний путь: "Maps\Campaign-counteraction 2\Arthas vs Kael.w3x". Длина этого пути 48 символов, поэтому карта нормально отображается в самом варкрафте, а например карта с названием файла "Fire_and_Ice_REMAKE_v_0_6a.w3x" имеет полный внутренний путь "Maps\Campaign-counteraction 2\Fire_and_Ice_REMAKE_v_0_6a.w3x" длиной в 60 символов, что превышает 53, и поэтому она не отображается.
И на счёт допустимых символов: вроде бы они могут быть достаточно любыми, это наверное от ОС зависит, а не от варкрафта, по крайней мере у меня с русскими символами проблем не возникало, и длина пути тоже должна быть не более 53 символов.
3

» WarCraft 3 / Пассивная способность героя

nvc123, по поводу твоего решения у меня возник вопрос на счёт этого участка кода:
private void update(){
			int index=0;
			loop{
			exitwhen index==count;
				times[index]--;
				if(times[index]<=0){
					if(removeAutoDeletedEffect(index)){
						index++;
					}
				}
				index++;
			}
		}
Здесь дважды в цикле написано index{{++;}}, но мне кажется, что последний index{{++;}} не нужен, т.к. если функция removeAutoDeletedEffect вернёт false, то не нужно увеличивать текущий индекс. И ещё у тебя после функции update есть одна лишняя фигурная скобка, если я правильно их проверил.
3

» WarCraft 3 / Пассивная способность героя

Когда ты добавляешь эффект, то делаешь слишком много присваиваний, причём сохраняешь эффект и в локальной переменной, и в глобальной:
call AddSpecialEffectTargetUnitBJ( "overhead", PickUnit , "Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl" )
set udg_SetEffect = GetLastCreatedEffectBJ()
set SelectEffect = udg_SetEffect
call PolledWait( 3.00 )
set udg_SetEffect = SelectEffect
call DestroyEffectBJ( udg_SetEffect )
Все эти присваивания являются излишними, поэтому твой код можно сократить до такого (также не забывай обнулять локальные переменные):
set SelectEffect = AddSpecialEffectTargetUnitBJ( "overhead", PickUnit , "Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl" )
call PolledWait( 3.00 )
call DestroyEffectBJ( SelectEffect )
set SelectEffect = null
3

» WarCraft 3 / Выжечь ману и сравнить её показатели

TomHollow:
Спасибо.
Если я правильно понял, то выжигание кастеру и цели половину маны цели:
call SetUnitState(tu, UNIT_STATE_MANA, manaTarget)
call SetUnitState(c, UNIT_STATE_MANA, GetUnitState(c, UNIT_STATE_MANA) - manaTarget)
Да, всё верно, не за что
3

» WarCraft 3 / Выжечь ману и сравнить её показатели

По итогу у меня выжигается полностью мана у кастера и только половина у цели.
Если я правильно понял, то нужно установить каждому юниту половину маны от своей текущей. Половина текущей маны каждого юнита у тебя хранится в переменных manaCaster и manaTarget. Тогда тебе нужно поменять эти две строчки
call SetUnitState(tu,UNIT_STATE_MANA,GetUnitState(c,UNIT_STATE_MANA)*xx)
call SetUnitState(c,UNIT_STATE_MANA,manaCaster-manaTarget)
на вот эти
call SetUnitState(tu, UNIT_STATE_MANA, manaTarget)
call SetUnitState(c, UNIT_STATE_MANA, manaCaster)
Если же нужно, чтобы количество выжженой маны у каждого юнита равнялось половине от маны кастера, то нужно вычесть от текущей маны цели половину маны кастера, которая у тебя сохранена в переменной manaCaster:
call SetUnitState(tu, UNIT_STATE_MANA, GetUnitState(tu, UNIT_STATE_MANA) - manaCaster)
call SetUnitState(c, UNIT_STATE_MANA, manaCaster)