В реплее исчезновение после смерти? Ну про это верю, выше написано. А что сам по себе просто исчез - это уже матрица или что-то связанное с твоей системой (хотя может быть, что и во втором случае из-за этого), или тебя приглюкнуло...
Он после смерти исчезает?
Если да, то в варе такое бывает, особенно в тех случаях, когда умирает много героев сразу.
Давно известно и "решения не нашлось" (с), у себя давно стоит костыль запоминания параметров с предметами и пересоздания в случае чего, не так уж сложно один раз поставить и забыть.
Люди-лисы - это тоже интересно, да, и уже используется. Но при чем тут они?
Да, не нашлось. Один из кандидатов заказать платно, кстати. Тем и мега интересная идея. Можно попытаться самому что-то круглое и/или слизистое изнасиловать и перетекстурить, но гемор еще тот будет.
По Крабсу бегло просмотрено ревью, единственное, что реально для меня плохо - отсутствие аттачментов, все остальное для меня не недостатки. СКАЖУ СПАСИБО, ЕСЛИ АТТАЧМЕНТЫ БУДУТ КЕМ-ТО СДЕЛАНЫ, В КРАЙНЕМ ЗАЙМУСЬ ЛИЧНО, КОГДА ОН БУДЕТ НУЖЕН.
По рыбе прикол в том, что она рыба-семицветик, из нее можно было бы сделать плавающую в воздухе плюющуюся краской рыбу-художника. Там в югиохе еще дофига упоротого, кстати.
Да, упоротые, крч, упоротые - это круто, потому что обычные уже скучно, обычное в овердохрена книг/игр/мультов/фильмов увидено.
Интересны животно-механические минералмэны (такой монстр реально в одном мульте есть :D, именно так дословно в русском переводе и звучит)
По качеству. Мне вот качество Крабса (если не считать отсутствия у него аттачментов) по предварительному просмотру кажется значительно выше, чем тех моделей с хайва, что ты мне присылал в ЛС.
Такое и надеюсь видеть хотя бы.
Но поскольку Крабс пока не скачивался и однозначно оценить качество воочию не могу, то проще так - надеюсь на качество как минимум незначительно ниже варкрафтовской модели юнита от близзов. А лучше хотя бы такое же или вообще лучше, офк =)
Совиные медведи и в варе есть, а это совиная белка.
Вообще меня на том скрине больше левое существо прикалывает, его было бы интересно живым монстром видеть, состоящим из ваты и этой самой ватой плюющимся. Но справа тоже довольно интересно тем, что хоккеист, тематика бешеных боевых хоккеистов не самая раскрытая =)
Просто буду время от времени сюда вбрасывать интересные образы, никому не помешают, думаю, но, может, вдохновят кого-то создать общедоступную модельку.
Насчёт платного варианта я знаю. Про него уже писалось.
Вот насчет подсказок. Они же сами по себе не ухудшают производительность кода?
Тогда в том же сджассе их объём просто сделать минимум вдвое больше объёма самого кода и проблема решена. Да, это работы ппц, но раз крутой программер не обосрался запилить крутой код, найдется и тот, кто не обосрется сверхкрутые и сверхпонятные подсказки запилить.
quq_CCCP, ну как-то так, например.
Время жизни - функция add expiration timer.
Если реген, то, допустим, хп у даммика 15, а реген ставишь от -1 в секунду до -8.
Даммик создается в нужной позиции. Если это точка, потом она обнуляется.
Что-то не правильно?
Вот там на скрине пусть ТС и ставит даммику не 2 сек., а 10-15, если не будет переспама спеллов, ничего страшного (да и если будет, не так уж страшно).
Пусть даммик живёт дольше и всё (если ты его убиваешь через время жизни - ставь больше время жизни, если через отрицательный реген... возникла мысль написать "уменьши отрицательный реген", но тут двойной смысл получается... крч, думаю, ты меня понял).
О, слушайте, идея ударила: Шефа и Коллеги модельки из руссоквестов (я знаю, что это не только квесты, но хотелось бы, чтобы как там выглядели) Братьев Пилотов запилить желание есть?
Насчёт оплачиваемого варианта-то понятно.
Оплачиваемого у меня давно возможный список выстроился и постоянно изменяется и дополняется.
Но пока моделек в свободном доступе непоюзанных еще достаточно много, а производство героев и денег, напротив, идет медленнее, чем хотелось бы, так что ещё нецелесообразно.
Да, аура торнадо хороша, когда не нужна видимая иконка на панели.
А отрицательные значения у ауры скорости - когда иконка нужна.
Кстати, текст баффа внизу в описании можно через цветотег покрасить (просто замедление - отрицательный эффект, ему логичнее иметь красный текст).
Строго говоря, там еще ифзенэлс в идеале должен быть перед смещением на координаты - что x3 и/или y3 !=0. Можно и без него, но... ну, кто разберется, сам догадается, что будет. Не смертельно, но... ну, см. выше.
Глобальные триггеры destroyspeceffect и floatingtext у меня отвечают за уничтожение спецэффекта и плавающего текста соответственно, функции подсчёта атаки - из мемхака.
Именно для постепенного движения ничего этого не нужно, можно удалить.
Смотри, довольно интересный код - спелл, на 3 секунды удваивающий любое постепенное перемещение через смещение по координатам. Если немного помозговать, скорее всего его части тебе пригодятся. Функция SeizureFate должна быть действием какого-то триггера, чтобы именно этот спелл действовал; очевидно, с событием на каст спелла каким-то конкретным юнитом или юнитом вообще.
Для начала советую попробовать применить триггер, если сможешь скопировать спелл как действующий, от этого уже будешь дальше плясать.
Кэп намекает, что можно подсчитывать, запоминать, возвращать пройденную дистанцию и в зависимости от этого увеличивать и дистанцию очередного смещения по координатам; а также контролировать время действия спелла.
Diaboliko, ладно, забей, тут сложно объяснить... "на будущее" хотелось защититься от отключения триггеров, поэтому и инициализировать их второй раз "заранее", короче говоря, первичная плоха тем, что может отключиться, т. к. она "классическая" через InitCustomTriggers, а если первичную убирать сразу, так это получается то, что я уже и делаю, но тут свои трудности...
Пока буду делать так, короче:
-разбивать все InitTrig_XXX на несколько блоков;
-проверять, сработала ли самая нижняя инициализация в каждом блоке.
Если она сработала, значит, в этом блоке лимит операций превышен не был.
Все правильно? Ятп - ДА.
Diaboliko, а, ну да-да, пока что все, что инициализируется не дефолтно через InitCustomTriggers, инициализируется в другом триггере, и этот другой триггер один. Только он сам по себе не особенно грандиозный, просто все перенесенные инициализации именно там.
Ну то есть пока понято так по ответам на мои вопросы:
Да.
Да, надо распихивать, ну ок, буду, не сильно проблема.
Да, только триггер утечёт.
////////////
Теперь чуть подробнее по третьему. А как ее, собственно, залатать?
При дополнительной инициализации удалять из существующего глобального триггера события, условия и действия и рушить его?
А не будет фатала, если такого триггера не существует?
Просто ведь если он перестанет инициализироваться через InitCustomTriggers, его, ятп, просто не будет существовать...
////////////////////
О-О-О!!! И вот еще внимание сразу 4-й вопрос!!! ПЛЗ!!! Оч легкий.
Верно ли, что лимит операций первыми пришибает последние вызовы? Ятп, по логике да, и вроде и примерно так и выходило (просто они могут фактически быть не последними в редакторе триггеров по списку, но это-то как раз не беда, у меня глобальных триггеров больше вообще не будет).
У меня war3map.j в InitCustomTriggers заканчивает ее так:
Diaboliko, грандиозный основной триггер - это кастом код сверху?
Там не один триггер, там дофига триггеров и функций. Просто изначально там были функции типа старого домемхаковского GetUnitArmor + немного своих, потом добавился мемхак и еще чуть раньше из-за лимита все подряд туда полезло :D
Вообще, я так понимаю, нет ведь разницы особой, что где написано, вопрос, что где инициализируется?
Меня интересуют конкретные и максимально четкие ответы на вопросы.
//////////
Если на третий вопрос у меня ответ правильный, так я вообще думаю, может, открыть war3map.j и скопипастить все из InitCustomTriggers (ну кроме триггера инициализации карты) в другое место и все? Ну останется там утечка XX триггеров. Не смертельно повлияет на производительность, если вообще окажется замечено, ведь триггеры-то эти не будут вызываться (если я, опять же, все верно понимаю). Зато про геморрой забуду.
Более простыми предложениями моё предыдущее сообщение.
Твой способ очень сложный в реализации.
И сложный в дальнейшем.использовании.
Но если считаешь, что справишься, делай так.
Я использую только спеллбуки.
И абилки в спеллбуках.
Абилка в спеллбуке - талант.
Абилку можно типа юзнуть и талант типа выучить.
После этого триггерно к способности каким-то образом применяются изменения.
Именно к способности, а не к герою.
Потому что таланты в моём понимании влияют на способность, а не героя.
NiktoTakoy, а ты все это осилишь обрабатывать? Если да - валяй.
У меня просто по изучению спеллбучной абилки эта абилка для этого игрока блочится навсегда и каким-либо образом навсегда же модифицируется соотв. спелл. Вообще таланты вешаются на спеллы по идее, а не на героя, это насчет репиков и т. п. Если на героя, то вот как у тебя геморрой выходит...
Дамаг-то полезно, но он, как и броня, на крайний кривыми способами ловился.
Важнее менять и отлавливать, например, мановые стоимости и перезарядки. Это уже практически в каждую MOBA внедряется постепенно, а в варе вот только через мемхак и есть. Ну и отлов курсора мыши тоже, он вот и в мемхаке еще недоделанный.
Ну всем спс, вот код, вроде все нормально (про флуш помню, но это сейчас шаблон, это если исправлять, то все потом вместе)
раскрыть
function SeizureFate2 takes nothing returns nothing
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6, u7, p, enemies
local timer t = GetExpiredTimer()
local unit u5=LoadUnitHandle(udg_Hash,GetHandleId(t),2)
local unit u6=LoadUnitHandle(udg_Hash,GetHandleId(t),1)
local unit u7
local location p
local group enemies = CreateGroup()
local real damage = (GetUnitBaseDamage(u5) + GetUnitGreenBonusDamage(u5)) * 0.5 * (GetUnitAbilityLevelSwapped ('A282', u6))
local real x2 = LoadReal(udg_Hash,GetHandleId(t),4)
local real y2 = LoadReal(udg_Hash,GetHandleId(t),5)
local integer i = LoadInteger(udg_Hash,GetHandleId(t),3)
local real x = GetUnitX(u5)
local real y = GetUnitY(u5)
local real x3 = 0
local real y3 = 0
local real dx = 0
local real dy = 0
local real d = 0
local real d2 = 0
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
set i = i+1
call SaveInteger(udg_Hash,GetHandleId(t),3,i)
//ОБСЧЁТ И ПРИ НАДОБНОСТИ УДВОЕНИЕ ПОСТЕПЕННОГО ДВИЖЕНИЯ. ТУТ U5 ДВИЖЕТСЯ И ОТ ЕГО АТАКИ УРОН, А U6 КАСТЕР И ИСТОЧНИК УРОНА И С НЕГО ЛВЛ АБИЛЫ!
set dx = x - x2
set dy = y - y2
set d2 = dx * dx + dy * dy
if (d < 200) then
set x3 = x + dx
set y3 = y + dy
//Задание координат с проверкой на края карты.
if RectContainsCoords(bj_mapInitialPlayableArea,x3,y3) then
call SetUnitX (u5,x3)
call SetUnitY (u5,y3)
endif
//Задание координат c проверкой на края карты - закрыто.
endif
//ОБСЧЁТ И ПРИ НАДОБНОСТИ УДВОЕНИЕ ПОСТЕПЕННОГО ДВИЖЕНИЯ - ЗАКРЫТО.
call SaveReal(udg_Hash,GetHandleId(t),4,x3)
call SaveReal(udg_Hash,GetHandleId(t),5,y3)
if (i>74) then
//ЦВЕТОТЕГ РАЗМЕРА 14, ОКРАС СМ. ПЕЙНТ
call CreateTextTagUnitBJ( I2S(R2I(damage)), u5, 0, 14.00, 100.00, 70.00, 4.00, 0 )
call ConditionalTriggerExecute( gg_trg_floatingtext )
//ЦВЕТОТЕГ РАЗМЕРА 14 - ЗАКРЫТО.
//ГРУППА И ДЕЙСТВИЯ С НЕЙ
set p = GetUnitLoc(u5)
set enemies = GetUnitsInRangeOfLocAll(230.00,p)
loop
set u7=FirstOfGroup(enemies)
exitwhen u7==null
call GroupRemoveUnit(enemies,u7)
if ( ( IsUnitType((u7), UNIT_TYPE_ANCIENT) != true ) and ( IsUnitType((u7), UNIT_TYPE_STRUCTURE) != true ) and ( GetUnitAbilityLevelSwapped('Avul', u7) != 1 ) and (IsUnitAliveBJ(u7) == true )) and (IsUnitEnemy(u7,GetOwningPlayer(u6)) == true) then
call UnitDamageTargetBJ(u6,u7,damage,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_MAGIC)
endif
endloop
//ГРУППА И ДЕЙСТВИЯ С НЕЙ - ЗАКРЫТО.
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash,GetHandleId(t))
call RemoveLocation (p)
endif
call DestroyGroup (enemies)
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6, u7, p, enemies
set t = null
set u5 = null
set u6 = null
set u7 = null
set p = null
set enemies = null
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
function SeizureFate takes nothing returns nothing
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
local timer t = CreateTimer()
local unit u6=GetTriggerUnit()
local unit u5=GetSpellTargetUnit()
local real x = GetUnitX(u5)
local real y = GetUnitY(u5)
local integer i = 0
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
if ( GetSpellAbilityId() == 'A282' ) then
call AddSpecialEffectTargetUnitBJ( "chest", u5, "Vain1.mdl" )
call ConditionalTriggerExecute( gg_trg_destroyspeceffect )
call AddSpecialEffectTargetUnitBJ( "origin", u5, "Vain1.mdl" )
call ConditionalTriggerExecute( gg_trg_destroyspeceffect )
call SaveUnitHandle(udg_Hash,GetHandleId(t),1,u6)
call SaveUnitHandle(udg_Hash,GetHandleId(t),2,u5)
call SaveInteger(udg_Hash,GetHandleId(t),3,i)
call SaveReal(udg_Hash,GetHandleId(t),4,x)
call SaveReal(udg_Hash,GetHandleId(t),5,y)
call TimerStart(t,0.04,true,function SeizureFate2)
else
call PauseTimer (t)
call DestroyTimer (t)
call FlushChildHashtable(udg_Hash,GetHandleId(t))
endif
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
set u5 = null
set u6 = null
set t = null
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
Да уже давно понятно, что вар разделился на конструкторско-самодельный и официальный. Выше 1.26x то, что у меня, явно обновляться не будет и как подключаться к офф. серву близзов, оно давно забыло, и вообще оно варкрафтом может называться примерно с тем же успехом, как трансиенты из комикса "Трансметрополитен" людьми. Так что пофиг. Если там че-то сделают реально офигенное, найдется способ его протащить без оффпатчинга.
Другое дело, что не очень ясно, зачем близзы возвращаются к поддержке Вар 3. Понятно, что там редактор охрененный (до сих пор самый юзер-френдли), но они бы лучше такой редактор запилили при своих возможностях в более современной игре, а не занимались xxx. Или там денег у них так много, что делать нечего.
Ред. ClotPh
» WarCraft 3 / Внезапеное исчезновение героя, нужен -Recreate?
матрицаили что-то связанное с твоей системой (хотя может быть, что и во втором случае из-за этого), или тебя приглюкнуло...» WarCraft 3 / Внезапеное исчезновение героя, нужен -Recreate?
Если да, то в варе такое бывает, особенно в тех случаях, когда умирает много героев сразу.
Давно известно и "решения не нашлось" (с), у себя давно стоит костыль запоминания параметров с предметами и пересоздания в случае чего, не так уж сложно один раз поставить и забыть.
Ред. ClotPh
» WarCraft 3 / Нужна модель? - Вам сюда!
Да, не нашлось. Один из кандидатов заказать платно, кстати. Тем и мега интересная идея. Можно попытаться самому что-то круглое и/или слизистое изнасиловать и перетекстурить, но гемор еще тот будет.
По Крабсу бегло просмотрено ревью, единственное, что реально для меня плохо - отсутствие аттачментов, все остальное для меня не недостатки. СКАЖУ СПАСИБО, ЕСЛИ АТТАЧМЕНТЫ БУДУТ КЕМ-ТО СДЕЛАНЫ, В КРАЙНЕМ ЗАЙМУСЬ ЛИЧНО, КОГДА ОН БУДЕТ НУЖЕН.
По рыбе прикол в том, что она рыба-семицветик, из нее можно было бы сделать плавающую в воздухе плюющуюся краской рыбу-художника. Там в югиохе еще дофига упоротого, кстати.
Интересны животно-механические минералмэны (такой монстр реально в одном мульте есть :D, именно так дословно в русском переводе и звучит)
Такое и надеюсь видеть хотя бы.
Но поскольку Крабс пока не скачивался и однозначно оценить качество воочию не могу, то проще так - надеюсь на качество как минимум незначительно ниже варкрафтовской модели юнита от близзов. А лучше хотя бы такое же или вообще лучше, офк =)
Ред. ClotPh
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Нужна модель? - Вам сюда!
Насчёт платного варианта я знаю. Про него уже писалось.
Ред. ClotPh
» WarCraft 3 / Вопрос о функциях
Тогда в том же сджассе их объём просто сделать минимум вдвое больше объёма самого кода и проблема решена. Да, это работы ппц, но раз крутой программер не обосрался запилить крутой код, найдется и тот, кто не обосрется сверхкрутые и сверхпонятные подсказки запилить.
» WarCraft 3 / Кислотная бомба
» WarCraft 3 / Кислотная бомба
Время жизни - функция add expiration timer.
Если реген, то, допустим, хп у даммика 15, а реген ставишь от -1 в секунду до -8.
Даммик создается в нужной позиции. Если это точка, потом она обнуляется.
Что-то не правильно?
Вот там на скрине пусть ТС и ставит даммику не 2 сек., а 10-15, если не будет переспама спеллов, ничего страшного (да и если будет, не так уж страшно).
» WarCraft 3 / Кислотная бомба
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Создание ауры замедления
А отрицательные значения у ауры скорости - когда иконка нужна.
Кстати, текст баффа внизу в описании можно через цветотег покрасить (просто замедление - отрицательный эффект, ему логичнее иметь красный текст).
» WarCraft 3 / Чёрная магия
» WarCraft 3 / Как сделать ускорение за счёт длительности передвижения?
Ред. ClotPh
» WarCraft 3 / Удвоение постепенного движения (нужна небольшая помощь кодера)
Именно для постепенного движения ничего этого не нужно, можно удалить.
» WarCraft 3 / Как сделать ускорение за счёт длительности передвижения?
» WarCraft 3 / Важная информация об обновлении 1.28
А можно ведь и не покупа-а-ать...
» WarCraft 3 / Нужна программа!
https://www.xgm.guru/p/wc3/needicons
Ред. ClotPh
» WarCraft 3 / Преодоление лимита операций
-разбивать все InitTrig_XXX на несколько блоков;
-проверять, сработала ли самая нижняя инициализация в каждом блоке.
Если она сработала, значит, в этом блоке лимит операций превышен не был.
Все правильно? Ятп - ДА.
Ред. ClotPh
» WarCraft 3 / Преодоление лимита операций
При дополнительной инициализации удалять из существующего глобального триггера события, условия и действия и рушить его?
А не будет фатала, если такого триггера не существует?
Просто ведь если он перестанет инициализироваться через InitCustomTriggers, его, ятп, просто не будет существовать...
////////////////////
call InitTrig_EffortsForMulticast()
call InitTrig_FelaAll()
call InitTrig_NastyLightForMulticast()
call InitTrig_DepressionAll()
call InitTrig_LostVikingsAll()
call InitTrig_WaterInTheFaceForMulticast()
call InitTrig_HighTideAll()
call InitTrig_ConsciencePangsForMulticast()
call InitTrig_ChaplainAll()
call InitTrig_ColossusAll()
call InitTrig_KumbhakarnaAll()
call InitTrig_RelictAll()
call InitTrig_ZoroAll()
call InitTrig_AstronomerAll()
call InitTrig_RookieAll()
call InitTrig_PotentAll()
call InitTrig_OuroborosAll()
call InitTrig_MinisnakeAll()
endfunction
Ред. ClotPh
» WarCraft 3 / Преодоление лимита операций
Меня интересуют конкретные и максимально четкие ответы на вопросы.
//////////
» WarCraft 3 / Как сделать систему талантов?(прокачка так же как скилы у героя)
И сложный в дальнейшем.использовании.
Но если считаешь, что справишься, делай так.
Я использую только спеллбуки.
И абилки в спеллбуках.
Абилка в спеллбуке - талант.
Абилку можно типа юзнуть и талант типа выучить.
После этого триггерно к способности каким-то образом применяются изменения.
Именно к способности, а не к герою.
Потому что таланты в моём понимании влияют на способность, а не героя.
» WarCraft 3 / Как сделать систему талантов?(прокачка так же как скилы у героя)
У меня просто по изучению спеллбучной абилки эта абилка для этого игрока блочится навсегда и каким-либо образом навсегда же модифицируется соотв. спелл. Вообще таланты вешаются на спеллы по идее, а не на героя, это насчет репиков и т. п. Если на героя, то вот как у тебя геморрой выходит...
Ред. ClotPh
» WarCraft 3 / Важная информация об обновлении 1.28
Ред. Кет
» WarCraft 3 / Удвоение постепенного движения (нужна небольшая помощь кодера)
» WarCraft 3 / Важная информация об обновлении 1.28