|
|
|
|
[Вопрос] Необьяснимо, но факт
|
|
FatalBlade | Дата: Четверг, 19 Января 2012, 23:46:58 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| В варике есть спеллы, такие как звездопад, близзард, огненный дождь, вулкан, торнадо, которые требуют постоянного непрерывного каста. Меня это не устраивало, и я реализовал так, что бы они не требовали постоянного каста, то есть например герой касанул Огненный Дождь, и может идти заниматься другими делами, а спелл идёт. Короче тут есть дамми каст. Однако есть 2 спелла, которые кстати добавлены в каком то патче, а не в Фрозен Трон, а именно Вулкан и Moonsoon(короч такие раскаты молнии по местности), которые дамми тупо и нагло не хочет кастовать посредством нужного приказа. И что я только им не менял, они тупо не кастуют. Не выполняет приказ, хотя дамми создаётся, получает спелл, и даже способен его кастануть. Вот код:Code function Trig_Blizzard_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A0DE' endfunction
function BlizzardEnd takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) call RemoveUnit( LoadUnitHandle(udg_Hash, id, 0) ) call DestroyTimer(t) call FlushChildHashtable(udg_Hash, id) set t = null endfunction
function Trig_Blizzard_Actions takes nothing returns nothing local timer t = CreateTimer() local integer id = GetHandleId(t) local unit u = GetTriggerUnit() local unit ud = CreateUnit( GetOwningPlayer(u), 'h02V', GetWidgetX(u), GetWidgetY(u), 0.0 ) call UnitAddAbility( ud, 'A0AV' ) call SetUnitAbilityLevel( ud, 'A0AV', GetUnitAbilityLevel( u, 'A0DE' ) ) call IssuePointOrderById( ud, 852238, GetSpellTargetX(), GetSpellTargetY() ) call SaveAgentHandle(udg_Hash, id, 0, ud) call TimerStart( t, 10.00, false, function BlizzardEnd ) set t = null set u = null set ud = null endfunction С этим кодом работает всё кроме вышеуказанных 2 спеллов.
|
|
|
|
wetalq | Дата: Четверг, 19 Января 2012, 23:52:11 | Сообщение # 2 |
8 уровень
Группа: Проверенные
Сообщений: 550
Награды: 0
Репутация: 117
Блокировки:
| Quote (FatalBlade) function BlizzardEnd takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) call RemoveUnit( LoadUnitHandle(udg_Hash, id, 0) ) call DestroyTimer(t) call FlushChildHashtable(udg_Hash, id) set t = null endfunction
можно же обойтись без этой функции.
попробуй сделать через OrderId
|
|
|
|
lawson | Дата: Четверг, 19 Января 2012, 23:59:33 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (FatalBlade) они тупо не кастуют Quote (FatalBlade) получает спелл, и даже способен его кастануть. Хммм
Добавлено (19 Январь 2012, 23:59:33) --------------------------------------------- Quote (FatalBlade) call IssuePointOrderById( ud, 852238, GetSpellTargetX(), GetSpellTargetY() ) Напиши приказ как в гуи. Че сложного - то? call IssuePointOrder( ud, "приказ", GetUnitX(target), GetUnitY(target))
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 20 Января 2012, 00:09:32 |
|
|
|
FatalBlade | Дата: Пятница, 20 Января 2012, 00:00:32 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (wetalq) можно же обойтись без этой функции. Знаю, можно реген на "-" выставить, и дамми сам умрёт. Но мне его труп наф не нужен) А то ещё с него будут ресать трупов.
Quote (wetalq) попробуй сделать через OrderId У меня итак через OrderId опять же, работает всё кроме конкретных 2-х спеллов.
|
|
|
|
lawson | Дата: Пятница, 20 Января 2012, 00:01:14 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| FatalBlade, Чтобы каждый раз не писать\создавать таймер на удаление даммика, напиши просто левую системку которую будешь вызывать на удаление юнита по истечению времени.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
FatalBlade | Дата: Пятница, 20 Января 2012, 00:21:31 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (lawson) FatalBlade, Чтобы каждый раз не писать\создавать таймер на удаление даммика, напиши просто левую системку которую будешь вызывать на удаление юнита по истечению времени. ок А как насчёт моего главного вопроса насчёт тех 2-х спеллов? monsoon - 852591 volcano - 852669Добавлено (20 Январь 2012, 00:21:31) ---------------------------------------------
Quote (lawson) call IssuePointOrder( ud, "приказ", GetUnitX(target), GetUnitY(target)) Пробовал. То же самое. Вообще через ID, или через строку... не важно. По cути одно и то же, ведь ту самую строку он конвертирует в ID.
|
|
|
|
FkoFF | Дата: Пятница, 20 Января 2012, 05:07:26 | Сообщение # 7 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| SpelltargetX\spelltargetY запиши в локалки, будет работать.
|
|
|
|
SirNikolas | Дата: Пятница, 20 Января 2012, 10:15:25 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FatalBlade) Но мне его труп наф не нужен) А то ещё с него будут ресать трупов. Поставь в РО "Нельзя воскресить, разлагается". Кстати, мне казалось, что "Гроза" не требует указания цели.
|
|
|
|
sumert | Дата: Пятница, 20 Января 2012, 10:28:43 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| SirNikolas, гроза кастуется в область. Начет удаления юнита дайте ему таймер жизни на время действия каста. FatalBlade, скинь мне пожайлуста твою карту в лс, я посмотрю где ошибка. По идее ты все сказал верно и работать худо-бедно должно.
|
|
|
|
SirNikolas | Дата: Пятница, 20 Января 2012, 10:41:44 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Советую проверить самые тупые ошибки. Есть ли у дамми эта способность, хватает ли у него маны, достаточный ли радиус каста и пр.
|
|
|
|
Dreii | Дата: Пятница, 20 Января 2012, 12:11:33 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| FatalBlade, Удаление дамика по истичению Code UnitApplyTimedLife(unit,'BTLF',duration)
|
|
|
|
FatalBlade | Дата: Пятница, 20 Января 2012, 12:17:54 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) Поставь в РО "Нельзя воскресить, разлагается". У меня есть спеллы которые триггерно проверяют наличие трупов вокруг герою. А неважно что там поставить в РО, триггеру пофиг. Он будет рассматривать дамми как труп.
Quote (SirNikolas) Кстати, мне казалось, что "Гроза" не требует указания цели. Указывается местность.
Quote (SirNikolas) Советую проверить самые тупые ошибки. Есть ли у дамми эта способность, хватает ли у него маны, достаточный ли радиус каста и пр. Ну да всё норм. Стоимость маны я вообще на 0 поставил. Опять же, я проверял всё это принудительно, то есть дал дамми модель, убрал Москиты, и нажимал на дамми что бы кастовать абилку, и он кастовал. А вот автоматически он не кастует.
Quote (FkoFF) SpelltargetX\spelltargetY запиши в локалки, будет работать. У меня помоему изначально так и было, и неработало. Ща проверю.Добавлено (20 Январь 2012, 12:17:54) ---------------------------------------------
Quote (Dreii) FatalBlade, Удаление дамика по истичению Code UnitApplyTimedLife(unit,'BTLF',duration) Но ведь это его убивает всеголишь, нет?. Труп то остаётся.
|
|
|
|
Ty3uK | Дата: Пятница, 20 Января 2012, 12:21:42 | Сообщение # 13 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Это его удаляет
|
|
|
|
FatalBlade | Дата: Пятница, 20 Января 2012, 12:42:50 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Ty3uK) Это его удаляет Quote (Dreii) UnitApplyTimedLife
|
|
|
|
SirNikolas | Дата: Пятница, 20 Января 2012, 12:51:49 | Сообщение # 15 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| FatalBlade, после разложения костей юнит удаляется из игры, если на него не ссылается ни одна переменная. А в своем триггере проверяй, что труп не имеет способности "Москиты".Добавлено (20 Январь 2012, 12:51:49) --------------------------------------------- Кстати, да. Code call SetUnitExploded(dummy, true) Удаляет дамми сразу после смерти (если нет активных переменных).
|
|
|
|
FatalBlade | Дата: Пятница, 20 Января 2012, 16:04:39 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) А в своем триггере проверяй, что труп не имеет способности "Москиты". имеет. Это же дамми.
Quote (SirNikolas) Удаляет дамми сразу после смерти (если нет активных переменных). Ну вот есть локальная переменная dummy
Quote (SirNikolas) call SetUnitExploded(dummy, true) А не будет анимации взрыва, т.е. куски мяса даммика?
|
|
|
|
SirNikolas | Дата: Пятница, 20 Января 2012, 17:10:41 | Сообщение # 17 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FatalBlade) имеет. Это же дамми. Я имел в виду не воскрешать трупы тех, у кого есть "Москиты".Quote (FatalBlade) Ну вот есть локальная переменная dummy Но она ведь обнуляется?Quote (FatalBlade) А не будет анимации взрыва, т.е. куски мяса даммика? Графика - Особые = null; Тогда не будет.
|
|
|
|
FatalBlade | Дата: Пятница, 20 Января 2012, 17:15:12 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (SirNikolas) Но она ведь обнуляется? угуДобавлено (20 Январь 2012, 17:15:12) --------------------------------------------- Значит сначала я пишу: Quote (FatalBlade) UnitApplyTimedLife А потом пишу: Quote (FatalBlade) SetUnitExploded Или как? Мне же надо убрать дамми через какое то время, а не сразу.
|
|
|
|
SirNikolas | Дата: Пятница, 20 Января 2012, 17:19:11 | Сообщение # 19 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FatalBlade) Значит сначала я пишу: UnitApplyTimedLife А потом пишу: SetUnitExploded Можно и в обратном порядке. Тогда он удалится через это время.
|
|
|
|
|
|
|
|
|
|
|