У тебя помоему происходят проблемы ты не фильтруешь даже юнитов, из за того что нет рандома, и нет фильтра, у тебя продолжают даммики кастовать в уже мёртвых. А так как нет рандома, если ты на том же месте, получается каждый каст спелла в одних и тех же идёт.
Так же у тебя абилка даммика имеет дальность меньше чем область пика юнитов.
короче от переизбытка безделья сделал на CS , на гуи забыл как делать , переменные не нужны, всё на локалках. Если что то не так напишешь в личку.
В общем оно всё очень кривое, конкретно не создаётся этот "CheckListBox", попробуйте в этом месте создать любой прозрачный бекдроп визуаль будет тоже самое, по поводу REFORGEDUIMAKER, не пользовался, но слышал что вещь крайне кривая, да и судя по кода что она генерирует, там ничего особенного, лучше делать это без каких либо программ просто кодом, помог как смог, мб другой кто что подскажет
Не знаю что ставить в ответ но ты правильно сказал проблема в set Frame09 = BlzCreateFrame("CheckListBox", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0),0,0). И мне кажется это крашится если маленький размер далее выдаю. Если для себя интересно чекните в размере проблемы, либо тут я ошибся либо реально в этом дело, пока ответ не буду ставить, по сути какой то треш, но ранее у меня всё в порядке было с этой прогой , ничего не крашилось, делал куда более мощные фреймы)
МрачныйВорон, у тебя крутая статья, но полностью пока её не вывожу, слишком много инфо ) я имел ввиду во время старта карты (сказал загрузки , может смутило)
Вы всё правильно делаете, оба должны полностью перезапустить игру, а твой друг должен удалить у себя все старые версии, иногда нужно ещё удалять папки, внутри dowloads, но чаще всего достаточно просто перезахода
А почему когда выходила новая версия какой нибудь Dota, всегда нормально качалось, и у себя ничего не надо было чистить?
И да у нас видимо случай запущеный, сегодня начали нормально, перезаходы помогали , под конец уже ничего не помогало, по сто раз перезаходили, всё сто раз чистили, так и не законнектились, забили на время пока я на xgm не узнаю что то ))
И ещё, как батла видит что карта одинаковая ? Я просто не особо шарю в этих серверных фишках и тп, но я даже название менял (и файла и название внутри настроек карты в редакторе) - не помогает. Он не по весу ли смотрит ? :))) я просто не догоняю как это работает
Здрасте, есть ли возможность достать и изменить стандартную модель "Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl" ?
Нужна только часть death анимации этой модели без самого "снаряда"
Возможно это из случая который бывает у меня иногда. Зайди в варик в игру, запусти карту какую нибудь 1 на 1 стандартную, выйди. Или же в редакторе создай новую карту пустую запусти проверку. Маловероятно , но может это из того же репертуара что и у меня бывало.
На счёт скрыть/показать это не помогает. На счёт уничтожить, и создать заново - это опять же будет тот предмет со стандартным именем/иконкой которое я должен поменять.
Было бы круто если бы сделал гайд как добавлять новые предметы на сервак (хз можно ли добавлять без добавления в свободные не занятые ID ) ну или хотя бы по свободным
Изменил if dy < dx and z < (dx - GetMapCliffLevel())*bj_CLIFFHEIGHT then на if dy < dx and z < (GetTerrainCliffLevel(nextX, nextY))*bj_CLIFFHEIGHT then. Всё работает. Почему сам не понял, но да ладно ))
EviLInside:
Можешь глянуть карту мою про Свина. Там есть умение "Ужасающий крик". Суть в том, что часть урона по любому юниту с оцепенением, передается всем другим юнитам, кто находится под оцепенением. Если я правильно тебя понял, то это как раз почти тоже самое, что и у тебя. Код на гуи без утечек. Суть поймешь и переделаешь на любой код.
Спасибо за отклик, но суть то я понимаю. Тут вопрос как раз в том что я не могу это реализовать под jass/vjass.
Сам спелл несложный, и в принципе всё что достаточно для реализации это 2 группы, те, кто будет получать урон, когда кто-то из этой же группы продамажен (уже есть судя по словам автора), и темповая, куда закидывать тех, кто только что получили урон, чтобы избежать цикла бесконечного урона
саму структуру нужно в юнита сохранять само собой, и при получении урона доставать её
На практике в vjass не хватает у меня опыта составление кода такого типа. Когда экземпляр структуры можно привязать к таймеру или просто юниту это легко. Как бы выразится правильно ...наверное типо всё что последовательно я могу делать. Всё что с отложенными действиями до какого то другого события после первого события , тут мои полномочия всё )
Говорю яснее
Юниты A, B, C
Если один из них получит урон то урон идет на других в таком случае
Юнит А наносит урон Б и С
Юнит Б наносит урон А и С
Юнит С нанлсит А и Б
И так бесконечно по этому и умирают
Я понял тебя. Что бы случилось то, о чём ты говоришь мне надо хотя бы код до этого момента сделать (в чём я и прошу помощи)
Вот ты сохранил в группу юнитов и они получили урон и в этот момент этот урон вызывается еще тоесть реагирует на нанесения урон это получается как бесконечный цикл по этому и умирают с одного раза
Вопрос не в этом, смерть это для проверки я сам поставил , что бы понять что у меня получилось опознать юнитов из группы, а дальше я туплю что делать. Мне нужно правильно переделать или изменить что то в структуре DeadlyLinkX (верхней). что бы работало как я описал в вопросе.
Могу сделать на джассе
Сделать?
Я просто не знаю правильно ли ты понял меня, мне надо что бы код был почище, надо что бы экземпляры структур были под каждый каст свои, подчищать при окончании экземляры и тд и тп. В общем продолжить именно так как у меня сделано. А Просто сделать что бы из 5 юнитов каких то , если получает 1 урон , остальные 4 получают столько же это я знаю как сделать.
По сути я тут не пойму как в первую структуру перекинуть инфу о группе правильно, правильно взять эти данные и сделать то что нужно с ними, а потом всё подчистить. В общем именно в метод OnDamage передать инфу о группе не могу..Как сделалал - это какие то костыли через отдельного юнита. В общем ересь получилась
Вот ты сохранил в группу юнитов и они получили урон и в этот момент этот урон вызывается еще тоесть реагирует на нанесения урон это получается как бесконечный цикл по этому и умирают с одного раза
Вопрос не в этом, смерть это для проверки я сам поставил , что бы понять что у меня получилось опознать юнитов из группы, а дальше я туплю что делать. Мне нужно правильно переделать или изменить что то в структуре DeadlyLinkX (верхней). что бы работало как я описал в вопросе.
(зачем тебе loop - просто используй переменную и засчитывай ее под номер игрока которому принадлежит герой)
Без этого ни как )) в vJass без прогонки ты никак не сделаешь MUI спеллы легко, там придётся добавлять array и индексы ( если не сможешь к таймеру привзяать) ,как говорят чуваки из LUA там ты забудешь о MUI , я не близок к программированию , но суть понимаю что мне сложновато это дерьмо делать.
Кстати а вдруг у игрока их может быть несколько таких юнитов)
Тут на много проще будет изменить саму формулу подсчёт регена в зависимости от потеряного % здоровья.
Спасибо что откликнулся, но это было бы слишком просто (хотя то что я хочу наверное тоже не слишком проблемно ), но я не корректно задавал вопрос видимо. мне просто хочется для себя узнать как можно реализовать именно таймеры. Что бы и на будущее в других ситуациях уже знать как это выглядит.
По сути смысл ясен, чекаем героев которые входят на игровую карту
потом запускаем для каждого таймер №1
таймер №1 чекает хп и в зависимости от хп задаёт периодичность таймеру №2
Но типо как влезть в таймер №2 что бы его значение менялось на текущее актуальное
в этом моменте я и заступорился . Но это моё видение, может есть какие то другие решения попроще или т.п
Заказ
= Название: Eye beam Метод: Jass/cJass/vJass - без утечек особое пожелание Версия: Reforged актуальная последняя MUI: Обязательно Цель: Нет цели Количество уровней: 1 Описание: Подобие способности охотника на демонов из wow, При касте из героя вырывается луч на расстояние 1000 и шириной поражения 200 в направлении взгляда героя [луч естественно постоянно "привязан к положению героя и его взгляду", и наносит каждые 0.1 секунду 10 урона. в течении 3х секунд. Пока идёт каст герой либо не подвижен но может задавать направление взгляда (крутиться на одном месте). Либо просто замедляет свою скорость передвижения на 75%.
Огромная просьба сделать это именно с этим ЗЕЛЁНЫМ эффектом www.hiveworkshop.com/threads/accelerator-gate.315752/#resource-8.... Почему с ним? потому что там центр эффекта это середина луча и стандартный угол. А у меня с вращением и в целом геометрией проблемы
Правильно, там же событие идёт на отлов приказа, а каст способности как отловить я написал выше )
call RegisterPlayerUnitEvent(EVENT_PLAYER_UNIT_ISSUED_ORDER, function thistype.onOrder)
Да я тоже хотел предложить кое-что, но в том случае так же была бы проблема с включение/выключением автокаста при полёте стрелы
Я почти сделал всё так как нужно через call RegisterPlayerUnitEvent(EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, function thistype.onOrderTarg) , и понял что flamingarrowtarg ID это как раз то что мне нужно для соло выстрела и это работает (о том что я спрашивал в начале темы), добавил логических что бы убрать проблемы при сменах цели (когда обычная автоатака летит и активируешь либо кидаешь таргетно способность, щас ещё поковыряюсь и скину код может кому то интересно будет [тем кто читал этот код абилки выше] может кто то подскажет что ещё можно сделать. И закрою тему, А так видимо да
Тут единственный вариант сделать идеально и как тебе надо это сделать кастомные снаряды стрел и атаки, а по другому только извращения
Это первое что пришло в голову для удобной работы с автокастами.
Зачем вам это, у вас же не дота - где по балансу автокасты не должны мешать орбам?
Тут сложная реализация, помнится драколич долго бился чтобы сделать хускару стрелы из леденой брони, чтобы уж точно пахало как надо. Если система не под функционал рефаунда - то не удивительно, хрен ты без мемхака или детекта рефорджа сделаешь норм автокаст орбы, чтобы прямо как 1 в 1 близордовские но без орба.
Буду указывать версию игры всегда в вопросах в начале своих, мой косяк. Сижу в редакторе reforged. Зачем нужно что бы как у близов? не знаю, какой то перфекционист внутри меня хочет что бы было всё идеально что ли если возможно. И при любом желании для любой карты будь то нужен баланс или не нужен или просто для удобной игры я мог вставить это в карту. Мне нравиться сам процесс работы над картой или способностями и того как получается что то делать и работало без багов.
Это уже от части будет оффтоп но надеюсь кто то в курсе того что я опишу. На Hiveworkshop есть такая система DamageInterface от chopinski (могу ошибаться в правильности никнейма), мне она понравилась , но т.к я далеко не мастер в кодинге, может быть это рутинная системка для вас опытных ребят. Потихоньку ковыряюсь в ней , тем более что у него там есть концепты героев сделанные при использовании его же системы. Есть там сильвана, с автокаст абилкой. Не знаю баги это или невозможность сделать лучше. Сначало код
library BlackArrow requires DamageInterface, RegisterPlayerUnitEvent, Utilities, optional WitheringFire
/* ---------------------- Black Arrow v1.0 by Chopinski --------------------- */
// Credits:
// Magtheridon96 - RegisterPlayerUnitEvent
// AZ - Black Arrow model
// Darkfang - Arcane Arrow icon
// YourArthas - Skeleton Models
/* ----------------------------------- END ---------------------------------- */
/* ------------------------------ CONFIGURABLES ----------------------------- */
globals
// The raw code of the Black Arrow ability
public constant integer BLACK_ARROW = 'A00C'
// The raw code of the Black Arrow Curse debuff
public constant integer BLACK_ARROW_CURSE = 'A00D'
// The raw code of the melee unit
private constant integer SKELETON_WARRIOR = 'u000'
// The raw code of the ranged unit
private constant integer SKELETON_ARCHER = 'n001'
// The raw code of the Elite unit
private constant integer SKELETON_ELITE = 'n000'
// The effect created when the skelton warrior spawns
private constant string RAISE_EFFECT = "Abilities\\Spells\\Undead\\RaiseSkeletonWarrior\\RaiseSkeleton.mdl"
endglobals
// The curse duration
public function GetCurseDuration takes integer level returns real
return 10.
endfunction
// The damage bonus when Black Arrows is active
private function GetBonusDamage takes unit u, integer level returns real
return (5 + 5*level) + ((0.05*level)*GetHeroAgi(u, true))
endfunction
// The melee sketelon health amount
private function GetSkeletonWarriorHealth takes integer level returns integer
return 50*(level + 6)
endfunction
// The melee sketelon damage amount
private function GetSkeletonWarriorDamage takes integer level returns integer
return 5*(level + 3)
endfunction
// The ranged sketelon health amount
private function GetSkeletonArcherHealth takes integer level returns integer
return 50*(level + 3)
endfunction
// The ranged sketelon damage amount
private function GetSkeletonArcherDamage takes integer level returns integer
return 5*(level + 6)
endfunction
// The sketelon duration
private function GetSkeletonDuration takes integer level returns real
return 15.
endfunction
// The max amount of skeleton warriors a unit can have
private function GetMaxSkeletonCount takes integer level returns integer
return 11
endfunction
// The elite sketelon health amount
private function GetEliteHealth takes integer level returns integer
return 50*(level + 11)
endfunction
// The elite sketelon damage amount
private function GetEliteDamage takes integer level returns integer
return 5*(level + 11)
endfunction
// The elite sketelon duration
private function GetEliteDuration takes integer level returns real
return 60.
endfunction
// How long it takes to a unit to be able to spawn Elites again after it already has the max amount
private function GetEliteCountReset takes integer level returns real
return 30.
endfunction
// The Max amount of Elites a unit can have before going into cooldown
private function GetMaxEliteCount takes integer level returns integer
return 2
endfunction
/* --------------------------------- System --------------------------------- */
struct BlackArrow
private static integer array counter
private static integer array elite
private static integer array skeletons
private static player owner
static boolean array active
timer t
integer idx
private static method onPeriod takes nothing returns nothing
local thistype this = GetTimerData(GetExpiredTimer())
call ReleaseTimer(t)
set elite[idx] = 0
set t = null
call deallocate()
endmethod
private static method onOrder takes nothing returns nothing
local unit source = GetOrderedUnit()
//---------------------------------------------
local integer id = GetIssuedOrderId()
local integer idx = GetUnitUserData(source)
//---------------------------------------------
if id == 852174 or id == 852175 then
set active[idx] = id == 852174
static if LIBRARY_WitheringFire then
if GetUnitAbilityLevel(source, WitheringFire_WITHERING_FIRE) > 0 then
call WitheringFire.setMissileArt(source, active[idx])
endif
endif
endif
set source = null
endmethod
static method onDamage takes nothing returns nothing
local integer level = GetUnitAbilityLevel(DamageI.source, BLACK_ARROW)
local integer manaCost = BlzGetAbilityIntegerLevelField(BlzGetUnitAbility(DamageI.source, BLACK_ARROW), ABILITY_ILF_MANA_COST, level - 1)
//----------------------------------------------
local boolean hasMana = GetUnitState(DamageI.source, UNIT_STATE_MANA) > manaCost
//----------------------------------------------
local real damage = GetEventDamage()
//----------------------------------------------
local unit u
//----------------------------------------------
local thistype this
//----------------------------------------------
if active[DamageI.sIdx] and DamageI.isEnemy and not DamageI.structure and hasMana and damage > 0 then
set owner = DamageI.sourcePlayer
call BlzSetEventDamage(damage + GetBonusDamage(DamageI.source, level))
if DamageI.targetIsHero then
set counter[DamageI.sIdx] = counter[DamageI.sIdx] + 1
if counter[DamageI.sIdx] >= 5 then
set counter[DamageI.sIdx] = 0
if elite[DamageI.sIdx] < GetMaxEliteCount(level) then
set elite[DamageI.sIdx] = elite[DamageI.sIdx] + 1
set u = CreateUnit(owner, SKELETON_ELITE, DamageI.targetX, DamageI.targetY, 0)
call BlzSetUnitMaxHP(u, GetEliteHealth(level))
call BlzSetUnitBaseDamage(u, GetEliteDamage(level), 0)
call SetUnitLifePercentBJ(u, 100)
call UnitApplyTimedLife(u, 'BTLF', GetEliteDuration(level))
call SetUnitAnimation(u, "Birth")
call DestroyEffect(AddSpecialEffectEx(RAISE_EFFECT, GetUnitX(u), GetUnitY(u), GetUnitFlyHeight(u), 2))
if elite[DamageI.sIdx] == GetMaxEliteCount(level) then
set this = thistype.allocate()
set .t = NewTimerEx(this)
set .idx = DamageI.sIdx
call TimerStart(.t, GetEliteCountReset(level), false, function thistype.onPeriod)
endif
endif
endif
endif
call UnitAddAbilityTimed(DamageI.target, BLACK_ARROW_CURSE, GetCurseDuration(level), true)
call SetUnitAbilityLevel(DamageI.target, BLACK_ARROW_CURSE, level)
endif
set u = null
endmethod
private static method onDeath takes nothing returns nothing
local unit killed = GetTriggerUnit()
//---------------------------------------------
local integer level = GetUnitAbilityLevel(killed, BLACK_ARROW_CURSE)
local integer idx = GetPlayerId(owner)
local integer id = GetUnitTypeId(killed)
//---------------------------------------------
local boolean ranged = IsUnitType(killed, UNIT_TYPE_RANGED_ATTACKER)
local boolean skeleton = id == SKELETON_WARRIOR or id == SKELETON_ARCHER
//---------------------------------------------
local unit u
local real x
local real y
//---------------------------------------------
if skeleton then
set idx = GetPlayerId(GetOwningPlayer(killed))
set skeletons[idx] = skeletons[idx] - 1
elseif level > 0 and skeletons[idx] < GetMaxSkeletonCount(level) then
set skeletons[idx] = skeletons[idx] + 1
set x = GetUnitX(killed)
set y = GetUnitY(killed)
if ranged then
set u = CreateUnit(owner, SKELETON_ARCHER, x, y, 0)
call BlzSetUnitMaxHP(u, GetSkeletonArcherHealth(level))
call BlzSetUnitBaseDamage(u, GetSkeletonArcherDamage(level), 0)
else
set u = CreateUnit(owner, SKELETON_WARRIOR, x, y, 0)
call BlzSetUnitMaxHP(u, GetSkeletonWarriorHealth(level))
call BlzSetUnitBaseDamage(u, GetSkeletonWarriorDamage(level), 0)
endif
call UnitApplyTimedLife(u, 'BTLF', GetSkeletonDuration(level))
call SetUnitLifePercentBJ(u, 100)
call SetUnitAnimation(u, "Birth")
call DestroyEffect(AddSpecialEffectEx(RAISE_EFFECT, GetUnitX(u), GetUnitY(u), GetUnitFlyHeight(u), 1))
endif
set u = null
set killed = null
endmethod
static method onInit takes nothing returns nothing
call RegisterAttackDamageEvent(function thistype.onDamage)
call RegisterPlayerUnitEvent(EVENT_PLAYER_UNIT_DEATH, function thistype.onDeath)
call RegisterPlayerUnitEvent(EVENT_PLAYER_UNIT_ISSUED_ORDER, function thistype.onOrder)
endmethod
endstruct
endlibrary
Ну так вот. Она не работает если не активную просто горячей клавишей кидать . Так же если активировать в момент полёта уже выпущеной обычной стрелы , она долетев (обычная стрела) сделает эффект как будто была выпущена уже с автокастом. Это невозможность сделать лучше или он просто не довёл до ума абилку"
я пытался добавить что бы сделать с одиночного выстрела что бы работало вот такое :
call RegisterPlayerUnitEvent(EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, function thistype.onOrderTarg)
private static method onOrderTarg takes nothing returns nothing
local unit source = GetOrderedUnit()
//---------------------------------------------
local integer id = GetIssuedOrderId()
local integer idx = GetUnitUserData(source)
//---------------------------------------------
if id == 852173 then
set active[idx] = id == 852173 // Тут типо order c flamingarrowtarg
endif
set source = null
endmethod
Да ну какой таймер)
Просто отдавай один и тот же нужный приказ при получении любого приказа
А разве это отменит срабатывание приказа изначального? например мне кажется если спамить S "отставить" юнит всё равно будет стоять в "замешательстве" а не бить беспрерывно
надежно - мемхак (1.26) и, возможно, какие-нибудь извраты в 1.31 найдутся
ненадежно - как щас
Ну я к сожалению (или к счастью) сижу только на ласт патче, в надежде на то что близы всё таки будут что то добавлять в редактор (учитывая что про СК2 вспомнили, может и про варик хотя бы планы есть сделать что то.) А по теме, как раз сижу и жду может знатоки актуала имеют полезную информацию.
Отредактирован EviLInside
» WarCraft 3 / Как правильно ограничивать число итераций в unit group?
» WarCraft 3 / Как правильно создать магазин? UI+vJass (reforged)
» WarCraft 3 / Почему фрейм крашит wc3 (reforged) ?
» WarCraft 3 / Почему фрейм крашит wc3 (reforged) ?
» Гейминг / Warcraft Arclight Rumble
» WarCraft 3 / Reforged / battle.net / Загрузка карты
И да у нас видимо случай запущеный, сегодня начали нормально, перезаходы помогали , под конец уже ничего не помогало, по сто раз перезаходили, всё сто раз чистили, так и не законнектились, забили на время пока я на xgm не узнаю что то ))
» WarCraft 3 / Нужна модель? - Вам сюда!
Нужна только часть death анимации этой модели без самого "снаряда"
» WarCraft 3 / Выкидывает
Отредактирован EviLInside
» WarCraft 3 / Нерабочие нативки?
» World of WarCraft / Простая установка сервера Trinity (гайд)
» WarCraft 3 / Cliff levels
» WarCraft 3 / CastBar, модель анимация.
» WarCraft 3 / Вопрос по коду
» WarCraft 3 / Вопрос по коду
» WarCraft 3 / Вопрос по коду
Отредактирован EviLInside
» WarCraft 3 / Вопрос по коду
По сути я тут не пойму как в первую структуру перекинуть инфу о группе правильно, правильно взять эти данные и сделать то что нужно с ними, а потом всё подчистить. В общем именно в метод OnDamage передать инфу о группе не могу..Как сделалал - это какие то костыли через отдельного юнита. В общем ересь получилась
» WarCraft 3 / Вопрос по коду
Отредактирован EviLInside
» WarCraft 3 / Условие - герой имеет не изученную способность X
Без этого ни как )) в vJass без прогонки ты никак не сделаешь MUI спеллы легко, там придётся добавлять array и индексы ( если не сможешь к таймеру привзяать) ,как говорят чуваки из LUA там ты забудешь о MUI , я не близок к программированию , но суть понимаю что мне сложновато это дерьмо делать.
Отредактирован EviLInside
» WarCraft 3 / Пассивка. Таймеры.
потом запускаем для каждого таймер №1
таймер №1 чекает хп и в зависимости от хп задаёт периодичность таймеру №2
Но типо как влезть в таймер №2 что бы его значение менялось на текущее актуальное
в этом моменте я и заступорился . Но это моё видение, может есть какие то другие решения попроще или т.п
Отредактирован EviLInside
» WarCraft 3 / Заклинания на заказ
=
Название: Eye beam
Метод: Jass/cJass/vJass - без утечек особое пожелание
Версия: Reforged актуальная последняя
MUI: Обязательно
Цель: Нет цели
Количество уровней: 1
Описание: Подобие способности охотника на демонов из wow, При касте из героя вырывается луч на расстояние 1000 и шириной поражения 200 в направлении взгляда героя [луч естественно постоянно "привязан к положению героя и его взгляду", и наносит каждые 0.1 секунду 10 урона. в течении 3х секунд. Пока идёт каст герой либо не подвижен но может задавать направление взгляда (крутиться на одном месте). Либо просто замедляет свою скорость передвижения на 75%.
Огромная просьба сделать это именно с этим ЗЕЛЁНЫМ эффектом www.hiveworkshop.com/threads/accelerator-gate.315752/#resource-8.... Почему с ним? потому что там центр эффекта это середина луча и стандартный угол. А у меня с вращением и в целом геометрией проблемы
Отредактирован EviLInside
» WarCraft 3 / Order ID , flamingarrowstarg
Отредактирован EviLInside
» WarCraft 3 / Order ID , flamingarrowstarg
» WarCraft 3 / Как "запаузить" любые действия с юнитом. (Не в прямом смысле)
» WarCraft 3 / Как "запаузить" любые действия с юнитом. (Не в прямом смысле)