|
|
|
|
Заземление
|
|
CHLSN | Дата: Четверг, 05 Мая 2011, 21:47:41 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Итак, знатоки, вопрос. Как реализовать алгоритм, по которому все юниты, попавшие в указанную область, останавливаются? Предложения "ставь даммика с аурой -100% скорости движения" не интересуют.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
oleg_best_oleg | Дата: Четверг, 05 Мая 2011, 22:07:41 | Сообщение # 2 |
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
| мой вариант: установить скорость передвижения как 0% от текущей и "двиганье назад" каждые 0.Х секунд выбрать юнитов в области 001 и сделать действия: двигать выбранный юнит на -Y (вроде взгляд выбранный юнит +180 градусов) Добавлено (05-05-2011, 22:07) --------------------------------------------- еще при выходе установить назад скорость на 100%
|
|
|
|
lawson | Дата: Четверг, 05 Мая 2011, 23:48:17 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| CHLSN, Это элементарно. Когда юнит заходит в область создаешь таймер с периодом 0.01 и записываешь юнита и его область в хеш и каждую 0.01 сек устанавливаешь его на старую его область. Если надо могу показать пример.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
CHLSN | Дата: Четверг, 05 Мая 2011, 23:58:16 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| Code globals real snare_x real snare_y endglobals function Trig_Snare_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A03A' endfunction function Trig_Snare_Timer_Conditions takes nothing returns boolean return IsUnitType( GetFilterUnit(), UNIT_TYPE_GROUND ) endfunction function Trig_Snare_Timer_Actions takes nothing returns nothing call IssueImmediateOrder( GetEnumUnit(), "stop" ) endfunction function Trig_Snare_Timer takes nothing returns nothing local group g = CreateGroup() call GroupEnumUnitsInRange( g, snare_x, snare_y, 800, Condition( function Trig_Snare_Timer_Conditions ) ) call ForGroup( g, function Trig_Snare_Timer_Actions ) call DestroyGroup( g ) set g = null endfunction function Trig_Snare_Actions takes nothing returns nothing local timer t = CreateTimer() set snare_x = GetSpellTargetX() set snare_y = GetSpellTargetY() call TimerStart( t, 0.01, true, function Trig_Snare_Timer ) call PolledWait( 10 + GetUnitAbilityLevel( GetSpellAbilityUnit(), 'A03A' ) * 20 ) call PauseTimer( t ) call DestroyTimer( t ) set t = null endfunction function InitTrig_Snare takes nothing returns nothing set gg_trg_Snare = CreateTrigger( ) call DisableTrigger( gg_trg_Snare ) call TriggerAddCondition( gg_trg_Snare, Condition( function Trig_Snare_Conditions ) ) call TriggerAddAction( gg_trg_Snare, function Trig_Snare_Actions ) endfunction Стабильно вылетает с !!! FatalError !!! ааааа! Где ошибка?
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
lawson | Дата: Пятница, 06 Мая 2011, 00:07:16 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Во первых что у тебя за событие, во вторых wait это уже плохо, в третьих здесь ни чего не понятно. А вообще это все бред сейчсас секунду я сделаю. Добавлено (06-05-2011, 00:07) --------------------------------------------- событие: любое какое тебе надо. Условие: тоже самое Действие: local unit u = GetSpellTargetUnit() local timer t = CreateTimer() call TimerStart(t, true, 0.1, function TimerF) call SaveUnitHandle(Hash, GetHandleId(t), 0, u) call SaveLocationHandle(Hash, GetHandleId(t), 0, GetUnitLoc(u)) set t = null set u = null функция TimerF local timer t = GetExpiredTimer() call SetUnitPositionLoc(LoadUnitHandle(Hash, GetHandleId(t), 0), LoadLocationHandle(GetHandleId(t), 0)) - тут могу ошибиться так как пишу по памяти set t = null дальше можешь сделать условие или таймер по истечению которого "заземление" остановиться, и сделай FlushChildHashTable()
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 06 Мая 2011, 13:45:24 |
|
|
|
CHLSN | Дата: Пятница, 06 Мая 2011, 00:25:28 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| lawson, всё это конечно хорошо, но: 1. Меня интересует создание заземления с функцией IssueImmediateOrder 2. Событие добавляется в другом триггере, и очень даже хорошо 3. С фатальной ошибкой Warcraft вылетает обычно, если происходит действие, сродное этому: DestroyTimer( t ), DestroyTimer( t ) - обращение к той области памяти, в которой либо ничего нет, либо сущий бред. Вот меня и интересует, где здесь дыра. Причем, вылетает через некоторое время (герой успевает проиграть до 1 с. анимации). ТЕМА ЗАРЫТА А ошибка была просто гениальной. Абилка на основе духов-целителей, но в поле вызванной единицы стояло ничто. Вот варик и не мог создать юнита типа ''.
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
Сообщение отредактировал CHLSN - Пятница, 06 Мая 2011, 01:13:29 |
|
|
|
daf-dvf | Дата: Пятница, 27 Мая 2011, 14:20:25 | Сообщение # 7 |
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Блокировки:
| Если, чтобы остановились, то так юнит входит в зону, остановить вошедший юнит. Если же, чтобы вообще не двигался можно создатель переменную countenter(целочисленная) и enteredunit (юнит(массив)), затем при входе сделать +1 в переменную и потом юнита(массив countenter) останавливать.
|
|
|
|
CHLSN | Дата: Пятница, 27 Мая 2011, 15:13:19 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
| daf-dvf, для юных археологов табличка на албанском: ТЕМА ЗАКРЫТА
Я в контакте и на warcraft3ft.info. Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
|
|
|
|
Banzay89 | Дата: Пятница, 27 Мая 2011, 23:28:20 | Сообщение # 9 |
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
| вот это вы лолы просто каждые N сек пикаешь юнитов в нужной области и отдаешь им приказ stop все
|
|
|
|
|
|
|
|
|
|
|