Сейчас 17:05:14 Вторник, 26 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Необьяснимо, но факт
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
Блокировки:
Это его удаляет

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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
Можно и в обратном порядке. Тогда он удалится через это время.


 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz